Modulo:Interprogetto/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Moroboshi (discussione | contributi)
Nessun oggetto della modifica
Moroboshi (discussione | contributi)
miglioramento gestione link a categorie su commons
Riga 3:
local p = {} -- per l'esportazione delle funzioni del modulo
 
local cfg = {}
local root = mw.html.create('') -- radice del markup html
local debug = {} -- per debug
Riga 101:
self.collegamenti = {}
self.badge = {}
self.from_property_category = {}
self:loadCollegamenti()
-- Imposta il corsivo se la pagina su Wikidata ha la proprietà P31 ("Istance of", [[wikidata:Property:P31]])
Riga 108 ⟶ 109:
-- 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', 'Q4167836')
return self
end
Riga 127 ⟶ 130:
-- Carica i collegamenti di un progetto solo se non disambigua o tipo di progetto abilitato in disambigua
if not self.disambigua or cfg.progetti[key_progetto].abilita_in_disambigua then
iflocal sitelink = self.entity:getSitelink(progetto.interwiki then)
localif sitelink = self.entity:getSitelink(progetto.interwiki)then
ifself.collegamenti[key_progetto] sitelink= thensitelink
if self.collegamentientity.sitelinks[key_progettoprogetto.interwiki].badges = sitelinkthen
iflocal self.entity.sitelinks[progetto.interwiki].badgesbadge_class then= {}
local badge_classbadge_title = {}
for _, badge_quality in localipairs(self.entity.sitelinks[progetto.interwiki].badges) badge_title = {}do
forif _, badge_quality in ipairs(selfcfg.entity.sitelinksbadges[progetto.interwikibadge_quality].badges) dothen
ifbadge_class[#badge_class+1] = cfg.badges[badge_quality] then.class
badge_classbadge_title[#badge_classbadge_title+1] = cfg.badges[badge_quality].classtitle
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
self.badge[key_progetto] = end{}
self.badge[key_progetto].class = table.concat(badge_class, ' ' )
self.badge[key_progetto].title = table.concat(badge_title, ', ' )
end
elseif progetto.property_category then
Riga 154 ⟶ 155:
and self.entity.claims[property_id][1].mainsnak.datavalue.type == 'string' then
self.collegamenti[key_progetto] = 'Category:' .. self.entity.claims[property_id][1].mainsnak.datavalue.value
self.badgefrom_property_category[key_progetto] = {}true
end
end
Riga 372 ⟶ 374:
root:newline()
root:wikitext(progetto:Link())
end
end
 
-- ============================================================================================================
-- Confronta i collegamenti manuali con quelli automatici e genera le categorie di classificazione
-- se presenti in configurazione
-- ============================================================================================================
function check_with_wikidata(key_progetto, entity, collegamento)
local entity_collegamento = entity.collegamenti[key_progetto]
if not is_defined(entity_collegamento) then
if is_defined(collegamento) then
-- Segnala che è presente il collegamento compilato manualmente ma non quello in Wikidata
add_category(cfg.automatic_link[key_progetto].category_wikidata_missing)
end
elseif tostring(mw.uri.localUrl(collegamento)) ~= tostring(mw.uri.localUrl(entity_collegamento)) then
if entity.is_category then
-- Segnala che il collegamento compilato manualmente è diverso da quello in Wikidata
add_category(cfg.automatic_link[key_progetto].category_wikidata_diff)
elseif entity[key_progetto].from_property_category then
-- Segnala che il collegamento compilato manualmente è diverso da quello in Wikidata (commons category invece di altri progetti)
add_category(cfg.automatic_link[key_progetto].category_wikidata_property_diff)
else
-- Segnala che il collegamento compilato manualmente è diverso da quello in Wikidata
add_category(cfg.automatic_link[key_progetto].category_wikidata_diff)
end
end
end
Riga 379 ⟶ 406:
-- ============================================================================================================
function p.interprogetto(frame)
 
 
-- se chiamata da una sandbox carica la configurazione della sandbox
Riga 497 ⟶ 525:
if cfg.parameters[key_progetto] and cfg.automatic_link[key_progetto] and entity.entity then
if not entity.disambigua or cfg.parameters[key_progetto].abilita_in_disambigua then
localcheck_with_wikidata(key_progetto, entity_collegamentoentity, = entity.collegamenti[key_progetto]collegamento)
if not is_defined(entity_collegamento) then
if is_defined(collegamento) then
-- Segnala che è presente il collegamento compilato manualmente ma non quello in Wikidata
add_category(cfg.automatic_link[key_progetto].category_wikidata_missing)
end
elseif tostring(mw.uri.localUrl(collegamento)) ~= tostring(mw.uri.localUrl(entity_collegamento)) then
-- Segnala che il collegamento compilato manualmente è diverso da quello in Wikidata
add_category(cfg.automatic_link[key_progetto].category_wikidata_diff)
end
end
end
Riga 554 ⟶ 573:
'Errori di compilazione del template Interprogetto - collegamenti in disambigua')
elseif #progetti == 0 then
--add_error('Template interprogetto vuoto e senza dati da recuperare da Wikidata', 'Errori di compilazione del template Interprogetto - template vuoto')
add_error('', 'Errori di compilazione del template Interprogetto - template vuoto')
else
local nobarra = origArgs.nobarra and origArgs.nobarra:lower()