Génération du site web de l'ULB - format xml
sommairesommaireindexindexpage précédentepage précédentepage suivantepage suivanteimprimerimprimerenvoyerenvoyermarquermarquer

Faire coexister plusieurs actions dans un même formulaire

Plusieurs actions peuvent coexister dans le même formulaire, que ce soit des <action>, des <interaction>, des <test>, des <mail> ou des <record>. On peut les distinguer en placant une ancre différente sur chacune d'elles (attribut ancre="...").

Pour déclencher une action particulière, via un bouton ou un lien, on mentionnera l'ancre de celle-ci. Si on ne mentionne pas d'ancre, seule l'action qui ne possède pas d'ancre sera déclenchée.

On peut également créer un groupe d'actions en placant une ancre identique sur les actions concernées. Si elles sont déclenchées en mentionnant l'ancre en question, ces actions seront exécutées les unes après les autres, dans l'ordre de leur définition.

De même, toutes les actions qui ne possèdent pas d'ancres constituent un groupe d'actions. Si on déclenche le formulaire via un bouton ou un lien sans mentionner d'ancre, toutes les actions de ce groupe seront exécutées.


Déclencher une action ou un groupe d'actions à l'aide d'un bouton

si l'élément <bouton> ne possède pas d'attribut action="xxxx", ce bouton déclenchera l'action ou le groupe d'actions qui ne possède pas d'ancre (c'est le mode de fonctionnement standard). Les actions qui possèdent une ancre ne seront pas prises en compte.

Par contre, si l'élément <bouton> possède un attribut action="xxxx", le bouton déclenchera l'action ou le groupe d'actions possèdant une ancre égale à xxxx. Les actions possèdant une ancre différente ainsi que celles qui ne possèdent pas d'ancre ne seront pas prises en compte.


Dans cet exemple, deux actions sont définies avec chacune une ancre différente: ancre1 et ancre2 (la première action enverra les données en post, la deuxième en get).

Deux boutons sont créés dans le formulaire, le premier pointant vers la première action (action="ancre1") et le deuxième pointant vers la deuxième action (action="ancre2").

Exemple
<formulaire ancre="f1" style="voile" bords="arrondis">
   <action ancre="ancre1" 
           href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="post"/>
   <action ancre="ancre2" 
           href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="get"/>
   <input>   
      <nom>lastname</nom>
      <libellé>nom</libellé>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
   </input>
   <bouton action="ancre1">
      <nom>go</nom>
      <libellé>Envoyer en post</libellé>
   </bouton>
   <bouton action="ancre2">
      <nom>go</nom>
      <libellé>Envoyer en get</libellé>
   </bouton>
</formulaire>

Nom:

Prénom:


Déclencher une action ou un groupe d'actions à l'aide d'un lien

Il est possible également d'utiliser un lien hypertexte pour déclencher une action d'un formulaire. Pour cela, le lien hypertexte doit utiliser un attribut cible contenant l'action envoyer:xxxx:yyyyxxxx est l'ancre du formulaire et yyyy l'ancre de l'action ou du groupe d'actions en question.

Pour déclencher l'action ou le groupe d'actions qui ne possède pas d'ancre, on utilisera l'action envoyer:xxxxxxxx est l'ancre du formulaire.

Dans cet exemple, deux liens sont utilisés pour envoyer les données récoltées dans le formulaire, à l'aide des actions envoyer:f2:a1 et envoyer:f2:a2 (f2 est l'ancre du formulaire, a1 et a2 sont les ancres des actions).

Exemple
<formulaire style="voile" bords="arrondis" ancre="f2">
   <action ancre="a1" 
           href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="post"/>
   <action ancre="a2" 
           href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="get"/>
   <input>
      <nom>lastname</nom>
      <libellé>nom</libellé>
      <obligatoire/>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
      <obligatoire/>
   </input>
</formulaire>					
					
<p>
Envoyer le formulaire en <a cible="envoyer:f2:a2">get</a> ou <a cible="envoyer:f2:a1">post</a>.
</p>				
				
			

Nom:

Prénom:

Envoyer le formulaire en get ou post.


Dans le cas ou le lien hypertexte se trouve dans le formulaire, il n'est pas nécessaire de mentionner l'ancre du formulaire, seule l'ancre de l'action est nécessaire. On utilisera alors les actions envoyer:yyyy (pour les actions avec une ancre yyyy) ou envoyer (pour les actions sans ancres).

Exemple
<formulaire>
   <action ancre="b1" 
           href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="post"/>
   <action ancre="b2" 
           href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="get"/>
   <input>
      <nom>lastname</nom>
      <libellé>nom</libellé>
      <obligatoire/>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
      <obligatoire/>
   </input>

   <p>
   Envoyer le formulaire en <a cible="envoyer:b2">get</a> ou <a cible="envoyer:b1">post</a>.
   </p>
</formulaire>   
				
				

Nom:

Prénom:

Envoyer le formulaire en get ou post.


Groupe d'actions

Toutes les actions qui possèdent une ancre identique forment un groupe d'actions. De même, si plusieurs actions sans ancre existent, elles forment également un groupe d'actions.

Si ce groupe est déclenché, via un bouton ou un lien, les actions qui le constituent vont s'exécuter les unes après les autres, dans l'ordre de leur définition.


Toutefois, l'exécution va se terminer si:


  • si une des actions exécute l'action arrêter (l'action terminer, par contre, terminera l'action du formulaire en cours mais continuera avec les actions suivantes)

  • si la réponse à une action consiste à afficher une nouvelle page web dans le navigateur (la page courante ayant quitté le navigateur, les actions qui suivent n'existeront plus)


Dans cet exemple, trois actions seront exécutées lorsque vous cliquerez sur le bouton:

  • Un premier élément <mail> pour envoyer les données du formulaire à un responsable (pour les tests, c'est votre adresse mail qui est utilisée dans cet exemple).

  • Un élément <record> pour enregistrer les données du formulaire dans une base de données.

  • Un deuxième élément <mail> pour envoyer un message de confirmation à l'utilisateur (via l'adresse email fournie par l'Intranet).

L'application appelée par ces trois actions exécute l'action ok ou nok pour indiquer que l'opération s'est bien ou mal passée. On se sert de cet état pour procéder à la suite (si:fin) ou pour faire disparaître le formulaire (masquer:form1), afficher un bloc contenant un message d'érreur (montrer:erreur) et arrêter l'exécution (arrêter) en cas d'erreur.

Exemple
<formulaire style="colorBar1" bords="arrondis" ancre="form1" set="set1">
   <mail>
      <to>{intranet:email}</to>
      <subject>inscription {form:lastname} {form:firstname} - {intranet:matri}</subject>
      <paramètre nom="séance">{form:inscription/option}</paramètre>
      <actions exécuter="après">si:fin,masquer:form1,montrer:erreur,arrêter</actions>
   </mail>

   <record id="formluc">
      <actions exécuter="après">si:fin,masquer:form1,montrer:erreur,arrêter</actions>
   </record>

   <mail>
      <to>{intranet:email}</to>
      <subject>votre inscription à la séance d'information</subject>
      <body>
Bonjour {form:firstname},

Nous avons bien reçu votre inscription à la séance {form:inscription/option}.

Excellente journée.
      </body>
      <actions exécuter="après">
         si:ok,masquer:form1,montrer:erreur,arrêter
         label:ok,masquer:form1,montrer:msgok
      </actions>
   </mail>
   
   <input>
      <nom>lastname</nom>
      <libellé>nom</libellé>
      <valeur>{intranet:nom}</valeur>
      <obligatoire/>
   </input>
   
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
      <valeur>{intranet:prénom}</valeur>
      <obligatoire/>
   </input>
   
   <input type="radio">
      <nom>inscription</nom>
      <libellé>je m'inscrit à la séance</libellé>
      <obligatoire/>
      <option valeur="solbosch">du 31/10 à 14h au Solbosch</option>
      <option valeur="plaine">du 12/11 à 14h à la Plaine</option>
      <option valeur="erasme">du 24/11 à 10h à Erasme</option>
   </input>
   
   <bouton>
      <libellé>envoyer</libellé>
   </bouton>
</formulaire>

<bloc ancre="erreur" état="masqué" style="important" bords="arrondis">
   <p>Une erreur est survenue lors du traitement de vos données.</p>
</bloc>

<bloc ancre="msgok" état="masqué"  style="colorBar2" bords="arrondis">
   <p>Bonjour {set1:firstname},</p>
   <p>Nous avons bien enregistré votre inscription à la séance {set1:inscription/option}</p>
</bloc>
ULB - entreprise écodynamique