Info Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Interprogetto/man (modifica · cronologia)
Sandbox: Modulo:Interprogetto/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Interprogetto/test (modifica · cronologia · esegui)

Modulo Lua per svolgere le funzioni di {{Interprogetto}}.

Ha una sottopagina di configurazione: Modulo:Interprogetto/Configurazione.

Errore Lua in package.lua alla linea 80: module 'Module:HtmlBuilder' not found.


-- Modulo per implementare le funzionalità di template:Interprogetto
local p = {} -- per l'esportazione delle funzioni del modulo

local HtmlBuilder = require('Module:HtmlBuilder') -- richiesto per la costruzione del markup html

local args -- variabile che contiene gli argomenti passati al template
local root -- radice del markup html

--Tabella di corrispondenza tra valore e file da richiamare
local prefix_links ={
    wiksource = { 's:', 'Wikisource' },
    s = {'s:', 'Wikisource'},
    testo = {'s:', 'Wikisource'},
    oldwikisource = {'oldwikisource:', 'Wikisource'},
    wikiquote = {'q:', 'Wikiquote'},
    q = {'q:', 'Wikiquote'},
    wikibooks = {'wikibooks:', 'Wikibooks'},
    b = {'b:', 'Wikibooks'},
    ricetta = {'b:Libro di cucina/Ricette/', 'Ricetta<br />(Wikibooks)'},
    wiktionary = {'wiktionary:', 'Wikizionario'},
    wikt = {'wikt:', 'Wikizionario'},
    v = {'v:', 'Wikiversità'},
    wikinews = {'wikinews:', 'Wikinotizie'},
    n = {'n:', 'Wikinotizie'}, 
}
--TODO collegamenti che usano Interprogetto/CollegamentoUseLang

local function RenderLeftBar()
    -- Crea la barra di sinistra con i link interprogetto
    if args.notizia then return end
    --  Apertura del tag div id="interProject" (vedi [[Mediawiki:Monobook.js]] o [[Mediawiki:Vector.js]])
    local leftbar = root
            .tag('div')
            .attr('id', 'interProject')
            .cssText('display: none; clear: both; border-top: 2px dotted #AAAAAA; margin-top: 2em;')
                .tag('div')
                .attr('title', 'Collegamenti verso gli altri progetti Wikimedia')
    local first_link = true
    for k,v in pairs(args) do
        if prefix_links[k] then
            prefix, label = unpack(prefix_links[k])
            if prefix_links[k] then
                if not first_link then
                    leftbar.newline()
                else
                    first_link = true
                end
                leftbar.wikitext('* [[' .. prefix .. v .. '|' .. label .. ']]')
            end
        end
    end
end

local function _interprogetto()
    --radice del markup ritornato
    root = HtmlBuilder.create('')
    RenderLeftBar()
    return '<nowiki>' .. tostring(root) .. '</nowiki>'
end

function p.interprogetto(frame)
    local origArgs
    -- Se chiamata mediante  #invoke, usa gli argomenti passati al template invocante.
    -- Altrimenti a scopo di test assume che gli argomenti siano passati direttamente
    if frame == mw.getCurrentFrame() then
        origArgs = frame:getParent().args
    else
        origArgs = frame
    end

    -- Carico i parametri
    args = {}
    for k, v in pairs(origArgs) do
        -- controlla se è un parametro posizionale e se si salva il suo valore come chiave
        
        local kn = tonumber(k)
        if kn then
            args[v] = ''
        else
            args[k]=v
        end
    end
    return _interprogetto()
end

return p