Modulo:Sommario/Sandbox
La documentazione per questo modulo può essere creata in Modulo:Sommario/Sandbox/man
--[=[###########################################################################
MODULO Sommario e Sommario V
Codice preso rispettivamente dal [[template:Sommario V]]
e dal [[template:Sommario ]]
#############################################################################]=]
-- Moduli necessari
local getArgs = require('Modulo:Arguments').getArgs -- carica i valori dei parametri
-- Funzione della categorizzazione
local function categorizza(cat)
return string.format('[[%s:%s]]', mw.site.namespaces[14].name, cat)
end
-- funzione per rilevare se una determinata pagina esiste o no
local function titleExists(pagina)
local title = mw.title.new(pagina)
return title and title.exists
end
local function ottieniLinkCopertina(titolo)
return {
exists = titleExists(titolo .. '/Copertina'),
link = '[[' .. titolo .. '/Copertina|Copertina]]'
}
end
local function ottieniLinkBibliografia(titolo)
if titleExists(titolo .. '/Bibliografia') then
return '[[' .. titolo .. '/Bibliografia|Bibliografia]]'
end
end
local function ottieniLinkSviluppo(titolo)
return (
'[http://it.wikibooks.org/wiki/Speciale:EspandiTemplate?wpInput=%7B%7BTemplate:Bollettino|1=' ..
mw.uri.encode( titolo, 'WIKI' ) ..
'%7D%7D#Bollettino Sviluppo]'
)
end
local function ottieniUrlModifica(args)
local template = args.template or args.titolo
return tostring( mw.uri.fullUrl( 'Template:' .. template, {action = 'edit'} ) )
end
-- MESSAGGIO DI ERRORE PER TEMPLATE SENZA CONTENUTO
local function ErrorMSG(args)
return '<strong class="error">È necessario inserire il parametro "contenuto" con la lista dei moduli</strong>'.. categorizza('Sommario senza contenuto')
end
local p = {}
--[=[###########################################################################
FUNZIONE PER TEMPLATE VERTICALE
#############################################################################]=]
function p.Verticale(frame)
-- Recupera la varibile per gli argomenti
local args = getArgs(frame)
-- ARGOMENTI DI CONTENUTO
local titolo = args.titolo
local contenuto = args.contenuto or ErrorMSG(args)
local categoria = args.categoria or titolo
-- DATI STILE DELLA TABELLA
local larghezza = args.larghezza or '250px'
local colore = args.colore
local coloreTabella = colore or 'azzurro'
-- Gestione delle classi per i colori della tabella
if colore == 'giallo' or colore == 'beige' then coloreTabella = colore end
-- link esterni
local LinkSviluppo = ottieniLinkSviluppo(titolo)
local LinkModifica = ottieniUrlModifica(args) .. ' modifica il sommario'
-- Inputbox
local InputBox = frame:extensionTag{ name = 'inputbox', content = 'type = fulltext\n prefix = '..titolo..'\n width = 24\n searchbuttonlabel = Cerca' }
--[=[###########################################################################
GESTIONE DEI PARAMETRI OPZIONALI
#############################################################################]=]
-- Cerca se esiste la biografia e se esiste la mostra
local LinkBibliografia = ottieniLinkBibliografia(titolo)
if LinkBibliografia ~= nil then
LinkBibliografia = LinkBibliografia .. ' <br /> ' --.. categorizza('Libri senza biografia')
else
LinkBibliografia = ''
end
-- Cerca se esiste la copertina e se non esiste categorizza in "Libri senza copertina"
local LinkCopertina = ottieniLinkCopertina(titolo)
if LinkCopertina.exists then
LinkCopertina = LinkCopertina.link .. ' <br /> '
else
if mw.title.getCurrentTitle().prefixedText == 'Template:'..titolo then -- Controlla che siamo nella pagina del sommario (evita categorizzazione eccessiva)
LinkCopertina = LinkCopertina.link .. ' <br /> ' .. categorizza('Libri senza copertina')
else
LinkCopertina = LinkCopertina.link .. ' <br /> '
end
end
--[=[###########################################################################
CREAZIONE DELLA TABELLA VERTICALE
#############################################################################]=]
tabella = '<div style="width:'..larghezza..';" class="sommario-v-main">\n'
tabella = tabella .. '<div class="sommario-v-header h-'..coloreTabella..'">\n'
tabella = tabella .. '<p class="sommario-v-title">\'\'\'[['.. titolo ..']]\'\'\'</p>\n'
tabella = tabella .. ''.. LinkCopertina..' <br />'..LinkBibliografia..' '
tabella = tabella .. '[[:Categoria:'..categoria..'|Tutti i moduli]] · <span class="plainlinks">'..LinkSviluppo..'</span>\n'
tabella = tabella .. '</div>\n'
tabella = tabella .. '<div class="sommario-v-content c-'..coloreTabella..'">\n'
tabella = tabella .. ''..contenuto..'\n'
tabella = tabella .. '<p class="sommario-v-modify plainlinks">['..LinkModifica..']</p>\n'
tabella = tabella .. '</div>\n'
tabella = tabella .. '<div class="sommario-v-footer c-'..coloreTabella..'">\n'
tabella = tabella .. ''..InputBox.. '</div></div>'
return tabella
end
--[=[###########################################################################
FUNZIONE PER TEMPLATE ORIZZONTALE
#############################################################################]=]
function p.Orizzontale(frame)
local args = getArgs(frame)
local titolo = args.titolo
local contenuto = args.contenuto or ErrorMSG(args)
local colore = args.colore
local coloreTabella = colore or 'azzurro'
-- Gestione delle classi per i colori della tabella
if colore == 'giallo' or colore == 'beige' then coloreTabella = colore end
local html = (
'<div class="noprint">' ..
'<div class="sommario-v-header h-'..coloreTabella..'">' ..
'<div class="sommario-v-title">' ..
"'''[[" .. titolo .. "]]'''" ..
'</div>' ..
"'''Sommario'''<br/>" ..
'<small>[[:Categoria:' .. titolo .. '|Categoria]] '
)
local copertina = ottieniLinkCopertina(titolo)
if copertina.exists then
html = html .. '· ' .. copertina.link .. ' · '
else
if mw.title.getCurrentTitle().prefixedText == 'Template:'..titolo then -- Controlla che siamo nella pagina del sommario (evita categorizzazione eccessiva)
html = html .. '· ' .. copertina.link .. ' · ' .. categorizza('Libri senza copertina')
else
html = html .. '· ' .. copertina.link .. ' · '
end
end
local linkBibliografia = ottieniLinkBibliografia(titolo)
if linkBibliografia ~= nil then
html = html .. '· ' .. linkBibliografia .. ' '
end
html = html .. (
ottieniLinkSviluppo(titolo) .. ' · ' ..
'[' .. ottieniUrlModifica(args) .. ' modifica il template]' ..
'</small></div>' ..
'<div class="sommario-footer c-'..coloreTabella..'">' ..
contenuto ..
'</div></div>'
)
return html
end
return p