Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Evolution des JForms

Posted by yamsuz on 09/25/2008 10:32

Bonjour,

J'utilise Jelix depuis seulement 2-3 mois, et je commence à voir doucement la puissance de ce framework.

J'ai essayer d'utiliser les jForms pour faire mes formulaires, ce que je trouve très bien. Mais je pense qu'il serait intéressant d'aller un peu plus loin en proposant 2 options qui je pense sont importantes dans un formulaire :

  • donner la possibilité au développeur d'associer le control (input par exemple) à une class CSS, soit directement dans le fichier Forms ou également dans le template ou les deux.
  • donner la possibilité au développeur de mettre des événements javascript.

J'ai réfléchi sur une possibilité de lier les deux et à la rigueur même de mettre la balise style en même temps, c'est tout simplement de rajouter un item dans le fichier XML qui nous permettrait de mettre du code HTML et qui serait intégré directement dans le code HTML

ex:

  <input ref="Naissance" type="string" class="Toto">
   <label>Date de naissance :</label>
   <html>class="toto"</html>
   <html>onChange="javascript:maFonction();"</html>
  </input>

Cette idée m'est venu car j'utilise le javascript pour faire des controles. Et en plus j'aime bien mettre mon propre CSS par control.

J'ai également trouvé un problème, si je ne me trompe pas automatiquement le nom du control et l'id sont identique, ça génére un problème quand on veut utiliser la fonction javascript document.getElementById(), j'ai donc du modifier le code source de jelix pour mettre l'id du control sous la forme NomDuFormulaire_NomDuControl

  [Opened] Re: Evolution des JForms

Reply #1 Posted by yamsuz on 09/25/2008 11:15

Je viens d'apporter des modifications au framework, mais je ne sais pas comment je peux les publier, si ça intéresse quelqu'un, voici ce que j'ai modifié. ça permet de mettre une balise html qui contient ce que vous voulez dans les inputs HTML.

Fichier jFormsControl.class.php Rajout de

  « public $html = ''; » dans les déclarations de variables

Fichier jFormsCompiler.class.php Rajout dans la fonction : generatePHPControl

 //html support
   if(isset($control->html)){
     $html = (string)$control->html;
     $source[]='$ctrl->html=\''.str_replace("'","\\'",$html).'\';';
   }

Fichier jFormsBuilderBase.class.php Rajout dans la fonction : outputControl

En début de fonction

 $html = ($ctrl->html == ''?'':' '.htmlspecialchars($ctrl->html).' ');

Pour input

 Rajout de $html dans le echo permettant de faire le code HTML

Résultat final:

  <input ref="Naissance" type="string" >
    <label>Date de naissance :</label>
    <html>onChange:"javascript:toto();" onClick="javascript:titi();"</html>
  </input>

tout le code dans la balise "html" va s'ajouter automatiquement sans modification résultat :

  <input type="text" name="Naissance" id="jform1_Naissance" onChange:"javascript:toto();" onClick="javascript:titi();" value=""/>

  [Opened] Re: Evolution des JForms

Reply #2 Posted by bballizlife on 09/25/2008 12:27

Salut,

Si tu souhaite contribuer, inscrit toi sur dev.jelix.org et ouvre un ticket en explicant et joignant tes modifications.

Merci !


N'importe comment c'est dans la doc

  [Opened] Re: Evolution des JForms

Reply #3 Posted by laurentj on 09/25/2008 17:23

Salut,

Pour les histoires de CSS : il y a des classes dans tout les sens qui sont déjà générées automatiquement. Ajouter un attribut class ou autre dans le fichier jforms ne sert donc à rien à mon avis. Si il manque des classes à certains endroits, on pourrait les rajouter nativement effectivement.

Pour le javascript : hors de question de mettre ça dans jforms. Le fichier jforms n'est qu'une description de la structure du formulaire. En aucun cas il ne devrait y avoir des informations pour les builders. Pour la simple raison que ça peut être totalement incompatible avec des builders. Si demain j'utilise un builder de formulaire XUL ? Xforms ? Extjs ? Full jquery UI ? autre toolkit javascript ?

Le respect des "couches" MVC doit être gardé.

Le javascript, tu peux très bien le rajouter dans ton template, l'api DOM est suffisamment riche pour le faire, d'autant plus que :

  • il y a des id sur presque tout les contrôles
  • des bibliothèques JS qui facilite tout ça.

Pour les id justement, leurs noms ont été amélioré dans la version 1.1 à venir.

Sinon, quand tu veux proposer une amélioration, il faut suivre ces instructions

 
Page
  1. Evolution des JForms