Modulo:Interprogetto/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
genera un collegamento per ogni wikisource nella lingua originale di scrittura
semplifico
Riga 96:
-- Carica i dati da Wikidata se esistono
local self = {}
if not ignore_wikidata then
self.entity = nil
if not(ignore_wikidata) and mw.wikibase then
self.entity = mw.wikibase.getEntityObject()
end
Line 107 ⟶ 106:
self.article_link = {}
self.lingua = {}
-- Imposta il corsivo se la pagina su Wikidata ha la proprietà P31 ("Istance of", [[wikidata:Property:P31]])
-- con valore corrispondente a un'opera, come definito in cfg.check_opera
self.corsivo = self:hasPropertyValue('P31', cfg.check_opera)
-- Considera disambigua se la pagina su Wikidata ha la proprietà P31 ("Istance of", [[wikidata:Property:P31]])
-- con valore 4167410 ("Wikimedia disambiguation page", [[wikidata:Q4167410]])
self.disambigua = self:hasPropertyValue('P31', '4167410')
-- Controlla se la voce è relativa a una categoria
self.is_category = self:hasPropertyValue('P31', '4167836')
self:loadCollegamenti()
return self
end
 
function Wikidata_entity:getLabel(label)
if self.entity then
returnself.etichetta = self.entity:getLabel(label'it')
-- Imposta il corsivo se la pagina su Wikidata ha la proprietà P31 ("Istance of", [[wikidata:Property:P31]])
else
-- con valore corrispondente a un'opera, come definito in cfg.check_opera
return nil
self.corsivo = self:hasPropertyValue('P31', cfg.check_opera)
-- Considera disambigua se la pagina su Wikidata ha la proprietà P31 ("Istance of", [[wikidata:Property:P31]])
-- con valore 4167410 ("Wikimedia disambiguation page", [[wikidata:Q4167410]])
self.disambigua = self:hasPropertyValue('P31', '4167410')
-- Controlla se la voce è relativa a una categoria
self.is_category = self:hasPropertyValue('P31', '4167836')
self:loadCollegamenti()
end
return self
end
 
Line 161 ⟶ 155:
-- ============================================================================================================
function Wikidata_entity:loadCollegamenti()
for key_progetto, progetto in pairs(cfg.automatic_link) do
if self.entity then
-- Carica i collegamenti di un progetto solo se non disambigua o tipo di progetto abilitato in disambigua
for key_progetto, progetto in pairs(cfg.automatic_link) do
if not self.disambigua or cfg.parameters[key_progetto].abilita_in_disambigua then
-- Carica i collegamenti di un progetto solo se non disambigua o tipo di progetto abilitato in disambigua
for i, interwiki in ipairs(self:getInterwiki(progetto.interwiki, progetto.property_language)) do
if not self.disambigua or cfg.parameters[key_progetto].abilita_in_disambigua then
local sitelink = self.entity:getSitelink(interwiki)
for i, interwiki in ipairs(self:getInterwiki(progetto.interwiki, progetto.property_language)) do
-- Dà sempre precedenza al sitelink se è una categoria
local sitelink = self.entity:getSitelink(interwiki)
if sitelink and mw.ustring.find(sitelink, '^Category:') then
-- Dà sempre precedenza al sitelink se è una categoria
-- 'false' disabilita la consultazione della proprietà
if sitelink and mw.ustring.find(sitelink, '^Category:') then
self.from_property_category[key_progetto] = false
-- 'false' disabilita la consultazione della proprietà
end
self.from_property_category[key_progetto] = false
local claim
if progetto.property_category and self.from_property_category[key_progetto] ~= false then
claim = self:getClaim(progetto.property_category)
if claim then
self.collegamenti[key_progetto] = 'Category:' .. claim
self.from_property_category[key_progetto] = true
end
local claimend
if sitelink then
if progetto.property_category and self.from_property_category[key_progetto] ~= false then
if self.from_property_category[key_progetto] then
claim = self:getClaim(progetto.property_category)
self.article_link[key_progetto] = sitelink
if claim then
elseif self.lingua[interwiki] then
self.collegamenti[key_progetto] = 'Category:' .. claim
local lingua = self.lingua[interwiki]
self.from_property_category[key_progetto] = true
key_progetto = string.format('%s_%s', key_progetto, lingua)
end
self.lingua[key_progetto] = lingua
self.collegamenti[key_progetto] = string.format('%s:%s', lingua, sitelink)
else
self.collegamenti[key_progetto] = sitelink
end
if self.entity.sitelinks[interwiki].badges and not self.lingua[interwiki] then
if sitelink then
local badge_class = {}
if self.from_property_category[key_progetto] then
local badge_title = {}
self.article_link[key_progetto] = sitelink
elseiffor _, badge_quality in ipairs(self.linguaentity.sitelinks[interwiki].badges) thendo
localif lingua = selfcfg.linguabadges[interwikibadge_quality] then
badge_class[#badge_class+1] = cfg.badges[badge_quality].class
key_progetto = string.format('%s_%s', key_progetto, lingua)
badge_title[#badge_title+1] = cfg.badges[badge_quality].title
self.lingua[key_progetto] = lingua
self.collegamenti[key_progetto] = string.format('%s:%s', lingua, sitelink)
else
self.collegamenti[key_progetto] = sitelink
end
if self.entity.sitelinks[interwiki].badges and not self.lingua[interwiki] then
local badge_class = {}
local badge_title = {}
for _, badge_quality in ipairs(self.entity.sitelinks[interwiki].badges) do
if cfg.badges[badge_quality] then
badge_class[#badge_class+1] = cfg.badges[badge_quality].class
badge_title[#badge_title+1] = cfg.badges[badge_quality].title
end
end
self.badge[key_progetto] = {}
self.badge[key_progetto].class = table.concat(badge_class, ' ' )
self.badge[key_progetto].title = table.concat(badge_title, ', ' )
end
elseif not self.is_category and progetto.property_gallery and not self.from_property_categorybadge[key_progetto] then= {}
self.badge[key_progetto].class = table.concat(badge_class, ' ' )
claim = self:getClaim(progetto.property_gallery)
self.collegamentibadge[key_progetto].title = claimtable.concat(badge_title, ', ' )
end
elseif not self.is_category and progetto.property_gallery and not self.from_property_category[key_progetto] then
claim = self:getClaim(progetto.property_gallery)
self.collegamenti[key_progetto] = claim
end
end
Line 220 ⟶ 212:
-- ============================================================================================================
function Wikidata_entity:hasPropertyValue(propertyId, values)
if self.entity and self.entity.claims and self.entity.claims[propertyId] then
local claims = self.entity.claims[propertyId]
for _, claim in pairs(claims) do
Line 537 ⟶ 529:
default.etichetta = origArgs.etichetta
else
if entity.etichetta then
local wikidata_label = entity:getLabel('it')
if is_defined(wikidata_label) then
-- Elimina un eventuale "Categoria:" in fronte del nome
default.etichetta = mw.ustring.gsub(wikidata_label, '^Categoria:', '')