Modulo:Progetti interessati: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m fix di errore HTML da sandbox |
aggiornato stile documentazione a quello usato in Mediawiki per Lua |
||
Riga 6:
local getArgs = require('Modulo:Arguments').getArgs
local cfg = mw.loadData('Modulo:Progetti interessati/Configurazione')
local catPrefix = mw.loadData('Modulo:Progetti interessati/Categorie')
-- Nomi e valori consentiti dei parametri di monitoraggio/importanza richiesti da più funzioni
local gradeParams = { 'accuratezza', 'scrittura', 'fonti', 'immagini' }
local validGrades = { a = true, b = true, c = true, d = true, e = true }
local validImportances = { massima = true, alta = true }
-- =============================================================================
--
-- =============================================================================
-- Wrapper di mw.title.exists, verifica sia che name sia valido, sia che esista.
--
-- @param {string} name
-- @return {boolean}
local function titleExists(name)
local title = mw.title.new(name)
Riga 26:
end
-- Restituisce il valore della valutazione ("a", "b", "c" o "d") più bassa inserita
-- nei quattro parametri "accuratezza", "scrittura", "fonti" e "immagini".
--
-- @param {table} args
-- @return {string}
local function lowestGrade(args)
local t = { args.accuratezza, args.scrittura, args.fonti, args.immagini }
Riga 32 ⟶ 37:
end
-- Restituisce l'icona da visualizzare per il progetto specificato,
-- utilizzando il template Icona argomento e verificando se è un sottoprogetto.
--
-- @param {string} name
-- @return {string}
local function getIcon(name)
local icon = mw.getCurrentFrame():expandTemplate {
Riga 51 ⟶ 61:
end
-- Restituisce il valore del parametro importanzaN relativo al progettoN specificato,
-- o nil se non usato dall'utente.
--
-- @param {string} projParam
-- @param {table} args
-- @return {string}
local function getImportance(projParam, args)
local num = mw.ustring.match(projParam, '^progetto(%d)$')
Riga 58 ⟶ 74:
end
-- Controlla gli argomenti importanzaN e quelli per la valutazione del monitoraggio.
-- Per ogni parametro progettoN specificato crea una table con i dati del progetto.
--
-- @param {table} args
-- @return {table} gli argomenti passati alla funzione
-- @return {table} una sequence di table che descrivono i singoli progetti
-- @return {table} eventuali categorie di errore
-- @return {string} un eventuale messaggio di errore per i progetti non esistenti
local function parseArgs(args)
local errcat = {}
Riga 127 ⟶ 151:
end
-- Formatta i valori assegnati ai parametri "accuratezza", "scrittura", "fonti" e "immagini".
--
-- @param {string} value
-- @return {table}
local function getLabelGrade(value)
local codeStyle = {
Riga 141 ⟶ 169:
end
-- Restituisce true se il progetto specificato ha attivato il monitoraggio.
--
-- @param {table} projects
-- @return {boolean}
local function hasMonitoraggio(projects)
local ret = false
Riga 152 ⟶ 184:
end
-- =============================================================================
-- Funzioni base
-- =============================================================================
-- Restituisce il risultato del monitoraggio in base alle valutazioni inserite
-- nei quattro parametri "accuratezza", "scrittura", "fonti" e "immagini".
-- Il valore restituito, dal basso verso l'alto, può essere:
-- "0.2", "0.3", "0.4", "0.5", "IMMAGINI", "F", "W", "BOZZA", "1", "2", "3", "4".
--
-- @param {table} args
-- @return {string}
local function getLivello(args)
local ret
Riga 194 ⟶ 233:
end
-- Restituisce le categorie di servizio in base al livello del monitoraggio ottenuto,
-- agli eventuali parametri "importanza" e alla presenza di errori utente di compilazione.
--
-- @param {string} livello
-- @param {table} args
-- @param {table} projects
-- @return {table}
local function getCategories(livello, args, projects)
local ret = {}
Riga 263 ⟶ 309:
end
-- =============================================================================
--
-- =============================================================================
-- La classe ProjectsTable rappresenta la prima delle due tabelle HTML
-- prodotte dal modulo, ossia quella per elencare i wikiprogetti.
local ProjectsTable = {}
-- Costruttore della classe ProjectsTable.
--
-- @param {table} projects
-- @return {table} un nuovo oggetto ProjectsTable
function ProjectsTable:new(projects)
local self = {}
Riga 276 ⟶ 329:
end
-- Restituisce la tabella HTML con una riga di introduzione e una per la sottotabella progetti.
--
-- @return {string}
function ProjectsTable:getHTML()
local tableStyle = {
Riga 299 ⟶ 355:
:tag('td')
:attr('colspan', '2')
:node(self:
:done()
Riga 305 ⟶ 361:
end
-- Restituisce la sottotabella HTML con un progetto per riga.
--
-- @return {table}
function ProjectsTable:_getNodeProjects()
local tableStyle = {
width = '100%',
Riga 330 ⟶ 389:
:addClass('plainlinks')
:css('padding-left', '5px')
:wikitext(self:
:done()
:tag('td')
Riga 343 ⟶ 402:
end
-- Restituisce il link al progetto, al bar di progetto e all'eventuale monitoraggio delle voci.
--
-- @param {table} project
-- @return {string}
function ProjectsTable:_getWlinkProject(project)
local links = {}
local fmtIcon = '[[File:Rpb dialog icon.svg|23x15px|bar di progetto|link=Discussioni progetto:%s]]'
Riga 359 ⟶ 422:
end
-- =============================================================================
--
-- =============================================================================
-- La classe ProjectsTable rappresenta la seconda delle due tabelle HTML
-- prodotte dal modulo, ossia quella per visualizzare la valutazione del monitoraggio.
local MonitoraggioTable = {}
-- Costruttore della classe MonitoraggioTable.
--
-- @param {string} livello
-- @param {table} args
-- @return {table} un nuovo oggetto MonitoraggioTable
function MonitoraggioTable:new(livello, args)
local self = {}
Riga 373 ⟶ 444:
end
-- Restituisce la tabella HTML con una riga di introduzione e una per la sottotabella
-- collassabile per "accuratezza", "scrittura", "fonti" e "immagini".
-- Termina con due righe opzionali in base alla presenza delle note e della data.
--
-- @return {string}
function MonitoraggioTable:getHTML()
local tableStyle = {
Riga 385 ⟶ 461:
:css(tableStyle)
-- livello
tableNode
:node(self:
-- valutazioni
tableNode
Riga 398 ⟶ 474:
:css('width', '100%')
:css('border-collapse', 'collapse')
:node(self:
:node(self:
:node(self:
:node(self:
-- note
if self.args.note then
Riga 415 ⟶ 491:
-- data
if self.args.data then
local data = self:
tableNode
:tag('tr')
Riga 430 ⟶ 506:
end
-- Restituisce la prima riga della tabella HTML, contenente il risultato del monitoraggio
-- oppure l'indicazione che il monitoraggio non è ancora stato effettuato.
--
-- @return {table}
function MonitoraggioTable:_getNodeLivello()
local text, icon
if self.livello then
Riga 438 ⟶ 518:
icon, text = cfg.monitoraggio.icon, cfg.monitoraggio.text
text = string.format('%s<br />Ha ottenuto una valutazione di livello %s <small>(%s)</small>.',
text, self:
end
else
Riga 454 ⟶ 534:
end
-- Restituisce il wikilink del risultato del monitoraggio, formattato opportunamente.
--
-- @return {string}
function MonitoraggioTable:_getWlinkLivello()
local codeStyle = {
['font-weight'] = 'bold',
Riga 471 ⟶ 554:
end
-- Restituisce la data del monitoraggio se esiste la relativa categoria
-- di monitoraggio per mese oppure un messaggio di errore.
--
-- @return {string}
function MonitoraggioTable:_getTextData()
local ret
if self.args.data then
Riga 482 ⟶ 569:
end
-- Restituisce la riga della tabella HTML per ciascuna delle quattro valutazioni di
-- "accuratezza", "scrittura", "fonti" e "immagini", formattata opportunamente.
--
-- @param {string} param
-- @return {table}
function MonitoraggioTable:_getNodeGrade(param)
return mw.html.create('tr')
:css('background-color', 'white')
Riga 496 ⟶ 588:
end
-- =============================================================================
-- Funzioni
-- =============================================================================
local p = {}
--
function p._livello(args)
return getLivello(parseArgs(args))
end
--
function p.livello(frame)
return p._livello(getArgs(frame))
end
--
function p.categorie(frame)
local args, projects = parseArgs(getArgs(frame))
local livello = getLivello(args)
local categories = getCategories(livello, args, projects)
return args.debug and ( table.concat(categories, '<br />'):gsub('%[%[', '[[:') ) .. '<br />' or
Riga 521 ⟶ 613:
end
--
-- per retrocompatibilità con template che lo usavano.
function p.classe(frame)
local value = frame:getParent().args[1]
Riga 528 ⟶ 620:
end
--
function p.main(frame)
local args, projects, errcat, errmsg = parseArgs(getArgs(frame, { parentOnly = true }))
if hasMonitoraggio(projects) then
local livello = getLivello(args)
|