Redigerer
Modul:Infoboks lua
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
local p = {} local wikidataListe = require( 'Module:WikidataListe' ) local wdbilde = require( 'Modul:WikidataBilde') local Mapframe = require( 'Modul:Mapframe') function dump(item) return "<pre>" .. mw.text.jsonEncode(item, mw.text.JSON_PRETTY) .. "</pre>" end function getOkStatements(pid,qid) local entity = mw.wikibase.getEntity(qid) if not entity then return {} end local claims = entity:getAllStatements(pid) local tbl = {} for i,claim in ipairs(claims) do if claim.rank == "normal" or claim.rank == "preferred" then table.insert(tbl,claim) end end return tbl end function overskrift(tekst) local txt = '<tr class="hode overskrift"><th colspan="4">' .. tekst .. '</th></tr>' return txt end function p._ibxStart(type,stor,navn,navn2) local txt0a = '<table class="infobox infoboks ' local txt0b = type .. " " .. stor .. " " ..'"' -- .. " " .. class local txt0d = ">" local txt1 = '' if navn and navn ~= '' then txt1 = '<tr valign="top" class="hode"><th colspan="4">' .. navn .. '</th></tr>' end local txt2 = '<tr class="hode overskrift"><th colspan="4">' .. navn2 .. '</th></tr>' return txt0a .. txt0b .. txt0d .. txt1 .. txt2 end function p._ibxSlutt(comcat,endcomment) return "</table>" end function p._ibxArgStart(args,navn) local typ = args["type"] or "biografi" local stor = args["stor"] or "bred" local navn2 = args["navn2"] or nil if not navn then navn = "navn" end if not navn2 then navn2 = "" end local value = p._ibxStart(typ, stor, navn, navn2) return value end function p.ibxStart(frame) local args = frame.args or {} local navn = args["navn"] or nil local navn2 = args["navn2"] or nil if not navn then navn = getname(frame) end local value = p._ibxArgStart(args,navn) --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 = getqid(frame) local navn = mw.wikibase.label(qid) return navn end function getlink(id) local text = mw.wikibase.label(id) or id local link = mw.wikibase.sitelink(id) if text and link then text = "[[" .. link .. "|" .. text .. "]]" end return text end function p.arbeidsdata() local data = { -- to lister som vil inneholde data for å utelate disse fra å bli brukt fremover ["props"] = { }, -- wikidataegenskaper som ikke skal benyttes. ["params"] = { }, -- parametre for argumenter fra artiklen som ikke skal benyttes. } return data end function ikkebruk(data,props,params) if not data then data = p.arbeidsdata() end if props then for i,prop in ipairs(props) do data.props[prop] = prop end end if params then for i,param in ipairs(params) do data.params[param] = param end end return data end -- legg til parametre og/eller egenskaper gitt som kommaseparerte lister function p.ikkebruk(data,propslist,paramslist) local props = nil if propslist then props = mw.text.split( propslist, ',', true ) end local params = nil if paramslist then params = mw.text.split( paramslist, ',', true ) end return ikkebruk(data,props,params) end function ubrukte(frame,data,res) local lang = mw.language.getContentLanguage() local txt = "" local frameargs = frame:getParent().args for param,val in pairs( frameargs ) do if not data or not data.params[param] then local displayName = lang:ucfirst(param) local val = wikidataListe._rad2(frame,nil,nil,param,nil,nil,displayName,nil,nil) if val and val ~= "" then table.insert(res, val) end end end if #res > 0 then -- txt = table.concat(res, "\n") end return res end local function proptest(props) for idx,claim in ipairs(props) do if claim.rank == 'preferred' or claim.rank == 'normal' then local snak = claim.mainsnak if snak.snaktype == "value" and snak.datatype ~= "external-id" then return props end end end return nil end local function allProps(entity,datatype) local retvals = {} if entity.claims then for propid,props in pairs(entity.claims) do if proptest(props) then if true then -- return propid end --if props[propid][1].mainsnak then table.insert(retvals,propid) -- end end end end return retvals end function wdAllProps(qid) local entity = mw.wikibase.getEntity(qid) local allprops = allProps(entity,datatype) return allprops end function lagRad(verdi,displayName) return '<tr class="rad" valign="top">' .. '<th colspan="2" class="nowrap">' .. displayName .. '</th>' .. '<td colspan="2">' .. verdi .. '</td>' .. '</tr>' -- lagRad(verdi,displayName) end function innhold(frame,qid,prop,propName) local snak = claim.mainsnak local datatype = snak.datatype if datatype == 'commonsMedia' then else wikidataListe._rad2(frame,qid,prop,"nil",nil,nil,displayName,nil,nil) end end function wdEgenskap(frame,qid,data,res,props) local lang = mw.language.getContentLanguage() for ix,prop in ipairs( props ) do -- kvikkfiks for å få bilder til å se litt penere ut for P18 (bilde) if prop == "P18" then local val = wdbilde._bildeOgTekst(qid, prop, "", "", "", "bildestørrelse", "", "") if val and val ~= "" then table.insert(res, val) end else if not data or not data.props[prop] then local proplab,langq = mw.wikibase.getLabelWithLang(prop) local displayName = lang:ucfirst(proplab) local val = --lagRad(prop,displayName) --prop -- wikidataListe._rad2(frame,qid,prop,"nil",nil,nil,displayName,nil,nil) if val and val ~= "" then table.insert(res, val) end end end end local txt = table.concat(res, "\n") return txt,data end function wdEgenskapTabellRad(frame,qid,data,res,props) for ix,prop in ipairs( props ) do local val = wikidataListe._verdi(frame,qid,prop,"nil",nil,nil,nil,nil) or "" table.insert(res, val) end return table.concat(res, "\n|") end function p.wdEgenskap(frame,qid,data,res,propslist,dodump) local entity = mw.wikibase.getEntity(qid) local frameargs = frame:getParent().args if true then -- return "<pre>" .. mw.text.jsonEncode(entity, mw.text.JSON_PRETTY) .. "</pre>" end local props = nil if not propslist and frameargs['props'] and frameargs['props'] ~= "" then propslist = frameargs['props'] end if propslist =="all" or not propslist then props = wdAllProps(qid,"item") -- return "<pre>" .. mw.text.jsonEncode(props, mw.text.JSON_PRETTY) .. "</pre>" -- .. dump(entity) else props = mw.text.split( propslist, ',', true ) end local dumptxt = "" if dodump then dumptxt = dump(entity) end return wdEgenskap(frame,qid,data,res,props) --.. dumptxt end -- for individuelle infobokser function wdEgenskapBoks(frame,qid,props) local frameargs = frame:getParent().args local navn = mw.wikibase.label(qid) local data = p.arbeidsdata() local res = {} local start = p._ibxArgStart(frameargs,navn) local text = wdEgenskap(frame,qid,data,res,props) local slutt = p._ibxSlutt() return start .. text .. slutt end -- for sammenslått til en samlet infoboks function wdEgenskapBoks2(frame,qid,props) local frameargs = frame:getParent().args local navn = mw.wikibase.label(qid) local data = p.arbeidsdata() local res = {} local start = overskrift(navn) local text = wdEgenskap(frame,qid,data,res,props) local slutt = "" --p._ibxSlutt() return start .. text .. slutt end -- for individuelle infobokser function p.wdBrukEgenskap(frame,qid,brukprops,propslist,dodump) -- local navn = mw.wikibase.label(qid) local bruk = mw.text.split( brukprops, ',', true ) local claims = getOkStatements(bruk[1],qid) local props = mw.text.split( propslist, ',', true ) local res = {} table.insert(res, retval) local retval = "" for i,claim in ipairs(claims) do local q = claim.mainsnak.datavalue.value.id or nil if q then retval = wdEgenskapBoks(frame,q,props) if retval and retval ~= "" then table.insert(res, retval) end end end local txt = table.concat(res, "\n") return txt end -- for sammenslått til en samlet infoboks function p.wdBrukEgenskap2(frame,qid,brukprops,propslist,dodump) local navn = mw.wikibase.label(qid) local bruk = mw.text.split( brukprops, ',', true ) local claims = getOkStatements(bruk[1],qid) local props = mw.text.split( propslist, ',', true ) local frameargs = frame:getParent().args local start = p._ibxArgStart(frameargs,navn) local res = {} local retval = "" -- egen boks for hovedelementet. For nå med samme liste av egenskaper som delene. retval = wdEgenskapBoks2(frame,qid,props) if retval and retval ~= "" then local overskr = overskrift("Omfatter disse") table.insert(res, retval..overskr) end local retval = "" for i,claim in ipairs(claims) do local q = claim.mainsnak.datavalue.value.id or nil if q then retval = wdEgenskapBoks2(frame,q,props) if retval and retval ~= "" then table.insert(res, retval) end end end local txt = table.concat(res, "\n") return start .. txt .. p._ibxSlutt() end function p.wdBrukEgenskapTittel(frame,qid,brukprops,propslist,dodump) local navn = mw.wikibase.label(qid) local bruk = mw.text.split( brukprops, ',', true ) local claims = getOkStatements(bruk[1],qid) local props = mw.text.split( propslist, ',', true ) local frameargs = frame:getParent().args local retval = "" local res = {} table.insert(res, "\n!navn") for i,pid in ipairs(props) do if pid then local navn = mw.wikibase.label(pid) table.insert(res, navn) end end local txt = table.concat(res, "\n!") return txt end function idxx(claim) return claim.mainsnak.datavalue.value.id or nil end function p.wdBrukEgenskapVerdi(frame,qid,brukprops,propslist,dodump) --if true then return "" end local navn = mw.wikibase.label(qid) local bruk = mw.text.split( brukprops, ',', true ) local claims = getOkStatements(bruk[1],qid) local props = mw.text.split( propslist, ',', true ) local frameargs = frame:getParent().args local retval = "" local res = {} local xxx = "\n|-\n|" --.. idxx(claims[1]) .. "\n|-\n|" --.. claims[2] --table.insert(res, xxx ) --if true then return "\n|-\n|" .. idxx(claims[2]) end for i,claim in ipairs(claims) do local lqid = idxx(claim) --claims[1].mainsnak.datavalue.value.id --claim.mainsnak.datavalue.value.id or nil --local yyy = "aaaa \n|-\n|" --table.insert(res, lqid) if lqid then local res2 = {} local navn = "\n|-\n|" .. getlink(lqid) .. "\n|" .. wdEgenskapTabellRad(frame,lqid,data,res2,props, "\n|") -- local txt = bruk[1] .." aaa " ..lqid.."\n|" table.insert(res, navn ) end end return table.concat(res, "\n") 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 vis = nil local split = def["split"] local txt = wikidataListe._rad2(frame,qid,pid,param,ref,sprak,displayName,vis,split) 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 --res = ubrukte(frame,data,res) if #res > 0 then txt = table.concat(res, "\n") end return txt end function p._innhold(frame,defs) local returtxt = "" --"<pre>" .. mw.text.jsonEncode(defs, mw.text.JSON_PRETTY) .. "</pre>" -- local returtxt = p._rader(frame,defs) return returtxt end function getqid(frame) local qid = nil local parentargs = frame:getParent().args if parentargs['qid'] and parentargs['qid'] ~= "" then qid = parentargs['qid'] end if not qid then local frameargs = frame.args if frameargs['qid'] and frameargs['qid'] ~= "" then qid = frameargs['qid'] end end if not qid then qid = "Q239904" -- "Q35637" --"Q17125741" --"Q20969311" --"Q596040" --"Q661191" --"Q584" end return qid end function p.test(frame) local start = p.ibxStart(frame) local propslist = "P31,P17" local res = {} local qid = getqid(frame) local text = p.wdEgenskap(frame,qid,data,res,"all",1) --propslist) local slutt = p._ibxSlutt() return start .. text .. slutt end function p._dump(qid,pid,num) if not pid then local entity = mw.wikibase.getEntity(qid) return dump(entity) end local statments = getOkStatements(pid,qid) if statments then if num then return dump(statments[num]) end return dump(statments) end return "" end function p.dump(frame) local qid = getqid(frame) local parentargs = frame:getParent().args local pid = parentarg(frame,'pid') local num = parentarg(frame,'num') return p._dump(qid,pid,num) end function parentarg(frame,argument) local argval = nil local parentargs = frame:getParent().args if parentargs[argument] and parentargs[argument] ~= "" then argval = parentargs[argument] end return argval end function p.wikidataboks(frame) local qid = getqid(frame) local parentargs = frame:getParent().args local arg1 = parentarg(frame,1) if arg1 and arg1 == "tabell" then return p.wikidataTabell(frame) end if arg1 and arg1 == "dump" then return p.dump(frame) end local start = p.ibxStart(frame) local qid = getqid(frame) local parentargs = frame:getParent().args local brukegenskap = parentarg(frame,'bruk egenskap') if brukegenskap then --qid = "Q11976947" local propslist = parentarg(frame,'egenskaper') if true then -- qid = "Q661191" -- local entity = mw.wikibase.getEntity(qid) -- return dump(entity) --return p.dump(frame) --propslist --"P31,P18,P131,P17,P571,P814,P361,P2046" end local retval = p.wdBrukEgenskap2(frame,qid,brukegenskap,propslist,dodump) return retval end local data = nil local res = {} local minus = parentarg(frame,'minus') if minus then data = p.ikkebruk(data,minus,nil) end local startprops = parentarg(frame,'startrader') local startrader = "" if startprops then startrader,data = p.wdEgenskap(frame,qid,data,res,startprops) end local sluttrader = parentarg(frame,'sluttrader') local alle = parentarg(frame,'alle') local text = p.wdEgenskap(frame,qid,data,res,alle) --propslist) local slutt = p._ibxSlutt() return start .. text .. slutt end function p._lenke(tittel,qid) local tekst = tittel or mw.wikibase.label(qid) local lenke = mw.wikibase.sitelink(qid) or nil if tekst and lenke then tekst = "[[" .. lenke .. "|" .. tekst .. "]]" end return tekst end function p.lenke(frame) local parentargs = frame:getParent().args local tittel = parentarg(frame,'tekst') local qid = parentarg(frame,'qid') or "" return p._lenke(tittel,qid) end function p.wikidataTabell(frame) local qid = getqid(frame) local parentargs = frame:getParent().args local brukegenskap = parentarg(frame,'bruk egenskap') if brukegenskap then local propslist = parentarg(frame,'egenskaper') local start = '{|class="wikitable"\n|-' .. p.wdBrukEgenskapTittel(frame,qid,brukegenskap,propslist,dodump) local slutt = "\n|}" local retval = p.wdBrukEgenskapVerdi(frame,qid,brukegenskap,propslist,dodump) return start .. retval .. slutt end return "" end return p
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Forhåndsvis en side som bruker denne malen
Mal som brukes på denne siden:
Modul:Infoboks lua/dok
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Modul
Diskusjon
English
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon