Modul:Infoboks wikidata

Moduldokumentasjon
local p={}

local wikidataListe = require( 'Module:WikidataListe/test' )

function ibxStart(type,stor,navn,navn2)
--	local arg = {}
--	arg["navn"] = navn
	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 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 "xxx"
	local navn2 = args["navn2"] or "xx2"
	value = ibxStart(typ, stor, navn, navn2)
	return value
end

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

function p._rader(frame,defs)
	local lang = mw.language.getContentLanguage()
	local res = {}
	local txt = ""
    local qid = nil
	if frame.args['qid'] and frame.args['qid'] ~= "" then
		qid = frame.args['qid']
	end
 	for i,def in ipairs(defs) do
		local param = def["param"]
		local pid = def["pid"]
		local ref = def["ref"]
		local sprak = def["sprak"]
		local displayName = def["displayName"] or lang:ucfirst(param)
		if not def[1] or def[1] == "rad" then
			txt = wikidataListe._rad2(frame,qid,pid,param,ref,sprak,displayName) 
			if txt and txt ~= "" then
				table.insert(res, txt)
			end
		end
 	end
	if #res > 0 then
		txt = table.concat(res, "\n")
	end
	return txt
end

function p.hendelse(frame)
	local defs = 
	{
		-- eksempel: { param = 'sted', pid =nil, ref= 'ja', sprak = nil, displayName = "Foreldre" },
		{ "bilde", param = "bilde", pid="P18"},
		{ "rad", param = 'deltakere', pid="P710" },
		{ "rad", param = 'sted', Pid="P276" },
		{ "rad", param = 'dato', pid ="P585"},
		{ "rad", param = 'resultat', pid="P1542"},
		{ "rad", param = 'url', pid ="P856"},
	}
	return p._rader(frame,defs)
end

function p._fmt(qid,pid)
	local proplab,langlab = mw.wikibase.getLabelWithLang(pid)
	if not proplab then
		return ""
	end
	local ll = ""
	if langlab and langlab ~= "nb" then
		ll = " (" .. langlab .. ")"
			--addKat("[[Kategori:Wikidata testing]]")
	end
	local frame = mw.getCurrentFrame()
	local param = "aaa"
	local ref = true
	local sprak = nil
	local displayName = proplab .. ll
	local txt = wikidataListe._rad2(frame,qid,pid,param,ref,sprak,displayName)
	return txt
end

function p.wdrad(frame)
	local qid = nil
	if frame.args['qid'] and frame.args['qid'] ~= "" then
		qid = frame.args['qid']
	end
	local pidtxt = frame.args['pid'] or frame.args['wdp'] or nil
	local pids = {}
	if pidtxt and pidtxt == "alle" then
		local entity = mw.wikibase.getEntity(qid) or nil
		if entity then
			--claims = entity
			--return "<pre>" .. mw.text.jsonEncode(claims, mw.text.JSON_PRETTY) .. "</pre>" 	
			for propid,props in pairs(entity.claims) do
				table.insert(pids, propid) 
			end
		end
	else
		pids = mw.text.split(pidtxt, ',', true )
	end
	if not pids then
		return ""
	end
	local res = {}
 	for i,pid in ipairs(pids) do
 		local txt = p._fmt(qid,pid)
 		table.insert(res, txt) 
	end
	local rader =  table.concat(res, "\n")
	return "" -- .. p.ibxStart(frame) --ibxStart(type,stor,navn,navn2)
	.. rader
	--.. p.ibxSlutt(frame)
end	

function p.infoboksHistoriskHendelse(frame)
	local args = mw.getCurrentFrame():getParent().args
	return p.ibxStart(frame) --ibxStart(type,stor,navn,navn2)
	.. p.hendelse(frame,defs)
	.. p.ibxSlutt(frame)
end

function p.test(frame)
	return p.infoboksHistoriskHendelse(frame)
end

return p