Modulo:Interprogetto: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Moroboshi (discussione | contributi)
Nessun oggetto della modifica
Moroboshi (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
--Modulo per implementare le funzionalità di template:Interprogetto
--TODO gestione speciale per notizia
local p = {} -- per l'esportazione delle funzioni del modulo
 
Riga 5 ⟶ 6:
 
local progetti={} -- variabile che contiene gli argomenti passati al template
local etichetta -- etichetta da usare per i collegamenti
local root -- radice del markup html
local log= '' -- per debug
Riga 12 ⟶ 14:
-- prefisso_progetto, prefisso del progetto
-- nome_progetto, nome visualizzato del progetto
-- lingua del progetto, un valore booleano falso o il codice della lingua da collegare
-- logo del progetto
-- dimensioni del logo
-- testo di invito a collaborare
-- testoetichetta standard 'per contieneil 'contenuto
-- testo standard che identifica il contenuto ('opere originali', 'ricette', ecc..)
 
local default_parameter ={
wikisource = {1, 's:', 'Wikisource', false, 'Wikisource-logo.svg', '18px', 'Collabora a Wikisource', ' contiene ', 'opere originali ', 'di o su'},
testo = {2, 's:', 'Testo completo', false, 'Wikisource-logo.svg', '18px', 'Collabora a Wikisource', ' contiene ', 'opere originali ', 'di o su'}, -- da verificare parametri
wikiquote = {3, 'q:', 'Wikiquote', false, 'Wikiquote-logo.svg', '18px', 'Collabora a Wikiquote', 'citazioni', 'di o su' },
wikibooks = {4, 'wikibooks:', 'Wikibooks', false, 'Wikibooks-logo.svg', '22px', 'Collabora a Wikibooks', 'testi o manuali', 'su' },
ricetta = {5, 'b:Libro di cucina/Ricette/', 'Ricetta<br />(Wikibooks)', false, 'Wikibooks-logo.svg', '22px', 'collabora a Wikibooks', 'ricette', 'relative a questo argomento' }, --TODO rivedere
wiktionary = {6, 'wiktionary:', 'Wikizionario', false, 'Wiktionary small.svg', '18px', 'Collabora al Wikizionario', 'il lemma di dizionario', '«'}, --TODO chiusura
v = {7, 'v:', 'Wikiversità', false, 'Wikiversity-logo-It.svg', '18px', 'Collabora a Wikiversità', 'informazioni', 'su'},
wikinews = {8, 'wikinews:', 'Wikinotizie', false, 'Wikinews-logo.svg', '25px', 'Collabora a Wikinotizie', 'notizie di attualità', 'su'},
commons = {9, 'commons:', 'Commons', 'it'},
meta = {11, 'meta:', 'Meta-Wiki', 'it'},
wikispecies = {12, 'wikispecies:', 'Wikispecies', 'it'},
incubator = {13, 'incubator:', 'Incubator', 'it'},
voy = {14, 'voy:', 'Wikivoyage', false, 'Wikivoyage-logo.svg', '18px', 'Collabora a Wikivoyage', 'informazioni turistiche', 'su'}
}
 
Riga 48 ⟶ 51:
 
local function sort_by_priority(t1, t2)
-- per ordinare una tabella in base al valore del primo elemento della tabella
if t1[1] < t2[1] then
return true
end
end
 
local function default_value(value, default_value)
-- ritorna default_value se il valore è nil o stringa vuota
if args.nolinkvalue and value ~= '' then return value end
return default_value
end
 
Riga 59 ⟶ 69:
local leftbar = HtmlBuilder.create()
for k, progetto in pairs(progetti) do
priority, nome_voce, prefix, nome_progetto, lang = unpack(progetto)
if lang then
leftbar.wikitext('* [' .. tostring(mw.uri.fullUrl(prefix .. nome_voceetichetta, {uselang=lang})) .. ' ' .. nome_progetto .. ']')
else
leftbar.wikitext('* [[' .. prefix .. nome_voceetichetta .. '|' .. nome_progetto .. ']]')
end
leftbar.newline()
end
Riga 79 ⟶ 89:
 
local function RenderLinkInText()
-- produce il codice html per l'elenco puntato
if args.nolink then return end
root.newline()
end
for k, progetto in pairs(progetti) do
 
priority, prefix, nome_progetto, lang, icona, dimensione_icona, collabora, opere, preposizione = unpack(progetto)
local function _interprogetto()
if lang then
--radice del markup ritornato
text_box = 'TODO'
root = HtmlBuilder.create()
RenderLeftBar() else
root.wikitext(table.concat({'* [[File:', icona, '|link=', prefix, '|', dimensione_icona, '|', collabora, ']]'}))
--RenderLinkInText()
return tostring(root) end
root.newline()
end
end
 
Riga 101 ⟶ 113:
 
-- Carico i parametri
current_pageetichetta = default_value(origArgs.etichetta, mw.title.getCurrentTitle().text)
local etichetta = default_value(origArgs.etichetta, nil)
local preposizione = default_value(origArgs.preposizione, nil)
local oggetto = default_value(origArgs.oggetto, nil)
 
for k, v in pairs(origArgs) do
-- controlla se è un parametro posizionale e in questo caso la memorizza come
Riga 108 ⟶ 124:
if tonumber(k) then
k = v
v = current_pageetichetta
end
local suprioritysubpriority = 0
orig_key = k
if alias[k] then
subpriority, k = unpack(alias[k])
end
if default_parameter[k] then
table.insert(progetto, default_parameter[k][1] + suprioritysubpriority / 10)
table.insert(progetto, v)
table.insert(progetto, default_parameter[k][2]) --prefix
table.insert(progetto, default_parameter[k][3]) --nome progetto
table.insert(progetto, default_parameter[k][4]) -- codice lingua
table.insert(progetto, vdefault_parameter[k][5]) -- logo
table.insert(progetto, default_parameter[k][6]) -- dimensioni logo
table.insert(progetto, default_parameter[k][7]) -- 'Collabora a xxxx'
table.insert(progetto, default_value(origArgs[orig_key .. '_oggetto'], oggetto))
table.insert(progetto, default_value(origArgs[orig_key .. '_preposizione'] or preposizione))
table.insert(progetto, default_value(origArgs[orig_key .. 'lingua'] or nil))
table.insert(progetti, progetto)
end
end
table.sort(progetti, sort_by_priority)
returnroot _interprogetto= HtmlBuilder.create()
RenderLeftBar()
if not origArgs.nolink then
-- RenderLinkInText()
end
return tostring(root)
end