Hopp til innhold

Modul:Infoboks lua

Fra Wikipedia, den frie encyklopedi
Sideversjon per 26. jul. 2024 kl. 16:53 av Haros (diskusjon | bidrag) (fix for kart)
Moduldokumentasjon
local p = {}

local wikidataListe = require( 'Module:WikidataListe' )
local wdbilde = require( 'Modul:WikidataBilde')
local Mapframe = require( 'Modul:Mapframe')

function p._ibxStart(type,stor,navn,navn2)
	local txt0a = '<table class="infobox infoboks '
	local txt0b = type .. " " .. stor .. " "  ..'"'
	-- .. " " .. class 
	local txt0d = ">"
	local txt1 = ''
	if navn2 and navn2 ~= '' then
		txt1 = '<tr valign="top" class="hode"><th colspan="4">' .. navn2 .. '</th></tr>'
	end
	local txt2 = '<tr class="hode overskrift"><th colspan="4">' .. navn .. '</th></tr>'
	return txt0a .. txt0b .. txt0d .. txt1 .. txt2
end

function p._ibxSlutt(comcat,endcomment)
	return "</table>"
end

function p.ibxStart(frame)
	local args = frame.args or {}
	local typ = args["type"] or "biografi"
	local stor = args["stor"] or "bred"
	local navn = args["navn"] or nil
	local navn2 = args["navn2"] or nil
	if not navn then
		navn = getname(frame)
	end
	local value = p._ibxStart(typ, stor, navn, navn2)
	return value
end

function p.ibxSlutt(frame)
	return p._ibxSlutt()
end

function getname(frame)
	local frameargs = frame:getParent().args
    local qid = nil
	if frameargs['qid'] and frameargs['qid'] ~= "" then
		qid = frameargs['qid']
	end
	local entity = mw.wikibase.getEntity(qid) or nil
	if not qid then
		if entity then
			qid = entity.id
		end
	end

	local navn = ""
	if frameargs['navn'] and frameargs['navn'] ~= "" then
		navn = frameargs['navn']
	end
	
	if navn == "" then
		navn = mw.wikibase.label(qid) or "navn"
	end
	return navn
end

function brukmal(frame,mal)
	if not mal then return "" end
	local frameargs = frame:getParent().args
	if mal.metode == "ekspander" then
		return frame:expandTemplate{ title=mal.mal, args = frameargs}
	end
	return ""
end

function verdirad(frame,def,qid,lang)
	if not def then return "" end
	local param = def["param"]
	local pid = def["pid"]
	local ref = def["ref"]
	local sprak = def["sprak"]
	local displayName = def["displayName"] or lang:ucfirst(param)
	local txt = wikidataListe._rad2(frame,qid,pid,param,ref,sprak,displayName)
	return txt
end

-->{{#invoke:WikidataBilde|bildeOgTekst|bilde={{{bilde|}}}|bildetekst ={{{bildetekst|}}}|byline={{{byline|}}}|pid=P18|qid={{{qid|}}}|bildestørrelse={{{bildestørrelse|}}}}}<!--

function bilderad(frame,def,qid,lang)
	if not def then return "" end
	local frameargs = frame:getParent().args
	local pid = def["pid"] or nil
	local bilde = frameargs[def["bilde"] or "bilde"]
	local bildetekst = frameargs[def["bildetekst"]] or ""
	local byline = frameargs[def["byline"]] 
	local pix = frameargs[def["bildestor"] or "bildestørrelse"]
	local overskrift = ""
	local alttekst = ""
	return wdbilde._bildeOgTekst(qid, pid, bilde, bildetekst, byline, pix, alttekst, overskrift)

end

-->{{#invoke:Mapframe|infoboxLocation|zoom={{{standardzoom|15}}}|width=290|vis={{{viskart|ja}}}|vis egenskap=P355,P527}}

function kartrad(frame)
	return '<tr class="rad" >' ..
			'<td colspan="4" class="center">' .. Mapframe.infoboxLocation(frame) .. "</td>		</tr>"
end

function p._rader(frame,defs)
	local lang = mw.language.getContentLanguage()
	local res = {}
	local txt = ""
    local qid = nil
    local frameargs = frame:getParent().args

	if frameargs['qid'] and frameargs['qid'] ~= "" then
		qid = frameargs['qid']
	end
 	for i,def in ipairs(defs) do
		if not def[1] or def[1] == "rad" then
			txt = verdirad(frame,def,qid,lang)
		end
		if def and def[1] == "mal" then
			txt = brukmal(frame,def)
		end
		if def and def[1] == "bilde" then
			txt = bilderad(frame,def,qid,lang)
		end
		if def and def[1] == "kart" then
			txt = kartrad(frame,def,qid,lang)
		end
		if txt and txt ~= "" then
			table.insert(res, txt)
			txt = ""
		end
 	end
	if #res > 0 then
		txt = table.concat(res, "\n")
	end
	return txt
end


function p._innhold(frame,defs)
	--"<pre>" .. mw.text.jsonEncode(defs, mw.text.JSON_PRETTY) .. "</pre>" --
	local returtxt = p._rader(frame,defs)
	return returtxt
end

return p