TUTORIEL CLIENTS WEB 
Les extensions Firefox (2)
Après avoir construit une extension simple, nous l'étoffons ici de quelques fonctionnalités utiles : un système de mise à jour et une fenêtre d'infirmation. (18/10/2005)
Nous avons vu dans un précédent article la méthode à suivre pour la création d'une extension Firefox, et les différents fichiers impliqués (lire notre article du 19/09/2005). Nous allons ici enrichir cette première extension de nouvelles possibilités utiles à l'utilisateur final.

Mise à jour
Une extension est rarement terminée : que ce soit pour corriger un bogue, améliorer les capacités ou ajouter de nouvelles fonctionnalités, il est très probable que votre travail ne restera pas en version 1.0 très longtemps. LEs concepteurs de Firefox ont prévu ce cas de figure : plutôt que d'obliger l'utilisateur à vérifier régulièrement s'il dispose bien de la dernière version, le navigateur possède un système d'avertissement et de téléchargement de mise à jour, qui s'applique autant à lui-même qu'aux extensions et thèmes installés.

Telle quelle, notre première extension ne peut pas profiter de ce système de mise à jour. Il faut pour cela ajouter un fichier particulier : update.rdf. Ce fichier doit se trouver sur le serveur de téléchargement de l'extension. Il permet d'indiquer les nouvelles versions d'une ou plusieurs extensions, sous une forme proche de celles de install.rdf.

<?xml version="1.0"?>
<r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.mozilla.org/2004/em-rdf#">
<!-- JDN Hello World -->
<r:Description about="urn:mozilla:extension:{ea979a68-2df8-4f1c-8edd-848cd44a9146}">
  <updates>
    <r:Seq>
      <r:li>
        <r:Description>
          <version>0.2</version>
          <targetApplication>
            <r:Description>
              <id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</id>
              <minVersion>0.8</minVersion>
              <maxVersion>1.9</maxVersion>
              <updateLink>http://example.net/hello.xpi </updateLink>
            </r:Description>
          </targetApplication>
        </r:Description>
      </r:li>
    </r:Seq>
  </updates>
  <version>0.2</version>
  <updateLink>http://example.net/hello.xpi</updateLink>
</r:Description>


Le premier identifiant, placé dans la balise r:Description, doit être le même que celui utilisé pour définir l'extension dans son fichier install.rdf. Le second, que l'ont trouve dans <id>, doit pour sa part toujours correspondre à celui de Firefox.
La balise version doit contenir la dernière version en cours - Firefox comparera cette chaîne à celle de l'extension installée, et affichera un message en cas d'incrémentation.
Les balises minVersion et maxVersion s'appliquent pour leur part à Firefox lui-même. Certaines fonctionnalités pour les extensions ne sont pas disponibles avant la 0.8, donc il peut être utile de ne pas viser plus bas. Pareillement, pour éviter de mettre à jour les extensions à chaque sortie d'un nouveau Firefox, viser jusqu'à la v1.9 rend le développeur plus tranquille.
Les URL, enfin, pointent sur le XPI, qui a été créé normalement.

Reste, finalement, à indiquer à Firefox que pour une extension donnée, il peut aller vérifier l'existence de mises à jour. Cela doit se faire dès la création de l'extension, en ajouter la ligne suivante au fichier install.rdf, au même niveau par exemple que <em:creator> :

<em:updateURL>http://www.webserver.com/update.rdf</em:updateURL>

Fenêtre "À propos"
Autre ajout esthétique mais toujours utile, une fenêtre pour que l'auteur de l'extension puisse se signaler à l'utilisateur. Cela permet de voir comment implémenter des fenêtres XUL dans un tel projet.

Car il ne s'agit plus ici d'afficher une alerte JavaScript, comme le fait notre première extension, mais d'ouvrir une fenêtre à part entière. Et sous Firefox, ces fenêtres sont déclarées avec XUL. Le fichier en question est nommé apropos.xul, mais il peut prendre n'importe quel nom ; le tout est de le pointer correctement depuis le fichier install.rdf, à savoir en utilisant la balise suivante :

<em:aboutURL>chrome://hello/content/apropos.xul</em:aboutURL>

Vous comprendrez en lisant l'URL que le fichier apropos.xul se trouve dans le dossier content, donc au même niveau que le fichier contents.rdf.

  Forum

Réagissez dans les forums de JDN Développeurs

La fenêtre elle-même est une simple question de développement XUL, ce que nous avons déjà abordé dans plusieurs articles (voir notre rubrique Client Web). Voici néanmoins un exemple basique :

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window class="dialog" title="A Propos de Hello!" onload="sizeToContent()" xmlns="http://www.mozilla.org/keymaster/gatekeeper
/there.is.only.xul">
  <vbox>
    <text value="Hello World v1.0""/>
    <text value="Une extension qu'elle est originale"/>
    <text value="from JDN with love" />
  </vbox>
  <hbox>
    <button label="Fermer" oncommand="window.close();"/>
  </hbox>
</window>


Nous obtenons une simple fenêtre, avec du texte libre et un bouton de fermeture.
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages