Dés le départ, quand j'ai conçu l'architecture du système de formulaire jForms, dans Jelix, j'ai fait en sorte que chaque partie de jforms soit suffisamment bien séparée des autres, de manière à le faire évoluer le plus facilement possible. Par exemple, un des objectifs premiers était, à partir d'un unique fichier descriptif de formulaire en XML, de pouvoir générer un formulaire dans le format que l'on veut : HTML, XUL, XForms etc.. Ainsi donc, dans jForms il y a

  • un objet pour l'analyse du fichier XML jforms
  • un ensemble d'objet pour l'instanciation et la manipulation d'un formulaire coté serveur dans les contrôleurs,
  • d'autres pour la validation des données coté serveur,
  • et enfin un autre pour la génération finale d'un formulaire dans un format précis.

Dans Jelix 1.0.1, il n'y a qu'un format de sortie disponible, qui est du HTML que je qualifierai de "classique" (comprendre, pas de DHTML et ajax dans tout les sens), avec une génération de code javascript pour la validation coté client. On peut ajouter d'autres formats, mais il faut modifier quelques lignes dans le code même de jForms, ce qui n'est pas des plus pratique, malgré l'existence d'une documentation sur ce sujet pour les "hackers".

Ce temps est cependant révolu : je viens de passer deux petites heures à modifier légèrement jForms afin que les générateurs de sortie soient sous forme de plugins. Ainsi, plus besoin de modifier le code de jForms pour ajouter un nouveau format. Il suffit de faire une simple classe que l'on dépose dans un répertoire de plugin, de faire les plugins de templates qui vont avec et c'est tout. Bien entendu, rien ne change au niveau utilisation ;-)

Il est probable ainsi que l'on puisse, dans Jelix 1.1, générer un formulaire HTML utilisant extjs par ex, ou générer un formulaire en XUL (et plus tard un plugin pour générer un formulaire HTML5 ;-) .

Prochaines évolutions dans jforms : de belles balises comme <htmleditor>, <captcha>.. ;-)