Modulo:Sidebar

Da Wikiversità, l'apprendimento libero.
Jump to navigation Jump to search

Modulo Lua che implementa funzionalità per il Template:Sidebar.

Esempi

Sostituzione base

La chiamata

{{#invoke:Sidebar | sostituisciLink
| nomePagina=Numeri reali
| linkErrato=Aiuto:Tour guidato/Nome pagina errato
}}

restituisce una versione modificata di [[Numeri reali]] dove tutti i wikilink sono reindirizzati a [[Aiuto:Tour guidato/Nome pagina errato]].

Sostituzione base e evidenzia wikilink

La chiamata

{{#invoke:Sidebar | sostituisciLink
| nomePagina=Numeri reali
| linkErrato=Aiuto:Tour guidato/Nome pagina errato
| wikilink=Materia:Analisi matematica
| nuovoWikilink=Aiuto:Tour guidato/Materie
}}

restituisce una versione modificata di [[Numeri reali]] dove tutti i wikilink sono reindirizzati a [[Aiuto:Tour guidato/Nome pagina errato]] con l'eccezione di [[Materia:Analisi matematica|Nome del wikilink]] che viene invece trasformato in [[Aiuto:Tour guidato/Materie|Nome del wikilink]] e viene evidenziato da un bordo rosso.


local p = {}

-- Restituisce il sorgente di una pagina con tutti i link che puntano a
-- linkErrato. Inoltre reindirizza [[wikilink|nomeWikilink]] a nuovoWikilink
-- e gli aggiunge un bordo rosso
function p.sostituisciLink(frame)
	local nomePagina = frame.args.nomePagina
	local linkErrato = frame.args.linkErrato
    local wikilink = frame.args.wikilink
    local nuovoWikilink = frame.args.nuovoWikilink
    local nomeWikilink = frame.args.nomeWikilink and '|' .. frame.args.nomeWikilink or ''
    
    local sorgentePagina = frame:expandTemplate{ title = ':' .. nomePagina }
    local escapedWikilink = ''
    if wikilink then
    	escapedWikilink = mw.ustring.gsub(wikilink, '([%-%(%)])', '%%%1')
    end
    
    -- Rimuovi categorie ma tieni l'avviso sulla pagina del corso
    sorgentePagina = mw.ustring.gsub(sorgentePagina, 'puoi %[%[:Categoria:Corso di .-|crearla%]%] tu sei vuoi!',
    	'puoi [[' .. linkErrato .. '|crearla]] tu sei vuoi!')
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Categoria:.-%]%]', '')
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-:Categoria:.-%]%]', '')
    
    -- Espandi sottopagine
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[:[^|]-' .. mw.title.getCurrentTitle().text .. '(/[^/|]-)%]%]',
    	function (sottoPagina)
    		return frame:expandTemplate{ title = ':' .. nomePagina .. sottoPagina }
    	end)
    
    -- Rimuovi titolo modificato
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '<div id="RealTitleBanner".-</div>', '')
    
    -- Per prima cosa, marca i link che non vogliamo reindirizzare
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-File:', '[{[File:')
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Image:', '[{[Image:')
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-Immagine:', '[{[Immagine:')
    if wikilink then
        sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-' .. escapedWikilink, '[{[' .. wikilink)
    end
    
    -- Sostituisci {{FULLPAGENAME}} e {{PAGENAME}}
    sorgentePagina = mw.ustring.gsub(sorgentePagina, mw.title.getCurrentTitle().prefixedText, nomePagina)
    sorgentePagina = mw.ustring.gsub(sorgentePagina, mw.title.getCurrentTitle().text, nomePagina)
    
    -- Fix link di modifica alle sottopagine
    sorgentePagina = mw.ustring.gsub(sorgentePagina, 'w/index.php%?title=.-&action=edit[^%s%]]-',
    	'w/index.php?title=' .. mw.ustring.gsub(linkErrato, '%s', '_'))
    
    -- Reindirizza tutti gli altri link a linkErrato
    -- First we remove all wikilinks to differentiate between those that are labelled
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[[^%]]-|', '[[')
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[', '[[' .. linkErrato .. '|')
    
    -- Fix the links that we have marked previously
    sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[{%[', '[[')
    
    -- Add red border to marked link
    if wikilink then
        sorgentePagina = mw.ustring.gsub(sorgentePagina, '%[%[%s-' .. escapedWikilink .. '(.-%]%])',
            '<span style="border:3px solid red;">[[' .. nuovoWikilink .. '%1</span>')
    end
    
    return sorgentePagina
end

return p