$.fn.svuota!

Questo blog si riempie poco, ma quel poco spero che sia utile!

E quindi, come da tradizione, ecco un’altra utilità partorita dal mio cervelletto :)

$.fn.svuota = function() {
    for(var i = 0; i < this.length; i++) {
       var value = $(this[i]).val();
       var p = i - 1;
       var valuep = $(this[p]).val();
         if (value.length != $(this[i]).attr('maxlength') ||
             (i != 0 && valuep.length != $(this[p]).attr('maxlength'))) {
            $(this[i]).val('');
         }
       }
}

Se conoscete jquery, avrete capito facilmente cosa fa questo pezzo di codice. In pratica richiamando la funzione con $(’.classe’).svuota() potrete svuotare uno o più input in base alle seguenti condizioni:

1 – se il numero di caratteri inseriti non è uguale alla maxlength

2 – se uno dei precedenti elementi della classe comune non ha raggiunto la maxlength (ovviamente non si applica al primo elemento, visto che non ha elementi precedenti di confronto!)

Ovviamente si può usare invece di una classe il nome di un tag con o senza selettori. Nessuno vi vieta di usare anche gli id, ma forse non avrebbe molto senso!

A cosa può servire? Beh a me serve per fare un controllo su 4 blocchi in cui l’operatore deve inserire un codice fiscale a pezzi. Se il primo elemento è completo faccio partire una submit, al completamento della seconda faccio partire un’altra submit che migliora la ricerca, etc..

Può però accadere che si prema il tasto cerca prima che i campi siano completi o dopo aver riempito due campi non consecutivi o aver lasciato il primo campo vuoto e magari gli altri pieni. Con questa funzione, associata al plugin autotab, ho tutto l’occorrente per forzare l’operatore a riempire in ordine gli elementi senza rischiare di sovraccaricare il database con ricerche mostruose!

P.S. Prima di fare qualsiasi domanda, andate a vedere cosa è Jquery, io vi dico solo che è un framework per scrivere con eleganza del javascript, ed è utilizzato sia da Drupal che da Wordpress!

Ah, per favore non venite qui solo per dirmi che fa schifo come ho scritto il codice, mi stupirei del contrario! Piuttosto suggerimenti e miglioramenti sono sempre ben accetti! Ah, lo script è molto banale, ma ad ogni modo il codice è rilasciato con licenza GPL ;)

Wordpress multisite, come Drupal

La cosa che più odio di Wordpress è la necessità di effettuare installazioni separate per ogni blog. Questo di per sé non sarebbe un grande problema se non ci fosse bisogno di aggiornamenti di sicurezza. Ma visto che gli aggiornamenti di sicurezza sono, fortunatamente, frequenti e in ogni caso necessari, quando si devono amministrare più di tre blog le cose cominciano ad essere scomode, complicate, antipatiche, etc, etc, etc…

La prima soluzione sarebbe quella di utilizzare WordpressMu. E’ una versione modificata di wordpress, la stessa su cui si basa la piattaforma di blogging presente su wordpress.com. Ma non tutti i server supportano questa possibilità, in quanto WordpressMu deve avere la possibilità di crearsi in autonomia i domini di secondo livello, cosa che su unbit.it non so o non posso fare, se non parlandone coi tecnici.

Ma avevo bisogno di un sistema più veloce. Inoltre non è necessario che chiunque possa crearsi il suo blog su theeyes. Invece, ripeto, mi basta poter gestire l’esistente con pochi click del mouse, riducendo il numero di applicativi che devo aggiornare ogni volta sia necessario.

Per fortuna esistono diversi plugin che fanno proprio quello che mi serve. Quello che ho provato io si chiama wp-hive. Usarlo è molto semplice, e consiglilo di leggere la documentazione in inglese presente sul sito. In pratica si deve abilitare il plugin su uno dei blog in cui condividere wordpress, dopodiché si faanno puntare gli altri domini sulla stessa cartella fisica del server. Se questi blog sono già pre-esistenti, si importano i temi, i plugins e gli allegati nella nuova struttura, infine si aggiunga una riga a una nuova tabella che crea wp-hive sul db che riguarda la configurazione degli host autorizzati (forse ques’ultima fase non è necessaria, ma io per sicurezza l’ho fatta a mano).

Per il momento il mio blog, inchiostro e crisalide si trovano a condividere la stessa struttura. Se il test andrà a buon fine, anche i blog di perrone condivideranno, fra loro, la stessa struttura.

Chiaramente anche wp-hive ha dei difetti:

  • plugin e temi vengono condivisi da tutti i siti
  • anche gli upload devono essere condivisi. In realtà dal pannello di configurazione si possono stabilire cartelle differenti per ogni blog, tuttavia se i blog sono pre-esistenti, i vecchi allegati devono restano nella stessa posizione relativa, altrimenti il sistema non li trova più

Nuova versione per giulioperroneditore.it

E’ con immensa gioia e grande onore che annuncio la messa online della nuova versione del sito http://giulioperroneditore.it

Un grazie a quanti mi hanno so(u)pportato fin’ora e soprattutto complimenti a factorydesign che ha disegnato la grafica. Ovviamente anche questo è made in drupal, aggiornato alla versione 5 ;)

Altro aggiornamento al 2.6

Non vorrei continuare a usar questo blog solo per testare gli aggiornamenti di wordpress, ma tant’è, per ora mi devo accontentare, non ho tempo a sufficienza per fare altro :(

Vabbè speriamo che il futuro mi riservi tempi migliori!

Aggiornato a wordpress 2.5.1

Ho appena effettuato l’aggiornamento del blog. Dalle prime impressioni, a parte lo spaesamento nel vedere rivoluzionato il pannello di controllo, direi che tutto funziona a dovere.

Da acidfree a image gallery

Purtroppo lo sviluppo di Acidfree sembra bloccato dall’estate 2007. Essendo passati circa 5 mesi dall’ultimo aggiornamento, ho deciso di passare theeyes al modulo Image gallery. La riuscita di questa migrazione comporterà analogo passaggio per gli altri siti che ho in curo e che ad oggi usano Acidfree.

E’ abbastanza semplice se non ce ne frega nulla dell’url dell’album. Nel passaggio di modulo, infatti, il path cambia e lo sforzo principale dei miei test è quello di mantenerlo identico senza dover procedere a creare manualmente degli alias per centinaia di pagine!

Sebbene possa inizialmente complicare un po’ le cose, è raccomandabile avere installato nel sito il modulo pathauto. E’ importante avere l’ultima versione. Attualmente è la 5.0-2.x. L’ultima versione dichiarata stabile (la 2.0), infatti, non mi crea alias corretti per gli album creati con image gallery. Ovviamente se prima avevate la versione 1 di pathauto, dovrete prima procedere ad aggiornare quella, facendo ben attenzione alle istruzioni presenti sulla pagina di sviluppo del modulo!

Fatto questo preambolo, ecco la ricetta:

  • Se avete pochissimi album e poche foto, considerate l’eventualità di effettuare modifiche manuali piuttosto che massive come quella che vi sto indicando qui di seguito!
  • Dovete conoscere alla perfezione come funziona il vostro sito, in caso contrario astenetevi da seguire questa guida!!!
  • NON procedere passo-passo: prima di tutto leggete tutte le istruzioni, poi andate col passo-passo! In questo modo vi accorgerete in tempo se ho scritto delle castronerie ed eviterete di creare danni permanenti al sito. Usa queste istruzioni a tuo rischio e pericolo!!!
  • Disporre di un dominio extra (va bene anche di secondo livello, anzi è probabilmente consigliabile se si trovano nello stesso spazio web)
  • Disporre di un secondo database dove effettuare una copia identica del sito originale. In questo modo eventuali casini non danneggeranno il sito in produzione.
  • Se usate gli url alias con Pathauto, aggiornatelo sul sito di produzione.
  • Mettete in manutenzione il sito!

E veniamo alla preparazione!

  • Ripeto: mettete in manutenzione il vostro sito in produzione! In questo modo eviterete che il sito di produzione venga aggiornato da qualcuno mentre ci state lavorando sopra.
  • Copiate il dabase di produzione su quello di test. Sul nuovo database copiato, cancellare nella tabella system i riferimenti ai moduli installati.
  • Nello spazio web di test copiare tutto il necessario per far sì che il sito sia identico a quello di produzione, ma tenete disattivato pathauto e path redirect. Fare il login sul sito di prova, sistemare il tema e il file system.
  • Installare il modulo image gallery su entrambi i siti ma NON entrare nei settaggi di image gallery.
  • A questo punto eliminare tutti i contenuti di tipo album, poi disattivare e infine disinstallare il modulo acidfree sul sito di prova. Copiare le tabella vocabulary, term_data, term_node, term_hierarchy dal sito di produzione (dove andranno prima eliminate) a quello in test. La cancellazione dei contenuti acidfree comporta infatti la scomparsa delle sue categorie. Ricopiando le tabelle, le ripristinerete intatte. Se le usate, copiate anche term_relation e term_synonym. Io queste caratteristiche non le ho mai usate e sono vuote, ma per altri potrebbe essere differente!!!
  • Sul database di test entrare nella tabella vocabulary. Qui troverete il record che contrassegna l’album acidfree. Rinominate il campo module di questo record da taxonomy ad image_gallery. Questo passaggio permetterà al modulo image gallery di utilizzare gli album creati in precedenza con acidfree senza dover rifare tutto a mano!
  • Entrate nel vocabolario di acidfree image e accertatevi che sia impostato per il tipo di contenuto “image”. Se volete modificare il nome del vocabolario e la gerarchia degli album, fatelo ora!
  • Per chi non usa gli alias il gioco è (quasi) fatto e si potrà procedere alle conclusioni!

Sistemiamo gli alias

  • Se come me, vi piacciono i siti con gli url umani allora il discorso si fa un po’ più tosto, ma il risultato sarà migliore perché ci permetterà di rendere gli url quasi identici a quelli di acidfree. Cosa significa quasi identici? Uno dei problemi con acidfree è che gli alias vengono creati sia per l’album che per la categoria corrispondente e quindi si crea una situazione in cui l’album si chiama magari www.example.com/vedere e la categoria equivalente www.example.com/vedere_0 o viceversa! Con image album gli url duplicati saranno solo un brutto ricordo e avremo solo www.example.com/vedere. Ovviamente se prima l’album si chiamava vedere_0 siamo un po’ fregati, ma per questo ci sono due soluzioni: o usare il modulo search404, oppure creare una regola nel proprio htaccess. In questo modo chi si ostina a usare il vecchio url viene ridirezionato automaticamente a quello nuovo!
  • Nel database di prova entrare nella tabella url_alias ed eliminate tutti i record che hanno a che fare con acidfree. Nel mio caso mi è bastato cercare tutti quelli che iniziano con vedere, quindi ho fatto: select * from url_alias where dst like ‘vedere%’ su phpmyadmin e il risultato l’ho selezionato ed eliminato. Fato lo stesso sulla tabella url_alias_extras, creata da pathauto, se non è vuota.
  • Ora abilitare Pathauto ed entrare nelle sue impostazioni. In category settings va impostato il pattern della categoria corrispondete a quella usata da image gallery. In Node path settings, impostate il pattern per all Image paths. Ricordate di mettere le stesse impostazioni sul sito in produzione (nel caso abbiate modificato il nome del vocabolario sul sito di prova qui dovrete usare ancora il vecchio nome), altrimenti gli alias successivi seguiranno criteri differenti! Ora fate il bulk update solo dei nodi e solo nel sito di prova. Visto il nuovo funzionamento di pathauto, il bulk update va fatto diverse volte, finché non lo completa del tutto. Calcolate circa 120 alias per ogni bulk update. Terminato questo, andate sulla gestione degli album, sotto admin/content/image. Qui entrate nell’edit di ogni album padre. Salvate senza toccare nulla (o se preferite, fate le eventuali modifiche che volete!). A questo punto anche gli alias degli album saranno completati!
  • Il link predefinito per visualizzare gli album è image. Se non vi piace, create un alias manualmente! Nel mio caso gli ho dato l’alias vedere.

Conclusioni

Bene, ora abbiamo un sito di test perfettamente funzionante come ci piace a noi. Come facciamo a riportare il tutto sul sito in produzione? Prima di tutto facciamo un backup del sito!!! Poi disattiviamo momentaneamente pathauto e path redirect. Poi eliminiamo i contenuti album e disinstalliamo completamente acidfree sul sito di produzione, mantenendolo rigorosamente in manutenziuone!

Ora copiamo le seguenti tabelle dal sito di test a quello in produzione:

  • vocabulary e vocabulary_node_types
  • tutti i term_* coinvolti
  • url_alias ed url_alias_extras (se usate gli alias)

Tenendo sempre il sito in manutenzione, testatene il corretto funzionamento e modificate/aggiungete a piacere le eventuali voci di menù. Se tutto funziona, potrete finalmente riportare operativo il sito!

Ultime correzioni. Sia col tema garland che con quello di theeyes, la visualizzazione degli album con image gallery è penosa: spesso le immagini si accavallano a vicenda, urge quindi sistemare il foglio di stile!

Cosa si perde

  • Gli utenti non possono creare album. O meglio, gli si può dare il diritto di creare, modificare, eliminare, con le conseguenze facilmente intuibili, quindi meglio tenersi il diritto per sé
  • Gli album non sono più dei nodi, quindi non possono apparire in prima pagina, o comunque elencati insieme ad altri contenuti. Sono album, vanno sfogliati come qualsiasi altra categoria.
  • Non si può vietare agli utenti di caricare foto in determinati album

Cosa si guadagna

  • Il modulo è pienamente supportato e lo sarà anche con Drupal 6 rendendo l’aggiornamento più veloce.
  • Gli alias sono costruiti in maniera corretta.
  • E’ integrato nel modulo image, quindi non andrà mai in conflitto con esso.
  • E’ possibile usare il modulo postcard per generare cartoline elettroniche dalle proprie immagini.

Nascondere e visualizzare tag su IE

Che internet explorer faccia schifo è un dato di fatto. Ad esempio non posso
inserire correttamente una pagina html dentro l’altro usando il tag
<object> ma solo come <iframe>. La cosa è molto fastidiosa perché
in questo modo non mi permetterebbe di validare la pagina come xhtml strict.

In realtà i programmatori della Microsoft si sono accorti fin dalla versione
5 di quanto facesse schifo il loro browser, così hanno introdotto i commenti
condizionali.

Grazie ad essi è possibile far apparire un pezzo di codice a una determinata
versione di IE. In questo modo ho buttato giù una cosa del genere:

<!–[if lt IE 7]>

<iframe src="http://web.theeyes.org/sito" />

< ![endif]–>

</object><object type="text/html"
data="sito">

<a href="http://web.theeyes.org/sito">nomesito</a>

</object>

Nonostante in questo modo su browser diversi da Microsoft l’iframe non
compariva perché inserito dentro un commento, su IE continuava a vedersi un
object vuoto sotto l’iframe, causando non pochi fastidi. Ho allora cercato di
risolvere con un css ad hoc che nascondesse l’object se il browser fosse < =
IE 7. Ma oggi ho trovato un modo forse più semplice:

<!–[if lt IE 7]>

<iframe src="sito"></iframe>

< ![endif]–>

<!–[if gte IE 7]> –>

<object type="text/html" data="sito">

<a href="http://web.theeyes.org/sito">nomesito</a>

</object>

<!– <![endif]–>

Ci potrebbe essere solo un problema che non posso testare: chi usasse IE 7
vedrebbe –> sopra l’object e un <!– sotto. Appena posso, controllo!

Drupal e Wordpress, nuova versione per entrambi i cms

Stamattina ho letto due ottime notizie!

E’ finalmente uscita la versione definitiva di Drupal 5. Da questo momento in poi lavorerò a pieno regime per portare theeyes sulla nuova piattaforma. A dire il vero questo risolve più problemi a me, povero amministratore che si è rotto i cosidetti del menù di amministrazione di drupal (che è veramente scomodo da usare!) che non agli utenti che si accorgeranno poco dei cambiamenti.

L’altra bella notizia è l’aggiornamento di Wordpress alla versione 2.0.7, come già preannunciato. In realtà sarebbe stato meglio avere un wordpress 2.0.6 un po’ più sicuro, ma ci accontentiamo della celerità con cui è stata rilasciata la nuova versione. Senza considerare che sono solo sei i file da sostituire ;)

Tornando a Drupal, che ora mi interessa molto di più per le potenzialità di questo cms, purtroppo  un po’ sottovalutato qui in Italia, questo significa che mentre lavorerò al nuovo theeyes, porterò avanti con più velocità il lavoro su raramente.net. A tal riguardo faccio presente che la grafica dovrà essere molto simile a quella attuale, l’intestazione rimarrà identica, con il flash odierno, ma ovviamente il tutto dovrà essere contornato da un xhtml valido e un foglio di stile all’altezza della situazione. Spero per febbraio di avere una bozza da mostrare!

Per ora il problema più grosso riguardante Drupal 5 è che manca ancora l’uscita di una versione stabile di Acidfree, il modulo che gestisce gli album di immagini su the eyes e sugli altri siti che ho curato. Se ci riesco fra oggi e domani provo a scaricare la versione sul cvs, ma temo che sia la stessa dell’head, ferma a novembre-dicembre :(

Una buona notizia e tante cose da fare

Oh, finalmente dove lavoro hanno pensato bene di aumentare per contratto il mio orario di lavoro. In poche parole, passo dalle 6 ore per giorni giorni settimanali alle 7,30 attuali (più mezz’ora di pausa). Questi significa che avrò un po’ più di soldi da parte (no, non mi arricchirò purtroppo) ma anche che avrò meno tempo libero disponibile.

Eppure questo è un periodo molto proficuo per me. Ecco le cose che devo fare e per cui i tempi rischiano di allungarsi:

  • ho un esame da fare a febbraio
  • devo riscrivere raramente.net
  • devo sperimentare google adsense (questa la spiego meglio i prossimi giorni)
  • devo scrivere il racconto promesso (”pazienti”, in entrambi i sensi!)
  • devo scrivere una guida su come configurare un multimedia center come l’ho configurato io
  • devo rivedere alcune parti dell’organizzazione di the Eyes (sezione concorsi, gli eventi, l’organizzazione degli album fotografici, i tipi di contenuti associati alle categorie…)
  • devo completare Creta e inserirci le guide per postare i contenuti su the Eyes (è già presente un’aiuto per inserire i contenuti di ascoltare)
  • devo portare avanti un progetto con Stefania
  • umh, devo ancora leggere le mail di oggi: e dire che sono sveglio dalle sei meno un quarto!

Drupal 5 alla seconda release candidate

E’ da poco uscita la RC2 per Drupal 5.0. Ormai il cms sembra aver preso una forma definitiva. Appena mi sarà possibile lo installerò sandbox e su beta per aggiornare i siti di sviluppo.

Nel frattempo il sito ufficiale di Drupal, drupal.org già sta utilizzando la versione 5 rc2, dopo averla testata per un po’ di giorni su un mirror del portale.

Le esatte parole per annunciare l’evento sono state “So in good Drupal tradition, we get to “eat our own dog food” before a major release“. Più onesti di così!