Modulo:Progetti interessati: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix preposizione
-testo alternativo dalle icone, sono soltanto decorative
 
(34 versioni intermedie di 4 utenti non mostrate)
Riga 1:
--[[
* Modulo che implementa il template MonitoraggioProgetti interessati.
]]--
 
require('Modulo:No globalsstrict')
 
local getArgs = require('Modulo:Arguments').getArgs
local cfg = mw.loadData('Modulo:Progetti interessati/Configurazione')
 
local catPrefix = mw.loadData('Modulo:Progetti interessati/Categorie')
-- Configurazione
-- Nomi e valori consentiti dei parametri di monitoraggio/importanza richiesti da più funzioni
local cfg = mw.loadData('Modulo:Monitoraggio/Configurazione')
 
-- Variabili globali
local projParams = { 'progetto', 'progetto2', 'progetto3', 'progetto4' }
local gradeParams = { 'accuratezza', 'scrittura', 'fonti', 'immagini' }
--local importanceParams = { 'importanza', 'importanza2', 'importanza3', 'importanza4' }
local validGrades = { a = true, b = true, c = true, d = true, e = true }
local validImportances = { massima = true, alta = true, media = true, bassa = true }
 
-- =============================================================================
-------------------------------------------------------------------------------
-- Funzioni di utilità
-- =============================================================================
-------------------------------------------------------------------------------
 
-- 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)
Line 27 ⟶ 26:
end
 
-- Restituisce il valore della valutazione ("a", "b", "c" o "d") più bassa inserita
local function project(param, args)
-- nei quattro parametri "accuratezza", "scrittura", "fonti" e "immagini".
return cfg.alias[args[param] and args[param]:lower()] or mw.language.getContentLanguage():ucfirst(args[param])
--
-- @param {table} args
-- @return {string}
local function lowestGrade(args)
local t = { args.accuratezza, args.scrittura, args.fonti, args.immagini }
table.sort(t)
return t[4]
end
 
-- Restituisce l'icona da visualizzare per il progetto specificato,
local function grade(param, args)
-- utilizzando il template Icona argomento e verificando se è un sottoprogetto.
return args[param] or 'nc'
--
end
-- @param {string} name
-- @return {string}
local function getIcon(name)
local icon = mw.getCurrentFrame():expandTemplate {
title = 'Icona argomento',
args = { name }
}
if icon == '' then
local subpage = mw.title.new('Progetto:' .. name).subpageText
if subpage ~= name then
icon = mw.getCurrentFrame():expandTemplate {
title = 'Icona argomento',
args = { subpage }
}
end
end
icon = icon == '' and 'Crystal Clear app ksirtet.png' or icon
 
return string.format('[[File:%s|20x20px|alt= ]]', icon)
-- utilizzata per le icone e per l'etichetta del wikilink del progetto
local function subpage(title)
return mw.title.new('Progetto:' .. title).subpageText
end
 
-- Restituisce il valore del parametro importanzaN relativo al progettoN specificato,
--local function importanceFromProject(projParam, args)
-- o nil se non usato dall'utente.
-- local num = mw.ustring.match(projParam, '^progetto(%d)$')
--
-- local param = num and ('importanza' .. num) or
-- @param {string} projParam
-- (projParam == 'progetto' and 'importanza' or nil)
-- return args[@param] or{table} 'sconosciuta'args
-- @return {string}
--end
local function getImportance(projParam, args)
 
local num = mw.ustring.match(projParam, '^progetto(%d)$')
local function lowestGrade(args)
local param = num and ('importanza' .. num) or
local t = { args.accuratezza, args.scrittura, args.fonti, args.immagini }
(projParam == 'progetto' and 'importanza' or nil)
table.sort(t)
return targs[4param]
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 caterrcat = ''{}
local projects = {}
local nonexistingProjects = {}
local errmsg
local importanceParams = { 'importanza' }
local projectParams = { 'progetto' }
 
-- controllo importanza
--for _,i param= in2, ipairs(importanceParams)cfg.max_progetti do
table.insert(importanceParams, 'importanza' .. i)
-- if args[param] and not validImportances[args[param]] then
end
-- args[param] = nil
for _, param in ipairs(importanceParams) do
-- cat = '[[Categoria:Pagine con template Monitoraggio con importanza invalida]]'
if args[param] and not validImportances[args[param]] then
-- end
args[param] = nil
--end
table.insert(errcat, '[[Categoria:Pagine con template Progetti interessati con importanza invalida]]')
end
end
 
-- controllo valutazioni
Line 68 ⟶ 105:
if args[param] and not validGrades[args[param]] then
if args[param] ~= 'nc' then
cat = cat .table.insert(errcat, '[[Categoria:Pagine con template MonitoraggioProgetti interessati con valutazione invalida]]')
end
args[param] = nil
Line 75 ⟶ 112:
args.data = args.data and args.data:lower() or nil
 
-- popola la tabella projects
-- controllo progetto
if args.progetto then
for _,i param= in2, ipairs(projParams)cfg.max_progetti do
table.insert(projectParams, 'progetto' .. i)
if args[param] and not titleExists('Progetto:' .. project(param, args)) then
end
cat = cat .. '[[Categoria:Pagine con template Monitoraggio con progetto non esistente]]'
for _, param in ipairs(projectParams) do
break
if args[param] then
local name = cfg.alias[args[param] and args[param]:lower()] or
mw.language.getContentLanguage():ucfirst(args[param])
if titleExists('Progetto:' .. name) then
table.insert(projects, {
name = name,
subpage = mw.title.new('Progetto:' .. name).subpageText,
monitoraggio = titleExists(string.format('Progetto:%s/Monitoraggio voci', name)),
importance = getImportance(param, args),
icon = getIcon(name),
catPrefix = catPrefix[name:lower()]
})
else
table.insert(errcat, '[[Categoria:Pagine con template Progetti interessati con progetto non esistente]]')
table.insert(nonexistingProjects, name)
end
end
end
else
-- almeno un progetto deve essere specificato
cat = cat .. '[[Categoria:Errori di compilazione del template Monitoraggio]]'
table.insert(errcat, '[[Categoria:Errori di compilazione del template Progetti interessati]]')
end
 
-- messaggio d'errore con progetti non esistenti
return args, cat
if #nonexistingProjects > 0 then
local descr = #nonexistingProjects > 1 and 'non esistono i progetti' or 'non esiste il progetto'
errmsg = string.format('<span class="error" style="margin:5px 10%%">Errore: %s %s</span>',
descr, mw.text.listToText(nonexistingProjects))
end
 
return args, projects, errcat, errmsg
end
 
-- Formatta i valori assegnati ai parametri "accuratezza", "scrittura", "fonti" e "immagini".
--
-- @param {string} value
-- @return {table}
local function getLabelGrade(value)
local codeStyle = {
['font-weight'] = 'bold',
['font-size'] = '155%',
['padding-left'] = '.2em',
['padding-right'] = '.2em',
border = '1px solid lightsteelblue',
background = cfg.colors[value] or 'white'
}
return mw.html.create('code')
:css(codeStyle)
:wikitext(value and value:upper() or '<small>nc</small>')
end
 
-- Restituisce true se almeno un progetto tra quelli specificati
-- ha attivato il monitoraggio.
--
-- @param {table} projects
-- @return {boolean}
local function hasMonitoraggio(projects)
local ret = false
for _, project in ipairs(projects) do
if project.monitoraggio then
ret = true
break
end
end
return ret
end
 
-- =============================================================================
-------------------------------------------------------------------------------
-- Funzioni base del Monitoraggio
-- =============================================================================
-------------------------------------------------------------------------------
 
-- 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
Line 132 ⟶ 234:
end
 
-- Restituisce le categorie di servizio in base al livello del monitoraggio ottenuto,
local function getCategories(livello, args)
-- 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 = {}
local cat
Line 142 ⟶ 251:
table.insert(ret, cat)
 
for _, paramproject in ipairs(projParamsprojects) do
if args[param]project.monitoraggio then
cat = string.format('[[Categoria:Voci monitorate Progetto %s]]', project(param, args).name)
table.insert(ret, cat)
end
Line 152 ⟶ 261:
-- per la "Situazione monitoraggio per parametro" di [[Progetto:Qualità/Monitoraggio voci/Tabella]]
cat = string.format('[[Categoria:Voci monitorate - %s %s]]',
gradeParam, grade(args[gradeParam,] argsor 'nc'):upper())
table.insert(ret, cat)
 
-- categorie per il [[template:Tabella monitoraggio]]
for _, projParamproject in ipairs(projParamsprojects) do
if args[projParam]project.monitoraggio then
cat = string.format('Categoria:Progetto:%s/Tabella monitoraggio automatico - %s %s',
project(projParam, args).name, gradeParam, grade(args[gradeParam,] args)or 'nc')
if titleExists(cat) then
table.insert(ret, '[[' .. cat .. ']]')
Line 168 ⟶ 277:
 
-- categorie per il [[template:Tabella monitoraggio]]
for _, paramproject in ipairs(projParamsprojects) do
if args[param]project.monitoraggio then
cat = string.format('Categoria:Voci monitorate Progetto %s - %s',
project(param, args).name, suffix)
if titleExists(cat) then
table.insert(ret, '[[' .. cat .. ']]')
end
end
--cat = string.format('Categoria:Voci monitorate Progetto %s - importanza %s',
if project.importance and project.catPrefix then
-- project(param, args), importanceFromProject(param, args))
cat = string.format('Categoria:%s - importanza %s', project.catPrefix, project.importance)
--table.insert(ret, '[[' .. cat .. ']]')
table.insert(ret, '[[' .. cat .. ']]')
end
end
 
-- per la "Situazione monitoraggio per mese" di [[Progetto:Qualità/Monitoraggio voci/Tabella]]
if args.datalivello then
if args.data then
cat = string.format('Categoria:Voci monitorate - %s', args.data)
if titleExists(cat) then
table.insert(ret, '[[' .. cat .. ']]')
else
table.insert(ret, '[[Categoria:Errori di compilazione del template Progetti interessati]]')
end
else
table.insert(ret, '[[Categoria:ErroriVoci dimonitorate compilazione- delnon template Monitoraggiodatate]]')
end
elseif (args.data or args.utente) and not args.note then
else
table.insert(ret, '[[Categoria:VociPagine monitoratecon -template nonProgetti datateinteressati con utente o data e senza monitoraggio]]')
end
 
Line 196 ⟶ 310:
end
 
-- =============================================================================
-------------------------------------------------------------------------------
-- Classe Creazione HTMLProjectsTable
-- =============================================================================
-------------------------------------------------------------------------------
 
-- La classe ProjectsTable rappresenta la prima delle due tabelle HTML
local function getIconProject(name)
-- prodotte dal modulo, quella per elencare i wikiprogetti.
local icon = mw.getCurrentFrame():expandTemplate {
title = 'Icona argomento',
args = { name }
}
icon = icon == '' and 'Crystal Clear app ksirtet.png' or icon
 
local ProjectsTable = {}
return string.format('[[File:%s|25x40px]]', icon)
end
 
-- Costruttore della classe ProjectsTable.
local function getWlinkProject(param, args)
--
local fmt = '<small>([[Discussioni progetto:%s|leggi discussioni]]' ..
-- @param {table} projects
' <b>·</b> [%s nuova discussione]' ..
-- @return {table} un nuovo oggetto ProjectsTable
' <b>·</b> [[Progetto:%s/Monitoraggio voci|monitoraggio]])</small>'
function ProjectsTable:new(projects)
return string.format(fmt,
local self = {}
project(param, args),
setmetatable(self, { __index = ProjectsTable })
mw.title.new('Discussioni progetto:' ..
self.projects = projects
project(param, args)):fullUrl( { action = 'edit', section = 'new' } ),
return self
project(param, args))
--importanceFromProject(param, args))
end
 
-- Restituisce la tabella HTML con una riga di introduzione e una per la sottotabella progetti.
local function getNodeProjects(args)
--
local tableNode = mw.html.create('table')
-- @return {string}
 
function ProjectsTable:getHTML()
local tableStyle = {
margin = '5px 10%',
width = '80%',
border = '1px solid #a7d7f9',
['background-color'] = cfg.bgcolor,
}
local text = #self.projects > 1 and cfg.progetti.text2 or cfg.progetti.text
local tableNode = mw.html.create('table'):css(tableStyle)
tableNode
:tag('tr')
:css('border-collapse', 'collapse')
:csstag('width', '100%td')
:css('width', '52px')
:css('text-align', 'center')
:wikitext(cfg.progetti.icon)
:done()
:tag('td')
:wikitext(mw.getCurrentFrame():preprocess(text))
:done()
tableNode
:tag('tr')
:tag('td')
:attr('colspan', '2')
:node(self:_getNodeProjects())
:done()
 
if titleExists(mw.getCurrentFrame():preprocess('WP:Bibliografia/{{SUBJECTPAGENAME}}')) then
-- progetti
tableNode
for _, param in ipairs(projParams) do
:tag('tr')
if args[param] then
tableNode:tag('trtd')
:css('backgroundtext-coloralign', 'whitecenter')
:attr('colspan', '2') :wikitext(mw.getCurrentFrame():preprocess('[[WP:Bibliografia/{{SUBJECTPAGENAME}}|Bibliografia utilizzabile]]'))
:css('border', 'thin solid #D8D8D8')
:tagdone('td')
:css('width', '28px')
:css('text-align', 'center')
:wikitext(getIconProject(subpage(project(param, args))))
:done()
:tag('td')
:css('width', '1px')
:css('white-space', 'nowrap')
:wikitext(string.format("'''[[Progetto:%s|%s]]'''", project(param, args), subpage(project(param, args))))
:done()
:tag('td')
:wikitext('<div class="plainlinks" style="padding-left: 5px">' .. getWlinkProject(param, args) .. '</div>')
:done()
end
end
 
return tostring(tableNode)
end
 
-- Restituisce la sottotabella HTML con un progetto per riga.
local function getWlinkLivello(livello)
--
local spanStyle = {
-- @return {table}
['font-weight'] = 'bold',
function ProjectsTable:_getNodeProjects()
['font-size'] = '125%',
local tableStyle = {
['border'] = '1px solid lightsteelblue',
width = '100%',
['background'] = (livello and cfg.livello[livello].color) and cfg.livello[livello].color or 'white',
['colorborder-collapse'] = 'bluecollapse'
}
local spanNodetableNode = mw.html.create('spantable'):css(tableStyle)
 
local text
-- progetti
if livello and cfg.livello[livello].label then
for _, project in ipairs(self.projects) do
text = string.format('[[:Categoria:Voci monitorate - %s|%s]]',
tableNode:tag('tr')
cfg.livello[livello].cat, cfg.livello[livello].label)
:css('background-color', 'white')
elseif not livello then
:css('border', 'thin solid #D8D8D8')
text = '[[:Categoria:Voci monitorate - non compilate|NC]]'
:tag('td')
:css('width', '28px')
:css('text-align', 'center')
:wikitext(project.icon)
:done()
:tag('td')
:css('width', '1px')
:css('white-space', 'nowrap')
:wikitext(string.format("'''[[Progetto:%s|%s]]'''", project.name, project.subpage))
:done()
:tag('td')
:addClass('plainlinks')
:css('padding-left', '5px')
:wikitext(self:_getWlinkProject(project))
:done()
:tag('td')
:css('width', '11em')
:wikitext((project.importance and project.catPrefix) and
string.format('[[:Categoria:%s - importanza %s|importanza %s]]',
project.catPrefix, project.importance, project.importance) or '')
:done()
end
if text then
spanNode:css(spanStyle)
text = string.format("'''<tt>&nbsp;%s&nbsp;</tt>'''", text)
else
text = '[[File:Symbol stub class.svg|25px|center]]'
end
spanNode:wikitext(text)
 
return spanNodetableNode
end
 
-- Restituisce il link al progetto, al bar di progetto e all'eventuale monitoraggio delle voci.
local function getTextData(args)
--
local ret
-- @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]]'
local fmtIcon2 = '[[File:VisualEditor - Icon - Search-big.svg|20x20px|monitoraggio voci|link=Progetto:%s/Monitoraggio voci]]'
 
table.insert(links, string.format(fmtIcon, project.name))
if args.data then
local cat = table.insert(links, string.format('Categoria:Voci monitorate -[[Discussioni progetto:%s|bar di progetto]]', argsproject.dataname))
-- link monitoraggio opzionale
if titleExists(cat) then
if project.monitoraggio then
ret = '<small>(' .. args.data .. ')</small>'
table.insert(links, string.format(fmtIcon2, project.name))
end
table.insert(links, string.format('[[Progetto:%s/Monitoraggio voci|monitoraggio voci]]', project.name))
end
 
return table.concat(links, ' ')
return ret or "(<span style=\"color:red;\"><small>'''''mese e anno'''''</small></span>)"
end
 
-- =============================================================================
local function getNodeLivello(livello, args)
-- Classe MonitoraggioTable
local url = mw.title.getCurrentTitle():fullUrl( { action = 'edit' } )
-- =============================================================================
local trNode = mw.html.create('tr')
trNode
:tag('td')
:css('background-color', 'none')
:css('width', '90px')
:node(getWlinkLivello(livello))
:done()
:tag('td')
:wikitext(livello and cfg.livello[livello].msg .. ' ' .. getTextData(args) or
"<div class=\"plainlinks\">La voce non è stata ancora monitorata, [" .. url .. " fallo ora]!</div>")
:done()
:tag('td')
:css('width', '80px')
:wikitext('')
:done()
 
-- La classe ProjectsTable rappresenta la seconda delle due tabelle HTML
return trNode
-- prodotte dal modulo, quella per visualizzare la valutazione del monitoraggio.
end
 
local MonitoraggioTable = {}
local function getSpanGrade(value)
local spanStyle = {
['font-weight'] = 'bold',
['font-size'] = '155%',
['border'] = '1px solid lightsteelblue',
background = cfg.colors[value] or 'white'
}
local spanNode = mw.html.create('span')
value = string.format("&thinsp;'''<tt>%s&thinsp;</tt>'''",
value and value:upper() or '<small>nc</small>')
spanNode
:css(spanStyle)
:wikitext(value)
return spanNode
end
 
-- Costruttore della classe MonitoraggioTable.
local function getNodeGrade(param, args)
--
local trNode = mw.html.create('tr')
-- @param {string} livello
local descr = cfg[param][args[param] or 'nc'] .. ' ' .. cfg[param].help
-- @param {table} args
trNode
-- @return {table} un nuovo oggetto MonitoraggioTable
:css('background-color', 'white')
function MonitoraggioTable:new(livello, args)
:css('border', 'thin solid #D8D8D8')
local self = {}
:tag('td')
setmetatable(self, { __index = MonitoraggioTable })
:css('width', '40px')
self.livello = livello
:css('padding-left', '5px')
self.args = args
:node(getSpanGrade(args[param]))
return self
:done()
:tag('td')
:wikitext(descr)
:done()
 
return trNode
end
 
-- Restituisce la tabella HTML con una riga di introduzione e una per la sottotabella
local function getHTML(livello, args)
-- 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 = {
margin = '5px 10% 5px 10%',
width = '80%',
border = '1px solid #a7d7f9',
['background-color'] = '#EAF7ED'cfg.bgcolor
}
local tableNode1tableNode = mw.html.create('table')
tableNode
tableNode1
:css(tableStyle)
:css('margin-bottom', '0px')
 
-- intestazione
local projects = {}
for _, param in ipairs(projParams) do
if args[param] then
table.insert(projects, args[param])
end
end
local text = 'La voce <b>' .. mw.title.getCurrentTitle().text .. '</b> rientra tra gli argomenti trattati' ..
(#projects > 1 and " dai seguenti [[Wikipedia:Progetto|progetti]]:" or
" dal seguente [[Wikipedia:Progetto|progetto]]:")
tableNode1
:tag('tr')
:tag('td')
:css('padding-left', '.3em')
:wikitext(text)
:done()
:tag('tr')
:tag('td')
:node(getNodeProjects(args))
:done()
 
local tableNode2 = mw.html.create('table')
tableNode2
:addClass('mw-collapsible mw-collapsed')
:css(tableStyle)
:css('border-top', '0px')
:css('margin-top', '0px')
 
-- livello
tableNode
tableNode2
:node(getNodeLivelloself:_getNodeLivello(livello, args))
-- valutazioni
tableNode
tableNode2
:tag('tr')
:tag('td')
Line 402 ⟶ 484:
:css('width', '100%')
:css('border-collapse', 'collapse')
:node(getNodeGradeself:_getNodeGrade('accuratezza', args))
:node(getNodeGradeself:_getNodeGrade('scrittura', args))
:node(getNodeGradeself:_getNodeGrade('fonti', args))
:node(getNodeGradeself:_getNodeGrade('immagini', args))
-- note
if self.args.note then
tableNode
tableNode2
:tag('tr')
:tag('td')
:css('padding-left', '0.2em')
:attr('colspan', '3')
:wikitext(string.format("<ul><li>''note'Note:''' %s</li></ul>%s", args.note))
self.args.note:match('^[#*]') and '\n' or '',
self.args.note))
end
-- data
if self.args.data then
local data = self:_getTextData()
tableNode
:tag('tr')
:tag('td')
:css('text-align', 'right')
:css('font-size', '80%')
:css('line-height', '1')
:attr('colspan', '3')
:wikitext(string.format('Monitoraggio effettuato %s%s',
data:match('^[ao]') and 'nell\'' or 'nel ', data))
end
 
return tostring(tableNode1) .. tostring(tableNode2tableNode)
end
 
-- Restituisce la prima riga della tabella HTML, contenente il risultato del monitoraggio
-------------------------------------------------------------------------------
-- oppure l'indicazione che il monitoraggio non è ancora stato effettuato.
-- API
--
-------------------------------------------------------------------------------
-- @return {table}
function MonitoraggioTable:_getNodeLivello()
local text, icon
if self.livello then
if self.livello:sub(1, 1) == '0' then
icon, text = cfg.monitoraggio.icon_pc, cfg.monitoraggio.text_pc
else
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:_getWlinkLivello(), self:_getTextData())
end
else
icon, text = cfg.monitoraggio.icon_nc, cfg.monitoraggio.text_nc
end
return mw.html.create('tr')
:tag('td')
:css('width', '52px')
:css('text-align', 'center')
:wikitext(icon)
:done()
:tag('td')
:wikitext(mw.getCurrentFrame():preprocess(text))
:done()
end
 
-- Restituisce il wikilink del risultato del monitoraggio, formattato opportunamente.
--
-- @return {string}
function MonitoraggioTable:_getWlinkLivello()
local codeStyle = {
['font-weight'] = 'bold',
['padding-left'] = '.4em',
['padding-right'] = '.4em',
border = '1px solid lightsteelblue',
background = cfg.livello[self.livello].color,
color = 'blue'
}
local text = string.format('[[:Categoria:Voci monitorate - %s|%s]]',
cfg.livello[self.livello].cat, cfg.livello[self.livello].label)
local codeNode = mw.html.create('code')
codeNode:css(codeStyle)
codeNode:wikitext(text)
return tostring(codeNode)
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
local cat = string.format('Categoria:Voci monitorate - %s', self.args.data)
if titleExists(cat) then
ret = self.args.data
end
end
return ret or "<span style=\"color:red;\">'''''mese e anno'''''</span>"
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')
:css('border', 'thin solid #D8D8D8')
:tag('td')
:css('width', '52px')
:css('text-align', 'center')
:node(getLabelGrade(self.args[param]))
:done()
:tag('td')
:wikitext(cfg[param][self.args[param] or 'nc'] .. ' ' .. cfg[param].help)
:done()
end
 
-- =============================================================================
-- Funzioni esportate
-- =============================================================================
 
local p = {}
 
-- PerFunzione per l'utilizzo da un altro modulo.
function p._livello(args)
return getLivello(parseArgs(args))
end
 
-- Entry-pointFunzione per {{#invoke:monitoraggioProgetti interessati|livello}}.
function p.livello(frame)
return p._livello(getArgs(frame))
end
 
-- Entry-pointFunzione per {{#invoke:monitoraggioProgetti interessati|categorie}}.
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
table.concat(categories)
end
 
-- Entry-pointFunzione per il sottotemplate {{MonitoraggioProgetti interessati/classe}}
-- per retrocompatibilità con template che lo usavano.
function p.classe(frame)
local value = frame:getParent().args[1]
return tostring(getSpanGradegetLabelGrade(validGrades[value] and value or nil))
end
 
-- Entry-pointFunzione per il template {{MonitoraggioProgetti interessati}}.
function p.main(frame)
local args, errorCatprojects, errcat, errmsg = parseArgs(getArgs(frame, { parentOnly = true }))
if hasMonitoraggio(projects) then
local livello = getLivello(args)
local livello = getLivello(args)
local categories = mw.title.getCurrentTitle().namespace == 1 and
(table.concat(getCategories(livello, args, projects)) .. errorCattable.concat(errcat)) or ''
return getHTML(livello,errmsg argsor '') .. categories
ProjectsTable:new(projects):getHTML() ..
MonitoraggioTable:new(livello, args):getHTML() ..
categories
else
return (errmsg or '') ..
ProjectsTable:new(projects):getHTML() ..
table.concat(errcat)
end
end