R. I. P. Template colore

Maze

TypoMzn
Wiki
Come ormai in molti sanno, i Template colore non vanno più usati: sono molto pesanti per il server ed gika ha scovato una soluzione più efficiente.
 
Tale soluzione è un modulo scritto in Lua immerso nel software Mediawiki tramite l'estensione Scribunto. Se anche non avete capito un'acca della frase precedente, niente panico, in realtà non ci ho capito molto nemmeno io.
 
Fatto sta che, all'atto pratico, cambia il wikicode da utilizzare (se il box sottostante non è chiaro fatemelo presente):

{{colore qualcosa sfumatura}} --> {{#invoke: colore | qualcosa | sfumatura}}
{{textcolor qualcosa}} --> {{#invoke: colore | qualcosa_text}}
{{colorezona/sfumatura|qualcosa}} --> {{#invoke: colore | zona_qualcosa | sfumatura}}
{{colorezona/text|qualcosa}} --> {{#invoke: colore | zona_text | qualcosa}}

Gli spazi sono opzionali ma facilitano la lettura del codice. I nomi con spazi (es: Nero 2) al momento hanno un underscore (_) al posto dello spazio.

Per gli admin (chi non lo è tanto non può modificare il modulo, pappappero!):

  • Non modificate i template colore, ma direttamente il modulo
  • Non create nuovi template colore, ma fatelo direttamente nel modulo
Al momento il secondo imperativo categorico non è di facile attuazione, poiché molti template usatissimi si appoggiano ai template colore, dunque se vi serve un nuovo colore da usare in tali template createlo nel modulo e fatemelo presente, provvederò personalmente a far sì che il template in questione utilizzi il modulo.
 
Il Modulo si trova nella pagina Modulo:colore.
 
Modificare un colore
Cercate la riga del colore in questione, la prima che appare facendo una ricerca con Ctrl + F. Dovrebbe avere questo aspetto:

c.colore = function(frame) return _colore(frame.args[1] or 'normale', 'hex_standard', 'hex_light', 'hex_dark') end

Laddove "colore" è il nome del colore, "hex_standard' è il valore esadecimale del colore standard (né light né dark, per intenderci), "hex_light" il valore del colore light, e, indovinate un po', "hex_dark" il valore dark.
Per modificare una sfumatura dunque basta semplicemente cambiare il valore esadecimale corrispondente.
 
Creare un nuovo colore
Esistono quattro tipologie di colori differenti (per implementazione nel modulo):

  • Colore "standard"
  • Colore testo
  • Colore zona
  • Colore zona testo
 
Colore "standard" e Colore zona

Cercate un colore di questa tipologia e copiatene la riga di codice; dovrebbe essere come questa:

c.colore = function(frame) return _colore(frame.args[1] or 'normale', 'hex_standard', 'hex_light', 'hex_dark') end

Con la piccola differenza che il colore zona ha un "c.zona_colore" all'inizio: in entrambi i casi "colore" è il nome del colore analogo scelto a caso da voi, e "hex_standard", "hex_light" e "hex_dark" sono dei valori esadecimali.

A questo punto incollatela da qualche parte nel modulo (possibilmente nella categoria di colori giusta) e:

  • Inserite il nome del nuovo colore al posto di quello vecchio, dopo il "c." per intenderci, tutto in minuscolo (nel caso sia un colore cona, con il "zona_" incluso)
  • Inserite al posto di "hex_standard" l'esadecimale standard, al posto di "hex_light" quello light e (ma dai?!?) l'esadecimale dark al posto di "hex_dark". Fate attenzione a rispettare l'ordine, altrimenti il colore sballa, e a lasciare i singoli apici ai lati degli esadecimali.

Ora dovrete creare la versione con l'iniziale maiuscola: per fare ciò scrivete, sotto il colore appena creato

c.Colore = c.colore

In cui ovviamente "colore" è il nome del nuovo colore (nel caso sia un colore zona, con il "zona_" incluso). Se avete in mente altri possibili varianti di maiuscole/minuscole, fate così:

c.Colore, c.variante1, c.variante2 = c.colore, c.colore, c.colore

Vale a dire aggiungere le varianti, separate da una virgola, a sinistra dell' = e aggiungere tanti "c.colore" quante sono le varianti a destra dell' =, sempre separati da virgole.

Colore testo

Cercate una riga di un colore testo e copiatela: dovrebbe avere questo aspetto

c.colore_text = function(frame) return 'hex_text' end

In cui "colore" è il nome del colore e "hex_text" il valore esadecimale del colore.

Ora non vi resta da fare che incollarla nel modulo (possibilmente nella sezione giusta) e

  • Sostituire il nome del colore con il nuovo, tutto in minuscolo, lasciando "_text" dopo
  • Inserire il valore esadecimale nuovo al posto di "hex_text". Attenzione a lasciare gli apicini ai lati.
Adesso è il turno della versione con la maiuscola ed eventuali varianti; scrivete, sotto al nuovo colore testo appena creato

c.Colore_text, c.variante1 = c.colore_text, c.colore_text

in cui "colore" è il nome del nuovo colore e le varianti possono essere più di una, ma sempre separate da virgole. A destra dell' = ci vanno tanti "c.colore" quanti sono gli elementi a sinistra dell' = (numero delle varianti + 1), sempre separati da virgole.

Colore zona testo

Questa tipologia è molto più difficile delle altre, ragion per cui se si è digiuni di programmazione, è bene chiedere a un admin che ne sappia di più, leggasi Maze o Gkx (qualunque admin che sappia programmare è libero di aggiungersi alla lista). Per i motivi di cui sopra, utilizzerò un lessico più specifico.

Cercare la funzione c.zona_text, e inserire un altro if in cascata prima dell'ultimo else, con la parola chiave elseif.

La condizione è a == 'nome', e volendo anche quella con il nome in inglese in or con la prima.

Il blocco è banalmente un return con l'esadecimale del nuovo colore, sempre tra singoli apici.

Se il colore è già presente negli altri return, allora inserire la condizione del nuovo nome in or con le altre già presenti.
 
Ultima modifica di un moderatore:

Snorlite

Fetta di torta
Wiki
Guida chiarissima
default_meow.gif
 

TheFaither

Passante
Perfetto :) Il codice per fortuna è facile, quindi mi sembra una grandissima cosa. Come mai è più veloce? Cosa faceva il vecchio template?
 

Maze

TypoMzn
Wiki
Gika potrà darti di sicuro spiegazioni più approfondite. In buona sostanza però si passa dal php al lua, e il lua è più veloce.
 

TheFaither

Passante
SearchAndReplace.setSearchString("{{colore fuoco}}");

SearchAndReplace.setReplaceString("{{#invoke: colore | fuoco }}");

SearchAndReplace.setBeanShellReplace(false);

SearchAndReplace.setIgnoreCase(false);

SearchAndReplace.setRegexp(false);

SearchAndReplace.replaceAll(view);

SearchAndReplace.setSearchString("{{colore fuoco light}}");

SearchAndReplace.setReplaceString("{{#invoke: colore | fuoco | light }}");

SearchAndReplace.setBeanShellReplace(false);

SearchAndReplace.setIgnoreCase(false);

SearchAndReplace.setRegexp(false);

SearchAndReplace.replaceAll(view);

È giusto?
 
Ultima modifica di un moderatore:

Maze

TypoMzn
Wiki
Sì, ma conviene #{{colore (.*?) (.*?)}} --> #{{#invoke: colore | $1 | $2}} e #{{colore (.*?)}} --> #{{#invoke: colore | $1}}

Si fa prima.
 

Maze

TypoMzn
Wiki
Solo se spunti la casellina "Regular expression", obv
 
Ultima modifica di un moderatore:

Maze

TypoMzn
Wiki
.Felix. mi ha fatto notare che non avevo scritto dei nomi con spazio, che al posto dello spazio ci va l'underscore. Ma voi preferireste senza nulla?

Ovvero, cosa preferite, {{#invoke: colore | nero_2 | dark}} o {{#invoke: colore | nero2 | dark}}?

EDIT: Sì, doppio post. Questa è una cosa importante, deve risaltare.
 
Ultima modifica di un moderatore:

Mens

Amministratore di condominio
A me sembra più intuitivo senza spazi (com'è già per FRLG), ma nel caso suppongo non sia troppo difficile inserirli entrambi come alias.
 
Ultima modifica di un moderatore:

Calimero

Coccò, Coccò!
A me andrebbe bene anche l'underscore, non ci sono problemi, l'avevo fatto notare solo perché non sapevo come fare, però mi è indifferente.
 

CiaobyDany

あなたと見る絶望は あなた無しの希望など霞むほど輝くから
Wiki
L'ho già scritto nella sezione non editate template usatissimi di giorno, ma lo aggiungo anche qui.

Fare molta attenzione a modificare il modulo: ogni edit equivale ad almeno mezz'ora di crash del server.
 

CiaobyDany

あなたと見る絶望は あなた無しの希望など霞むほど輝くから
Wiki
Doppio post, altrimenti non lo legge nessuno

Ho notato che in realtà il modulo dovrebbe anche sostituire i colorezona, il problema è che spesso nei colorezona sono usati gli esadecimali direttamente (http://wiki.pokemoncentral.it/Template:InfoCittà). Sto cercando di aggiornarlo perché non esiste il template colore Diantha e quindi a Kalos non me la prende e volevo fare un lavoro fatto bene. Tuttavia non mi viene in mente come modificare gli entry dei colorezona per il motivo sopra citato, non si può fare in modo che il modulo mostri il parametro al posto di errore script, se non riconosce la sintassi? Oppure sarebbe ancora meglio che lo accettasse solo se esadecimale, ma penso di pretendere un po' troppo.
 

gGiova

e-ehi.
se volete una spiegazione molto rapida e informale, il php è da pensionare di base.

Per la serie "non ci vuole poi molto ad essere più veloci del php"
 
Ultima modifica di un moderatore:

Maze

TypoMzn
Wiki
Doppio post, altrimenti non lo legge nessuno

Ho notato che in realtà il modulo dovrebbe anche sostituire i colorezona, il problema è che spesso nei colorezona sono usati gli esadecimali direttamente (http://wiki.pokemoncentral.it/Template:InfoCittà). Sto cercando di aggiornarlo perché non esiste il template colore Diantha e quindi a Kalos non me la prende e volevo fare un lavoro fatto bene. Tuttavia non mi viene in mente come modificare gli entry dei colorezona per il motivo sopra citato, non si può fare in modo che il modulo mostri il parametro al posto di errore script, se non riconosce la sintassi? Oppure sarebbe ancora meglio che lo accettasse solo se esadecimale, ma penso di pretendere un po' troppo.
Non ho capito assolutamente nulla. Vorresti richiamare un modulo per inserire un esadecimale?
 

CiaobyDany

あなたと見る絶望は あなた無しの希望など霞むほど輝くから
Wiki
Non ho capito assolutamente nulla. Vorresti richiamare un modulo per inserire un esadecimale?
Io mi impegno, ce la metto tutta, faccio una descrizione di sette righe e tu mi smonti in mezza u_u

Ok, andiamo sullo specifico. Nell'infocittà i colori della tabella principale sono messi con i template colorezona. Mi sono accorto che il modulo colore teoricamente dovrebbe sostituire anche quelli. Il problema è che nella maggior parte dei casi, le città hanno al posto del nome del colore direttamente l'esadecimale, quindi non posso mettere il modulo colore, perché se quello si trova un esadecimale dà errore script. Che faccio? Lascio i colorezona? Sì possono mettere i moduli colore con degli accorgimenti che non conosco? Si può cambiare il modulo affinché si possano mettere gli esadecimali?
 

Maze

TypoMzn
Wiki
Se guardi bene, il template colorezona interviene solo qualora non siano specificati i parametri color(light/med/dark), che contengono gli esadecimali. Nemmeno il template colorezona suporta gli esadecimali come input, quindi puoi sostituire tranquillamente: laddove si passano gli esadecimali il modulo non viene nemmeno chiamato.
 

CiaobyDany

あなたと見る絶望は あなた無しの希望など霞むほど輝くから
Wiki
Sono un cretino, non c'è nulla da dire, come cavolo ho fatto a non vedere che c'erano due parametri diversi -fp
 

CiaobyDany

あなたと見る絶望は あなた無しの希望など霞むほど輝くから
Wiki
Doppio post, scusate..

Le alternative sono due: o sono un genio, oppure c'è qualcosa che mi sfugge.

Ad eccezione dei casi in cui ci sono dei parametri per il colore, non è più leggero per il server usare {{subst: colore xxx}} piuttosto che il modulo? Così facendo si salva direttamente l'esadecimale, quindi la pagina risulta molto più leggera.
 

Maze

TypoMzn
Wiki
Con il subst si perde il legame tra pagina e template/modulo, perché viene semplicemente copypastato l'output della chiamata a template/modulo nella pagina, invece di rieffettuarla ogni volta che la pagina viene caricata*. Dunque, se il template/modulo viene cambiato, in quella pagina tale cambiamento non ha effetto, perché il codice è stato generato sì dal template/modulo, ma la pagina non comunica più in alcun modo con lo stesso.

Indi, visto che i template vengono creati non solo per non dover riscrivere centinaia di volte lo stesso codice, ma anche per poter cambiare le robe in un posto solo ma vederne gli effetti su tutto il wiki, usare il subst mina allo scopo per cui i template sono stati creati. Il fatto che i template colore non cambino praticamente mai non conta :P

* Meccanismo di caching del wiki permettendo, non ho mai capito nei dettagli come funzioni.
 

CiaobyDany

あなたと見る絶望は あなた無しの希望など霞むほど輝くから
Wiki
Sì, ma ci sono eventualità (vedi template lop/wild) in cui questa è l'unica soluzione possibile, e in ogni caso già in molte pagine sono stati usati gli esadecimali al posto dei template/moduli colore per rendere la pagina più leggera. Quindi, considerando che abbiamo già deciso di non cambiare i colori quando ne abbiamo avuto l'occasione (le inutili modifiche di Bulba di qualche mese fa), non vedo perché non usarli.
 

Maze

TypoMzn
Wiki
A cosa ti riferisci con "unica soluzione possibile"? Se devi usare un esadecimale perché non hai un template colore non puoi di certo lamentarti, esistono 166 possibili codifiche esadecimali di altrettanti colori, non puoi pretendere che esista un template per ognuna XD

Come già detto altrove, se si è costretti ad usare gli hex in logo dei moduli perché se no saltano fuori gli errori script non è questo il modo migliore di risolvere il problema: gli errori script sono segno di pagine pesanti, dunque è meglio dividere la pagina in sottopagine.

Per quanto riguarda gli elenchi, sto cercando di pensare ad un modo per renderne il più possibile semplice e standard la generazione in automatico con dei moduli: avendolo già fatto per le abilità, se metto su un po' di funzioni di libreria dovrebbe essere poi possibile anche a chi non conosce lua creare moduli per gli elenchi, ovviamente avendo voglia di imparare un minimo di sintassi.
 

CiaobyDany

あなたと見る絶望は あなた無しの希望など霞むほど輝くから
Wiki
Sì, ma visto che sei l'unico a saper usare il lua (cosa che ho appena ribadito sulla tua pagina utente ;) ), come soluzione temporanea mi sembrava valida. Se hai intenzione di farci su un modulo, però, dillo a Lugia149, perché appena si accorge che gli ho sistemato il template partirà in quarta con l'elenco e mi dispiacerebbe fargli fare un lavoro inutile :)
 

Maze

TypoMzn
Wiki
Ci vorranno mesi prima che la cosa vada in porto. E troverò il modo di rendere la creazione di moduli elenco il più facile possibile, nascondendo il "vero" codice dietro nomi il più possibile intuitivi.

EDIT: Oddio, mi scordo sempre di avere una pagina utente. E davvero sono iscritto da 4 anni? O_O

EDIT2: Ho capito solo ora che quelle due barre verticali nere sono lì apposta. Nerd ma simpatica, complimenti Dany, mi è piaciuta XD
 
Ultima modifica di un moderatore:

CiaobyDany

あなたと見る絶望は あなた無しの希望など霞むほど輝くから
Wiki
Non fai ingegneria? |stella| dovrebbe essere chiaro

lol

Tornando IT, quindi cosa conviene fare? Se, come hai detto, ci vorranno mesi, penso possa iniziare a farla lui e poi eventualmente usare un trova/sostituisci senza nemmeno il bisogno di stare a scomodare una macro
 

Maze

TypoMzn
Wiki
Sì, certo che per ora la fa lui. Poi basta andare lì e inserire una riga nella pagina che tiri giù l'elenco.

E comunque, tra le sottili sbarrette del valore assoluto e quegli enormi cosi neri che hai messo tu c'è una certa differenza :P
 

Maze

TypoMzn
Wiki
I colori delle virtù ci sono. Al massimo non ci sono quelli dei sapori, ma sarebbero degli alias. Per il momento usa le virtù, a meno che non ti crei problemi nei template.
 
Top Bottom