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 2:
 
local p = {} -- per l'esportazione delle funzioni del modulo
 
local HtmlBuilder = require('Module:HtmlBuilder') -- richiesto per la costruzione del markup html
local progetti={} -- dati da usare per la costruzione delle righe dell'elenco di link ai progetti
Riga 19:
local function Link(intext, progetto)
if intext then
_, _, prefix, nome_progetto, _, collegamento, etichetta, icona, dimensione_icona, testo_iniziale, oggetto, preposizione,
vapri, vchiudi, lingua = unpack(progetto)
text = table.concat({'* [[File:', icona, '|link=', prefix, '|', dimensione_icona,'|Collabora a ', nome_progetto,
"]]", ' ', testo_iniziale, "'''[[", prefix, nome_progetto, '|', nome_progetto, "]]''' contiene ", oggetto, ' ', lingua,
preposizione, add_space(preposizione), vapri, "'''[[", prefix, collegamento, '|',
etichetta, "]]'''", vchiudi })
Riga 31:
return text
end
 
local function LinkRicette(intext, progetto)
if intext then
_, _, prefix, nome_progetto, _, collegamento, etichetta, icona, dimensione_icona, oggetto,
preposizione = unpack(progetto)
text = table.concat({'* [[File:', icona, '|link=', prefix, '|', dimensione_icona,'|Collabora a ',
nome_progetto, "]] Il ''[[b:Libro di cucina|Libro di cucina]]'' di '''[[",
prefix, '|', nome_progetto, "]]''' contiene ", "[[", prefix, collegamento,
"|ricette]]", " relative a questo argomento." }) --TODO check etichette
else
_, _, prefix, nome_progetto, nome_leftbar, collegamento, etichetta = unpack(progetto)
text = table.concat({'* [[', prefix, collegamento, '|', nome_leftbar or nome_progetto, ']]'})
end
return text
end
 
 
local function LinkWithLanguage(intext, progetto)
if intext then
_, _, prefix, nome_progetto, _, collegamento, etichetta, icona, dimensione_icona, testo_iniziale, oggetto, preposizione,
vapri, vchiudi, lingua = unpack(progetto)
text = table.concat({'* [[File:', icona, '|link=', prefix, '|', dimensione_icona, '|Collabora a ', nome_progetto,
"]]", ' ', testo_iniziale, "'''<span class=\"plainlinks\">[", tostring(mw.uri.fullUrl(prefix .. 'Pagina principale',
{uselang='it'})), ' ', nome_progetto, "]</span>''' contiene ", oggetto, ' ', preposizione,
add_space(preposizione), vapri, "'''<span class=\"plainlinks\">[",
Riga 52 ⟶ 68:
local function LinkNotizia(intext, progetto)
if intext then
_, _, prefix, nome_progetto, _, collegamento, etichetta, icona, dimensione_icona, testo_iniziale, oggetto, preposizione,
vapri, vchiudi, lingua = unpack(progetto)
text = table.concat({'* [[File:', icona, '|link=', prefix, '|', dimensione_icona,'|Collabora a ', nome_progetto,
"]]", '" ',Articolo testo_iniziale,su "'''[[", prefix, nome_progetto, '|', nome_progetto, "]]''': ",
"'''[[", prefix, collegamento, '|', collegamento, "]]'''" })
else
Riga 62 ⟶ 78:
return text
end
 
-- default_parameter: contiene i valori di default dei parametri
-- priorità: ordine di priorità in cui visualizzare il link (un numero intero)
Riga 68 ⟶ 84:
-- prefisso_progetto: prefisso da usare per i link del progetto
-- nome_progetto: nome del progetto
-- nome_leftbar: nome da usare per il collegamento nella barra di sinistra (falso se coincide con
-- il nome del progetto, altrimenti una stringa, da usare per esempio per wikiricette)
-- etichetta: se diversa da falso è l'etichetta visualizzata nel collegamento del testo, che non
-- viene modificata da eventuali parametri, se è falsa l'etichetta è impostata al nome
-- della pagina o al valore impostato dal parametro "etichetta"
-- (usata da wikiricette che visualizza sempre "ricette" come etichetta per il collegamento)
-- logo del progetto: nome del file che contiene il logo del progetto
-- dimensioni del logo: dimensioni da usare per il logo
-- oggetto standard: per il contenuto ('opere originali', 'testi o manuali', ecc..).
-- testo_iniziale: eventuale testo prima del testo standard nel testo. Una stringa vuota, altrimenti
-- il testo da usare (usato da wikiricette)
-- oggetto standard: per il contenuto ('opere originali', 'testi o manuali', ecc..).
-- Se invece di essere una stringa è impostato a false non inserisce
-- nulla e non viene modificato dai parametri della chiamata.
-- preposizione standard: da mettere prima dell'etichetta ('di o su', 'relative a questo argomento', ecc..)
-- testo di apertura intorno all'etichetta: stringa vuota o testo da usare immediatamente prima del
-- Se invece di essere una stringa è impostato a false non inserisce
-- nulla e non viene modificato dai parametri della chiamata.
-- testo di apertura intorno all'etichetta: stringa vuota o testo da usare immediatamente prima del
-- collegamento (usate dal wikizionario per la virgoletta di
-- apertura e da wikiricette per non inserire niente)
Riga 91 ⟶ 101:
-- di chiusura e da wikiricette per scrivere " relative a questo argomento")
-- lingua originale: lingua di un testo linkato (falso se non è possibile impostarla, '' altrimenti,
-- da usare per i progetti che prevedono l'inserimento di "in xxxxx" tra il nome
-- del progetto e l'etichetta standard per il tipo di contenuto)
 
local default_parameter ={
wikisource = {1, Link, 'wikisource:', 'Wikisource', false, false, 'Wikisource-logo.svg', '18px', '', 'opere originali ', 'di o su', '', '', false},
s = {2, Link, 's:', 'Wikisource', false, false, 'Wikisource-logo.svg', '18px', '', 'opere originali ', 'di o su', '', '', true},
s2 = {3, Link, 's:', 'Wikisource', false, false, 'Wikisource-logo.svg', '18px', '', 'opere originali ', 'di o su', '', '', true},
testo = {4, Link, 's:', 'Wikisource', false, false, 'Wikisource-logo.svg', '18px', '', 'opere originali ', 'di o su', '', '', false},
wikiquote = {5, Link, 'wikiquote:', 'Wikiquote', false, false, 'Wikiquote-logo.svg', '18px', '', 'citazioni', 'di o su', '', '' , false},
q = {6, Link, 'q:', 'Wikiquote', false, false, 'Wikiquote-logo.svg', '18px', '', 'citazioni', 'di o su', '', '' , true},
q2= {7, Link, 'q:', 'Wikiquote', false, false, 'Wikiquote-logo.svg', '18px', '', 'citazioni', 'di o su', '', '' , true},
wikibooks = {8, Link, 'wikibooks:', 'Wikibooks', false, false, 'Wikibooks-logo.svg', '22px', '', 'testi o manuali', 'su', '', '' , false},
b = {9, Link, 'b:', 'Wikibooks', false, false, 'Wikibooks-logo.svg', '22px', '', 'testi o manuali', 'su', '', '' , false},
ricetta = {10, LinkLinkRicette, 'b:Libro di cucina/Ricette/', 'Wikibooks', 'Ricette', 'ricette', 'Wikibooks-logo.svg', '22px', "Il ''[[b:Libro, di cucina|Libro di cucina]]'' di ", false, false, '', ' relative a questo argomento' , false}, --TODO rivedere
wiktionary = {11, Link, 'wiktionary:', 'Wikizionario', false, false, 'Wiktionary small.svg', '18px', '', 'il lemma di dizionario', false'', '«', '»', false},
wikt = {12, Link, 'wikt:', 'Wikizionario', false, false, 'Wiktionary small.svg', '18px', '', 'il lemma di dizionario', false'', '«', '»', false},
v = {13, Link, 'v:', 'Wikiversità', false, false, 'Wikiversity-logo-It.svg', '18px', '', 'informazioni', 'su', '', '', false},
wikinews = {14, Link, 'wikinews:', 'Wikinotizie', false, false, 'Wikinews-logo.svg', '25px', '', 'notizie di attualità', 'su', '', '', false},
n = {15, Link, 'n:', 'Wikinotizie', false, false, 'Wikinews-logo.svg', '25px', '', 'notizie di attualità', 'su', '', '', false},
notizia = {16, LinkNotizia, 'n:', 'Wikinotizie', false, false, 'Wikinews-logo.svg', '25px', 'Articolo su ', false, false'', ': ', '', false},
commons = {17, LinkWithLanguage, 'commons:', 'Commons', false, false, 'Commons-logo.svg', '18px', '', 'immagini o altri file', 'su', '', '', false},
meta = {18, LinkWithLanguage, 'meta:', 'Meta-Wiki', false, false, 'Wikimedia Community Logo.svg', '18px', '', 'informazioni', 'su', '', '', false},
m = {19, LinkWithLanguage, 'm:', 'Meta-Wiki', false, false, 'Wikimedia Community Logo.svg', '18px', '', 'informazioni', 'su', '', '', false},
wikispecies = {20, LinkWithLanguage, 'wikispecies:', 'Wikispecies', false, false, 'WikiSpecies notext.svg', '21px', '', 'informazioni', 'su', '', '', false},
-- incubator = {13, 'incubator:', 'Incubator', 'it', false}, --TODO
voy = {22, Link, 'voy:', 'Wikivoyage', false, false, 'Wikivoyage-logo.svg', '18px', '', 'informazioni turistiche', 'su', '', '', false}
}
 
-- nota oldwikisource rimosso, stando a http://toolserver.org/~kolossos/templatetiger/template-parameter.php?template=interprogetto&lang=itwiki non usato
 
local function trim(s)
-- ritorna la stringa senza spazi iniziali o finali
-- vedi http://lua-users.org/wiki/StringTrim
-- esempio 6 e commento ai test
return s:match'^()%s*$' and '' or s:match'^%s*(.*%S)'
end
 
local function sort_by_priority(t1, t2)
-- per ordinare una tabella in base al valore del primo elemento della tabella
Riga 134 ⟶ 144:
end
end
 
local function default_value(value, default_value)
-- ritorna default_value se il valore è nil o stringa vuota
Riga 162 ⟶ 172:
.attr('title', 'Collegamenti verso gli altri progetti Wikimedia')
.node(leftbar)
 
end
 
local function RenderLinksInText()
-- produce il codice html per l'elenco puntato
Riga 174 ⟶ 184:
root.newline()
end
 
function p.interprogetto(frame)
local origArgs
Riga 184 ⟶ 194:
origArgs = frame
end
 
-- Carico i parametri
local current_title = mw.title.getCurrentTitle().text
Riga 190 ⟶ 200:
local preposizione = default_value(origArgs.preposizione, nil)
local oggetto = default_value(origArgs.oggetto, nil)
 
for k, collegamento in pairs(origArgs) do
-- controlla se è un parametro posizionale e in questo caso la memorizza come
Riga 207 ⟶ 217:
table.insert(progetto, collegamento)
if default_parameter[k][6] then -- se inserire una descrizione standard per l'etichetta piuttosto che il valore impostato nei parametri
table.insert(progetto, default_parameter[k][6])
else
table.insert(progetto, default_value(origArgs[k .. '_etichetta'], etichetta))
Riga 213 ⟶ 223:
table.insert(progetto, default_parameter[k][7]) -- icona
table.insert(progetto, default_parameter[k][8]) -- dimensione icona
table.insert(progetto, default_value(origArgs[k .. '_oggetto'], oggetto) or default_parameter[k][9])
table.insert(progetto, default_value(origArgs[k .. '_preposizione'], preposizione) or default_parameter[k][1110])
if default_parameter[k][10] then -- se la stringa dell'oggetto di default ha valore false (piuttosto che essere una stringa non la sostituisco)
table.insert(progetto, default_value(origArgsdefault_parameter[k][11]) ..-- '_oggetto'],testo oggetto)immediatamente orprima default_parameter[k][10])del collegamento
table.insert(progetto, default_parameter[k][1312]) -- testo immediatamente dopo il collegamento
if default_parameter[k][1413] and origArgs[k ..'_lingua'] then
table.insert(progetto, ' in lingua ' .. origArgs[k ..'_lingua'] .. ' ')
else
table.insert(progetto, '')
end
if default_parameter[k][11] then -- se la preposizione di default ha valore false (piuttosto che essere una stringa non la sostituisco)
table.insert(progetto, default_value(origArgs[k .. '_preposizione'], preposizione) or default_parameter[k][11])
else
table.insert(progetto, '')
end
 
table.insert(progetto, default_value(origArgs[k .. 'lingua'] or false))
table.insert(progetto, default_parameter[k][12]) -- testo immediatamente prima del collegamento
table.insert(progetto, default_parameter[k][13]) -- testo immediatamente dopo il collegamento
if default_parameter[k][14] and origArgs[k ..'_lingua']then
table.insert(progetto, ' in lingua ' .. origArgs[k ..'_lingua'] .. ' ')
else
table.insert(progetto, '')
end
table.insert(progetti, progetto)
end
Riga 239 ⟶ 238:
root = HtmlBuilder.create()
RenderLeftBar()
if notorigArgs[1] and trim(origArgs.[1])~='nolink' then
RenderLinksInText()
end
return tostring(root)
end
 
return p