Modulo:Avanzamento

Questo modulo serve per inserire lo stato di avanzamento di un libro o un modulo. Grazie al modulo ArrotondoPercentuale, con cui questo è integrato, le percentuali delle fasi di sviluppo vengono arrotondate, ed è inoltre possibile aggiungere messaggi personalizzati e categorizzazione.

Sintassi

Essendo questo modulo un potenziamento, usando Lua, del codice del vecchio template "Avanzamento", il suo uso è strettamente connesso alle esigenze di quel template, quindi il modo principale di usarlo è proprio tramite {{Avanzamento}}

Uso diretto

Nonostante questo, in futuro potrebbe essere necessario usarlo direttamente integrandolo in un template.  

{{#Invoke:Avanzamento|main|{{{1}}}}}

Per un approfondimento sui valori arrotondati, è possibile fare riferimento al manuale del modulo "ArrotondoPercentuale"

Variabili

Alcune variabili di questo modulo possono essere modificate agevolmente per aggiornare i messaggi e le categorie. I testi degli avvisi e le categorie da aggiungere sono inseriti all'interno del Modulo:Avanzamento/configurazione.

Nomi delle categorie

Descrizione Variabile Valore di default
Nome della categoria in cui categorizzare le pagine con le percentuali compilate in maniera errata CatError Avanzamento con errori di compilazione
Nome della categoria in cui ctegorizzare le pagine con le percentuali arrotondate CatArrotondo

Testo degli avvisi

Descrizione Variabile Valore di default
Avviso da far apparire quando viene inserita una percentuale composta soltanto da valori numerici, omettendo il segno "%" AvvisoError Percentuale inserita in maniera errata, è necessario aggiungere il segno di percentuale ("%").
Testo di aiuto che appare quando viene inserita una percentale errata. La pagina verrà comunque categorizzata arrotondando.
Variabili connesse
AvvisoArrotondo La percentuale inserita ('..Digit..'%) non è stata riconosciuta, è stata quindi arrotondata a '..arrotondo..'.
Testo da visualizzare dopo gli avvisi precedenti LinkAiuto Per un approfondimento vedi "[[Aiuto:Fasi di sviluppo]]"
Testo visualizzato come testo del link di modifica della pagina. È  la variabile $2 del messaggio standard AvvisoStub TestoLinkModifica Contribuisci
Testo da visualizzare negli stub, quando la percentuale è uguale a "00%". La variabile $1 cambierà a seconda se si tratta di un modulo o di un libro. AvvisoStub [[File:Wiki letter w.svg|25px|Questa pagina è uno stub]]'.. '\'\'Questo [[Aiuto:$1|$1]] è solo un [[Aiuto:Stub|abbozzo]]. '.. '$2 a migliorarlo secondo le [[Aiuto:Manuale di stile|convenzioni di Wikibooks]]\'\'
Testo da visualizzare prima dell'AvvisoStub quando questo è frutto di un arrotondamento. Se il messaggio è lasciato vuoto, verrà automaticamente preso il valore di AvvisoArrotondo.
Variabili connesse (non utilizzate di default)
AvvisoArrotondo0

AvvisoError, AvvisoArrotondo e AvvisoArrotondo0 sono racchiusi nel tag <strong class="error">, facendo visualizzare il messaggio di colore rosso, e il font leggermente più grande e spesso

Altre variabili

Queste variabili invece sono indipendenti dal modulo, ma sono date dal Modulo:ArrotondoPercentuale.

Descrizione Variabile Note
Valore numerico inserito.  Questo valore è interno al ArrotondoPercentuale che si occupa anche di processarlo. Digit Anche se inserito con il segno di percentuale, questo valore sarà sempre e soltanto numerico.
Valore numerico percentuale a cui è stato arrotondato il valore inserito Digit   arrotondo Questa variabile, anche se interna è dipendente dal ArrotondoPercentuale, è infatti questo modulo che, arrotondando il valore dato, restituisce questo valore.

local mArrotondo = require('Modulo:ArrotondoPercentuale')
local cfg = mw.loadData( 'Modulo:Avanzamento/configurazione' );

local p = {}

local function mess( msg, args )
    return args and mw.message.newRawMessage( cfg.messages[''..msg..''], args ):plain() or cfg.messages[''..msg..''];
end

-- Funzione per la categorizzazione
local function categorizza(cat)
	if cat ~= '' then
		return string.format('[[%s:%s]]', mw.site.namespaces[14].name, cat)
	else
		return ''
	end
end

function p.main(frame)
local arg = frame.args[1]
arrotondo = mArrotondo.main(frame)
PName = mw.title.getCurrentTitle()
PageName = tostring(PName)
SubPage = PName.subpageText
modifica = mw.uri.fullUrl( PageName , 'action=edit')

--[[ ===============================================================================
Inizio variabili interne per costruire i link e gli avvisi
    ===============================================================================]]
-- Link di modifica alla pagina
local LinkModifica = '[' .. tostring(modifica) .. ' '..cfg.messages['TestoLinkModifica']..']'

-- Controlla se siamo in una sottopagina o nella pagina principale del libro
if PageName == SubPage then 
	TipoPagina = 'libro'
	CatTipo = 'libri'
else
	TipoPagina = 'modulo'
	CatTipo = 'moduli'
end

-- Variabile per creare lo "span" Che fa visualizzare il quadratino colorato dell'avanzamento
local textquality = mw.html.create( 'span' )
	:attr( 'id', 'textquality' )
	:addClass(arrotondo)

--[[ ===============================================================================
Costruzione avvisi
    ===============================================================================]]	
-- Messaggio da visualizzare in caso di Stub
local AvvisoStb = '<div style="margin-left:10px;">'.. mess('AvvisoStub', {TipoPagina, LinkModifica} ) ..'</div>'..categorizza(CatTipo..' 0%')..''..tostring(textquality)	

-- Messaggio da visualizzare in caso di errore
local AvvisoErr = '<strong class="error">'..cfg.messages['AvvisoError']..'</strong> '..cfg.messages['LinkAiuto']		

-- Messaggio da visualizzare in caso di percentuale arrotondata
local AvvisoArr = '<strong class="error">'..mess('AvvisoArrotondo', {Digit, arrotondo}) ..'</strong> '..cfg.messages['LinkAiuto']

-- Messaggio da visualizzare in caso di percentuale arrotondata a "00%"
if cfg.messages['AvvisoArrotondo0'] == '' then -- se il messaggio è vuoto, usa quello standard per gli arrotondamenti
	AvvisoArr0 = AvvisoArr
else -- altrimenti usa il messaggio personalizzato
	AvvisoArr0 = '<strong class="error">'..mess('AvvisoArrotondo0', {Digit, arrotondo}) ..'</strong> '..cfg.messages['LinkAiuto']
end


if SubPage ~= 'Copertina' or SubPage ~= 'Bollettino' then -- Controlla se ci troviamo in una pagina di copertina o bollettino

-- ####							FUNZIONE CENTRALE
-- #############################################################################
	if Digit == arg then -- Controlla se è stato inserito il segno di percentuale (%)

		return AvvisoErr..''..categorizza(cfg.cat['CatError']) -- Mostra un avviso e categorizza
	else 
		
		--			GESTIONE PERCENTUALI
		-- #########################################
		if arrotondo == '0%' or arrotondo == '00%' then -- Percentuale 0%
		
			if Digit == '0' or  Digit == '00' then -- controlla che il valore messo sia esattamente "0" o "00"
				return AvvisoStb
			else
				-- se non è stato inserito esattamente il valore corretto per "0", categorizza come "00%", 
				-- visualizza il messaggio di stub e avvisa dell'arrotondamento
				return AvvisoArr0..'<br>'..AvvisoStb
			end	
			
		elseif Digit == '25' or Digit == '50' or Digit == '75' or Digit == '100' then -- perc. > 0 inserite correttamente
			return categorizza(CatTipo..' '..Digit..'%')..''..tostring(textquality)
			
		else -- percentuale errata
			return AvvisoArr..''..categorizza(CatTipo..' '..arrotondo)..''..categorizza(cfg.cat['CatArrotondo'])..''..tostring(textquality)

		end -- CHIUSURA di: Gestione percentuali
	end -- CHIUSURA di: funzione centrale
end -- CHIUSURA di: Controlla se ci troviamo in una pagina di copertina o bollettino
end
return p