Tutoriel : Mon premier widget Dojo
Création d'un composant graphique Dojo pour interfacer l'accès à plusieurs moteurs de recherche (Compatible Dojo 1.2.3)14 : Affichage des erreurs
Création d'une popup pour l'affichage des erreurs.
14.1. Affichage de la popup si la recherche ne peut être exécutée
Search.js
142 143 144 145 146147 148 149 150 151152 153 154 | else { var dialogbox = dijit.byId("dialogbox"); var content = this._nls.ressources.popup; dialogbox.attr("title",this._nls.locale.popup.title); dialogbox.attr("content",dojo.string.substitute(content,{ message:this._nls.locale.popup.message, btnLabel:this._nls.locale.popup.btnLabel })); dialogbox.show(); } |
lignes
144 : on stock le noeud DOM du sample sur lequel on affichera la boîte de dialogue
146 : wording correspondant à la popup
147 : titre de la popup
148 à 151 : ajout du contenu sous forme d'un template
153 : affichage de la boîte de dialogue
14.2. Ajout des propriétés de la popup dans le wording
nls/Locale.js
1 2 3 4 56 7 8 91011121314 1516 17 18 19 | ({ "searchWidget" : { "engines" : [ "Google", "Yahoo", "Wikipedia" ], "popup": { "btnLabel":"OK", "message": "you must write more than one character", "title": "Error" }, "search": "search", "send": "go", "text": "enter your keywords here..." } }) |
1 2 3 4 56 7 8 91011121314 1516 17 18 19 | ({ "searchWidget" : { "engines" : [ "Google", "Yahoo", "Wikipedia" ], "popup": { "btnLabel":"OK", "message": "Veuillez saisir au moins un caract\u00e8re", "title": "Erreur" }, "search": "rechercher", "send": "lancer la recherche", "text": "saisir le texte ici..." } }) |
lignes
10 : label du bouton de la boîte de dialogue
11 : message d'erreur
12 : titre de la popup
encodage des accents en unicode.
14.3. Création du template de la popup dans les ressources
nls/Ressources.js
1 2 3 4 56 7 8 9101112131415161718192021 22 | ({ "searchWidget" : { "engines" : { "google": "http://www.google.com/search?q=", "yahoo": "http://uk.search.yahoo.com/search?p=", "wikipedia": "http://en.wikipedia.org/wiki/Special:Recherche?search=" }, "popup" : "<table> \ <tr> \ <td>${message}</td> \ </tr> \ <tr> \ <td align=\"center\"> \ <button dojoType=\"dijit.form.Button\" type=\"submit\"> \ ${btnLabel}\ </button></td> \ </tr> \ </table>" } }) |
1 2 3 4 56 7 8 9101112131415161718192021 22 | ({ "searchWidget" : { "engines" : { "google": "http://www.google.fr/search?q=", "yahoo": "http://fr.search.yahoo.com/search?p=", "wikipedia": "http://fr.wikipedia.org/wiki/Special:Recherche?search=" }, "popup" : "<table> \ <tr> \ <td>${message}</td> \ </tr> \ <tr> \ <td align=\"center\"> \ <button dojoType=\"dijit.form.Button\" type=\"submit\"> \ ${btnLabel}\ </button></td> \ </tr> \ </table>" } }) |
lignes
9 à 20 : template de la boîte de dialogue. Le message d'erreur et le label du bouton peuvent être modifiés dynamiquement.
par simplicité, nous avons basé notre template sur un tableau HTML.
Afin de respecter les normes WAI (Web Accessibility Initiative) pour l'accessibilité, préférez des balises div pour vos templates.
14.4. Ajout de la boîte de dialogue au sample de test
searchWidget.html
1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 2526 27 28 293031 32 33 34 3536 37 38 39 4041 42 43 444546474849 5051 52 53 54 5556 57 58 59 6061 62 63 646566 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset="utf-8" /> <title>Search</title> <link rel="stylesheet" type="text/css" href="./css/search.css" /> <style type="text/css" title="text/css"> @import "../dijit/themes/dijit.css"; @import "../dijit/themes/nihilo/nihilo.css"; </style> <script> var djConfig = { parseOnLoad: false, isDebug: true }; </script> <script type="text/javascript" src="../dojo/dojo.js" charset="utf-8"></script> <script type="text/javascript" language="javascript"> dojo.require("dojo.i18n"); dojo.require("dijit.Dialog"); dojo.require("exemple1.widget.Search"); dojo.addOnLoad(init); function init(){ var _search = new exemple1.widget.Search({ id:"search", text:"saisir votre texte ici..." }, dojo.byId("search")); _search.startup(); var dialog = new dijit.Dialog({ title: "title" }, dojo.byId("dialogbox")); dialog.startup(); } </script> </head> <body class="nihilo"> <div id="search"></div> <iframe id="viewer" name="viewer" src="./static/empty.html" scrolling="yes" height="400" width="100%" frameborder="yes"> </iframe> <div id="dialogbox"></div> </body></html> |
lignes
29 : importation de la classe Dialog de la librairie dijit.
44 à 46 : instanciation de la boîte de dialogue.
48 : affichage de la boîte de dialogue.
64 : div qui sera remplacé par le widget Dialog.
Figure 6. Résultat final.