Modulo:Sommario
Istruzioni per l'uso Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Sommario/man (modifica · cronologia) Sandbox: Modulo:Sommario/sandbox (modifica · cronologia) · Test: Modulo:Sommario/test (modifica · cronologia · Esegui) |
Modulo Lua che implementa le funzionalità dei template {{Sommario}} e {{Sommario V}}.
Per i dettagli vedi anche Aiuto:Indice di navigazione.
--[=[###########################################################################
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
-- GESTIONE LINK ALLA COPERTINA
-- fa un controllo automatico e se la pagine esiste la linka
local function ottieniLinkCopertina(titolo)
return {
exists = titleExists(titolo .. '/Copertina'),
link = '[[' .. titolo .. '/Copertina|Copertina]]'
}
end
-- GESTIONE LINK ALLA BIBLIOGRAFIA
-- fa un controllo automatico e se la pagine esiste la linka
local function ottieniLinkBibliografia(titolo)
if titleExists(titolo .. '/Bibliografia') then
return '[[' .. titolo .. '/Bibliografia|Bibliografia]]'
end
end
-- GESTIONE LINK AI BOLLETTINI
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
-- FUNZIONE PER GESTIRE IL LINK ALLA VERSIONE PDF
-- fa il controllo se è caricata una versione PDF locale e la linka automaticamente
local function ottieniLinkPDF(titolo)
return {
exists = titleExists('File:'..titolo .. '.pdf'),
link = '[[:File:'..titolo .. '.pdf|Versione in PDF]] '
}
end
-- FUNZIONE PER GESTIRE IL LINK ALLA VERSIONE STAMPABILE
local function ottieniLinkStampa(titolo)
return {
exists = titleExists(''..titolo .. '/Versione stampabile'),
link = '[['..titolo .. '/Versione stampabile|versione stampabile]]'
}
end
-- MESSAGGIO DI ERRORE
local function ErrorMSG(args, ErrParametro, ErrContenuto)
return '<strong class="error">È necessario inserire il parametro "'..ErrParametro..'" con '..ErrContenuto..'.</strong>'.. categorizza('Sommario senza '..ErrParametro)
end
-- FUNZIONE PER GESTIRE IL LINK DI MODIFCA DEL TEMPLATE
local function ottieniUrlModifica(args)
if args.titolo == '' or args.titolo == nil then
return ''
else
local template = args.template or args.titolo
return tostring( mw.uri.fullUrl( 'Template:' .. template, {action = 'edit'} ) )
end
end
-- FUNZIONE PER GESTIRE LA VISUALIZZAZIONE DELL'IMMAGINE
local function IfImmagine (args)
if args.immagine == '' or args.immagine == nil then
return ''
else
local immagine = args.immagine or ''
immaginepx = args.immaginepx or '150'
local immaginepx = mw.ustring.gsub(immaginepx, '[Pp][Xx]', '')
return '[[File:'..immagine..'|center|'..immaginepx..'px]]'
end
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 or ErrorMSG(args,'titolo', 'il titolo del libro')
local contenuto = args.contenuto or ErrorMSG(args,'contenuto', 'la lista dei moduli')
local categoria = args.categoria or titolo
-- gli argomenti relativi all'immagine vengono prelevati dalla funzione IfImmagine
-- DATI STILE DELLA TABELLA
local larghezza = args.larghezza or ''
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
#############################################################################]=]
-- gestione immagine
local IfImmagine = IfImmagine(args)
-- 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
-- Cerca se esiste il PDF e lo mostra
local LinkPDF = ottieniLinkPDF(titolo, frame)
if LinkPDF.exists then
LinkPDF = '<hr>[[File:Nuvola mimetypes pdf.png|20px]] ' .. LinkPDF.link .. ''
else
if args.pdf == '' or args.pdf == nil then
LinkPDF = ''
else
LinkPDF = '<hr>[[File:Nuvola mimetypes pdf.png|20px]] [[:File:'.. args.pdf .. '|versione in PDF]] '
end
end
-- Cerca se esiste la versione stampabile e la mostra
local LinkStampa = ottieniLinkStampa(titolo)
if LinkStampa.exists then
LinkStampa = '<hr>[[File:Nuvola-inspired File Icons for MediaWiki-fileicon-ps.png|20px]] ' .. LinkStampa.link .. ''
else
LinkStampa = ''
end
--[=[###########################################################################
CREAZIONE DELLA TABELLA VERTICALE
#############################################################################]=]
if args.titolo == '' or args.titolo == nil then
return '<strong><b>Template:Sommario V:</b></strong> '.. ErrorMSG(args,'titolo', 'il titolo del libro')
else
tabella ='<div id="indextop" class="noprint responsive-menu">Indice del libro'
tabella = tabella .. '<div class="responsive-menu-button">[[#index|☰]]</div></div>'
tabella = tabella .. '<div style="width:'..larghezza..';" class="index-content plainlinks noprint" id="index">\n'
tabella = tabella .. '<div class="sommario-v-header h-'..coloreTabella..' ">\n'
tabella = tabella .. '<p class="sommario-v-title">\'\'\'[['.. titolo ..']]\'\'\'</p>\n'
tabella = tabella .. '' ..IfImmagine..''
tabella = tabella .. ''.. LinkCopertina..' <br />'..LinkBibliografia..' '
tabella = tabella .. '[[:Categoria:'..categoria..'|Tutti i moduli]] · <span class="plainlinks">'..LinkSviluppo..'</span>\n'
tabella = tabella .. ''..LinkPDF..''..LinkStampa..''
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 .. '<p class="responsive-menu-close">[[#indextop|chiudi indice]]</p>\n'
tabella = tabella .. '</div>\n'
tabella = tabella .. '<div class="sommario-v-footer c-'..coloreTabella..'">\n'
tabella = tabella .. ''..InputBox.. '</div></div>'
return tabella
end
end
--[=[###########################################################################
FUNZIONE PER TEMPLATE ORIZZONTALE
#############################################################################]=]
function p.Orizzontale(frame)
local args = getArgs(frame)
local titolo = args.titolo
local contenuto = args.contenuto or ErrorMSG(args,'contenuto', 'la lista dei moduli')
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
if args.titolo == '' or args.titolo == nil then
return '<strong><b>Template:Sommario:</b></strong> '.. ErrorMSG(args,'titolo', 'il titolo del libro')
else
local html = (
'<div class="noprint plainlinks sommario-o-main">' ..
'<div class="sommario-v-header h-'..coloreTabella..'">' ..
'<div class="sommario-v-title">' ..
"'''[[" .. titolo .. "]]'''" ..
'</div>' ..
'<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
-- Cerca se esiste il PDF e lo mostra
local LinkPDF = ottieniLinkPDF(titolo)
if LinkPDF.exists then
html = html .. ' ' .. LinkPDF.link .. ' ·'
else
if args.pdf == '' or args.pdf == nil then
html = html
else
html = html .. '[[:File:'.. args.pdf .. '|versione in PDF]] ·'
end
end
-- Cerca se esiste la versione stampabile e la mostra
local LinkStampa = ottieniLinkStampa(titolo)
if LinkStampa.exists then
html = html .. ' ' .. LinkStampa.link .. '·'
end
html = html .. (
ottieniLinkSviluppo(titolo) .. ' · ' ..
' [' .. ottieniUrlModifica(args) .. ' Modifica il template]' ..
'</small></div>' ..
'<div class="sommario-footer c-'..coloreTabella..'">' ..
contenuto ..
'</div></div>'
)
return html
end
end
return p