Modul:WikidataIB: Forskjell mellom sideversjoner
Hopp til navigering
Hopp til søk
(første utgave, test) |
(+getargument funksjon) |
||
Linje 1: | Linje 1: | ||
local p = {} |
local p = {} |
||
function getargument(frame, argument) |
|||
local args = frame.args |
|||
if args[1] == nil then |
|||
local pFrame = frame:getParent(); |
|||
args = pFrame.args; |
|||
for k,v in pairs( frame.args ) do |
|||
args[k] = v; |
|||
end |
|||
end |
|||
if args[argument] then |
|||
return args[argument] |
|||
end |
|||
return "" |
|||
end |
|||
-- Denne funksjonen returnerer noe |
-- Denne funksjonen returnerer noe |
||
Linje 54: | Linje 70: | ||
lang = mw.language.getContentLanguage() |
lang = mw.language.getContentLanguage() |
||
-- Hent argumentet "property", kalt opp slik: {{#invoke:WikidataIB|rowProperty|property=P26}} |
-- Hent argumentet "property", kalt opp slik: {{#invoke:WikidataIB|rowProperty|property=P26}} |
||
local property = |
local property = getargument(frame, 'property') |
||
if property == "" then |
if property == "" then |
||
-- Var ikke noe slikt argument, prøv å hente første argument, kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26}} |
-- Var ikke noe slikt argument, prøv å hente første argument, kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26}} |
||
property = |
property = getargument(frame, '1') |
||
end |
end |
||
if property == "" then |
if property == "" then |
||
Linje 65: | Linje 81: | ||
-- Hent argumentet "liste", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|liste=1}} |
-- Hent argumentet "liste", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|liste=1}} |
||
-- Dette gjør at alle claims under en property blir listet ut, slik: <tr><td>[Property-navn]</td><td>[claim1], [claim2], [claim3] ..</td></tr> |
-- Dette gjør at alle claims under en property blir listet ut, slik: <tr><td>[Property-navn]</td><td>[claim1], [claim2], [claim3] ..</td></tr> |
||
local list = lang:lowercase( |
local list = lang:lowercase(getargument(frame, 'liste')) |
||
if list ~= "" and list == "1" then |
if list ~= "" and list == "1" then |
||
list = true |
list = true |
||
Linje 73: | Linje 89: | ||
-- Hent argumentet "dato", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|dato=1}} |
-- Hent argumentet "dato", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|dato=1}} |
||
-- Dette gjør at claims under en property får dato i parantes i etterkant av claimet, slik: <tr><td>[Property-navn]</td><td>[claim1] (dato)</td></tr> |
-- Dette gjør at claims under en property får dato i parantes i etterkant av claimet, slik: <tr><td>[Property-navn]</td><td>[claim1] (dato)</td></tr> |
||
local date = lang:lowercase( |
local date = lang:lowercase(getargument(frame, 'dato')) |
||
if date ~= "" and date == "1" then |
if date ~= "" and date == "1" then |
||
date = true |
date = true |
||
Linje 80: | Linje 96: | ||
end |
end |
||
-- Hent argumentet "pnavn", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|pnavn=Ektefelle}} |
-- Hent argumentet "pnavn", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|pnavn=Ektefelle}} |
||
local property_text = |
local property_text = getargument(frame, 'pnavn') |
||
-- Hent argumentet "verdi", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|pnavn=Ektefelle|verdi=Ola Normann}} |
-- Hent argumentet "verdi", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|pnavn=Ektefelle|verdi=Ola Normann}} |
||
local claim_value = |
local claim_value = getargument(frame, 'verdi') |
||
-- Hent argumentet "edit", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|edit=1}} |
-- Hent argumentet "edit", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|edit=1}} |
||
-- Dette gjør raden får en editeringslink mot wikidata, slik: <tr><td>[Property-navn]</td><td>[claim1]<span class="noprint plainlinks wikidata-linkback" style="padding-left:.5em"><a class="external text" href="//www.wikidata.org/wiki/QXXXXX"><img alt="Redigere på Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/10px-Blue_pencil.svg.png" title="Voir et modifier les données sur Wikidata" width="10" height="10" style="vertical-align: baseline" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/15px-Blue_pencil.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/20px-Blue_pencil.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span></td></tr> |
-- Dette gjør raden får en editeringslink mot wikidata, slik: <tr><td>[Property-navn]</td><td>[claim1]<span class="noprint plainlinks wikidata-linkback" style="padding-left:.5em"><a class="external text" href="//www.wikidata.org/wiki/QXXXXX"><img alt="Redigere på Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/10px-Blue_pencil.svg.png" title="Voir et modifier les données sur Wikidata" width="10" height="10" style="vertical-align: baseline" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/15px-Blue_pencil.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/20px-Blue_pencil.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span></td></tr> |
||
local edit = lang:lowercase( |
local edit = lang:lowercase(getargument(frame, 'edit')) |
||
if edit ~= "" and edit == "1" and property_text ~= "" and claim_value ~= "" then |
if edit ~= "" and edit == "1" and property_text ~= "" and claim_value ~= "" then |
||
edit = true |
edit = true |
||
Linje 151: | Linje 167: | ||
end |
end |
||
if noTranslation then |
if noTranslation then |
||
-- avoid pushing anything in between tr-tags |
|||
result = result .. "[[Kategori:Artikler hvor " .. property .. " mangler oversettelse]]" |
result = result .. "[[Kategori:Artikler hvor " .. property .. " mangler oversettelse]]" |
||
end |
end |
||
end |
end |
||
return result |
return result |
||
end |
end |
||
return p |
return p |
Sideversjonen fra 5. feb. 2016 kl. 16:27
Dokumentasjon for denne modulen kan opprettes på Modul:WikidataIB/dok
local p = {} function getargument(frame, argument) local args = frame.args if args[1] == nil then local pFrame = frame:getParent(); args = pFrame.args; for k,v in pairs( frame.args ) do args[k] = v; end end if args[argument] then return args[argument] end return "" end -- Denne funksjonen returnerer noe function get_single_value(property_value, first) lang = mw.language.getContentLanguage() if not property_value.mainsnak or not property_value.mainsnak.datavalue or not property_value.mainsnak.datavalue.value then return "" end local q_value = 'Q' .. property_value.mainsnak.datavalue.value["numeric-id"] local label = mw.wikibase.label(q_value) local sitelink = mw.wikibase.sitelink(q_value) if label and sitelink then if first then return '[[' .. sitelink .. '|' .. lang:ucfirst(label) .. ']]' else return '[[' .. sitelink .. '|' .. label .. ']]' end end if label and not sitelink then if first then return lang:ucfirst(label) else return label end end if sitelink and not label then return '[[' .. sitelink .. ']]' end -- changing target, breaking user expectation return "[[d:" .. qv .. '|' .. qv .. ']]' end -- -- Denne funksjonen kalles opp slik: {{#invoke:WikidataIB|rowProperty|P26}} -- den vil da returnere en tekst-streng som er en rad i en infoboks slik: <tr class="rad" valign="top"><th colspan="2">[Property-navn]</th><td colspan="2">[claim]</td></tr> -- property-navn og claim hentes fra wikidata -- andre argumenter som kan benyttes: -- property - angir hvilken property som skal benyttes, alternativ måte å spesifisere på: {{#invoke:WikidataIB|rowProperty|property=P26}} -- liste - angir at hvis det er flere verdier under en property skal de listes ut slik: <tr class="rad" valign="top"><th colspan="2">[Property-navn]</th><td colspan="2">[claim1], [claim2], ...</td></tr> -- angis slik: {{#invoke:WikidataIB|rowProperty|P26|liste=1}} -- dato - angir om verdiene skal legges inn med dato i parantes i etterkant slik: <tr class="rad" valign="top"><th colspan="2">[Property-navn]</th><td colspan="2">[claim] (dato)</td></tr> -- angis slik: {{#invoke:WikidataIB|rowProperty|P26|dato=1}} -- denne kan også kombineres med "liste" -- verdi - standardverdi som benyttes dersom wikidata ikke har noen claims/verdier for den angitte egenskapen (property). Må da også spesifiseres sammen med "propertynavn". -- angis slik: {{#invoke:WikidataIB|rowProperty|P26|verdi=Ola Normann}} -- pnavn - egenskapsnavn som benyttes dersom wikidata ikke har den angitte egenskapen (property). -- angis slik: {{#invoke:WikidataIB|rowProperty|P26|pnavn=Ektefelle}} -- edit - angir om en "editeringslink" som peker mot Wikidata skal legges på raden. Kun tilgjengelig hvis alle data hentes fra Wikidata. -- angis slik: {{#invoke:WikidataIB|rowProperty|P26|edit=1}} -- function p.rowProperty(frame) lang = mw.language.getContentLanguage() -- Hent argumentet "property", kalt opp slik: {{#invoke:WikidataIB|rowProperty|property=P26}} local property = getargument(frame, 'property') if property == "" then -- Var ikke noe slikt argument, prøv å hente første argument, kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26}} property = getargument(frame, '1') end if property == "" then -- Ingen argumenter tilgjengelig, så da avslutter vi bare. return "[[Kategori:Artikler med invoke WikidataIB rowProperty uten argumenter]]" end -- Hent argumentet "liste", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|liste=1}} -- Dette gjør at alle claims under en property blir listet ut, slik: <tr><td>[Property-navn]</td><td>[claim1], [claim2], [claim3] ..</td></tr> local list = lang:lowercase(getargument(frame, 'liste')) if list ~= "" and list == "1" then list = true else list = false end -- Hent argumentet "dato", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|dato=1}} -- Dette gjør at claims under en property får dato i parantes i etterkant av claimet, slik: <tr><td>[Property-navn]</td><td>[claim1] (dato)</td></tr> local date = lang:lowercase(getargument(frame, 'dato')) if date ~= "" and date == "1" then date = true else date = false end -- Hent argumentet "pnavn", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|pnavn=Ektefelle}} local property_text = getargument(frame, 'pnavn') -- Hent argumentet "verdi", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|pnavn=Ektefelle|verdi=Ola Normann}} local claim_value = getargument(frame, 'verdi') -- Hent argumentet "edit", kalt opp slik: {{#invoke:WikidataIB|rowProperty|P26|edit=1}} -- Dette gjør raden får en editeringslink mot wikidata, slik: <tr><td>[Property-navn]</td><td>[claim1]<span class="noprint plainlinks wikidata-linkback" style="padding-left:.5em"><a class="external text" href="//www.wikidata.org/wiki/QXXXXX"><img alt="Redigere på Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/10px-Blue_pencil.svg.png" title="Voir et modifier les données sur Wikidata" width="10" height="10" style="vertical-align: baseline" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/15px-Blue_pencil.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/20px-Blue_pencil.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span></td></tr> local edit = lang:lowercase(getargument(frame, 'edit')) if edit ~= "" and edit == "1" and property_text ~= "" and claim_value ~= "" then edit = true else edit = false end if not mw.wikibase then -- No connection to wikidata, so we'll just bail out now return "" end -- Now let's get all the claims local wdarticle = mw.wikibase.getEntityObject() if not wdarticle then -- no entry for this page at Wikidata. return "" end local claims = wdarticle.claims if not claims then -- no claims for this page at Wikidata. return "" end -- Now let's make sure the property is resolvable local property_id = mw.wikibase.resolvePropertyId(property) if not property_id then -- not resolvable, so it's probably an error or a bogus property return "" end local property_values = claims[property_id] if not property_values then -- No property value is available return "" end if not property_values[1].mainsnak then -- No property value is available return "" end if not property_values[1].mainsnak.datavalue then -- No property value is available return "" end local i = 1 local result = get_single_value(property_values[i],true) if list then local noTranslation = #result==0 local first = noTranslation while i < #property_values do i = i+1 local lres = get_single_value(property_values[i],first) if #lres > 0 then if not first then result = result .. ", " end result = result .. lres first = false; else noTranslation = true end end if noTranslation then -- avoid pushing anything in between tr-tags result = result .. "[[Kategori:Artikler hvor " .. property .. " mangler oversettelse]]" end end return result end return p