UWAGA |
---|
Większość artykułów w portalu to nasze własne teksty z kluczowych dziedzin związanych z naszą misją. Spora część materiałów pochodzi też z polskiej wersji Wikipedii, gdzie były odrzucone ze względu na politykę redaktorów (przeczytaj o krytyce Wikipedii). Są też i takie, które zostały przeniesione na nasze strony, gdyż stanowią istotne uzupełnienie merytorycznej treści naszego serwisu. Wszystkie artykuły podlegają edycji przez naszych Użytkowników, dlatego ich wersje mogą się różnić od prezentowanych na innych witrynach. |
Moduł:Wikidane/format/wikibaseEntityItem
< Moduł:Wikidane | format
Przejdź do nawigacji
Przejdź do wyszukiwania
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Wikidane/format/wikibaseEntityItem/opis
local moduleData = mw.loadData("Module:Wikidane/data")
return {
options = {
"alt", -- alternatywna metoda uzyskania opisu jeśli nie ma etykiety lub nazwy strony
default = {
["alt"] = false,
},
},
scope = "snak",
format = function(snak, options)
if snak.snaktype ~= "value" then
return require("Module:Wikidane/format/snak").format(snak, options)
end
local value = snak.datavalue.value
local id = "Q" .. value["numeric-id"]
if options.alt == "id" then
return id
end
local wikidataItemLink = string.format(moduleData.wikidataItemLink, id)
local label = false
local seeP = false
if (options.alt == "kobieta") or (options.alt == "Q6581072") then
seeP = "P2521"
elseif (options.alt == "mężczyzna") or (options.alt == "Q6581097") then
seeP = "P3321"
elseif options.alt == "tak" then
seeP = "P1705"
end
if seeP then
local entity = mw.wikibase.getEntity(id)
if entity and entity.claims and entity.claims[seeP] then
for i, v in ipairs(entity.claims[seeP]) do
if v.mainsnak and (v.mainsnak.snaktype == "value") and (v.mainsnak.datatype == "monolingualtext") and v.mainsnak.datavalue and (v.mainsnak.datavalue.type == "monolingualtext") and v.mainsnak.datavalue.value and (v.mainsnak.datavalue.value.language == "pl") then
label = v.mainsnak.datavalue.value.text
if label then
break
end
end
end
end
end
if not label then
local lang
label, lang = mw.wikibase.getLabelWithLang(id)
if lang ~= "pl" then
label = false -- etykietki tylko po polsku
else
label = mw.text.nowiki(label)
end
end
local sitelink = mw.wikibase.sitelink(id)
if not label or (#label == 0) then
label = sitelink -- just in case missing label
end
if not label then
if not options.linkItem then
mw.logObject(id, "brak etykiety i wyłączone linki")
return nil
end
local main = mw.title.getCurrentTitle().namespace == 0
return (main and moduleData.itemWithoutLabelCat or "")
.. moduleData.itemWithoutLabelTitle
.. wikidataItemLink
end
if not options.linkItem then
return label -- .. wikidataItemLink
end
if sitelink then
return "[[" .. sitelink .. "|" .. label .. "]]" -- .. wikidataItemLink
end
return label .. wikidataItemLink
end,
}