Drupal et jQuery, une grande histoire d'amour... ou pas


Christopher - Ajouté le 19 novembre 2009

Je suis loin d'être un expert de jQuery, mais sachant qu'il fait partie intégrante de Drupal, il faut bien s'y mettre un jour ou l'autre. Dans mon cas, c'est très basique, je ne cherche pas à créer une interface entièrement basée sur cette librairie magnifique, mais juste exploiter quelques fonctionnalités intéressantes. Et là, ça coince quand on essaye de cumuler les petits plugins.

 

Concrètement, voici le topo : il y a quelques mois, j'ai intégré une fonction jQuery très basique sur un formulaire d'authentification. Il s'agissait d'inclure dans les champs "utilisateur" et "mot de passe" leur label ; et en cliquant dans le champ, ces labels disparaissent. Une ligne de code copiée/collée et le tour est joué. Hourah me dis-je, chuis trop fort, vive le couple Drupal/jQuery! Ce que j'ai sous-estimé, c'est que jQuery est une entité à part entière, et bien qu'elle soit intégrée dans le core de Drupal 6, il s'agit de la version 1.2.6.

 

Deuxième partie de l'épisode, je découvre que jQuery se décline en plugins... c'est la fête du slip me dis-je en moi-même! Pour info, j'ai découvert la fameuse suite de plugins jQueryTOOLS qui permet de faire des choses fantastiques. J'installe le tout, je teste, et visiblement ça marche plutôt pas mal. J'ai justement besoin d'alléger mes formulaires dans le site cité ci-dessus pour faire apparaitre l'aide relative à chaque champ dans une info-bulle (chose prise en charge par jQueryTOOLS).

 

Troisième partie : j'installe jQueryTOOLS sur ce fameux site, ajuste mon code, et là plouf. Rien. Le néant total. Suis-je bête! Il faut aussi passer à la dernière version de jQuery, à savoir la 1.3.2. Je m'y colle, re-test, et là c'est vraiment ce qu'on peut appeler la catastrophe... plus rien ne marche. Mon formulaire ne réagit plus quand je clique dans les champs, et toujours pas d'info-bulles.

 

Je suis face à un conflit de versions, ce qui est loin d'être plaisant. Qui plus est, certains modules qui utilisent la librairie jQuery 1.2.6 ne fonctionnent plus à cause de différences de syntaxe (par exemple, le module External qui permet d'ouvrir les liens externes dans une nouvelle fenêtre). Bref, c'est Bagdad sur mon site, et il faut réagir.

 

Sachant qu'avec les outils de ce genre on ne peut qu'aller de l'avant, j'ai cherché (et trouvé) la solution à mon problème : une fonction similaire optimisée pour la dernière version de jQuery.

 

Donc tout ça pour dire, amis webmasters et bidouilleurs en tout genre, avant de vous emballer sur des librairies de ce genre et de gaver vos sites de jQuery (ou autres), gardez en mémoire qu'une simple mise à jour peut foutre en l'air des heures de boulot. Pour ma part ce n'était pas le cas, mais je crois que j'aurais été sérieusement emmerdé si j'avais développé une interface basée sur jQuery.