UWAGA
Strona jest ponownie oddana do uzytku po zabiegach konfiguracyjnych. Jeśli zobaczą Państwo na niej jakieś błedy techniczne, prosimy o ich zgłoszenie.

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

Z Wedapedia
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,
 
}