Hoppa till innehållet

Modul:Propertyspårningskategori

Från Wikipedia

Dokumentation [visa] [redigera] [historik] [rensa sidcachen]


Modulen är konstruerad så att den letar efter den property som är angiven i parameter 1 i mallen som anropar modulen. Om det inte finns något där, hämtar den namnet på propertyn från den sidtitel där mallen ligger.

Den propertyn hämtas av modulen och kontrollerar att den har P2875. Det objekt som länkas hämtas och modulen kontrollerar om detta objekt har en länk tillbaka till den aktuella sidan på Wikipedia.

p = {}

function p.propertysparningskategori(frame)
	local title = mw.title.getCurrentTitle().text
	local pid = frame:getParent().args[1]
	local ma = ''
	if pid and pid:match('P%d+') then
		ma = pid
	else
		ma = title:match('P%d+')
	end
	if not ma or ma == '' then
		local s = '{{Ambox|typ = snabbradering|text = Det här är ingen Propertyspårningskategori!}}[[Kategori:Mallar och moduler efter propertyanvändning på Wikidata - felaktig koppling]]'
		return mw.getCurrentFrame():preprocess(s)
	else
		local entity2 = mw.wikibase.getEntityObject(ma)
		if not entity2 then 
			local s = '{{Ambox|typ = allvarligt|text = Den här propertyn finns inte}}[[Kategori:Mallar och moduler efter propertyanvändning på Wikidata - felaktig koppling]]'
			return mw.getCurrentFrame():preprocess(s)
		else
			if entity2.claims and entity2.claims.P2875 and #entity2.claims.P2875 > 0 then
				local propertytitle = ''
				if entity2.labels and entity2.labels.sv then
					propertytitle = entity2.labels.sv.value
				else
					propertytitle = entity2.labels.en.value
				end
				
				local claim = entity2.claims.P2875[1]
				if claim.mainsnak.snaktype == 'value' then
					local qid = claim.mainsnak.datavalue.value.id
					local entity1 = mw.wikibase.getEntityObject(qid)
					if entity1.sitelinks and entity1.sitelinks.svwiki then
						local link = entity1.sitelinks.svwiki
						if link.title == 'Kategori:' .. title then
							local s = '{{Ambox|typ = meddelande|text = Spårningskategorin är rätt kopplad till [[d:Property:' .. ma .. '|Property:' .. ma .. ' (' .. propertytitle .. ')]]}}'
							return mw.getCurrentFrame():preprocess(s)
						else
							local s = '{{Ambox|typ = allvarligt|text = Kopplingen mellan [[d:Property:' .. ma .. '#P2875|spårningskategorin]] och Wikidata överensstämmer inte.}}[[Kategori:Mallar och moduler efter propertyanvändning på Wikidata - felaktig koppling]]'
							return mw.getCurrentFrame():preprocess(s)
						end
					else
						local s = '{{Ambox|typ = allvarligt|text = Kopplingen mellan [[d:Property:' .. ma .. '#P2875|spårningskategorin]] och Wikidata är inte korrekt}}[[Kategori:Mallar och moduler efter propertyanvändning på Wikidata - felaktig koppling]]'
						return mw.getCurrentFrame():preprocess(s)
					end
				else
					local s = '{{Ambox|typ = allvarligt|text = [[d:Property:' .. ma .. '|Property:' .. ma .. '#P2875]] har ' ..claim.mainsnak.snaktype .. '.}}[[Kategori:Mallar och moduler efter propertyanvändning på Wikidata - felaktig koppling]]'
					return mw.getCurrentFrame():preprocess(s)
				end
			else
				local s = '{{Ambox|typ = allvarligt|text = [[d:Property:' .. ma .. '|Property:' .. ma .. ']] saknar P2875.}}[[Kategori:Mallar och moduler efter propertyanvändning på Wikidata - felaktig koppling| ]]'
				return mw.getCurrentFrame():preprocess(s)
			end
		end
	end
	
	return nil
end

return p