domenica 10 agosto 2008

Creare una Estensione Personalizzata per Firefox

In questo periodo mi sono cimentato nella creazione di una estensione per Firefox. La mia difficoltà è stata soprattutto nel trovare guide che ti guidassero passo passo alla creazione dell'estensione. Cosi ho deciso di scrivere le informazioni che ho raccolto/sperimentato.

Presupponendo che tutti voi conosciate cosa sia un'estensione per Firefox vado ad incominciare la mia piccola guida.

Il file .xpi (l'estensione dell'estensione :P) è in verità un file .zip quindi poter studiare una estensione già fatta inizia a semplificare il compito. Anche il file .jar che troverete all'interno è un file .zip quindi potete estrarre semplicemente questi file.

Se prendete una qualsiasi estensione e fate il procedimento di estrazione vedrete che vi compaiono di file: chrome.manifest e install.rdf.
Nel file chrome.manifest sono presenti i dati "descrittivi" della nostra estensione mentre il file install.rdf è una specie di script per l'installazione.
Non vi dovete preoccupare della creazione di questi due file perche nella mia guida li farò generare automaticamente.
Dedichiamoci agli altri elementi... è presente una cartella chrome con dentro un file jar. Estraendo il jar si avranno 2 o 3 cartelle: content, skin e locate. Dentro content ci saranno appunto i "contenuti" ovvero il codice vero e proprio dell'estensione; Dentro skin ci saranno gli elementi di interfaccia grafica tra cui il foglio di stile dell'estensione e dentro locate ci saranno i file per la localizzazione, per una estensione multilingua.

Ok passiamo ora allo sviluppo vero e proprio. Per questa guida mi baserò su un modello gia precompilato di una estensione per andare a creare la vostra estensione personalizzata.
Andiamo su questo sito e iniziamo a compilare i vari campi che ci servono.
Su Your Name inserite il vostro nome o il vostro nick. Inserendo Extension Name(il nome della vostra estensione) vi ritrovere con gia compilato il campo Extension Short Name(che volendo potete cambiare) e l'ID. L'ID in questo caso è formato cosi: [Short Name]+@+[Autore] e deve identificare univocamente, in tutto il mondo, la vostra estensione. In alternativa potrete dargli un uid ottenuto tramite terzi. Ad esempio su Linux potete usare il comando uuidgen.
Inserite il numero di Versione, la Descrizione e la Home Page della vostra Estensione. L'Update URL serve per far aggiornare automaticamente la vostra estensione. Io provando ad insere un mio sito di hosting dove risiede l'estensione, Firefox mi disabilita l'utilizzo dell'estensione perche non può verificare questo indirizzo. Quando scoprirò come risolvere ve lo comunicherò per ora lasciatelo vuoto. Volendo potete aggiungere anche dei Contributor.
Ok tutti questi dati verranno memorizzati nel file chrome.manifest... quindi se volete cambiarli dopo li trovate li.

Passiamo alle Feature addizionali:
Create Option Dialog & Preferences... come dice il nome predispone i file per creare una schermata di opzioni della vostra estensione
Create Context Menu Item... Crea un file per modificare i menù da quello contestuale(click destro) a quello principale.
Create Toolbar Button... Invece vi permette di agire sulle toolbar.
Avrete poi la possibilità di uploadare un'icona da utilizzare e di crearvi gia predisposta una finestra di info e about per la vostra estensione.

Infine si puo scegliere su quali versioni di Firefox(o Thunderbird) supportare e quale licenza aggiungere in testa ai vostri file. Se state usando un sistema unix-like dovete anche spuntare l'ultima casella.
Fatto questo se non avete commesso errori vi darà il download della vostra estensione vuota pronta per essere realizzata.

D'ora in poi vi consiglio di guardarvi un po' di sintatssi XUL(XML User interface Language) e altre estensioni simili per creare la vostra estensione personalizzata.
Dentro la cartella Content troverete i file per creare proprio l'estensione, menu, toolbar e finestre di dialogo. Dentro la cartella Skin avrete il foglio di stile e infine dentro la cartella Locate i file per la lingua.

Per provare la vostra estensione senza installarla vi consiglio di fare cosi:
Create un file con nome uguale all'ID della vostra estensione(se avete lasciato tutto di default avrete nomecortoestensione@autore). Inserite una riga dentro questo file che contiene il percorso assoluto alla cartella della vostra estensione(es. /home/user/dev/estensione).
Posizionate questo file dentro la cartella Extensions del vostro profilo di firefox(es /home/user/.mozilla/firefox/profilo/extensions).
Riavviando ogni volta Firefox verificherete i progressi che state facendo.

Una volta completo potete creare il file .xpi in un modo semplicissimo. Eseguite il file di shell build.sh e vi ritrovere con la vostraestensione.xpi.

Per installarla o la aprite con Firefox oppure la trascinate sulla schermata delle estensioni del Browser.

Buon Lavoro ;)