Modulo:Collegamenti esterni: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
grupo enciclopedie come secondo dopo ufficiali
modifico resa dei link multipli a stesso sito sfruttandone i qualificatori e introduco categorie di errore come da discussione
Riga 21:
local catGroupedList = 'Voci con template Collegamenti esterni e collegamenti raggruppati'
local catEmpty = 'Voci con template Collegamenti esterni senza dati da Wikidata'
local catUnknownQual = 'Voci con template Collegamenti esterni e qualificatori sconosciuti'
 
-- =============================================================================
Riga 93 ⟶ 94:
--
-- @param {table} [url] - uno o più URL, quanti sono i valori della proprietà Wikidata
-- @param {table} [qualifier] - eventuali qualificatori da annettere al titolo per ciascun URL
-- @param {table} linkConf - la configurazione per questo collegamento esterno
-- @param {string} from - entityId se diverso da quello collegato alla pagina corrente
-- @return {table} un nuovo oggetto ExtLink
function ExtLink:new(url, qualifier, linkConf, from)
local self = {}
setmetatable(self, { __index = ExtLink })
Riga 105 ⟶ 107:
end
self.url = url
self.qualifier = #url > 1 and qualifier
self.linkConf = linkConf
self.from = from
local currTitleself.title = getCurrentTitle()
self.title = self.from and mWikidata._getLabel({ self.from }) or
(self.linkConf.titolo and
(self.linkConf.titolo and self.linkConf.titolo:gsub('$1', currTitleself.title) or currTitle)
self.title)
 
return self
end
 
-- Restituisce il parametro titolo per citawebil modulo Citazione.
--
-- @return {string}
function ExtLink:_getTitolo()
if self.qualifier and self.qualifier[1] ~= nil then
local currTitle = getCurrentTitle()
return selfstring.fromformat('%s and(%s)', mWikidataself._getLabel({title, self.from }qualifier[1]) or
else
(self.linkConf.titolo and self.linkConf.titolo:gsub('$1', currTitle) or currTitle)
return self.title
end
end
 
-- Restituisce il parametro altrilink per il modulo Citazione.
--
-- @return {table}
function ExtLink:_getAltriLink()
local ret
if self.qualifier then
local tbl = {}
for i = 2, #self.url do
if self.qualifier[i] == nil then
self.qualifier[i] = 'altra versione'
end
table.insert(tbl, { self.url[i], string.format('%s (%s)', self.title, self.qualifier[i]) })
end
ret = tbl
end
return ret
end
 
-- Restituisce il parametro posttitolo per citawebil modulo Citazione.
--
-- @return {string}
function ExtLink:_getPostTitolo(groupedList)
local ret
if groupedList or not self.qualifier and #self.url > 1 then
local tbl = {}
for i = 2, #self.url do
Riga 135 ⟶ 163:
end
 
-- Restituisce la stringa da usare come "sito" per citawebil modulo Citazione
-- o come label nel link creato come [url label].
--
Riga 163 ⟶ 191:
langs[i] = mWikidata._getLabel({ lang })
end
local formattedLink = mCitazione.citawebcollegamenti({
url = mWikidata._formatStatement(claim),
titolo = self.linkConf.titolo:gsub('$1', currTitle),
Riga 190 ⟶ 218:
-- proprietà di tipo "identificativo esterno" altrimenti di tipo URL
if self.linkConf.url then
return '* ' .. icon .. mCitazione.citawebcollegamenti({
url = self.url[1],
titolo = self:_getTitolo(),
altrilink = self:_getAltriLink(),
posttitolo = self:_getPostTitolo(),
sito = self:_getSito(),
Riga 211 ⟶ 240:
function ExtLink:getGroupedListItem()
local ret = string.format('[%s %s]', self.url[1], self:_getSito(true))
return #self.url > 1 and (ret .. ' ' .. self:_getPostTitolo(true)) or ret
end
 
Riga 271 ⟶ 300:
for _, linkConf in ipairs(cfg[groupName]) do
if not linkConf.istanza or checkInstance(linkConf.istanza, self.from) then
local url, qualifier
local urlclaims = mWikidata._getProperty_getClaims({ linkConf.pid, { from = self.from, snaktype = 'value', pattern = linkConf.url }, true)
if claims and #claims > 0 then
url = {}
for i, claim in ipairs(claims) do
if claim.qualifiers then
local qualifierIds = {}
if linkConf.multi then
qualifierIds = mw.text.split(linkConf.multi:gsub('%s', ''), ',')
for _, qualifierId in ipairs(qualifierIds) do
if claim.qualifiers[qualifierId] then
local formattedQualifier = mWikidata._formatQualifiers(claim, qualifierId, { nq = '1', formatting = 'raw' })
if formattedQualifier then
if not qualifier then qualifier = {} end
qualifier[i] = mw.wikibase.getLabel(formattedQualifier)
break
end
end
end
end
for _, v in ipairs(qualifierIds) do qualifierIds[v] = true end
for qualifierId in pairs(claim.qualifiers) do
if qualifierIds[qualifierId] ~= true and qualifierId ~= 'P407' then
table.insert(self.categories, string.format('[[%sCategoria:%s letta da Wikidata]]', self.catColon, catUnknownQual))
break
end
end
end
claim = mWikidata._formatStatement(claim)
if linkConf.url then
claim = mw.message.newRawMessage(linkConf.url, claim):plain()
end
table.insert(url, claim)
end
end
if url then
table.insert(ret[groupName], ExtLink:new(url, qualifier, linkConf, self.from))
-- categorie
local tail = #url > 1 and linkConf.multi and (qualifier == nil or #qualifier ~= #url) and
table.insert(self.categories, string.format('[[%sCategoria:%s letta da Wikidata]]',
'multipla letta da Wikidata senza qualificatore' or 'letta da Wikidata'
self.catColon, linkConf.pid))
table.insert(self.categories, string.format('[[%sCategoria:%s %s]]', self.catColon, linkConf.pid, tail))
-- per verificare se un sito è ripetuto nel gruppo
local sito = linkConf.sito and mDelink._main({ linkConf.sito }) or getDomain(linkConf.url)