Vés al contingut

Mòdul:WikidataCommonsCat

De Viki.cat

Mòdul de suport a la plantilla:Commonscat i similars. Obté la pàgina de Commons definida a Wikidata segons les següents possibilitats:

  1. Enllaç al lloc commons en l'element associat a la pàgina, si és una categoria.
  2. Enllaç al lloc commons definit en el valor de P910 (P910).
  3. Enllaç al lloc commons definit en el valor de P1754 (P1754).
  4. Valor definit a P373 (P373).
  5. Enllaç al lloc commons en l'element associat a la pàgina, si és una galeria.
  6. Text proporcionat al paràmetre default.

Sintaxi completa:

{{#invoke:WikidataCommonsCat|getCommonslink|<qid>|default= }}

Els paràmetres són opcionals:

  • 1: l'identificador Qid, per defecte serà l'element associat a la pàgina. En general no serà necessari.
  • default=: valor per defecte en cas de no trobar cap valor a Wikidata.

local p = {}

function p.getCommonslink(frame)
	local args = frame.args or frame
	local qid = string.upper(mw.text.trim(args[1] or ""))
	if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
	if not qid then return nil end
	
	local sitelink_cat
	local sitelink = mw.wikibase.getSitelink(qid, "commonswiki")
	if not sitelink or sitelink:sub(1,9) ~= "Category:" then
		-- check for topic's main category
		local catid
		local prop = mw.wikibase.getBestStatements(qid, "P910")[1]
		if prop then
			catid = prop.mainsnak.datavalue and prop.mainsnak.datavalue.value.id
			sitelink_cat = mw.wikibase.getSitelink(catid, "commonswiki")
		end
		if not sitelink_cat then
			-- check for list's main category
			prop = mw.wikibase.getBestStatements(qid, "P1754")[1]
			if prop then
				catid = prop.mainsnak.datavalue and prop.mainsnak.datavalue.value.id
				sitelink_cat = mw.wikibase.getSitelink(catid, "commonswiki")
			end
			if not sitelink_cat then
				-- check for Commons category (string value)
				prop = mw.wikibase.getBestStatements(qid, "P373")[1]
				if prop then
					sitelink_cat = prop.mainsnak.datavalue and prop.mainsnak.datavalue.value
					if sitelink_cat then
						sitelink_cat = "Category:" .. sitelink_cat
					end
				end
			end
		end
	end
	
	return sitelink_cat or sitelink or args.default
end

return p