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
self.title = self.from and mWikidata._getLabel({ self.from }) or
(self.linkConf.titolo and
self.title)
return self
end
-- Restituisce il parametro titolo per
--
-- @return {string}
function ExtLink:_getTitolo()
if self.qualifier and self.qualifier[1] ~= nil then
▲ local currTitle = getCurrentTitle()
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
--
-- @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
-- o come label nel link creato come [url label].
--
Riga 163 ⟶ 191:
langs[i] = mWikidata._getLabel({ lang })
end
local formattedLink = mCitazione.
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.
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
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
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'
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)
|