Modul:Infoboks wikidata
Moduldokumentasjon
[opprett]
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