Modulo:Avviso

Da Wikivoyage.
Info Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Avviso/man (modifica · cronologia)
Sandbox: Modulo:Avviso/sandbox (modifica · cronologia) · Test: Modulo:Avviso/test (modifica · cronologia · Esegui)

Questo modulo è uno script Lua utilizzato su Wikivoyage per generare box di avviso personalizzati nelle pagine. Viene utilizzato dal {{Avviso}} a indirettamente da tutti i template che usano quest'ultimo, ad es. {{Vetrina}}, {{Cancella}} ecc...

Funzioni

Il modulo fornisce due funzioni principali:

  • avvisoTemplate(frame): Utilizzata quando invocata attraverso un template.
  • avviso(frame): Utilizzata quando invocata direttamente in una pagina.

Vedi Modulo:Arguments per maggiori dettagli.

Funzionalità

  • Gestione Icone: Il modulo permette di specificare diverse immagini per tipi di avviso diversi, con un'immagine di default se non specificata. La logica del modulo segue quest'ordine di priorità per decidere quale icona usare:
    1. il file passato come wikilink nel parametro immagine
    2. il secondo parametro anonimo del template in cui è usato
    3. un'icona di fallback associata al parametro tipo
    4. un'icona standard ()
  • L'immagine a destra dell'avviso viene visualizzata solo se il parametro immagine a destra è stato dichiarato esplicitamente.
  • Gestione Stile: Supporta la personalizzazione dello stile CSS attraverso il parametro stile
  • Gestione del testo dell'avviso: Il testo dell'avviso può essere personalizzato attraverso il parametro testo.

Tipi di avviso supportati

-- 'tipo' = 'classe css usata'
local WARNING_TYPE = {
    importante = 'avviso-importante',
    contenuto = 'avviso-contenuto',
    stile = 'avviso-stile',
    statico = 'avviso-statico',
    struttura = 'avviso-struttura',
    avviso = 'avviso-informazioni',
    disambigua = 'avviso-disambigua hatnote',
    protezione = 'avviso-generico',
    disclaimer = 'avviso-disclaimer',
    default = 'avviso-informazioni'
}

Icone standard a seconda del tipo di avviso

  • importante =
  • contenuto =
  • stile =
  • statico =
  • struttura =
  • avviso =
  • disambigua =
  • protezione =
  • disclaimer =
  • trasparente = nessuna immagine
  • default =

Vedi anche


--[[
	Source script:	https://it.wikivoyage.org/wiki/Modulo:Avviso
	Maintainer:		Andyrom75
]]
local function _isempty(s)
	return s == nil or s == ''
end

local function _avviso(frame)
	local args = frame.args
	local avviso = {
		tipo = {
			importante = 'avviso-importante',
			contenuto = 'avviso-contenuto',
			stile = 'avviso-stile',
			statico = 'avviso-statico',
			struttura = 'avviso-struttura',
			avviso = 'avviso-informazioni',
			disambigua = 'avviso-disambigua hatnote',
			protezione = 'avviso-generico',
			disclaimer = 'avviso-disclaimer',
			default = 'avviso-informazioni'
		},
		immagine = {
			importante = '[[File:Stop hand nuvola.svg|40px|link=]]',
			contenuto = '[[File:Emblem-important.svg|40px|link=]]',
			stile = '[[File:Broom icon.svg|40px|link=]]',
			statico = '[[File:Gnome globe current event.svg|40px|link=]]',
			struttura = '[[File:Merge-split-transwiki default.svg|40px|link=]]',
			avviso = '[[File:Info non-talk.png|40px|link=]]',
			disambigua = '[[File:Info non-talk.png|40px|link=]]',
			protezione = '[[File:Padlock.svg|40px|link=]]',
			disclaimer = '[[File:Nuvola_apps_important.svg|40px|link=]]',
			trasparente = '[[File:No image.svg|link=]]',
			default = args['2'] or args.immagine or '[[File:Info non-talk.png|40px|link=]]'
		}
	}
	local output = '<div style="' .. (args.stile or '')
		.. '" class="plainlinks noprint avviso ambox ' .. (avviso.tipo[args.tipo] or avviso.tipo.default) .. '">'
		.. '<div class="avviso-immagine mbox-image">'
	if (args['2'] == 'nessuna') or (args.immagine == 'nessuna') then
		output = output .. '&nbsp;'
	else
		output = output .. '<div style="width:' .. (args.imageboxsize or '52px') .. ';">'
			.. (avviso.immagine[args['2']]
				or (_isempty(args['2']) and avviso.immagine[args.immagine])
				or (_isempty(args['2']) and _isempty(args.immagine) and avviso.immagine[args.tipo])
				or avviso.immagine.default)
			.. '</div>'
	end
	output = output .. '</div><div class="avviso-testo mbox-text-span" style="' .. (args['stile testo'] or '') .. '">' .. (args['1'] or args.testo or '') .. '</div>'

	if args['immagine a destra'] then
		output = output .. '<div class="avviso-immaginedestra"><div style="width:' .. (args.imageboxsize or '52px') .. ';"> ' .. args['immagine a destra'] .. ' </div></div>'
	end
	output = output .. '</div>'

	if mw.title.getCurrentTitle().namespace == '8' then --MediaWiki
		output = output .. '[[Categoria:Messaggi di sistema con avviso|' .. mw.title.getCurrentTitle().text .. ']]'
	elseif mw.title.getCurrentTitle().namespace == '0' then
		if (args.tipo == 'avviso') or (args.tipo == 'importante') then
			output = output .. '[[Categoria:Articoli con avviso]]'
		end
	end

	return output
end

--Interfacce del modulo
local p = {}

function p.avvisoTemplate(frame)
	return _avviso(frame:getParent())
end

function p.avviso(frame)
	return _avviso(frame)
end

return p