Modulo:Interprogetto: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m fix |
ripristino ordine fisso come da discussione |
||
Riga 4: | Riga 4: | ||
local cachedProj = {} |
local cachedProj = {} |
||
local projects = { |
local projects = { |
||
[{' |
{[{'w', 'WikiPedia'}] = {'w', 'Wikipedia', 'Wikipedia-logo.svg|18px', "'''Wikipedia''' ha una voce di approfondimento su '''[[w:%s|%s]]'''."}}, |
||
[{' |
{[{'wAutore'}] = {'w', 'Wikipedia', 'Wikipedia-logo.svg|18px', "Voce enciclopedica su '''[[w:%s|Wikipedia]]'''"}}, |
||
[{' |
{[{'q', 'WikiQuote'}] = {'q', 'Wikiquote', 'Wikiquote-logo.svg|18px', "'''Wikiquote''' contiene citazioni di o su '''[[:q:%s|%s]]'''."}}, |
||
[{' |
{[{'qAutore'}] = {'q', 'Wikiquote', 'Wikiquote-logo.svg|18px', "Citazioni su '''[[:q:%s|Wikiquote]]'''"}}, |
||
[{'n', 'WikiNews'}] |
{[{'n', 'WikiNews'}] = {'n', 'Wikinotizie', 'Wikinews-logo.svg|25px', "'''Wikinotizie''' contiene notizie di attualità su '''[[:n:%s|%s]]'''."}}, |
||
[{'nAutore'}] |
{[{'nAutore'}] = {'n', 'Wikinotizie', 'Wikinews-logo.svg|18px', "Notizie di attualità su '''[[:n:%s|Wikinotizie]]'''"}}, |
||
[{' |
{[{'commons', 'Commons'}] = {'c', 'Commons', 'Commons-logo.svg|18px', "'''Commons''' contiene file multimediali su '''[[c:%s|%s]]'''."}}, |
||
[{' |
{[{'CommonsAutore'}] = {'c', 'Commons', 'Commons-logo.svg|18px', "Immagini e/o file multimediali su '''[[c:%s|Commons]]'''"}}, |
||
[{' |
{[{'b', 'WikiBooks'}] = {'b', 'Wikibooks', 'Wikibooks-logo.svg|22px', "'''Wikibooks''' contiene testi o manuali su '''[[:b:%s|%s]]'''."}}, |
||
[{' |
{[{'wikispecies'}] = {'species', 'Wikispecies', 'WikiSpecies notext.svg|21px', "'''Wikispecies''' contiene informazioni su '''[[species:%s|%s]]'''."}}, |
||
[{' |
{[{'m', 'Meta'}] = {'m', 'Meta-Wiki', 'Wikimedia-logo.svg|18px', "'''Meta-Wiki''' contiene informazioni su '''[[m:%s|%s]]'''."}}, |
||
[{'wikt', 'WikTionary'}] = {'wikt', 'Wikizionario', 'Wiktionary small.svg|18px', "'''Wikizionario''' contiene il lemma «[[wikt:%s|'''%s''']]»."}, |
{[{'wikt', 'WikTionary'}] = {'wikt', 'Wikizionario', 'Wiktionary small.svg|18px', "'''Wikizionario''' contiene il lemma «[[wikt:%s|'''%s''']]»."}}, |
||
[{' |
{[{'v', 'WikiVersity'}] = {'v', 'Wikiversità', 'Wikiversity-logo.svg|18px', "'''Wikiversità''' contiene lezioni su '''[[:v:%s|%s]]'''."}}, |
||
[{'oldwikisource'}] |
{[{'oldwikisource'}] = {'oldwikisource', 'Wikisource'}} |
||
} |
} |
||
for |
for _, proj in ipairs(projects) do |
||
for |
for keys, val in pairs(proj) do |
||
for _, key in ipairs(keys) do |
|||
cachedProj[key] = |
cachedProj[key] = true |
||
end |
|||
end |
end |
||
end |
end |
||
Riga 58: | Riga 60: | ||
local links = {} |
local links = {} |
||
local boxes = {} |
local boxes = {} |
||
for |
for _, proj in ipairs(projects) do |
||
for keys, value in pairs(proj) do |
|||
if args[key] then |
|||
for _, key in ipairs(keys) do |
|||
⚫ | |||
if |
if args[key] then |
||
table.insert( |
table.insert(links, createLink(value[1] .. ':' .. args[key], value[2])) |
||
if addBoxes and #value > 3 then |
|||
⚫ | |||
end |
|||
end |
|||
end |
end |
||
end |
end |
Versione delle 17:06, 10 giu 2014
La documentazione per questo modulo può essere creata in Modulo:Interprogetto/man
local fmtLink = '* [[%s|%s]]'
local fmtBox = '[[File:%s|link=:%s:|Collabora a %s]] %s'
local cachedProj = {}
local projects = {
{[{'w', 'WikiPedia'}] = {'w', 'Wikipedia', 'Wikipedia-logo.svg|18px', "'''Wikipedia''' ha una voce di approfondimento su '''[[w:%s|%s]]'''."}},
{[{'wAutore'}] = {'w', 'Wikipedia', 'Wikipedia-logo.svg|18px', "Voce enciclopedica su '''[[w:%s|Wikipedia]]'''"}},
{[{'q', 'WikiQuote'}] = {'q', 'Wikiquote', 'Wikiquote-logo.svg|18px', "'''Wikiquote''' contiene citazioni di o su '''[[:q:%s|%s]]'''."}},
{[{'qAutore'}] = {'q', 'Wikiquote', 'Wikiquote-logo.svg|18px', "Citazioni su '''[[:q:%s|Wikiquote]]'''"}},
{[{'n', 'WikiNews'}] = {'n', 'Wikinotizie', 'Wikinews-logo.svg|25px', "'''Wikinotizie''' contiene notizie di attualità su '''[[:n:%s|%s]]'''."}},
{[{'nAutore'}] = {'n', 'Wikinotizie', 'Wikinews-logo.svg|18px', "Notizie di attualità su '''[[:n:%s|Wikinotizie]]'''"}},
{[{'commons', 'Commons'}] = {'c', 'Commons', 'Commons-logo.svg|18px', "'''Commons''' contiene file multimediali su '''[[c:%s|%s]]'''."}},
{[{'CommonsAutore'}] = {'c', 'Commons', 'Commons-logo.svg|18px', "Immagini e/o file multimediali su '''[[c:%s|Commons]]'''"}},
{[{'b', 'WikiBooks'}] = {'b', 'Wikibooks', 'Wikibooks-logo.svg|22px', "'''Wikibooks''' contiene testi o manuali su '''[[:b:%s|%s]]'''."}},
{[{'wikispecies'}] = {'species', 'Wikispecies', 'WikiSpecies notext.svg|21px', "'''Wikispecies''' contiene informazioni su '''[[species:%s|%s]]'''."}},
{[{'m', 'Meta'}] = {'m', 'Meta-Wiki', 'Wikimedia-logo.svg|18px', "'''Meta-Wiki''' contiene informazioni su '''[[m:%s|%s]]'''."}},
{[{'wikt', 'WikTionary'}] = {'wikt', 'Wikizionario', 'Wiktionary small.svg|18px', "'''Wikizionario''' contiene il lemma «[[wikt:%s|'''%s''']]»."}},
{[{'v', 'WikiVersity'}] = {'v', 'Wikiversità', 'Wikiversity-logo.svg|18px', "'''Wikiversità''' contiene lezioni su '''[[:v:%s|%s]]'''."}},
{[{'oldwikisource'}] = {'oldwikisource', 'Wikisource'}}
}
for _, proj in ipairs(projects) do
for keys, val in pairs(proj) do
for _, key in ipairs(keys) do
cachedProj[key] = true
end
end
end
local function createLink(arg1, arg2)
return string.format(fmtLink, arg1 or '', arg2 or '')
end
local function createBox(val, params)
return string.format(fmtBox, val[3], val[1], val[2], string.format(val[4], unpack(params)))
end
local p = {}
function p.box(frame)
local oldArgs = frame:getParent().args
local args = {}
local addBoxes = (oldArgs[1] == nil or mw.text.trim(oldArgs[1]) ~= 'nolink')
local label
if oldArgs.etichetta and mw.text.trim(oldArgs.etichetta) ~= '' then
label = oldArgs.etichetta
else
label = mw.title.getCurrentTitle().text
end
for key, val in pairs(oldArgs) do
if val and mw.text.trim(val) ~= '' then
if type(key) == 'number' then
if cachedProj[val] and (oldArgs[val] == nil or mw.text.trim(oldArgs[val]) == '') then
args[val] = label
end
else
args[key] = val
end
end
end
local links = {}
local boxes = {}
for _, proj in ipairs(projects) do
for keys, value in pairs(proj) do
for _, key in ipairs(keys) do
if args[key] then
table.insert(links, createLink(value[1] .. ':' .. args[key], value[2]))
if addBoxes and #value > 3 then
table.insert(boxes, createBox(value, {args[key], label}))
end
end
end
end
end
local res = ''
if #links > 0 then
local interProject = mw.html.create('div')
:attr('id', 'interProject')
:css({
['display'] = 'none',
['clear'] = 'both',
['border-top'] = '2px dotted #AAAAAA',
['margin-top'] = '2em'
})
:tag('div')
:attr('title', 'Collegamenti verso gli altri progetti Wikimedia')
:wikitext('\n' .. table.concat(links, '\n') .. '\n')
:allDone()
res = res .. tostring(interProject)
end
if #boxes > 0 then
local boxesContainer = mw.html.create('div')
:addClass('noprint ws-noexport')
:wikitext('\n' .. table.concat(boxes, '\n\n') .. '\n')
:allDone()
res = res .. tostring(boxesContainer)
end
return res
end
return p