Modulo:Sito ufficiale/sandbox

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
--[[
* Modulo che implementa i template Sito ufficiale, Blog ufficiale e Bug tracking system.
]]--
 
require('strict')

local mWikidata = require('Modulo:Wikidata')
local mEditAtWikidata = require('Modulo:Modifica su Wikidata')
local p = {}

local function formatWebsite(website, title)
	return mw.getCurrentFrame():expandTemplate {
		title = 'Cita web',
		args = {
			url = website.url,
			titolo = title,
			lingua = table.concat(website.langs, ',')
		}
	}
end

local function getWebsites(pid)
	local claims
	local websites = {}

	claims = mWikidata._getClaims(pid) or {}
	for idx, claim in ipairs(claims) do
		local langs = mWikidata._formatQualifiers(claim, 'P407', { formatting = 'raw' }, true)
		langs = (#langs == 1 and langs[1] == 'Q652') and {} or langs
		for i, lang in ipairs(langs) do
			langs[i] = mWikidata._getLabel({ lang })
		end
		websites[idx] = {
			url = mWikidata._formatStatement(claim),
			langs = langs
		}
	end

	return websites
end

-- Funzione per il template
function p.main(frame)
	local websites = getWebsites(frame.args.pid or 'P856')
	for idx, website in ipairs(websites) do
		-- le proprietà utilizzate sono di tipo "valore singolo", aggiunge l'elenco puntato solo per le eccezioni
		websites[idx] = (idx > 1 and '*' or '') ..
						formatWebsite(website, frame.args.title or 'Sito ufficiale') ..
						mEditAtWikidata._showMessage({ pid = frame.args.pid or 'P856' })
	end
	return #websites > 0 and table.concat(websites, '\n') or ''
end

return p