Modulo:Progetti interessati: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m semplificato getSpanGrade
aggiunta tabella projects, aggiornata nomenclatura
Riga 11:
 
-- Variabili globali
local projParams = { 'progetto', 'progetto2', 'progetto3', 'progetto4' }
local gradeParams = { 'accuratezza', 'scrittura', 'fonti', 'immagini' }
local validGrades = { a = true, b = true, c = true, d = true, e = true }
--local importanceParams = { 'importanza', 'importanza2', 'importanza3', 'importanza4' }
--local validImportances = { massima = true, alta = true, media = true, bassa = true }
 
-------------------------------------------------------------------------------
Riga 26 ⟶ 23:
return title and title.exists
end
 
local function project(param, args, subpage)
local ret = cfg.alias[args[param] and args[param]:lower()] or
mw.language.getContentLanguage():ucfirst(args[param])
-- subpage: per le icone e per l'etichetta del wikilink del progetto
if ret and subpage then
ret = mw.title.new('Progetto:' .. ret).subpageText
end
return ret
end
 
local function grade(param, args)
return args[param] or 'nc'
end
 
--local function importanceFromProject(projParam, args)
-- local num = mw.ustring.match(projParam, '^progetto(%d)$')
-- local param = num and ('importanza' .. num) or
-- (projParam == 'progetto' and 'importanza' or nil)
-- return args[param] or 'sconosciuta'
--end
 
local function lowestGrade(args)
Riga 56 ⟶ 32:
local function parseArgs(args)
local errcat = {}
local projects = {}
 
-- controllo importanza
--for _, param in ipairs(importanceParams) do
-- if args[param] and not validImportances[args[param]] then
-- args[param] = nil
-- table.insert(errcat, '[[Categoria:Pagine con template Monitoraggio con importanza invalida]]')
-- end
--end
 
-- controllo valutazioni
Riga 76 ⟶ 45:
args.data = args.data and args.data:lower() or nil
 
-- popola la tabella projects
-- controllo progetto
if args.progetto then
for _, param in ipairs(projParams{ 'progetto', 'progetto2', 'progetto3', 'progetto4' }) do
if args[param] then
local titlename = 'Progetto:' cfg.. project(alias[args[param,] and args[param]:lower()] or
mw.language.getContentLanguage():ucfirst(args[param])
if titleExists(title) then
if titleExists('Progetto:' .. name) then
-- verifica se esiste il monitoraggio in base alla presenza
--if dellanot sottopaginatitleExists('Progetto:' .. name .. '/Monitoraggio voci') then
if not titleExists(title .. '/Monitoraggio voci') then
table.insert(errcat, '[[Categoria:Errori di compilazione del template Monitoraggio]]')
break
end
local project = {
name = name,
subpage = mw.title.new('Progetto:' .. name).subpageText,
}
table.insert(projects, project)
else
table.insert(errcat, '[[Categoria:Pagine con template Monitoraggio con progetto non esistente]]')
Riga 99 ⟶ 71:
end
 
return args, projects, table.concat(errcat)
end
 
Riga 160 ⟶ 132:
end
 
local function getCategories(livello, args, projects)
local ret = {}
local cat
Riga 170 ⟶ 142:
table.insert(ret, cat)
 
for _, paramproject in ipairs(projParamsprojects) do
cat = string.format('[[Categoria:Voci monitorate Progetto %s]]', project.name)
if args[param] then
table.insert(ret, cat)
cat = string.format('[[Categoria:Voci monitorate Progetto %s]]', project(param, args))
table.insert(ret, cat)
end
end
 
Riga 180 ⟶ 150:
-- 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
cat = string.format('Categoria:Progetto:%s/Tabella monitoraggio automatico - %s %s',
if args[projParam] then
project.name, gradeParam, args[gradeParam] or 'nc')
cat = string.format('Categoria:Progetto:%s/Tabella monitoraggio automatico - %s %s',
if titleExists(cat) then
project(projParam, args), gradeParam, grade(gradeParam, args))
table.insert(ret, '[[' .. cat .. ']]')
if titleExists(cat) then
table.insert(ret, '[[' .. cat .. ']]')
end
end
end
Riga 196 ⟶ 164:
 
-- categorie per il [[template:Tabella monitoraggio]]
for _, paramproject in ipairs(projParamsprojects) do
cat = string.format('Categoria:Voci monitorate Progetto %s - %s',
if args[param] then
project.name, suffix)
cat = string.format('Categoria:Voci monitorate Progetto %s - %s',
if titleExists(cat) then
project(param, args), suffix)
table.insert(ret, '[[' .. cat .. ']]')
if titleExists(cat) then
table.insert(ret, '[[' .. cat .. ']]')
end
--cat = string.format('Categoria:Voci monitorate Progetto %s - importanza %s',
-- project(param, args), importanceFromProject(param, args))
--table.insert(ret, '[[' .. cat .. ']]')
end
end
Riga 230 ⟶ 193:
local ProjectsTable = {}
 
function ProjectsTable:new(argsprojects)
local self = {}
setmetatable(self, { __index = ProjectsTable })
self.argsprojects = argsprojects
return self
end
Riga 246 ⟶ 209:
local tableNode = mw.html.create('table'):css(tableStyle)
 
-- intestazione
local projects = {}
for _, param in ipairs(projParams) do
if self.args[param] then
table.insert(projects, self.args[param])
end
end
local text = 'La voce <b>' .. mw.title.getCurrentTitle().text .. '</b> rientra tra gli argomenti trattati' ..
(#self.projects > 1 and " dai seguenti [[Wikipedia:Progetto|progetti]]:" or
" dal seguente [[Wikipedia:Progetto|progetto]]:")
tableNode
Riga 278 ⟶ 234:
 
-- progetti
for _, paramproject in ipairs(projParamsself.projects) do
tableNode:tag('tr')
if self.args[param] then
:css('background-color', 'white')
tableNode:tag('tr')
:css('background-colorborder', 'whitethin solid #D8D8D8')
:tag('td')
:css('border', 'thin solid #D8D8D8')
:tagcss('tdwidth', '28px')
:css('widthtext-align', '28pxcenter')
:wikitext(self:getIconProject(project))
:css('text-align', 'center')
:done()
:wikitext(self:getIconProject(project(param, self.args, true)))
:donetag('td')
:tagcss('tdwidth', '1px')
:css('widthwhite-space', '1pxnowrap')
:wikitext(string.format("'''[[Progetto:%s|%s]]'''", project.name, project.subpage))
:css('white-space', 'nowrap')
:done()
:wikitext(string.format("'''[[Progetto:%s|%s]]'''", project(param, self.args), project(param, self.args, true)))
:donetag('td')
:wikitext('<div class="plainlinks" style="padding-left: 5px">' .. self:getWlinkProject(project) .. '</div>')
:tag('td')
:done()
:wikitext('<div class="plainlinks" style="padding-left: 5px">' .. self:getWlinkProject(param) .. '</div>')
:done()
end
end
 
Riga 302 ⟶ 256:
end
 
function ProjectsTable:getIconProject(nameproject)
local icon = mw.getCurrentFrame():expandTemplate {
title = 'Icona argomento',
args = { nameproject.subpage }
}
icon = icon == '' and 'Crystal Clear app ksirtet.png' or icon
Riga 312 ⟶ 266:
end
 
function ProjectsTable:getWlinkProject(paramproject)
local links = {}
local fmt = '<small>([[Discussioni progetto:%s|leggi discussioni]]' ..
local url = mw.title.new('Discussioni progetto:' .. project.name):fullUrl( { action = 'edit', section = 'new' } )
' <b>·</b> [%s nuova discussione]' ..
 
' <b>·</b> [[Progetto:%s/Monitoraggio voci|monitoraggio]])</small>'
table.insert(links, string.format('[[Discussioni progetto:%s|leggi discussioni]]', project.name))
return string.format(fmt,
table.insert(links, string.format('[%s nuova discussione]', url))
project(param, self.args),
table.insert(links, string.format('[[Progetto:%s/Monitoraggio voci|monitoraggio]]', project.name))
mw.title.new('Discussioni progetto:' ..
 
project(param, self.args)):fullUrl( { action = 'edit', section = 'new' } ),
return string.format('<small>(%s)</small>', table.concat(links, ' <b>·</b> '))
project(param, self.args))
--importanceFromProject(param, self.args))
end
 
-------------------------------------------------------------------------------
-- classe AssessmentTableMonitoraggioTable
-------------------------------------------------------------------------------
 
local AssessmentTableMonitoraggioTable = {}
 
function AssessmentTableMonitoraggioTable:new(livello, args)
local self = {}
setmetatable(self, { __index = AssessmentTableMonitoraggioTable })
self.livello = livello
self.args = args
Riga 338 ⟶ 291:
end
 
function AssessmentTableMonitoraggioTable:getHTML()
local tableStyle = {
margin = '0 10% 5px 10%',
Riga 380 ⟶ 333:
end
 
function AssessmentTableMonitoraggioTable:getNodeLivello()
local url = mw.title.getCurrentTitle():fullUrl( { action = 'edit' } )
local trNode = mw.html.create('tr')
Riga 401 ⟶ 354:
end
 
function AssessmentTableMonitoraggioTable:getWlinkLivello()
local spanStyle = {
['font-weight'] = 'bold',
Riga 428 ⟶ 381:
end
 
function AssessmentTableMonitoraggioTable:getTextData()
local ret
 
Riga 441 ⟶ 394:
end
 
function AssessmentTableMonitoraggioTable:getNodeGrade(param)
local trNode = mw.html.create('tr')
local descr = cfg[param][self.args[param] or 'nc'] .. ' ' .. cfg[param].help
Riga 477 ⟶ 430:
-- Entry-point per {{#invoke:monitoraggio|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)
Riga 493 ⟶ 446:
-- Entry-point per il template {{Monitoraggio}}
function p.main(frame)
local args, projects, errorCat = parseArgs(getArgs(frame, {parentOnly = true}))
local livello = getLivello(args)
local categories = mw.title.getCurrentTitle().namespace == 1 and
(table.concat(getCategories(livello, args, projects)) .. errorCat) or ''
return ProjectsTable:new(argsprojects):getHTML() ..
AssessmentTableMonitoraggioTable:new(livello, args):getHTML() ..
categories
end