Déclencher des actions avant et après l'envoi du formulaireLes actions déclenchées pour envoyer les données récoltées par le formulaire (<action>, <interaction>, <test>, <mail> ou <record>) sont basées sur le même modèle que celui d'un élément <interaction>. Les actions du formulaire peuvent donc contenir des éléments <actions> destinés à déclarer une liste d'actions. Ces listes d'actions seront déclenchées juste avant ou juste après que l'application distante ne soit appelée. On peut également faire appel à l'attribut hypertexte cible pour définir une liste d'actions, comme dans tous les liens hypertextes. Ces actions peuvent servir à plein de choses, notamment à faire disparaître le formulaire et à le remplacer par un bloc contenant un message de confirmation ou de remerciement. Ce message peut, par exemple, provenir directement de l'application distante et servir à indiquer que le contenu du formulaire a bien été traité. Les actions déclenchées juste avant ont également la possibilité de bloquer l'appel à l'application distante. On peut les utiliser, par exemple, pour demander une confirmation à l'Internaute et bloquer l'envoi du formulaire si celui-ci répond négativement à cette confirmation. Définir les actions avec un élément <actions>Des éléments <actions> peuvent être utilisés dans toutes les actions de formulaire (<action>, <interaction>, <test>, <mail> ou <record>). Ils doivent contenir une liste d'actions à exécuter, séparées par des virgules ou des retour à la ligne. Un attribut exécuter sera utilisé pour indiquer quand ces actions devront être exécutées:
Si l'action arrêter ou l'action terminer sont exécutées avant l'envoi des données à l'application distante, cette dernière ne sera pas appelée (ces actions permettent d'empêcher l'envoi des données, si l'utilisateur ne donne pas son feu vert ou si le formulaire n'est pas complet). Si d'autres actions de formulaires suivent (voir Faire coexister plusieurs actions dans un même formulaire), l'action arrêter aura pour effet de ne pas les exécuter, tandis que terminer procédera à leur exécution. |
Dans cet exemple, la réponse de l'application sera affichée dans une balise html, placée dans un bloc resultat, grâce à l'attribut cible (cible="html:reponse"). Une première série d'actions (exécuter="démarrage") sera exécutée lors de l'affichage de la page. Elle permet de montrer le formulaire et de masquer le bloc resultat qui contiendra par la suite la réponse de l'application. Si l'utilisateur clique sur le bouton pour envoyer le formulaire, une deuxième série d'actions sera exécutée (exécuter="avant") juste avant d'appeler l'application distante. Ces actions demandent une confirmation à l'utilisateur: s'il clique sur ok, les actions se terminent normalement (si:fin) et on passera à la suite en appelant l'application distante. Si l'utilisateur clique sur cancel ou annuler, l'action arrêter sera exécutée ce qui terminera les actions en cours ainsi que l'action du formulaire. L'application distante ne sera pas appelée. Si l'application est appelée, une dernière série d'actions (exécuter="après") sera exécutée, afin de masquer le formulaire (qui disparaîtra de la page) et de montrer le bloc resultat qui contiendra alors la réponse provenant de cette apllication. Exemple <formulaire style="class1" bords="arrondis" ancre="formulaire"> <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dump.php" cible="html:reponse"> <actions exécuter="démarrage"> montrer:formulaire masquer:resultat </actions> <actions exécuter="avant"> confirmation(êtes-vous sûr ?) si:fin arrêter </actions> <actions exécuter="après"> montrer:resultat masquer:formulaire </actions> </action> <input> <nom>lastname</nom> <libellé>nom</libellé> </input> <input> <nom>firstname</nom> <libellé>prénom</libellé> </input> <bouton> <nom>go</nom> <libellé>Envoyer</libellé> </bouton> </formulaire> <bloc style="class1" bords="arrondis" ancre="resultat"> <html ancre="reponse"></html> </bloc> |
Définir les actions avec un attribut cibleSi l'élément <action> possède un attribut cible contenant des actions à exécuter, celles-ci seront déclenchées juste avant l'envoi du formulaire. Si celles-ci se terminent normalement (après l'exécution de la dernière action ou via l'action fin), les données du formulaire seront envoyée à l'application distante. Par contre, si les actions se terminent en exécutant arrêter ou terminer, l'appel à l'application distante ne se fera pas. |
Dans cet exemple, un attribut cible est utilisé pour demander une confirmation à l'utilisateur (action confirmation). L'action si:fin:terminer détermine la suite en fonction du choix de l'utilisateur: s'il clique sur [ok], l'action fin sera exécutée et le formulaire sera envoyé. S'il clique sur [cancel], l'action terminer sera exécutée et le formulaire ne sera pas envoyé. Exemple <formulaire style="class1" bords="arrondis"> <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" cible="confirmation(êtes-vous sûr ?),si:fin:terminer"/> <input> <nom>lastname</nom> <libellé>nom</libellé> </input> <input> <nom>firstname</nom> <libellé>prénom</libellé> </input> <bouton> <nom>go</nom> <libellé>Envoyer</libellé> </bouton> </formulaire> |