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 4:
local HtmlBuilder = require('Module:HtmlBuilder') -- richiesto per la costruzione del markup html
 
local argsprogetti={} -- variabile che contiene gli argomenti passati al template
local root -- radice del markup html
local log= '' -- per debug
 
-- Valori di default dei parametri
--Tabella di corrispondenza tra valore e file da richiamare
-- priorità, un numero intero (più basso è prima compare il link al progetto)
local prefix_links ={
-- prefisso_progetto, prefisso del progetto
wikisource = {10, 's:', 'Wikisource', false, 'Wikisource-logo.svg', '18px', 'Collabora a Wikisource', ' contiene ', 'opere originali ', 'di o su'},
-- nome_progetto, nome visualizzato del progetto
testo = {20, 's:', 'Testo completo', false, 'Wikisource-logo.svg', '18px', 'Collabora a Wikisource', ' contiene ', 'opere originali ', 'di o su'}, -- da verificare parametri
-- logo del progetto
wikiquote = {30, 'q:', 'Wikiquote', false },
-- dimensioni del logo
wikibooks = {40, 'wikibooks:', 'Wikibooks', false },
-- testo di invito a collaborare
ricetta = {50, 'b:Libro di cucina/Ricette/', 'Ricetta<br />(Wikibooks)', false },
-- testo standard ' contiene '
wiktionary = {60, 'wiktionary:', 'Wikizionario', false},
-- testo standard che identifica il contenuto ('opere originali', 'ricette', ecc..)
v = {70, 'v:', 'Wikiversità', false},
 
wikinews = {80, 'wikinews:', 'Wikinotizie', false},
local default_parameter ={
commons = {90, 'commons:', 'Commons', 'it'},
metawikisource = {1, 's:', 'Wikisource', false, 'Wikisource-logo.svg', '18px', {100'Collabora a Wikisource', 'meta: contiene ', 'Meta-Wikiopere originali ', 'itdi o su'},
wikisourcetesto = {102, 's:', 'WikisourceTesto completo', false, 'Wikisource-logo.svg', '18px', 'Collabora a Wikisource', ' contiene ', 'opere originali ', 'di o su'}, -- da verificare parametri
wikispecies = {110, 'wikispecies:', 'Wikispecies', 'it'},
incubatorwikiquote = {1203, 'incubatorq:', 'IncubatorWikiquote', 'it'false },
voywikibooks = {1304, 'voywikibooks:', 'WikivoyageWikibooks', false },
ricetta = {505, 'b:Libro di cucina/Ricette/', 'Ricetta<br />(Wikibooks)', false },
wikibookswiktionary = {406, 'wikibookswiktionary:', 'WikibooksWikizionario', false },
wiktionaryv = {607, 'wiktionaryv:', 'WikizionarioWikiversità', false},
wikiquotewikinews = {308, 'qwikinews:', 'WikiquoteWikinotizie', false },
wikinewscommons = {809, 'wikinewscommons:', 'WikinotizieCommons', false'it'},
commonsmeta = {9011, 'commonsmeta:', 'CommonsMeta-Wiki', 'it'},
wikispecies = {11012, 'wikispecies:', 'Wikispecies', 'it'},
incubator = {13, 'incubator:', 'Incubator', 'it'},
vvoy = {7014, 'vvoy:', 'WikiversitàWikivoyage', false},
}
 
-- nota oldwikisource rimosso, stando a http://toolserver.org/~kolossos/templatetiger/template-parameter.php?template=interprogetto&lang=itwiki non usato
-- il primo parametro è la priorità di comparsa dell'alias rispetto ad altri alias dello stesso
 
local alias = {
s = {1, 'wikisource'},
Riga 41 ⟶ 50:
if t1[1] < t2[1] then
return true
end
end
 
function return_left_link(nome_voce, priority_fix, parametri)
priority, prefix, label, lang = unpack(parametri)
priority = priority + priority_fix
if lang then
return '* [' .. mw.getCurrentFrame():extensionTag('fullurl', prefix .. nome_voce, {})
else
return '* [[' .. prefix .. nome_voce .. '|' .. label .. ']]'
end
end
Riga 56 ⟶ 55:
local function RenderLeftBar()
-- Crea la barra di sinistra con i link interprogetto
-- TODO if args.notizia then return end
-- costruisce le righe per la barra di sinistra
local left_rows = { }
 
for k, nome_voce in pairs(args) do
-- Se k è un alias lo sostituisco con la chiave corrispondente
local priority_fix = 0
if alias[k] then
priority_fix = alias[k][1]
k = alias[k]
end
 
if prefix_links[k] then
table.insert(left_rows, return_left_link(nome_voce, priority_fix, prefix_links[k]))
end
end
table.sort(left_rows, sort_by_priority)
local leftbar = HtmlBuilder.create()
for k, rowprogetto in pairs(left_rowsprogetti) do
priority, nome_voce, prefix, labelnome_progetto, lang = unpack(parametriprogetto)
leftbar.wikitext(row[2])
if lang then
return leftbar.wikitext('* [' .. mw.getCurrentFrame():extensionTag('fullurl', prefix .. nome_voce, {}))
else
return leftbar.wikitext('* [[' .. prefix .. nome_voce .. '|' .. labelnome_progetto .. ']]')
end k = alias[k]
leftbar.newline()
end
Riga 97 ⟶ 86:
root = HtmlBuilder.create()
RenderLeftBar()
--RenderLinkInText()
return tostring(root)
end
Riga 112 ⟶ 101:
 
-- Carico i parametri
args = {}
current_page = mw.title.getCurrentTitle().text
for k, v in pairs(origArgs) do
-- controlla se è un parametro posizionale e in questo caso la memorizza come
-- chiave con valore pari al nome della pagina corrente
local knprogetto = tonumber(k){}
if kntonumber(k) then
args[v]k = current_pagev
else v = current_page
args[k]=vend
local left_rowssupriority = { }0
if alias[k] then
priority_fixsubpriority, k = unpack(alias[k][1])
end
if prefix_linksdefault_parameter[k] then
table.insert(progetto, default_parameter[k][1] + supriority / 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])
table.insert(progetti, progetto)
end
end
table.sort(left_rowsprogetti, sort_by_priority)
return _interprogetto()
end