Maze

R. I. P. Template colore

32 risposte in questa discussione

(modificato)

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.

Modificato da Maze
Piace a 2 persone

Condividi questo messaggio


Link di questo messaggio

Guida chiarissima :3

Condividi questo messaggio


Link di questo messaggio

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

Condividi questo messaggio


Link di questo messaggio

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

Condividi questo messaggio


Link di questo messaggio

(modificato)


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?
Modificato da TheFaither

Condividi questo messaggio


Link di questo messaggio

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

 

Si fa prima.

Condividi questo messaggio


Link di questo messaggio

Ommooddio. E chi lo sapeva che jedit supportare i richiami? XD

Condividi questo messaggio


Link di questo messaggio

(modificato)

Solo se spunti la casellina "Regular expression", obv

Modificato da Maze

Condividi questo messaggio


Link di questo messaggio

(modificato)

.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.

Modificato da Maze

Condividi questo messaggio


Link di questo messaggio

A me sembra più intuitivo senza spazi (com'è già per FRLG), ma nel caso suppongo non sia troppo difficile inserirli entrambi come alias.

Piace a 1 persona

Condividi questo messaggio


Link di questo messaggio

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

Condividi questo messaggio


Link di questo messaggio

A me sembra più intuitivo senza spazi (com'è già per FRLG), ma nel caso suppongo non sia troppo difficile inserirli entrambi come alias.

That's the way. Non ci avevo pensato.

Piace a 1 persona

Condividi questo messaggio


Link di questo messaggio

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.

Condividi questo messaggio


Link di questo messaggio

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.

Condividi questo messaggio


Link di questo messaggio

(modificato)

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"

Modificato da gGiova

Condividi questo messaggio


Link di questo messaggio

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?

Condividi questo messaggio


Link di questo messaggio

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?

Condividi questo messaggio


Link di questo messaggio

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.

Condividi questo messaggio


Link di questo messaggio

Sono un cretino, non c'è nulla da dire, come cavolo ho fatto a non vedere che c'erano due parametri diversi -fp

Condividi questo messaggio


Link di questo messaggio

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.

Condividi questo messaggio


Link di questo messaggio

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.

Condividi questo messaggio


Link di questo messaggio

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.

Condividi questo messaggio


Link di questo messaggio

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.

Condividi questo messaggio


Link di questo messaggio

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 :)

Piace a 1 persona

Condividi questo messaggio


Link di questo messaggio

(modificato)

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

Modificato da Maze
Piace a 1 persona

Condividi questo messaggio


Link di questo messaggio

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

Condividi questo messaggio


Link di questo messaggio

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

Condividi questo messaggio


Link di questo messaggio

Contento? @_@

Ok, riferisco

Condividi questo messaggio


Link di questo messaggio

Mancano questi colori come modulo  i colori delle gare (Acume, secco, ecc)

Condividi questo messaggio


Link di questo messaggio

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.

Condividi questo messaggio


Link di questo messaggio

Crea un account o accedi per partecipare alla discussione

 

Crea un account

Registra un nuovo account sul forum. È facile e veloce.


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora

  • Chi sta navigando   0 utenti

    Nessun utente registrato sta visualizzando questa pagina.