Modulo:Sito ufficiale: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
di default i parametri in funzione del titolo del template |
m modulo no globals obsoleto |
||
(9 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
--[[ |
--[[ |
||
* Modulo che implementa il template |
* Modulo che implementa il template Sito ufficiale. |
||
]] |
]]-- |
||
require(' |
require('strict') |
||
local mWikidata = require('Modulo:Wikidata') |
local mWikidata = require('Modulo:Wikidata') |
||
local mEditAtWikidata = require('Modulo:Modifica su Wikidata') |
local mEditAtWikidata = require('Modulo:Modifica su Wikidata') |
||
-- Titolo predefinito per il {{Cita web}} |
|||
local defaultTitle = 'Sito ufficiale' |
|||
-- Categoria adattata. ↓ Valore identico al {{Controllo Wikidata}} |
|||
local wdCategory = '[[Categoria:%s letto da Wikidata]]' |
|||
-- Categoria adattata. ↓ Titolo del template corrente |
|||
local errorCategory = '[[Categoria:Voci con template %s e senza dati da recuperare da Wikidata]]' |
|||
-- Quanti byte occupa la parola "Template:" + 1 |
|||
local STRIP_BYTES = 10 |
|||
local p = {} |
local p = {} |
||
local function formatWebsite(website, |
local function formatWebsite(website, title) |
||
return mw.getCurrentFrame():expandTemplate { |
return mw.getCurrentFrame():expandTemplate { |
||
title = 'Cita web', |
title = 'Cita web', |
||
args = { |
args = { |
||
url = website.url, |
url = website.url, |
||
titolo = |
titolo = title, |
||
lingua = table.concat(website.langs, ' |
lingua = table.concat(website.langs, ',') |
||
} |
} |
||
} |
} |
||
end |
end |
||
⚫ | |||
--[[ |
|||
* @param int pid Wikidata Property ID |
|||
]] |
|||
⚫ | |||
local claims |
local claims |
||
local websites = {} |
local websites = {} |
||
claims = mWikidata._getClaims(pid |
claims = mWikidata._getClaims(pid) or {} |
||
for idx, claim in ipairs(claims) do |
for idx, claim in ipairs(claims) do |
||
local langs = mWikidata._formatQualifiers(claim, 'P407', { formatting = 'raw' }, true) |
local langs = mWikidata._formatQualifiers(claim, 'P407', { formatting = 'raw' }, true) |
||
Riga 56: | Riga 40: | ||
end |
end |
||
-- Funzione per il template |
|||
--[[ |
|||
* Entry-point per il template {{Sito ufficiale}} |
|||
]] |
|||
function p.main(frame) |
function p.main(frame) |
||
local |
local websites = getWebsites(frame.args.pid or 'P856') |
||
-- Proprietà generica (è letta da mEditAtWikidata): |
|||
frame.args.pid = frame.args and frame.args.pid or 'P856' |
|||
-- Elemento Wikidata generico (sempre nil, usato solo nel /man) (è letto da mEditAtWikidata): |
|||
frame.args.qid = parent and parent.args and parent.args.qid |
|||
--[[ |
|||
* Titolo del template padre. |
|||
* |
|||
* Un giorno un hacker verrà e si chiederà: |
|||
* «Non sarebbe meglio fruire della funzione dispendiosa "mw.title" per la creazione di un "title object" |
|||
* avvantaggiandosi della proprietà "text" equipollente ad un titolo senza namespace?» |
|||
* |
|||
* Quando questo capiterà, dategli una carezza, allontanatevi con garbo e lasciatelo solo insieme ad un estintore. |
|||
]] |
|||
local template_title = string.sub(parent:getTitle(), STRIP_BYTES) |
|||
-- Titolo per il cita web |
|||
local title = frame.args and frame.args.title or template_title |
|||
-- Categoria adattata al titolo del template padre |
|||
errorCategory = string.format(errorCategory, template_title) |
|||
-- Categoria adattata per essere identica a quella del Template:Controllo Wikidata |
|||
wdCategory = string.format(wdCategory, frame.args.catpart or template_title) |
|||
local websites = getWebsites(frame.args.pid, frame.args.qid) |
|||
for idx, website in ipairs(websites) do |
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 '') .. |
websites[idx] = (idx > 1 and '*' or '') .. |
||
formatWebsite(website, frame.args.title or 'Sito ufficiale') .. |
|||
mEditAtWikidata._showMessage({ pid = frame.args.pid or 'P856' }) |
|||
end |
end |
||
return #websites > 0 and |
return #websites > 0 and table.concat(websites, '\n') or '' |
||
(table.concat(websites, '\n') .. wdCategory) or |
|||
(mw.title.getCurrentTitle().namespace == 0 and errorCategory or nil) |
|||
end |
end |
||
Versione attuale delle 20:24, 22 ott 2022
Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Sito ufficiale/man (modifica · cronologia)
Sandbox: Modulo:Sito ufficiale/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Sito ufficiale/test (modifica · cronologia · Esegui)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Sito ufficiale/man (modifica · cronologia)
Sandbox: Modulo:Sito ufficiale/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Sito ufficiale/test (modifica · cronologia · Esegui)
Modulo che implementa il template {{Sito ufficiale}} (verifica).
Uso
Il modulo non va utilizzato direttamente, ma per implementare un template per i collegamenti esterni che debba ottenere il collegamento esterno esclusivamente da una proprietà Wikidata di tipo URL e di tipo "valore singolo". Possono esserci eccezioni che sono gestite automaticamente dal template visualizzando una lista. Se su Wikidata è stato utilizzato il qualificatore lingua dell'opera o del nome (P407) sarà anche indicata la lingua del sito web. Se il qualificatore ha più valori verrà visualizzata ciascuna lingua.
{{#invoke:Sito ufficiale|main|pid=|title=}}
- pid: identificativo della proprietà Wikidata, il valore di default è "P856"
- title: titolo del {{Cita web}}, il valore di default è "Sito ufficiale"
--[[
* Modulo che implementa il template Sito ufficiale.
]]--
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