Phrases standards
La frappe répétée des mêmes phrases revenant sans cesse est une des caractéristiques du travail sur ordinateur, et ceci est d'autant plus vrai pour les pages Web -- surtout lorsque vous devez agir directement sur le HTML.
Frontier permet d'échapper à cet ennuyeux travail répétitif (et après tout, à quoi servirait un ordinateur si ce n'est à échapper à cette routine laborieuse).
C'est ce que fait le mécanisme du Glossary ("glossaire"). Vous conservez une table de substitutions, et quand votre page est rendue, les substitutions sont exécutées. Concrètement, vous pouvez préparer un ensemble d'abréviations pour des phrases standards. L'idée est vraiment simple ; mais c'est un outil tellement utile que vous l'utiliserez tout le temps.
Pour voir un exemple du glossaire au travail, allez à monPremierSite.default et, où il est écrit "grâce à Frontier", mettez entre guillemets le mot Frontier. Maintenant, prévisualisez la page. Le mot Frontier n'apparaît pas entre guillemets, dans le fureteur, mais il est devenu un lien hypertexte pointant sur le site Web de Frontier à scripting.com.
Cela fonctionne de la manière suivante : au moment du rendu, Frontier cherche les tables appelées "glossary", et il regarde dans ces tables pour voir s'il y existe une entrée dont le nom correspond à chacune des expressions entre guillemets dans votre page Web.
S'il trouve une telle entrée, il substitue à l'expression entre guillemets la valeur de cette entrée. S'il ne trouve pas cette entrée, Frontier laisse l'original tel quel, entre guillemets. Frontier abandonne après avoir vérifié dans user.html.glossary. C'est là qu'il a trouvé l'entrée pour Frontier, allez le constater par vous-même.
Vous pouvez voir que user.html.glossary.Frontier a une valeur avec une balise <a>, le mot Frontier et la balise de fermeture </a>. C'est cela qui a fait son chemin jusqu'au rendu de notre page default.
Vous pouvez empêcher n'importe quelle phrase entre guillemets d'être recherchée par Frontier dans les glossaires, en mettant une barre oblique inversée devant le premier guillemet. Vous pouvez aussi annuler complètement le mécanisme du glossary pour une page ou pour un groupe de pages, en utilisant la directive #expandGlossaryItems. Elle est à "true" par défaut, mais vous pouvez la régler à "false".
Les éléments qui sont entre chevrons (les balises HTML) sont assurés de ne pas être perçus comme des éléments pouvant être traités par le mécanisme du glossary. Si ce n'était pas le cas, cela pourrait produire des résultats assez bizarres.
Créer des entrées du glossaire
Vous pouvez bien sûr créer des entrées manuellement, elles ne sont après tout que des entrées d'une table.
Il y a aussi un raccourci clavier, qui vous permet d'inclure des entrées dans le glossaire, à partir de votre fureteur -- comme Frontier, ou d'autres qui sont déjà présente à user.html.glossary.
Sur Macintosh, quand Frontier est activé, le fureteur a un nouveau menu, Script, qui contient l'article de menu Add To Glossary, à partir duquel vous pouvez insérer dans user.html.glossary une référence à la page actuellement affichée par le fureteur. User.html.glossary n'est peut être pas l'endroit où vous aimeriez garder cette référence, mais c'est un bon début et, plus tard, vous pourrez facilement couper et coller l'entrée dans une autre table glossary. Vous pouvez également utiliser d'autres fonctions du menu Scripts qui vous permettent d'aller rapidement à user.html.glossary, ou de le convertir en une page Web contenant tous les liens qui y figurent.
Ça serait peut-être une bonne idée d'ajouter user.html.glossary à votre menu Bookmarks, parce que c'est une table que vous pouvez être amené à ouvrir souvent. Utilisez la fonction Jump pour ouvrir user.html, puis sélectionnez l'entrée "glossary". Enfin, choisissez la commande "Add Bookmark" du menu Bookmarks.
Utiliser les glossaires de la façon qui vous convient
Comme vous risquez d'avoir beaucoup de répétitions et de phrases standards dans vos pages Web, vous trouverez sans aucun doute de multiples utilisations au mécanisme du glossaire. Les besoins et les goûts de chacun peuvent varier.
Personnellement, bien que je me serve des glossaires pour obtenir des liens hypertextes, je ne les utilise pas toujours de la même manière que celle qui est appliquée à user.html.glossary, parce que je n'aime pas être restreint à une seule phrase fixe qui apparaîtra entre les codes <a> et </a>.
Par exemple, l'entrée "Frontier" dans le glossaire résulte en un lien hypertexte appliqué au mot "Frontier". Il serait commode d'avoir davantage de flexibilité quant au texte qui devra apparaître en tant que lien.
L'une des solutions que j'utilise, est d'avoir une entrée "Frontier" dans le glossaire, qui ne contient que la balise <a> . Comme ceci :
<a href="http://www.scripting.com/frontier/">
De cette façon, n'importe quelle phrase peut devenir un lien pointant sur le site Web de Frontier. Bien sûr, je dois moi-même mettre le </a> final, mais ce n'est vraiment pas un problème. Par exemple je pourrais écrire :
Il y a Frontierun mécanisme vraiment chouette</a>
que vous devriez connaître.
Cela a pour résultat un lien hypertexte parfaitement valide.
Mais à présent, j'utilise la plupart du temps une autre méthode : une macro que j'ai appellée glossSub. Voici ce qu'elle fait. Supposons que votre entrée du glossaire soit celle qui est à user.html.glossary.Frontier. Dans ma page, au lieu de mettre l'entrée du glossaire (c'est-à-dire une phrase entre guillemets), je me sers d'une macro. Comme ceci :
Il y a{glossSub(Frontier, "un mécanisme vraiment chouette")}
que vous devriez connaître.
Cela donne comme résultat : "Il y a un un mécanisme vraiment chouette que vous devriez connaître.", avec le lien pointant sur le site de Frontier appliqué à "un mécanisme vraiment chouette". Le premier élément, entre les parenthèses, est le nom de l'entrée dans la table glossary ; le second, c'est le texte que nous désirons voir apparaître en tant que lien (en partant du principe, bien sûr, que la valeur de cette entrée du glossaire soit un lien hypertexte).
Vous devriez vraiment essayer ça, c'est super !
Allez à monPremierSite.default, et à l'endroit où auparavant vous aviez Frontier, mettez l'expression suivante :
{glossSub(Frontier, "un mécanisme vraiment chouette")}
Prévisualisez la page. Vous comprenez l'idée, maintenant ?
Notez que nous venons à peine d'apprendre comment fonctionne les glossaires et déjà nous commençons à les traficoter. Lorsqu'il a mis au point le mécanisme des glossaires, Dave l'a fait selon ce qui était pratique pour lui, en fonction de sa manière de travailler et de penser. J'y substitue ce que je trouve pratique, en fonction de ma manière de travailler et de penser, et éventuellement, vous y substituerez ce que vous trouverez pratique. Et l'idée, c'est que c'est comme ça pour tout ! Et puis évidemment, les liens sont loin d'être les seuls objets pour lesquels vous pouvez créer des entrées de glossaire.
Où sont les glossaires
Le comportement du mécanisme du glossary, -- la manière dont il fonctionne pour rechercher chaque expression entre guillemets et l'entrée correspondante dans le glossaire -- est vraiment spécial. Rien dans la gestion de sites Web ne fonctionne de la sorte. Alors soyons clairs à son sujet pour en retirer le maximum davantage.
Tout d'abord, votre page peut avoir un glossaire qui lui est propre, et qui peut être n'importe où dans la banque de données. Il vous suffit d'utiliser une directive #glossary dans votre page :
#glossary "workspace.monGlossaireSpécial"
Ensuite, Frontier cherche une table glossary dans la même table que la page qu'il est en train de rendre. Puis il cherche dans la table qui contient cette table, et ainsi de suite, pour finir avec user.html.glossary.
Si monPremierSite a une sous-table appelée unDossier, et que vous rendiez une page à l'intérieur de celle-ci et appelée maPage et qui ait la directive #glossary décrite plus haut, voici ce qui arrivera pour chaque expression du glossaire dans maPage:
- Frontier regarde d'abord dans workspace.monGlossaireSpécial.
- Puis dans websites.monPremierSite.unDossier.glossary (s'il y en a un).
- Puis dans websites.monPremierSite.glossary (s'il y en a un).
- Puis dans websites.glossary -- (s'il y en a un).
- Puis dans user.glossary -- bon, ça devient stupide....
- Pour finir, Frontier regarde dans user.html.glossary.
Aussitôt que Frontier trouve l'entrée correspondant à l'expression du glossaire, il arrête de chercher et procède à la substitution. Vous pouvez utiliser ce comportement à votre avantage, pour offrir aux glossaires la même puissance de recherche hiérarchisée orientée objet que celle dont bénéficient les directives et les images.
Glossaires et macros
À présent, il est temps de faire le point sur la relation existant entre les entrées de glossaire et les macros.
Vous avez probablement noté pendant l'exercice concernant les images que taper les paramètres d'imageRef est assez laborieux. Si vous désirez inclure les mêmes paramètres ailleurs dans votre page, les choses deviennent carrément fastidieuses.
Cela m'arrive constamment quand par exemple j'ai une liste d'éléments dont certains sont marqués par un petit GIF qui dit "nouveau" ou "super". Je ne veux pas avoir à écrire à chaque fois tous les paramètres d'imageRef pour chaque occurrence de ce GIF. Je veux simplement mettre "nouveau" ou "super" et laisser le mécanisme du glossary mettre les paramètres de l'imageRef pour moi.
Heureusement, on peut mettre des macros dans les glossaires. Les entrées de glossaires sont évaluées en premier, puis les macros.
Vous devez voir cela par vous même. Allez dans le modèle ("template") et sélectionnez en entier l'expression de l'imageRef, en incluant les deux accolades.
"Coupez" la sélection et remplacez-la par "ourLogo", avec les guillemets. Ouvrez monPremierSite.glossary (ignorez tout ce qu'il peut contenir, je l'expliquerai plus tard). Allez dans le sous-menu "New Scalar" du menu "Table", pour créer une nouvelle "String".
Appellez-la "ourLogo" (sans les guillemets), tapez une tabulation pour déplacer votre curseur dans sa valeur, et collez (et ensuite pressez Entrée pour valider le résultat). À présent, allez à n'importe qu'elle page, comme monPremierSite.default, et prévisualisez-la dans le fureteur. Et voilà ! Le logo apparaît.
Filtres
Vous ne saviez probablement pas que vous aviez des filtres, mais c'est le cas. Allez faire un tour à monPremierSite.#filters et vous verrez qu'il y en a trois. Ce sont tous trois des scripts.
FirstFilter est appellé en premier, alors que peu de choses sont déjà faites. La table de la page (dans websites.#data) a été construite, mais aucune autre étape du processus de rendu n'a encore été effectuée.
PageFilter permet d'intervenir sur votre page avant qu'elle ne soit incluse dans son template. Il est appelé après que les directives de la page aient été traitées, mais avant que toute autre modification ait eu lieu. L'objet que le filtre peut alors modifier à loisir est html.data.adrPageTable^.bodytext.
FinalFilter est appelé à la fin du processus de rendu, et l'objet qu'il va modifier est html.data.adrPageTable^.renderedtext.
Par défaut, firstFilter ne fait pas grand-chose : il renvoie juste "true". PageFilter augmente la taille du premier caractère de votre page et aide à construire votre glossaire pour le préparer à son utilisation avec le mécanisme du glossPatch (c'est comme cela que toutes les entrées se retrouvent dans votre glossaire, j'expliquerai le mécanisme du glossPatch un peu plus loin). FinalFilter, ne fait rien non plus. Mais ce n'est que leur comportement par défaut : vous pouvez modifier vos filtres comme vous l'entendez.
Encore un truc sur les filtres
Vous pourriez souhaiter modifier pageFilter pour qu'il n'agrandisse plus le premier caractère de chaque page. Pour ce faire, sélectionnez simplement la troisième ligne, celle qui commence avec "try", et choisissez Toggle Comment du menu Script (et n'oubliez pas de presser le bouton Compile).
Ne vous en faites pas. Agrandir le premier caractère de chaque page est un exemple de ce que pageFilter peut faire. On s'attend à ce que vous personnalisiez cette routine.
|