Modulo:Interprogetto: differenze tra le versioni

Da Wikisource.
Contenuto cancellato Contenuto aggiunto
+break
m fix lang
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
local fmtLink = '* [[%s|%s]]'
local fmtLink = '* [[%s|%s]]'
local fmtBox = '[[File:%s|link=:%s:|Collabora a %s]] %s'
local fmtBox = '[[File:%s|link=:%s:|Collabora a %s]] %s'
local contentLang = mw.language.getContentLanguage()


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]]'''."}},
{[{'w', 'WikiPedia'}] = {'w', 'Wikipedia', 'Wikipedia-logo.svg|18px', "'''Wikipedia''' ha una voce di approfondimento%s su '''[[w:%s|%s]]'''."}},
{[{'wAutore'}] = {'w', 'Wikipedia', 'Wikipedia-logo.svg|18px', "Voce enciclopedica su '''[[w:%s|Wikipedia]]'''"}},
{[{'wAutore'}] = {'w', 'Wikipedia', 'Wikipedia-logo.svg|18px', "Voce enciclopedica%s su '''[[w:%s|Wikipedia]]'''"}},
{[{'q', 'WikiQuote'}] = {'q', 'Wikiquote', 'Wikiquote-logo.svg|18px', "'''Wikiquote''' contiene citazioni di o su '''[[:q:%s|%s]]'''."}},
{[{'q', 'WikiQuote'}] = {'q', 'Wikiquote', 'Wikiquote-logo.svg|18px', "'''Wikiquote''' contiene citazioni%s di o su '''[[:q:%s|%s]]'''."}},
{[{'qAutore'}] = {'q', 'Wikiquote', 'Wikiquote-logo.svg|18px', "Citazioni su '''[[:q:%s|Wikiquote]]'''"}},
{[{'qAutore'}] = {'q', 'Wikiquote', 'Wikiquote-logo.svg|18px', "Citazioni%s su '''[[:q:%s|Wikiquote]]'''"}},
{[{'n', 'WikiNews'}] = {'n', 'Wikinotizie', 'Wikinews-logo.svg|25px', "'''Wikinotizie''' contiene notizie di attualità su '''[[:n:%s|%s]]'''."}},
{[{'n', 'WikiNews'}] = {'n', 'Wikinotizie', 'Wikinews-logo.svg|25px', "'''Wikinotizie''' contiene notizie di attualità%s su '''[[:n:%s|%s]]'''."}},
{[{'nAutore'}] = {'n', 'Wikinotizie', 'Wikinews-logo.svg|18px', "Notizie di attualità su '''[[:n:%s|Wikinotizie]]'''"}},
{[{'nAutore'}] = {'n', 'Wikinotizie', 'Wikinews-logo.svg|18px', "Notizie di attualità%s su '''[[:n:%s|Wikinotizie]]'''"}},
{[{'commons', 'Commons'}] = {'c', 'Commons', 'Commons-logo.svg|18px', "'''Commons''' contiene file multimediali su '''[[c:%s|%s]]'''."}},
{[{'commons', 'Commons'}] = {'c', 'Commons', 'Commons-logo.svg|18px', "'''Commons''' contiene file multimediali%s su '''[[c:%s|%s]]'''."}},
{[{'CommonsAutore'}] = {'c', 'Commons', 'Commons-logo.svg|18px', "Immagini e/o file multimediali su '''[[c:%s|Commons]]'''"}},
{[{'CommonsAutore'}] = {'c', 'Commons', 'Commons-logo.svg|18px', "Immagini e/o file multimediali%s su '''[[c:%s|Commons]]'''"}},
{[{'b', 'WikiBooks'}] = {'b', 'Wikibooks', 'Wikibooks-logo.svg|22px', "'''Wikibooks''' contiene testi o manuali su '''[[:b:%s|%s]]'''."}},
{[{'b', 'WikiBooks'}] = {'b', 'Wikibooks', 'Wikibooks-logo.svg|22px', "'''Wikibooks''' contiene testi o manuali%s su '''[[:b:%s|%s]]'''."}},
{[{'wikispecies'}] = {'species', 'Wikispecies', 'WikiSpecies notext.svg|21px', "'''Wikispecies''' contiene informazioni su '''[[species:%s|%s]]'''."}},
{[{'wikispecies'}] = {'species', 'Wikispecies', 'WikiSpecies notext.svg|21px', "'''Wikispecies''' contiene informazioni%s su '''[[species:%s|%s]]'''."}},
{[{'m', 'Meta'}] = {'m', 'Meta-Wiki', 'Wikimedia-logo.svg|18px', "'''Meta-Wiki''' contiene informazioni su '''[[m:%s|%s]]'''."}},
{[{'m', 'Meta'}] = {'m', 'Meta-Wiki', 'Wikimedia-logo.svg|18px', "'''Meta-Wiki''' contiene informazioni%s 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%s «[[wikt:%s|'''%s''']]»."}},
{[{'v', 'WikiVersity'}] = {'v', 'Wikiversità', 'Wikiversity-logo.svg|18px', "'''Wikiversità''' contiene lezioni su '''[[:v:%s|%s]]'''."}},
{[{'v', 'WikiVersity'}] = {'v', 'Wikiversità', 'Wikiversity-logo.svg|18px', "'''Wikiversità''' contiene lezioni%s su '''[[:v:%s|%s]]'''."}},
{[{'oldwikisource'}] = {'oldwikisource', 'Wikisource'}}
{[{'oldwikisource'}] = {'oldwikisource', 'Wikisource'}}
}
}
Riga 31: Riga 32:
end
end


local function createBox(val, params)
local function createBox(val, lang, params)
if lang and mw.language.isKnownLanguageTag(lang) then
return string.format(fmtBox, val[3], val[1], val[2], string.format(val[4], unpack(params)))
params[1] = lang..':'..params[1]
lang = string.format(' in %s', mw.language.fetchLanguageName(lang, contentLang:getCode()))
else
lang = ''
end
return string.format(fmtBox, val[3], val[1], val[2], string.format(val[4], lang, unpack(params)))
end
end


Riga 51: Riga 58:
if type(key) == 'number' then
if type(key) == 'number' then
if cachedProj[val] and (oldArgs[val] == nil or mw.text.trim(oldArgs[val]) == '') then
if cachedProj[val] and (oldArgs[val] == nil or mw.text.trim(oldArgs[val]) == '') then
args[val] = label
args[val] = {oldArgs[val..'_lang'], label}
end
end
else
else
args[key] = val
args[key] = {oldArgs[key..'_lang'], val}
end
end
end
end
Riga 64: Riga 71:
for _, key in ipairs(keys) do
for _, key in ipairs(keys) do
if args[key] then
if args[key] then
table.insert(links, createLink(value[1] .. ':' .. args[key], value[2]))
table.insert(links, createLink(value[1] .. ':' .. args[key][2], value[2]))
if addBoxes and #value > 3 then
if addBoxes and #value > 3 then
table.insert(boxes, createBox(value, {args[key], label}))
table.insert(boxes, createBox(value, args[key][1], {args[key][2], label}))
end
end
break
break

Versione delle 07:52, 9 ago 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 contentLang = mw.language.getContentLanguage()

local cachedProj = {}
local projects = {
	{[{'w', 'WikiPedia'}]     = {'w',             'Wikipedia',       'Wikipedia-logo.svg|18px', "'''Wikipedia''' ha una voce di approfondimento%s su '''[[w:%s|%s]]'''."}},
	{[{'wAutore'}]            = {'w',             'Wikipedia',       'Wikipedia-logo.svg|18px', "Voce enciclopedica%s su '''[[w:%s|Wikipedia]]'''"}},
	{[{'q', 'WikiQuote'}]     = {'q',             'Wikiquote',       'Wikiquote-logo.svg|18px', "'''Wikiquote''' contiene citazioni%s di o su '''[[:q:%s|%s]]'''."}},
	{[{'qAutore'}]            = {'q',             'Wikiquote',       'Wikiquote-logo.svg|18px', "Citazioni%s su '''[[:q:%s|Wikiquote]]'''"}},
	{[{'n', 'WikiNews'}]      = {'n',             'Wikinotizie',      'Wikinews-logo.svg|25px', "'''Wikinotizie''' contiene notizie di attualità%s su '''[[:n:%s|%s]]'''."}},
	{[{'nAutore'}]            = {'n',             'Wikinotizie',      'Wikinews-logo.svg|18px', "Notizie di attualità%s su '''[[:n:%s|Wikinotizie]]'''"}},
	{[{'commons', 'Commons'}] = {'c',             'Commons',           'Commons-logo.svg|18px', "'''Commons''' contiene file multimediali%s su '''[[c:%s|%s]]'''."}},
	{[{'CommonsAutore'}]      = {'c',             'Commons',           'Commons-logo.svg|18px', "Immagini e/o file multimediali%s su '''[[c:%s|Commons]]'''"}},
	{[{'b', 'WikiBooks'}]     = {'b',             'Wikibooks',       'Wikibooks-logo.svg|22px', "'''Wikibooks''' contiene testi o manuali%s su '''[[:b:%s|%s]]'''."}},
	{[{'wikispecies'}]        = {'species',       'Wikispecies', 'WikiSpecies notext.svg|21px', "'''Wikispecies''' contiene informazioni%s su '''[[species:%s|%s]]'''."}},
	{[{'m', 'Meta'}]          = {'m',             'Meta-Wiki',       'Wikimedia-logo.svg|18px', "'''Meta-Wiki''' contiene informazioni%s su '''[[m:%s|%s]]'''."}},
	{[{'wikt', 'WikTionary'}] = {'wikt',          'Wikizionario',  'Wiktionary small.svg|18px', "'''Wikizionario''' contiene il lemma%s «[[wikt:%s|'''%s''']]»."}},
	{[{'v', 'WikiVersity'}]   = {'v',             'Wikiversità',   'Wikiversity-logo.svg|18px', "'''Wikiversità''' contiene lezioni%s 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, lang, params)
	if lang and mw.language.isKnownLanguageTag(lang) then
		params[1] = lang..':'..params[1]
		lang = string.format(' in %s', mw.language.fetchLanguageName(lang, contentLang:getCode()))
	else
		lang = ''
	end
	return string.format(fmtBox, val[3], val[1], val[2], string.format(val[4], lang, 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] = {oldArgs[val..'_lang'], label}
				end
			else
				args[key] = {oldArgs[key..'_lang'], 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][2], value[2]))
					if addBoxes and #value > 3 then
						table.insert(boxes, createBox(value, args[key][1], {args[key][2], label}))
					end
					break
				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