Вы находитесь на странице: 1из 406

ADOBE DREAMWEAVER CS4

Extension

2008 Adobe Systems Incorporated. Tous droits rservs.


Copyright

Extension d'Adobe Dreamweaver CS4 pour Windows et Mac OS Si le prsent guide est distribu avec un logiciel sous contrat de licence de lutilisateur final, ce guide, de mme que le logiciel dont il traite, est cd sous licence et ne peut tre copi ou utilis que conformment cette licence. Sauf autorisation spcifie dans la licence, aucune partie de cette publication ne peut tre reproduite, enregistre sur un systme de recherche ou transmise sous quelque forme ou par quelque moyen que ce soit (enregistrement lectronique, mcanique ou autre), sans lautorisation crite pralable dAdobe Systems Incorporated. Notez que le contenu de ce manuel est protg par des droits dauteur, mme sil nest pas distribu avec un logiciel accompagn dun contrat de licence pour lutilisateur final. Les informations contenues dans ce guide sont fournies titre informatif uniquement ; elles sont susceptibles dtre modifies sans pravis et ne doivent pas tre interprtes comme tant un engagement de la part dAdobe Systems Incorporated. Adobe Systems Incorporated naccepte aucune responsabilit quant aux erreurs ou inexactitudes pouvant tre contenues dans le prsent guide. Nous attirons votre attention sur le fait que les illustrations ou images que vous pouvez tre amen incorporer vos projets peuvent tre protges par des droits dauteur. Linclusion non autorise de tels lments dans vos nouveaux travaux peut constituer une violation des droits du dtenteur du copyright. Veuillez vous assurer que vous obtenez toute autorisation ncessaire auprs du dtenteur du copyright. Toute rfrence des noms de socits dans les modles types nest utilise qu titre dexemple et ne fait rfrence aucune socit relle. Adobe, the Adobe logo, ActionScript, ColdFusion, Dreamweaver, Fireworks, Flash, Flex Builder, HomeSite, JRun, Macromedia, Photoshop, and UltraDev are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries. Apple and Macintosh are trademarks of Apple Inc., registered in the United States and other countries. Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries. ActiveX, Microsoft, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. This work is licensed under the Creative Commons Attribution Non-Commercial 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/us/ This product includes software developed by the Apache Software Foundation (http://www.apache.org/). The Graphics Interchange Format is the Copyright property of CompuServe Incorporated. GIF is a Service Mark property of CompuServe Incorporated. MPEG Layer-3 audio compression technology licensed by Fraunhofer IIS and Thomson Multimedia (http://www.mp3licensing.com). You cannot use the MP3 compressed audio within the Software for real time or live broadcasts. If you require an MP3 decoder for real time or live broadcasts, you are responsible for obtaining this MP3 technology license. Speech compression and decompression technology licensed from Nellymoser, Inc. (www.nellymoser.com). Video in Flash Player is powered by On2 TrueMotion video technology. 1992-2005 On2 Technologies, Inc. All Rights Reserved. http://www.on2.com. This product includes software developed by the OpenSymphony Group (http://www.opensymphony.com/) Sorenson Spark video compression and decompression technology licensed from Sorenson Media, Inc. The Proximity/Merriam-Webster Inc./Franklin Electronic Publishers Inc. Database 1990/1994 Merriam-Webster Inc./Franklin Electronic Publishers Inc., 1994. All Rights Reserved. Proximity Technology Inc. The Proximity/Merriam-Webster Inc./Franklin Electronic Publishers Inc. 1990 Williams Collins Sons & Co. Ltd. 1997 - All rights reserved Proximity Technology Inc. 1990 Williams Collins Sons & Co. Ltd. 1990 - All rights reserved Proximity Technology Inc. Oxford University Press 2000. All rights reserved Proximity Technology Inc. 1990 IDE a.s. 1990 - All rights reserved Proximity Technology Inc. This product includes software developed by Fourthought, Inc. (http://www.fourthought.com). This product includes software developed by CollabNet (http://www.Collab.Net/). Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, USA. Notice to U.S. Government End Users. The Software and Documentation are Commercial Items, as that term is defined at 48 C.F.R. 2.101, consisting of Commercial Computer Software and Commercial Computer Software Documentation, as such terms are used in 48 C.F.R. 12.212 or 48 C.F.R. 227.7202, as applicable. Consistent with 48 C.F.R. 12.212 or 48 C.F.R. 227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial Items and (b) with only those rights as are granted to all other end users pursuant to the terms and conditions herein. Unpublished-rights reserved under the copyright laws of the United States. Adobe Systems Incorporated, 345 Park Avenue, San Jose, CA 95110-2704, USA. For U.S. Government End Users, Adobe agrees to comply with all applicable equal opportunity laws including, if appropriate, the provisions of Executive Order 11246, as amended, Section 402 of the Vietnam Era Veterans Readjustment Assistance Act of 1974 (38 USC 4212), and Section 503 of the Rehabilitation Act of 1973, as amended, and the regulations at 41 CFR Parts 60-1 through 60-60, 60-250, and 60-741. The affirmative action clause and regulations contained in the preceding sentence shall be incorporated by reference.

iii

Sommaire
Chapitre 1 : Introduction A propos des extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Installation d'une extension Cration d'une extension ............................................................................................ 1 .............................................................................................. 2 ............................................................ 2 ........................................................................ 2

Ressources supplmentaires pour les crateurs d'extensions Nouvelles fonctionnalits de Dreamweaver CS4 Conventions utilises dans ce manuel

.................................................................................. 3

Chapitre 2 : Personnalisation de Dreamweaver Techniques de personnalisation de Dreamweaver Modification des mappages FTP Modification des raccourcis clavier

...................................................................... 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Personnalisation de Dreamweaver dans un environnement multi-utilisateur Types de documents extensibles dans Dreamweaver

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Chapitre 3 : Personnalisation du mode Code A propos des indicateurs de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 A propos de la coloration du code A propos de la validation du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Modification du formatage HTML par dfaut A propos du mode Fractionnement vertical A propos des fichiers apparents A propos de l'affichage en direct

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Chapitre 4 : Extension de Dreamweaver Types d'extensions Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Extensions et dossiers de configuration API d'extension Localisation d'une extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Utilisation d'Extension Manager

Chapitre 5 : Interfaces utilisateur destines aux extensions Instructions de conception d'une interface utilisateur d'extension Commande de rendu HTML de Dreamweaver Ajout de contenu Flash Dreamweaver

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Commandes d'interface utilisateur personnalises dans les extensions Intgration de Photoshop et d'objets dynamiques

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

Chapitre 6 : Modle d'objet de document (DOM) Dreamweaver A propos du DOM de Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Distinction entre les DOM de document utilisateur et d'extension DOM Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

EXTENSION DE DREAMWEAVER CS4 iv


Sommaire

Chapitre 7 : Objets de la barre Insertion Fonctionnement des fichiers d'objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Fichier de dfinition de la barre Insertion Modification de la barre Insertion Fonction de l'API des objets Exemple simple d'insertion d'un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Chapitre 8 : API de vrification des problmes de compatibilit du navigateur Procdure de dtection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Exemple de fichiers de problmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Fonctions de l'API de vrification des problmes Chapitre 9 : Commandes Fonctionnement des commandes Exemple de commande simple

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

Ajout de commandes au menu Commandes Fonctions de l'API des commandes

Chapitre 10 : Menus et commandes de menu Fichier menus.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Modification des menus et des commandes de menu Commandes de menu Exemple de commande de menu simple Exemple de menu dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Fonctions de l'API des commandes de menu Chapitre 11 : Barres d'outils Fonctionnement des barres d'outils

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Fichier simple de commande de barre d'outils Fichier de dfinition de la barre d'outils Balises d'lments de barre d'outils Attributs des balises d'lments

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

Fonctions de l'API de commande de barre d'outils

Chapitre 12 : Rapports Rapports de site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Rapports autonomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Fonctions de l'API de rapports

Chapitre 13 : Bibliothques et diteurs de balises Format de fichier bibliothque de balises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Slecteur de balises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Exemple simple de cration d'un diteur de balise Fonctions de l'API de l'diteur de balises

Chapitre 14 : Inspecteurs Proprits Fichiers d'inspecteur Proprits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Fonctionnement des fichiers d'inspecteur Proprits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

EXTENSION DE DREAMWEAVER CS4 v


Sommaire

Exemple simple d'inspecteur Proprits

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

Fonctions de l'API de l'inspecteur Proprits

Chapitre 15 : Panneaux flottants Fonctionnement des fichiers de panneau flottant Exemple de panneau flottant simple Fonctions de l'API du panneau flottant Chapitre 16 : Comportements Fonctionnement des comportements Exemple de comportement simple Fonction de l'API des comportements

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

Chapitre 17 : Comportements de serveur Terminologie des comportements de serveur Architecture de Dreamweaver Exemple de comportement de serveur simple API de comportement de serveur Fichiers EDML

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

Scnarios dans lesquels les fonctions de l'API de comportement de serveur sont appeles Fonctions d'implmentation des comportements de serveur Balises de fichiers EDML Groupe Fichiers EDML Participant

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Techniques de comportements de serveur Chapitre 18 : Sources de donnes Fonctionnement des sources de donnes Exemple simple de source de donnes Fonctions de l'API des sources de donnes Chapitre 19 : Formats de serveur Fonctionnement du formatage de donnes Fonctions de l'API des formats de serveur

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

Scnarios dans lesquels les fonctions de formatage des donnes sont appeles

Chapitre 20 : Composants A propos des notions de base des composants Extension du panneau Composants Personnalisation du panneau Composants Fonctions de l'API du panneau Composants Chapitre 21 : Modles de serveur Personnalisation des modles de serveur Fonctions de l'API des modles de serveur

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

Personnalisation des fichiers du panneau Composants

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Chapitre 22 : Traducteurs de donnes Fonctionnement des traducteurs de donnes Dtermination du type de traducteur utiliser

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

EXTENSION DE DREAMWEAVER CS4 vi


Sommaire

Ajout d'un attribut traduit une balise Inspection des attributs traduits

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

Verrouillage des balises ou des blocs de code traduits Recherche de bogues dans le traducteur Exemple de traducteur d'attributs simple

Cration d'inspecteurs Proprits pour du contenu verrouill

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

Exemple de traducteur de blocs/balises simple Fonctions de l'API du traducteur de donnes Chapitre 23 : Extensions C Intgration des fonctions C Types de donnes API d'extension C

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

Extensions C et interprteur JavaScript

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

API de configuration multi-utilisateur et d'accs aux fichiers Appel d'une fonction C partir de JavaScript

Chapitre 24 : Dossier Shared Contenu du dossier Shared . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Utilisation du dossier Shared Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

Chapitre 1 : Introduction
Ce guide dcrit l'API (interface de programmation d'application) et la plate-forme Adobe Dreamweaver CS4 qui vous permettent des crer des extensions de Dreamweaver. Le guide Extension de Dreamweaver CS4 fournit des informations sur les thmes suivants :

la faon dont chaque type d'extension fonctionne ; les fonctions d'API que Dreamweaver appelle pour mettre en oeuvre les diffrents objets ; les menus, panneaux flottants, comportements de serveur, etc. qui constituent les fonctionnalits de Dreamweaver ; un exemple simple de chaque type d'extension ; la faon de personnaliser Dreamweaver en modifiant des balises dans divers fichiers HTML et XML, afin d'ajouter
des commandes ou des types de documents. Pour plus d'informations sur l'utilit et les possibilits offertes par les API JavaScript, utilisables pour effectuer diverses oprations dans vos extensions Dreamweaver, consultez le Guide des API de Dreamweaver. Si vous envisagez de crer des extensions fonctionnant avec des bases de donnes, consultez les sections du manuel Utilisation de Dreamweaver consacres aux connexions de bases de donnes.

A propos des extensions


La plupart des extensions Dreamweaver sont rdiges en langage HTML et en langage JavaScript. Les instructions prsentes ici supposent que vous possdez une bonne matrise des lments suivants : Dreamweaver et programmation JavaScript, HTML et XML. Par ailleurs, si vous implmentez des extensions C, vous devez savoir comment crer et utiliser des bibliothques de liens dynamiques (DLL) C. Pour rdiger vos propres extensions afin de crer des applications Web, vous devez connatre les langages de script ct serveur et au moins l'une des plates-formes suivantes : Active Server Pages (ASP), ASP.NET, PHP: Hypertext Preprocessor (PHP), Adobe ColdFusion, ou JavaServer Pages (JSP).

Installation d'une extension


Pour vous familiariser avec la procdure de rdaction d'extensions, vous pouvez consulter les extensions, ainsi que les ressources disponibles sur le site Web d'Adobe Exchange ( http://www.adobe.com/go/exchange_fr). L'installation d'une extension existante vous permet de dcouvrir quelques-uns des outils qui vous seront utiles pour travailler avec vos propres extensions.
1 Tlchargez et installez Adobe Extension Manager, qui est disponible sur le site de tlchargement d'Adobe, sur

http://www.adobe.com/go/downloads_fr.
2 Connectez-vous au site Web Adobe Exchange sur http://www.adobe.com/go/exchange_fr. 3 Slectionnez l'extension que vous souhaitez rcuprer parmi celles disponibles. Cliquez sur le lien de

tlchargement pour tlcharger le progiciel d'extension.


4 Enregistrez le progiciel d'extension dans le dossier Downloaded Extensions de votre dossier Dreamweaver. 5 Dans Extension Manager, choisissez Fichier > Installer une extension. Depuis Dreamweaver, choisissez

Commandes > Grer les extensions pour lancer Extension Manager.

EXTENSION DE DREAMWEAVER CS4 2


Introduction

Extension Manager installe automatiquement l'extension dans Dreamweaver, depuis le dossier Downloaded Extensions. Il est ncessaire de redmarrer Dreamweaver avant de pouvoir utiliser certaines extensions. Si Dreamweaver est en cours d'excution pendant l'installation de l'extension, il vous sera peut-tre demand de fermer et de redmarrer l'application avant de poursuivre l'installation. Pour afficher des informations de base sur l'extension la suite de son installation, depuis Dreamweaver, ouvrez Extension Manager (Commandes > Grer les extensions).

Cration d'une extension


Avant de crer une extension Dreamweaver, consultez le site Web Adobe Exchange (http://www.adobe.com/go/exchange_fr) pour dterminer si l'extension crer existe dj. Si aucune extension existante ne rpond vos besoins, procdez comme suit pour en crer une :

Dterminez le type d'extension crer. Pour plus d'informations sur les types d'extensions, voir Types
d'extensions Dreamweaver la page 80.

Recherchez dans la documentation le type d'extension que vous souhaitez crer. Pour vous familiariser avec la
procdure de cration du type d'extension requis, il est recommand de crer l'exemple simple d'extension en vous reportant la rubrique correspondante.

Dterminez les fichiers modifier ou crer. Le cas chant, effectuez des prparatifs concernant l'interface utilisateur requise pour l'extension. Crez les fichiers requis et enregistrez-les dans les dossiers appropris. Redmarrez Dreamweaver pour qu'il reconnaisse la nouvelle extension. Testez l'extension. Empaquetez l'extension pour pouvoir la partager avec d'autres utilisateurs. Pour plus d'informations, voir
Utilisation d'Extension Manager la page 87.

Ressources supplmentaires pour les crateurs d'extensions


Pour entrer en contact avec d'autres dveloppeurs d'extensions, rejoignez le forum de discussion consacr l'extensibilit de Dreamweaver. Vous trouverez ce forum sur le site Web d'Adobe, l'adresse http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=12&catid=190&entercat=y.

Nouvelles fonctionnalits de Dreamweaver CS4


Dreamweaver CS4 comprend les nouvelles fonctionnalits et interfaces extensibles suivantes.

Affichage et modification de pages Web l'aide de la fonctionnalit Fichiers apparents Affichage des pages Web telles qu'elles seront rendues dans un navigateur Web l'aide de la fonctionnalit
Affichage en direct

EXTENSION DE DREAMWEAVER CS4 3


Introduction

Affichage des modes Code et Cration des pages HTML cte cte l'aide du mode d'affichage Fractionnement
vertical

Affichage des messages d'erreur sans interruption du flux d'activits Mise jour des images source sans ouvrir Adobe Photoshop, l'aide des objets dynamiques Photoshop
chacune de ces fonctionnalits possde de nouvelles fonctions apparentes qui ont t ajoutes l'API d'utilitaire et l'API JavaScript. Pour plus d'informations sur les nouvelles fonctions, voir le Guide des API de Dreamweaver. Centre de documentation Approfondissez votre connaissance de Dreamweaver grce aux ouvrages publis par Adobe. Consultez le contenu le plus rcent et rdig par des experts sur http://www.adobe.com/support/documentation/buy_books.html. Fonctions supprimes Diverses fonctions ont t supprimes de Dreamweaver. Pour plus d'informations sur les fonctions limines de l'API d'utilitaire et de l'API JavaScript, voir le Guide des API de Dreamweaver.

Conventions utilises dans ce manuel


Ce manuel utilise les conventions typographiques suivantes :

La police de code indique des fragments de code et des constantes d'API, notamment des noms de classe, des noms
de mthodes, des noms de fonctions, des noms de type, des scripts, des instructions SQL et des noms de balises et d'attributs HTML et XML.

La police de code en italique identifie les lments remplaables dans le code.

Le symbole de continuation () indique qu'une longue ligne de code a t fractionne sur deux lignes ou plus. En
raison des limites de marge du format de ce manuel, une ligne de code continue doit ici tre coupe. Lorsque vous copiez les lignes de code, supprimez le symbole de continuation et entrez-les comme une seule ligne.

Les accolades ({ }) places avant et aprs un argument de fonction indiquent que cet argument est facultatif. Les noms de fonction portant le prfixe dreamweaver. (comme dans dreamweaver.nomfonc) peuvent tre
abrgs en dw.nomfonc lorsque vous crivez le code. Ce manuel utilise le prfixe dreamweaver. complet dans les dfinitions de fonctions et dans l'index. De nombreux exemples utilisent nanmoins le prfixe court (dw.). Ce manuel utilise les conventions de dnomination suivantes :

Vous le dveloppeur responsable de la rdaction des extensions L'utilisateur la personne utilisant Dreamweaver Le visiteur la personne qui visualise la page Web cre par l'utilisateur

Chapitre 2 : Personnalisation de Dreamweaver


Outre crer et utiliser des extensions Adobe Dreamweaver , vous pouvez personnaliser Dreamweaver de diffrentes manires afin de l'adapter au mieux vos besoins.

Techniques de personnalisation de Dreamweaver


Vous pouvez personnaliser Dreamweaver en employant plusieurs mthodes gnrales. Certaines sont prsentes dans Utilisation de Dreamweaver. Vous pouvez dfinir des prfrences dans divers domaines, comme l'accessibilit, la coloration de code, les polices, la mise en surbrillance et l'aperu dans les navigateurs, par l'intermdiaire du panneau Prfrences (Edition > Prfrences ou Dreamweaver > Prfrences (MacOs X)). Vous pouvez galement modifier les raccourcis clavier l'aide de l'diteur de raccourcis clavier (Edition > Raccourcis clavier) ou en modifiant un fichier de configuration.

Personnalisation des documents par dfaut


Le dossier DocumentTypes/NewDocuments contient, par dfaut, un document (vierge) de chaque type de document que vous pouvez crer l'aide de Dreamweaver. Lorsque vous crez un nouveau document vierge en slectionnant Fichier > Nouveau et en slectionnant un lment dans les listes Page de base, Page dynamique ou Autres catgories, Dreamweaver base le nouveau document sur le document par dfaut correspondant dans ce dossier. Pour modifier les lments par dfaut d'un type de document donn, modifiez le document correspondant dans ce dossier. Remarque : Si vous souhaitez que toutes les pages de votre site contiennent certains lments communs (par exemple une mention sur le copyright) ou une prsentation constante, il est prfrable d'utiliser des modles et des lments de bibliothque plutt que de changer les documents par dfaut. Pour plus d'informations sur les modles et les lments de bibliothque, voir Utilisation de Dreamweaver.

Personnalisation des conceptions de pages


Dreamweaver propose divers lments prdfinis: feuilles de style CSS, jeux de cadres et conceptions de pages. Vous pouvez crer des pages bases sur ces conceptions en cliquant sur Fichier > Nouveau. Pour personnaliser les conceptions disponibles, modifiez les fichiers prsents dans les dossiers BuiltIn/css, BuiltIn/framesets, BuiltIn/Templates et BuiltIn/TemplatesAccessible Remarque : Les conceptions rpertories dans les catgories Conception de page et Conception de page (Accessibilit) sont les fichiers modles de Dreamweaver. Pour plus d'informations sur les modles, voir Utilisation de Dreamweaver. Vous pouvez galement crer des conceptions de pages en ajoutant des fichiers dans les sous-dossiers du dossier BuiltIn. Pour qu'une description du fichier s'affiche dans la bote de dialogue Nouveau document, crez un fichier Design Notes (dans le dossier _notes appropri) correspondant au fichier de conception de page.

EXTENSION DE DREAMWEAVER CS4 5


Personnalisation de Dreamweaver

Personnalisation de l'aspect des botes de dialogue


La mise en forme des botes de dialogue pour les objets, les commandes et les comportements sont dfinis comme des formulaires HTML. Ils rsident dans des fichiers HTML du dossier Configuration au sein du dossier d'application Dreamweaver. Ces formulaires peuvent tre modifis comme tout autre formulaire Dreamweaver. Pour plus d'informations, voir Utilisation de Dreamweaver. Remarque : Dans le cadre d'un systme d'exploitation multi-utilisateur, vous devez modifier les copies des fichiers de configuration contenues dans votre dossier de configuration utilisateur plutt que les fichiers Configuration de Dreamweaver. Pour plus d'informations, voir Dossiers de configuration multi-utilisateur la page 83. Modification de l'aspect d'une bote de dialogue 1 Dans Dreamweaver, choisissez Edition > Prfrences, puis la catgorie Correction du code.
2 Dslectionnez l'option Renommer les lments de formulaire lors du collage.

Cette opration vous assure que les lments de formulaire conserveront leur nom original une fois ceux-ci copis et colls.
3 Cliquez sur OK pour fermer la bote de dialogue Prfrences. 4 Sur votre disque dur, localisez le fichier HTM appropri dans le dossier Configuration/Objects,

Configuration/Commands ou Configuration/Behaviors.
5 Faites une copie du fichier dans un dossier autre que le dossier Configuration. 6 Ouvrez cette copie dans Dreamweaver, modifiez le formulaire et enregistrez le document. 7 Quittez Dreamweaver. 8 Copiez le fichier modifi la place de l'original dans le dossier Configuration. Il est toutefois conseill de conserver

une sauvegarde du fichier original pour pouvoir l'utiliser nouveau en cas de besoin.
9 Redmarrez Dreamweaver pour constater les changements.

Il est recommand de ne modifier que l'aspect de la bote de dialogue et non son fonctionnement. Le type des lments de formulaire doit tre identique, tout comme les noms, afin que l'information obtenue par Dreamweaver partir de la bote de dialogue puisse tre utilise de la mme manire. Par exemple, l'objet Commentaire prend le texte entr dans une zone de texte de bote de dialogue et utilise une fonction JavaScript simple pour transformer ce texte en commentaire HTML et l'insrer dans votre document. Le formulaire qui dcrit la bote de dialogue se trouve dans le fichier Comment.htm dans le dossier Configuration/Objects/Invisibles. Vous pouvez ouvrir ce fichier et modifier la taille ou d'autres attributs dans la zone de texte, mais si vous supprimez intgralement la balise textarea ou si vous modifiez la valeur de son attribut name, l'objet Commentaire ne fonctionne plus correctement.

Modification du type de fichier par dfaut


Par dfaut, Dreamweaver affiche tous les types de fichiers reconnus dans la bote de dialogue Fichier > Ouvrir. Vous pouvez utiliser un menu contextuel dans cette bote de dialogue pour limiter l'affichage de certains types de fichiers. Si la plupart de vos travaux impliquent un type de fichier spcifique (par exemple, les fichiers ASP), vous pouvez modifier l'affichage par dfaut. Le type de fichier indiqu sur la premire ligne du fichier Extensions.txt de Dreamweaver devient le type par dfaut. Remarque : Pour afficher tous les types de fichiers dans la bote de dialogue Fichier > Ouvrir (y compris les fichiers que Dreamweaver ne peut pas ouvrir), choisissez Tous les fichiers (*.*). Ne confondez pas cette option avec Tous les documents, qui rpertorie uniquement les fichiers que Dreamweaver peut ouvrir.

EXTENSION DE DREAMWEAVER CS4 6


Personnalisation de Dreamweaver

Modification du type de fichier par dfaut de Dreamweaver dans Fichier > Ouvrir 1 Crez une copie de sauvegarde du fichier Extensions.txt dans le dossier Configuration.
2 Ouvrez le fichier Extensions.txt dans un diteur de texte. 3 Coupez la ligne correspondant la nouvelle valeur par dfaut. Collez-la ensuite au dbut du fichier, de faon ce

qu'elle devienne sa premire ligne.


4 Enregistrez le fichier. 5 Redmarrez Dreamweaver.

Pour afficher le nouveau type par dfaut, choisissez Fichier > Ouvrir, puis examinez le menu contextuel de types de fichiers. Ajout de nouveaux types de fichier dans le menu de la bote de dialogue Fichier > Ouvrir 1 Crez une copie de sauvegarde du fichier Extensions.txt dans le dossier Configuration.
2 Ouvrez le fichier Extensions.txt dans un diteur de texte. 3 Ajoutez une nouvelle ligne pour chaque nouveau type de fichier. Tapez en majuscules les extensions de fichier

gres par le nouveau type de fichier, en les sparant par une virgule. Ajoutez le signe deux points et une brve description, qui apparatra dans le menu contextuel de types de fichiers associ la bote de dialogue qui s'affiche lorsque vous slectionnez Fichier > Ouvrir. Par exemple, pour les fichiers JPEG, entrez JPG,JPEG,JFIF:Fichiers image JPEG
4 Enregistrez le fichier. 5 Redmarrez Dreamweaver.

Pour observer les modifications, choisissez Fichier > Ouvrir, puis cliquez sur le menu contextuel de types de fichiers.

Personnalisation de l'interprtation de balises propritaires


Les technologies ct serveur telles que ASP, Adobe ColdFusion, JSP et PHP utilisent du code spcial non-HTML au sein des fichiers HTML. Les serveurs crent et servent du contenu HTML bas sur ce code. Lorsque Dreamweaver rencontre des balises non-HTML, il les compare aux informations contenues dans les fichiers de balises propritaires, lesquels dfinissent comment lire et afficher ces balises non-HTML. Par exemple, les fichiers ASP contiennent (outre le code HTML habituel) du code ASP que le serveur doit interprter. Le code ASP ressemble une balise HTML mais est marqu par une paire de dlimiteurs : il commence par <% et se termine par %>. Le dossier Configuration/ThirdPartyTags de Dreamweaver contient un fichier nomm Tags.xml. Ce fichier dcrit le format des diverses balises propritaires, dont le code ASP, et dcrit comment Dreamweaver doit afficher ce code. La faon dont le code ASP est spcifi dans le fichier Tags.xml conduit Dreamweaver ne pas tenter d'interprter le code situ entre les dlimiteurs. A la place, en mode Cration, seule une icne indiquant la prsence de code ASP s'affiche. Vos propres fichiers de donnes de balises peuvent dfinir l'affichage et la lecture de vos balises par Dreamweaver. Crez un nouveau fichier de donnes de balises pour chaque jeu de balises afin d'indiquer Dreamweaver comment les afficher. Remarque : Cette section vous explique comment dfinir l'affichage d'une balise personnalise par Dreamweaver, mais ne dcrit pas comment modifier le contenu ou les proprits d'une balise personnalise. Pour plus d'informations sur la cration d'un inspecteur Proprits permettant de vrifier et modifier les proprits d'une balise personnalise, voir Inspecteurs Proprits la page 226.

EXTENSION DE DREAMWEAVER CS4 7


Personnalisation de Dreamweaver

Chaque fichier de donnes de balises dfinit le nom, le type, le modle de contenu, le modle de rendu et l'icne pour une ou plusieurs balises. Vous pouvez crer un nombre illimit de fichiers de donnes de balises, mais tous doivent se trouver dans le dossier Configuration/ThirdPartyTags afin d'tre consults et traits par Dreamweaver. Les fichiers de donnes de balises portent l'extension .xml. Si vous travaillez sur plusieurs sites distincts la fois (par exemple, en tant que dveloppeur indpendant), vous pouvez regrouper toutes les spcifications de balises relatives un site dans un fichier. Il suffit ensuite de remettre ce fichier de donnes de balises avec les icnes personnalises et les inspecteurs Proprits aux responsables qui greront le site. Vous pouvez dfinir une spcification de balise l'aide d'une balise XML nomme tagspec. Par exemple, le code suivant dcrit les spcifications d'une balise nomme happy :
<tagspec tag_name="happy" tag_type="nonempty" render_contents="false" content_model= "marker_model" icon="happy.gif" icon_width="18" icon_height="18"></tagspec>

Vous pouvez dfinir deux types de balises l'aide de tagspec :

Balises de type HTML standard


happy est un exemple de balise de type HTML standard. Elle dbute par une balise d'ouverture <happy>, des

donnes sont places entre les balises d'ouverture et de fermeture, et elle se termine par une balise </happy> de fermeture.

Balises dlimites par des chanes


Les balises dlimites par des chanes dbutent par une chane et se terminent par une autre chane. Elles se comportent comme des balises HTML vides (telle img), car elles n'entourent pas les donnes de balises et ne comportent pas de balises de fermeture. Si la balise happy tait dlimite par des chanes, les spcifications de balises incluraient les attributs start_string et end_string. Une balise ASP est une balise dlimite par des chanes. Elle commence par la chane <% et se termine par la chane %>, sans balise de fermeture. Les informations suivantes dcrivent les attributs et les valeurs valides de la balise tagspec. Les attributs marqus d'un astrisque (*) sont ignors dans le cadre des balises dlimites par des chanes. Les attributs facultatifs sont dfinis par des accolades ({}) dans la liste des attributs ; les attributs ne comportant pas d'accolades sont donc obligatoires.

<tagspec>
Description Fournit des informations propos d'une balise propritaire. Attributs
tag_name, {tag_type}, {render_contents}, {content_model}, {start_string}, {end_string}, {detect_in_attribute}, {parse_attributes}, icon, icon_width, icon_height, {equivalent_tag}, {is_visual}, {server_model}

tag_name est le nom de la balise personnalise. Pour les balises dlimites par des chanes, tag_name n'est utilis

que pour dterminer si un inspecteur Proprits donn peut tre utilis pour la balise. Si la premire ligne de l'inspecteur Proprits contient ce nom de balise encadr par des astrisques, l'inspecteur peut tre utilis pour les balises de ce type. Par exemple, le nom de balise associ au code ASP correspond ASP. Les inspecteurs Proprits pouvant examiner le code ASP doivent comporter la mention *ASP* sur la premire ligne. Pour plus d'informations sur l'inspecteur Proprits API, voir Inspecteurs Proprits la page 226.

EXTENSION DE DREAMWEAVER CS4 8


Personnalisation de Dreamweaver

tag_type dtermine si la balise est vide (telle que img) ou si un contenu est prsent entre les balises d'ouverture et de fermeture (telles que code). Cet attribut est requis pour les balises normales (non dlimites par des chanes). Il est ignor pour les balises dlimites par des chanes, car celles-ci sont toujours vides. Les valeurs valides sont "empty" et "nonempty". render_contents dtermine si le contenu de la balise doit s'afficher en mode Cration ou s'il est remplac par

l'icne spcifie. Cet attribut est requis pour les balises nonempty et n'est pas pris en compte pour les balises empty (les balises empty sont vides de contenu). Cet attribut ne s'applique qu'aux balises affiches hors des attributs. Le contenu des balises imbriques l'intrieur des valeurs d'attributs d'autres balises n'est pas affich. Les valeurs valides sont "true" et "false".

content_model dcrit les diffrents types de contenu que la balise peut contenir et l'emplacement o la balise peut

s'afficher dans un fichier HTML. Les valeurs valides sont "block_model", "head_model", "marker_model" et "script_model".

block_model spcifie que la balise peut contenir des lments de niveau de bloc comme div et p et que la balise

peut apparatre uniquement dans la section body ou dans d'autres balises au contenu body, telles que div, layer et td.

head_model spcifie que le contenu de la balise peut tre compos de texte et que la balise peut uniquement

apparatre dans la section head.


marker_model spcifie que la balise peut contenir tout code HTML valide et peut se trouver tout endroit du fichier HTML. Le validateur HTML de Dreamweaver ignore les balises spcifies comme marker_model. Nanmoins, le validateur n'ignore pas le contenu de ces balises. En consquence, mme si la balise peut apparatre n'importe quel emplacement, le contenu de la balise peut corrompre le document HTML certains endroits. Par exemple, du texte simple ne peut apparatre dans la section head d'un document ( l'exception des lments head valides). Il est donc impossible de placer une balise marker_model qui contient du texte simple dans la section head. Pour placer une balise personnalise dans la section head, dfinissez le modle de contenu de la balise comme head_model au lieu de marker_model. Utilisez marker_model pour les balises qui doivent s'afficher en ligne (dans un lment de niveau de bloc, comme p ou div, par exemple, dans un paragraphe). N'utilisez pas ce modle si la balise doit tre affiche seule dans un paragraphe, encadre par des sauts de ligne.

script_model permet un emplacement libre de la balise entre les balises d'ouverture et de fermeture d'un
document. Lorsque Dreamweaver rencontre une balise de ce modle, il ignore totalement le contenu de la balise. Utilisez cette balise pour le marquage (comme certaines balises ColdFusion) que Dreamweaver ne doit pas analyser.

start_string spcifie un dlimiteur qui marque le dbut d'une balise dlimite par des chanes. Les balises dlimites par des chanes peuvent tre prsentes en tout point du document pouvant contenir un commentaire. Dreamweaver n'analyse pas les balises et ne dcode pas les entits ou URL comprises entre start_string et end_string. Cet attribut est requis si end_string est spcifi. end_string spcifie un dlimiteur qui marque la fin d'une balise dlimite par une chane. Cet attribut est requis

si start_string est spcifi.


detect_in_attribute indique si les lments contenus entre start_string et end_string (ou entre les balises d'ouverture et de fermeture si ces chanes ne sont pas dfinies) doivent tre ignors mme si ces chanes apparaissent dans les valeurs ou noms d'attributs. Vous devez gnralement rgler la valeur sur "true" pour les balises dlimites par des chanes. La valeur par dfaut est "false". Ainsi, les balises ASP sont parfois imbriques dans des valeurs d'attributs et contiennent parfois des guillemets ("). Parce que la balise ASP spcifie detect_in_attribute="true", Dreamweaver ne tient pas compte des balises ASP, y compris des guillemets internes, lorsqu'elles sont imbriques dans des valeurs d'attributs.

EXTENSION DE DREAMWEAVER CS4 9


Personnalisation de Dreamweaver

parse_attributes indique si les attributs de la balise doivent tre analyss. Si la valeur dfinie est "true" (par dfaut), Dreamweaver analyse les attributs. Si elle est dfinie sur "false", Dreamweaver ignore tous les lments jusqu'au crochet situ hors des guillemets. Par exemple, cet attribut doit tre rgl sur "false" pour les balises telles que cfif (par exemple, <cfif a is 1>, que Dreamweaver ne peut pas analyser comme ensemble de paires nom d'attribut/valeur). icon spcifie le chemin et le nom de fichier de l'icne associe la balise. Cet attribut est requis pour les balises empty ainsi que pour les balises nonempty dont le contenu ne s'affiche pas dans la fentre de document en mode Cration. icon_width spcifie la largeur de l'icne en pixels. icon_height spcifie la hauteur de l'icne en pixels. equivalent_tag spcifie des quivalents HTML simples pour certaines balises lies des formulaires ColdFusion. Ceci ne doit pas tre utilis avec d'autres balises. is_visual indique si la balise a un impact visuel sur la page. Par exemple, la balise ColdFusion cfgraph ne spcifie

aucune valeur pour is_visual ; la valeur par dfaut "true" est donc applique. La valeur is_visual de la balise ColdFusion cfset est dfinie sur false. La visibilit des balises de marquage de serveur est contrle par la catgorie Elments invisibles dans la bote de dialogue Prfrences. La visibilit des balises de marquage de serveur visuel peut tre dfinie indpendamment de celle des balises de marquage de serveur non visuel.

server_model, si spcifi, indique que la balise tagspec s'applique uniquement aux pages appartenant au modle de serveur spcifi. Si server_model n'est pas spcifi, la balise tagspec s'applique toutes les pages. Par exemple, les dlimiteurs des balises ASP et JSP sont identiques, mais la balise tagspec pour JSP spcifie un paramtre server_model dfini sur "JSP". Par consquent, lorsque Dreamweaver rencontre ce code avec les dlimiteurs adquats sur une page JSP, il affiche une icne JSP. Lorsque ce code est rencontr sur une page autre qu'une page JSP, une icne ASP s'affiche.

Contenu Aucun (balise vide). Contenant Aucun. Exemple


<tagspec tag_name="happy" tag_type="nonempty" render_contents="false" content_model= "marker_model" icon="happy.gif" icon_width="18" icon_height="18"></tagspec>

Affichage des balises personnalises dans le mode Cration


L'affichage des balises personnalises dans la fentre de document en mode Cration dpend des valeurs entres pour les attributs tag_type et render_contents de la balise tagspec. Si la valeur de tag_type est "empty", l'icne spcifie dans l'attribut icon s'affiche. Si la valeur de tag_type est "nonempty" mais que la valeur de render_contents est "false", l'icne s'affiche de la mme faon que pour une balise vide. L'exemple suivant indique comment une instance de la balise happy dfinie antrieurement peut apparatre dans le code HTML :
<p>This is a paragraph that includes an instance of the <code>happy</code> tag (<happy>Joe</happy>).</p>

Dans la mesure o render_contents est rgl sur "false" dans la spcification de balise, le contenu de la balise happy (le mot Joe) ne s'affiche pas. Les balises de dbut et de fin et leur contenu sont alors remplacs par une icne unique.

EXTENSION DE DREAMWEAVER CS4 10


Personnalisation de Dreamweaver

Pour les balises nonempty dont la valeur render_contents est rgle sur "true", l'icne ne s'affiche pas en mode Cration. C'est le contenu insr entre les balises d'ouverture et de fermeture qui s'affiche (par exemple, le texte contenu entre les balises dans <mytag>Ceci est le contenu insr entre les balises d'ouverture et de fermeture</mytag>). Si l'option Affichage > Elments invisibles est active, le contenu est mis en surbrillance l'aide de balises propritaires, comme spcifi dans les prfrences de surbrillance (la mise en surbrillance ne s'applique qu'aux balises dfinies dans les fichiers de donnes de balises). Modification de la couleur de surbrillance des balises propritaires 1 Choisissez Edition > Prfrences, puis la catgorie Surbrillance.
2 Cliquez sur la zone de slection de couleurs de balises propritaires pour afficher le slecteur de couleur. 3 Slectionnez une couleur, puis cliquez sur OK pour fermer la bote de dialogue Prfrences. Pour plus

d'informations sur la slection d'une couleur, voir Utilisation de Dreamweaver.

Prvention de la correction de balises propritaires


Dreamweaver corrige certains types d'erreurs dans le code HTML. Pour plus d'informations, voir Utilisation de Dreamweaver. Par dfaut, Dreamweaver vite toute modification du code HTML dans les fichiers portant certaines extensions, comme .asp (ASP), .cfm (ColdFusion), .jsp (JSP) et .php (PHP). Ce paramtre est dfini pour viter toute modification accidentelle du code contenu dans de telles balises non-HTML. Vous pouvez modifier le comportement de correction de Dreamweaver par dfaut afin que le code HTML soit modifi lors de l'ouverture de tels fichiers. Vous pouvez galement ajouter d'autres types de fichiers auxquels Dreamweaver n'apportera pas de modifications. Dreamweaver encode certains caractres spciaux en les remplaant par des valeurs numriques lorsque vous les entrez dans l'inspecteur Proprits. Il est normalement prfrable de laisser Dreamweaver effectuer cet encodage, car les caractres spciaux seront ainsi reconnus par un nombre plus important de plates-formes et de navigateurs. Nanmoins, cette opration d'encodage peut interfrer avec les balises propritaires. Vous pouvez donc modifier le comportement de Dreamweaver concernant l'encodage des balises lorsque vous travaillez avec des fichiers comportant des balises propritaires. Permettre Dreamweaver de corriger le code HTML dans plus de types de fichiers 1 Choisissez Edition > Prfrences, puis la catgorie Correction du code.
2 Slectionnez l'une des options suivantes :

Corriger les balises incorrectement imbriques et non fermes Supprimer les balises de fermeture superflues
3 Effectuez l'une des oprations suivantes :

Supprimez une ou plusieurs extensions de la liste d'extensions dans l'option Ne jamais corriger le code : Dans
les fichiers avec extensions.

Dsactivez l'option Ne jamais corriger le code : Dans les fichiers avec extensions. La dsactivation de cette option
permet Dreamweaver de rcrire le code HTML dans tous types de fichiers. Ajout de fichiers dans lesquels Dreamweaver ne doit pas apporter de corrections
1 Choisissez Edition > Prfrences, puis la catgorie Correction du code. 2 Slectionnez l'une des options suivantes :

Corriger les balises incorrectement imbriques et non fermes Supprimer les balises de fermeture superflues

EXTENSION DE DREAMWEAVER CS4 11


Personnalisation de Dreamweaver

3 Assurez-vous que l'option Ne jamais corriger le code: Dans les fichiers avec extensions est slectionne. Ajoutez les

nouvelles extensions de fichiers la liste dans la zone de texte. Si le nouveau type de fichier ne s'affiche pas dans le menu contextuel Types de fichiers dans la bote de dialogue Fichier > Ouvrir, vous pouvez l'ajouter dans le fichier Configuration/Extensions.txt. Pour plus d'informations, voir Modification du type de fichier par dfaut la page 5. Dsactivation des options d'encodage de Dreamweaver 1 Choisissez Edition > Prfrences, puis la catgorie Correction du code.
2 Dslectionnez les options de caractres spciaux de votre choix.

Pour plus d'informations sur les autres prfrences de correction de code, voir Utilisation de Dreamweaver.

Personnalisation de Dreamweaver dans un environnement multi-utilisateur


Vous pouvez personnaliser Dreamweaver sous un systme d'exploitation multi-utilisateur tel que Microsoft Windows XP, Windows Vista ou Mac OS X. Aucune configuration personnalise de Dreamweaver ne peut affecter celle d'un autre utilisateur. Lorsque vous excutez pour la premire fois Dreamweaver sous un systme d'exploitation multi-utilisateur, Dreamweaver copie les fichiers de configuration dans un dossier Configuration utilisateur. Lorsque vous personnalisez Dreamweaver l'aide des panneaux et botes de dialogue, l'application modifie vos fichiers de configuration utilisateur au lieu de modifier les fichiers de configuration de Dreamweaver. Pour personnaliser Dreamweaver dans un environnement multi-utilisateur, modifiez le fichier de configuration utilisateur appropri au lieu de modifier les fichiers de configuration de Dreamweaver. Pour apporter des modifications qui influeront la plupart des utilisateurs, modifiez un fichier Configuration de Dreamweaver. Toutefois, les utilisateurs auxquels correspondent dj des fichiers de configuration utilisateur ne seront pas concerns par ces modifications. Pour apporter des modifications qui influeront sur tous les utilisateurs, crez une extension et installez-la l'aide d'Extension Manager. Remarque : Dans les anciens systmes d'exploitation multi-utilisateur (Windows 98, Windows ME et Mac OS 9.x), tous les utilisateurs partagent le mme ensemble de fichiers de configuration de Dreamweaver. L'emplacement du dossier Configuration de l'utilisateur dpend de la plate-forme employe par l'utilisateur. Les plates-formes Windows XP utilisent l'emplacement suivant : disque dur:\Documents and Settings\nom_utilisateur\Application Data\Adobe\Dreamweaver CS4\Configuration Remarque : Il se peut que ce dossier se trouve dans un dossier cach. Les plates-formes Windows Vista utilisent l'emplacement suivant : disque dur: \Users\nom d'utilisateur\AppData\Roaming\Adobe\Dreamweaver CS4\Configuration Les plates-formes MacOS X utilisent l'emplacement suivant : disque dur: \Users/nom d'utilisateur/Library/Application Support/Adobe/Dreamweaver CS4/Configuration Remarque : Pour installer des extensions accessibles tous les utilisateurs dans un systme d'exploitation multiutilisateur, vous devez disposer des droits de niveau Administrateur (Windows) ou root (MacOS X).

EXTENSION DE DREAMWEAVER CS4 12


Personnalisation de Dreamweaver

Lorsque vous excutez Dreamweaver pour la premire fois, il ne copie que certains fichiers de configuration dans votre dossier Configuration utilisateur. (les fichiers copis sont spcifis dans le fichier version.xml dans le dossier Configuration). Lorsque vous personnalisez Dreamweaver depuis l'application, Dreamweaver copie les fichiers de configuration dans votre dossier Configuration utilisateur. Par exemple, Dreamweaver copie les fichiers lorsque vous modifiez l'un des fragments de code prdfinis dans le panneau Fragments de code. La version d'un fichier prsente dans le dossier Configuration utilisateur prime toujours sur celle du dossier Configuration de Dreamweaver. Pour personnaliser un fichier de configuration, il doit se trouver dans le dossier Configuration de l'utilisateur. Si Dreamweaver n'a pas dj copi le fichier, copiez le fichier dans le dossier Configuration de l'utilisateur puis modifiez-le.

Suppression de fichiers de configuration dans un environnement multiutilisateur


Lors de toute opration engendrant l'effacement d'un fichier de configuration dans Dreamweaver sous un systme d'exploitation multi-utilisateur (par exemple, la suppression d'un fragment de code prdfini dans le panneau Fragments de code), Dreamweaver cre un fichier nomm mm_deleted_files.xml dans votre dossier Configuration. Lorsqu'un fichier est rpertori dans le fichier mm_deleted_files.xml, Dreamweaver se comporte comme si le fichier n'existait plus. Dsactivation d'un fichier de configuration 1 Quittez Dreamweaver.
2 A l'aide d'un diteur de texte, modifiez le fichier mm_deleted_files.xml dans votre dossier de configuration

utilisateur, ajoutez une balise d'lment dans ce fichier en indiquant le chemin (relatif au dossier Configuration de Dreamweaver) du fichier de configuration dsactiver. Remarque : Ne modifiez pas le fichier mm_deleted_files.xml dans Dreamweaver.
3 Enregistrez et fermez mm_deleted_files.xml. 4 Lancez nouveau Dreamweaver.

Syntaxe de la balise mm_deleted_files.xml


Le fichier mm_deleted_files.xml contient une liste structure d'lments qui indiquent les fichiers de configuration que Dreamweaver doit ignorer. Ces lments sont spcifis par des balises XML, que vous pouvez modifier dans un diteur de texte. Dans les descriptions de syntaxe des balises mm_deleted_files.xml ci-aprs, les attributs facultatifs dans les listes d'attributs sont indiqus par des accolades({}). Les attributs qui ne sont pas signals ainsi sont considrs comme obligatoires.

<deleteditems>
Description Balise de conteneur renfermant une liste d'lments considrer comme supprims par Dreamweaver. Attributs Aucun. Contenu Cette balise doit contenir une ou plusieurs balises item.

EXTENSION DE DREAMWEAVER CS4 13


Personnalisation de Dreamweaver

Contenant Aucun. Exemple


<deleteditems> <!-- item tags here --> </deleteditems>

<item>
Description Dfinit un fichier de configuration ignorer par Dreamweaver. Attributs
name

L'attribut name spcifie le chemin du fichier de configuration par rapport au dossier Configuration. Sous Windows, utilisez une barre oblique inverse (\) pour sparer les lments constitutifs du chemin ; sur Macintosh, utilisez deux points (:). Contenu Aucun (balise vide). Contenant Cette balise doit se trouver dans une balise deleteditems. Exemple
<item name="snippets\headers\5columnwith4links.csn" />

Rinstallation et dsinstallation de Dreamweaver dans un environnement multi-utilisateur


Aprs avoir install Dreamweaver, si vous souhaitez rinstaller le programme ou le mettre jour, Dreamweaver sauvegarde automatiquement une copie des fichiers de configuration utilisateur existants. Vos paramtres personnels resteront donc accessibles. Lors de la dsinstallation de Dreamweaver dans un environnement multi-utilisateur (opration possible uniquement pour les utilisateurs disposant de privilges administratifs), Dreamweaver peut supprimer tous les dossiers de configuration utilisateur votre demande.

Modification des mappages FTP


Le fichier FTPExtensionMap.txt (Windows) et le fichier FTPExtensionMapMac.txt (Macintosh) mappent les extensions de nom de fichier en modes de transfert FTP (ASCII ou BINAIRE). Chaque ligne dans chacun des deux fichiers comprend une extension de nom de fichier (par exemple, GIF) ainsi que le mot ASCII ou le mot BINARY (binaire) pour indiquer quel mode utiliser lors du transfert d'un fichier comportant cette extension. Sur Macintosh, chaque ligne comprend galement un code crateur (tel que DmWr) et un type de fichier (tel que TEXT). Lorsque vous tlchargez un fichier portant l'extension donne, Dreamweaver lui assigne alors le crateur et le type de fichier dsigns.

EXTENSION DE DREAMWEAVER CS4 14


Personnalisation de Dreamweaver

Si un fichier que vous transfrez ne comporte pas d'extension de nom de fichier, Dreamweaver utilise le mode de transfert BINAIRE. Remarque : Dreamweaver ne peut pas transfrer de fichiers en mode Macbinary. Si vous devez transfrer des fichiers en mode Macbinary, vous devez utiliser un autre client FTP. Les exemples suivants illustrent une ligne (du fichier Macintosh) indiquant que les fichiers portant l'extension .html doivent tre transfrs en mode ASCII :
HTML DmWr TEXT ASCII

Dans le fichier FTPExtensionMap.txt et le fichier FTPExtensionMapMac.txt (Macintosh), tous les lments placs sur une mme ligne sont spars par des tabulations. L'extension et le mode de transfert sont crits en majuscules. Pour modifier un paramtre par dfaut, modifiez le fichier dans un diteur de texte. Ajout d'informations relatives une nouvelle extension de nom de fichier 1 Modifiez le fichier extension-map dans un diteur de texte.
2 Sur une ligne vierge, entrez l'extension de nom de fichier (en majuscules), puis appuyez sur la touche de tabulation. 3 Sur Macintosh, ajoutez le code crateur, un caractre de tabulation, puis le type de fichier suivi d'un autre caractre

de tabulation.
4 Choisissez entre ASCII ou BINARY pour spcifier un mode de transfert FTP. 5 Enregistrez le fichier.

Types de documents extensibles dans Dreamweaver


XML est dot d'un systme performant pour dfinir des documents et des structures de donnes complexes. Dreamweaver organise selon plusieurs schmas XML les informations sur les comportements de serveur, les balises et les botes de dialogue de balises, les composants, les types de documents et des rfrences. Lorsque vous crez et utilisez des extensions dans Dreamweaver, vous pouvez souvent crer ou modifier les fichiers XML existants afin de grer les donnes utilises par ces extensions. Dans la plupart des cas, vous pouvez copier un fichier existant du sous-dossier appropri du dossier Configuration vers le dossier utiliser comme modle.

Fichiers de dfinition de type de document


Le concept de type de document s'articule autour d'un composant central, savoir le fichier de dfinition de type de document. Vous pouvez tre en prsence de plusieurs fichiers de dfinition ; le cas chant, ils rsident tous dans le dossier Configuration/DocumentTypes. Chaque fichier de dfinition contient des informations concernant au moins un type de document. Des informations essentielles, telles que le modle de serveur, le style de codage par couleurs, les descriptions, etc., sont dcrits pour chacun de ces types de documents. Remarque : Attention : il ne faut pas confondre fichiers de dfinition de type de document de Dreamweaver et dfinition de type de document XML (DTD). Les fichiers de dfinition de type de document de Dreamweaver contiennent un ensemble d'lments documenttype, chacun d'entre eux dfinissant une collection prdfinie de balises et d'attributs associs un type de document. Au lancement, Dreamweaver analyse les fichiers de dfinition de type de document et place en mmoire une base de donnes d'informations concernant tous les types de documents dfinis. Dreamweaver fournit un fichier de dfinition de type de document initial. Ce fichier, nomm MMDocumentTypes.xml, contient les dfinitions de type de document fournies par Adobe :

EXTENSION DE DREAMWEAVER CS4 15


Personnalisation de Dreamweaver

Type de document

Modle de serveur ASP.NET-Csharp ASP.NET-VB ASP-JS ASP-VB ColdFusion

Type interne

Extensions de fichier aspx, ascx aspx, ascx asp asp cfm, cfml cfc jsp php, php3 lbi axcs.dwt axvb.dwt aspjs.dwt aspvb.dwt cfm.dwt dwt jsp.dwt php.dwt htm, html as cs CSS java js vb vbs txt edml tld vtm, vtml wml xml

Modle de serveur antrieur

ASP.NET C# ASP.NET VB ASP JavaScript ASP VBScript ColdFusion Composant ColdFusion JSP PHP Elment de bibliothque Modle ASP.NET C# Modle ASP.NET VB Modle ASP JavaScript Modle ASP VBScript Modle ColdFusion Modle HTML Modle JSP Modle PHP HTML ActionScript CSharp CSS Java JavaScript VB VBScript Texte EDML TLD VTML WML XML

Dynamique Dynamique Dynamique Dynamique Dynamique Dynamique

UltraDev 4 ColdFusion

JSP PHP

Dynamique Dynamique Extension DW Modle DW Modle DW Modle DW Modle DW Modle DW Modle DW Modle DW Modle DW HTML Texte Texte Texte Texte Texte Texte Texte Texte XML XML XML XML XML

Si vous avez besoin de crer un nouveau type de document, vous pouvez soit ajouter votre entre dans le fichier de dfinition de document fourni par Adobe (MMDocumentTypes.xml), soit ajouter votre propre fichier de dfinition dans le dossier Configuration/DocumentTypes.

EXTENSION DE DREAMWEAVER CS4 16


Personnalisation de Dreamweaver

Remarque : Le sous-dossier NewDocuments rsidant dans le dossier Configuration/DocumentTypes contient des pages par dfaut (modles) propres chaque type de document.

Structure des fichiers de dfinition de type de document


L'exemple suivant reprsente un fichier classique de dfinition de type de document :
<?xml version="1.0" encoding="utf-8"?> <documenttypes xmlns:MMString="http://www.adobe.com/schemes/data/string/"> <documenttype id="dt-ASP-JS" servermodel="ASP-JS" internaltype="Dynamic" winfileextension="asp,htm, html" macfileextension=asp, html" previewfile="default_aspjs_preview.htm" file="default_aspjs.htm" priorversionservermodel="UD4-ASP-JS" > <title> <loadString id="mmdocumenttypes_0title" /> </title> <description> <loadString id="mmdocumenttypes_0descr" /> </description> </documenttype> ... </documenttypes>

Remarque : Le codage par couleurs des types de documents est dfini dans les fichiers XML qui rsident dans le dossier Configuration/CodeColoring. Dans l'exemple prcdent, l'lment loadstring identifie les chanes localises que Dreamweaver utilise pour le titre et la description des documents de type ASP-JS. Pour plus d'informations sur les chanes localises, voir Fourniture de chanes localises la page 22. Le tableau ci-dessous recense les balises et les attributs autoriss dans un fichier de dfinition de type de document.

EXTENSION DE DREAMWEAVER CS4 17


Personnalisation de Dreamweaver

Balise

Attribut

Obligatoir e Oui

Description

documenttype (root) id

Nud parent.

Oui

Identificateur unique pour tous les fichiers de dfinition de type de document. Spcifie le modle de serveur associ (casse prise en compte). Les valeurs suivantes sont valides par dfaut :
ASP.NET C# ASP.NET VB ASP VBScript ASP JavaScript ColdFusion JSP PHP MySQL

servermodel

Non

Un appel des fonctions


getServerModelDisplayName()

renvoie ces noms. Les fichiers d'implmentation des modles de serveur se trouvent dans le dossier Configuration/ServerModels. Les dveloppeurs d'extensions peuvent crer de nouveaux modles de serveur en compltant cette liste.

EXTENSION DE DREAMWEAVER CS4 18


Personnalisation de Dreamweaver

Balise

Attribut

Obligatoir e Oui

Description

internaltype

Classification gnrale des modes de traitement des fichiers dans Dreamweaver. Le type interne dtermine si le mode Cration est activ pour ce document et traite des cas particuliers tels que les extensions ou les modles Dreamweaver. Les valeurs suivantes sont possibles :
Dynamique DWExtension (zones d'affichage spciales) DWTemplate (zones d'affichage spciales) HTML HTML4 Text (mode Code uniquement) XHTML1 XML (mode Code uniquement)

Tous les types de documents lis au serveur de modle sont associs la valeur Dynamic. Les fichiers HTML sont associs HTML. Les fichiers de script (notamment les fichiers .css, .js, .vb et .cs) sont associs Text. Si internaltype vaut DWTemplate, dfinissez la valeur dynamicid. Dans le cas contraire, le panneau Comportement de serveur ou Liaisons ne reconnat pas le nouveau modle vierge cr par la bote de dialogue Nouveau document. Les instances de ce modle sont des modles HTML.
dynamicid

Non

Rfrence l'identificateur unique d'un type de document dynamique. Cet attribut n'est pertinent que lorsque internaltype correspond DWTemplate. Il vous permet d'associer un modle dynamique avec un type de document dynamique. Extension de nom de fichier associe au type de document sous Windows. Utilisez une liste spare par des virgules pour spcifier plusieurs extensions. La premire extension de cette liste correspond l'extension utilise par Dreamweaver lorsque l'utilisateur enregistre un document de type documenttype. Lorsque deux types de documents non associs un modle de serveur portent la mme extension de fichier, Dreamweaver reconnat le premier comme le type de document associ l'extension.

winfileextension

Oui

EXTENSION DE DREAMWEAVER CS4 19


Personnalisation de Dreamweaver

Balise

Attribut

Obligatoir e Oui

Description

macfileextension

Extension de nom de fichier associe au type de document sur Macintosh. Utilisez une liste spare par des virgules pour spcifier plusieurs extensions. La premire extension de cette liste correspond l'extension utilise par Dreamweaver lorsque l'utilisateur enregistre un document de type documenttype. Lorsque deux types de documents non associs un modle de serveur portent la mme extension de fichier, Dreamweaver reconnat le premier comme le type de document associ l'extension.

previewfile

Non

Fichier rendu dans la zone Aperu de la bote de dialogue Nouveau document. Le fichier situ dans le dossier DocumentTypes/NewDocuments contenant le contenu du modle des nouveaux documents de type documenttype. Si le modle serveur de ce document possde un quivalent Dreamweaver UltraDev 4, spcifiez le nom de l'ancienne version du modle serveur. UltraDev4 ColdFusion est un modle de serveur antrieur valide.

file

Oui

priorversionservermodel

Non

title

Oui

(sous-balise)

Chane qui apparat comme lment de catgorie sous la section Document vierge de la bote de dialogue Nouveau document. Vous pouvez insrer cette chane directement dans le fichier de dfinition ou pointer vers elle indirectement pour la localiser. Pour plus d'informations sur la localisation de cette chane, voir Fourniture de chanes localises la page 22. La mise en forme n'tant pas autorise, il est impossible de spcifier les balises HTML.

description

Non

(sous-balise)

Chane de description du type de document. Vous pouvez insrer cette chane directement dans le fichier de dfinition ou pointer vers elle indirectement pour la localiser. Pour plus d'informations sur la localisation de cette chane, voir Fourniture de chanes localises la page 22. La mise en forme tant autorise, il est possible de spcifier les balises HTML.

EXTENSION DE DREAMWEAVER CS4 20


Personnalisation de Dreamweaver

Remarque : Lorsque l'utilisateur enregistre un nouveau document, Dreamweaver examine la liste des extensions de la plate-forme actuelle qui sont associes avec le type de document (par exemple winfileextension et macfileextension). Dreamweaver slectionne la premire chane de la liste pour l'utiliser comme l'extension de nom de fichier par dfaut. Pour changer cette extension de nom de fichier par dfaut, rorganisez les extensions de la liste spares par des virgules de sorte que la nouvelle extension par dfaut soit la premire entre de la liste. Au lancement, Dreamweaver lit tous les fichiers de dfinition de type de document et cre une liste des types de documents valides. Dreamweaver traite toutes les entres des fichiers de dfinition pour lesquels des modles de serveur inexistants sont utiliss comme types de documents non serveur de modle. Dreamweaver ignore les entres dont le contenu est incorrect ou dont les ID ne sont pas uniques. Si les fichiers de dfinition de type de document sont endommags ou ne sont pas disponibles dans le dossier Configuration/DocumentTypes, Dreamweaver se ferme en affichant un message d'erreur.

Dfinition de modles dynamiques


Vous pouvez crer des modles d'aprs des types de documents dynamiques, appels des modles dynamiques. La notion de modle dynamique repose sur les deux lments fondamentaux suivants :

La valeur de l'attribut internaltype d'un nouveau type de document doit tre DWTemplate. L'attribut dynamicid doit tre dfini et sa valeur doit faire rfrence l'identificateur d'un type de document
existant. L'exemple suivant dfinit un type de document dynamique :
<documenttype id="PHP_MySQL" servermodel="PHP MySQL" internaltype="Dynamic" winfileextension="php,php3" macfileextension="php,php3" file="Default.php"> <title>PHP</title> <description><![CDATA[PHP document]]></description> </documenttype>

Vous pouvez dsormais dfinir le modle dynamique suivant, bas sur ce type de document PHP_MySQL :
<documenttype id="DWTemplate_PHP" internaltype="DWTemplate" dynamicid="PHP_MySQL" winfileextension="php.dwt" macfileextension="php.dwt" file="Default.php.dwt"> <title>PHP Template</title> <description><![CDATA[Dreamweaver PHP Template document]]></description> </documenttype>

Lorsqu'un utilisateur de Dreamweaver cre un nouveau modle vierge de type DWTemplate_PHP, Dreamweaver lui permet de crer des comportements de serveur PHP dans le fichier. En outre, lorsque cet utilisateur cre des instances du nouveau modle, il peut leur dfinir aussi des comportements de serveur PHP. Dans l'exemple prcdent, o l'utilisateur enregistre le modle, Dreamweaver ajoute automatiquement l'extension .php.dwt au fichier. De mme, lorsque cet utilisateur enregistre une instance du modle, le fichier reoit l'extension .php.

EXTENSION DE DREAMWEAVER CS4 21


Personnalisation de Dreamweaver

Ajout et modification d'extensions de documents et de types de fichiers


Par dfaut, Dreamweaver affiche tous les types de fichiers reconnus dans la bote de dialogue Fichier > Ouvrir. Aprs avoir cr un type de document, le dveloppeur d'une extension doit mettre jour le fichier Extensions.txt appropri. Il se peut que l'utilisateur emploie un systme multi-utilisateur (comme Windows XP, Windows Vista ou MacOS X). Dans de tel cas, il existe un autre fichier Extensions.txt dans le dossier Configuration de l'utilisateur. L'utilisateur doit mettre jour le fichier Extensions.txt, car il s'agit de l'instance recherche et analyse par Dreamweaver. L'emplacement du dossier Configuration de l'utilisateur dpend de la plate-forme employe par l'utilisateur. La plate-forme Windows XP emploie l'emplacement suivant : disque dur:\Documents and Settings\nom_utilisateur\Application Data\Adobe\Dreamweaver CS4\Configuration Remarque : Il se peut que ce dossier se trouve dans un dossier cach. La plate-forme Windows Vista emploie l'emplacement suivant : disque dur:\Users\nom d'utilisateur\AppData\Roaming\Adobe\Dreamweaver CS4\Configuration La plate-forme MacOS X utilise l'emplacement suivant : disque dur:\Users/nom d'utilisateur/Library/Application Support/Adobe/Dreamweaver CS4/Configuration Si Dreamweaver ne parvient pas localiser le fichier Extensions.txt dans le dossier Configuration de l'utilisateur, Dreamweaver le recherche dans son propre dossier Configuration. Remarque : Sur une plate-forme multi-utilisateur, Dreamweaver analyse la copie du fichier Extensions.txt dans le dossier Configuration de l'utilisateur, et pas celle qui se trouve dans son propre dossier Configuration. Ds lors, si vous modifiez la copie du fichier Extensions.txt qui se trouve dans le dossier Configuration de Dreamweaver, Dreamweaver n'est pas inform de ces modifications. Pour crer une extension de document, vous avez le choix entre ajouter la nouvelle extension un type de document existant ou crer un nouveau type de document. Ajout d'une nouvelle extension un type de document existant 1 Modifiez le fichier MMDocumentTypes.xml.
2 Ajoutez la nouvelle extension aux attributs winfileextension et macfileextension du type de document

existant. Ajout d'un nouveau type de document 1 Crez une copie de sauvegarde du fichier Extensions.txt dans le dossier Configuration.
2 Ouvrez le fichier Extensions.txt dans un diteur de texte. 3 Ajoutez une nouvelle ligne pour chaque nouveau type de fichier. Entrez, en majuscules, les extensions de noms de

fichiers compatibles avec le nouveau type de fichier et sparez-les par des virgules. Ajoutez ensuite deux points et une brve description afficher dans le menu droulant des types de fichiers qui s'affichent dans la bote de dialogue Fichier > Ouvrir. Par exemple, pour les fichiers JPEG, entrez JPG,JPEG,JFIF:Fichiers image JPEG
4 Enregistrez le fichier Extensions.txt. 5 Redmarrez Dreamweaver.

Pour observer les modifications, choisissez Fichier > Ouvrir, puis cliquez sur le menu droulant des types de fichiers.

EXTENSION DE DREAMWEAVER CS4 22


Personnalisation de Dreamweaver

Modification du type de fichier indiqu par dfaut dans Fichier > Ouvrir de Dreamweaver 1 Crez une copie de sauvegarde du fichier Extensions.txt dans le dossier Configuration.
2 Ouvrez le fichier Extensions.txt dans un diteur de texte. 3 Coupez la ligne correspondant la nouvelle valeur par dfaut. Collez-la ensuite au dbut du fichier, de faon ce

qu'elle devienne sa premire ligne.


4 Enregistrez le fichier Extensions.txt. 5 Redmarrez Dreamweaver.

Pour observer les modifications, choisissez Fichier > Ouvrir, puis cliquez sur le menu droulant des types de fichiers.

Voir aussi
http://www.adobe.com/go/16410_fr

Fourniture de chanes localises


Dans un fichier de dfinition de type de document, les sous-balises <title> et <description> dsignent le titre d'affichage et la description du type de document. Vous pouvez utiliser la directive MMString:loadstring dans les sous-balises comme espace rserv pour les chanes localises de ces deux sous-balises. Ce procd, similaire la programmation de scripts ct serveur, permet de spcifier l'utilisation d'une chane particulire dans votre page en utilisant un identificateur de chane comme espace rserv. Cet espace rserv accepte les balises spciales ou les attributs de balises dont la valeur est remplace. Fourniture de chanes localises 1 Placez l'instruction suivante en tte du fichier de dfinition de type de document :
<?xml version="1.0" encoding="utf-8"?>

2 Dclarez les espaces de nom MMString dans la balise <documenttypes> :


<documenttypes xmlns:MMString="http://www.adobe.com/schemes/data/string/">

3 A l'emplacement du fichier de dfinition de type de document auquel insrer une chane localise, utilisez la

directive MMString:loadstring pour dfinir un espace rserv cette chane. Vous pouvez spcifier cet espace rserv en procdant d'une des faons suivantes :
<description> <loadstring>myJSPDocType/Description</loadstring> </description>

ou
<description> <loadstring id="myJSPDocType/Description" /> </description>

Dans ces exemples, myJSPDocType/Description est un identificateur de chane unique faisant office d'espace rserv la chane localise. La chane localise est dfinie l'tape suivante.
4 Dans le dossier Configuration/Strings, crez un fichier XML (ou modifiez un fichier existant) dfinissant la chane

localise. Par exemple, lorsque le code suivant est insr dans le fichier Configuration/Strings/strings.xml, il dfinit la chane myJSPDocType/Description :

EXTENSION DE DREAMWEAVER CS4 23


Personnalisation de Dreamweaver

<strings> ... <string id="myJSPDocType/Description" value= "<![CDATA[JavaServer&nbsp;Page with <em>special</em> features]]>" /> ... </strings>

Remarque : Les identificateurs de chane, tels que myJSPDocType/Description dans l'exemple prcdent, doivent tre uniques dans l'application Dreamweaver. Au lancement, Dreamweaver analyse tous les fichiers XML du dossier Configuration/Strings et charge ces chanes uniques.

Rgles d'utilisation des fichiers de dfinition de type de document


Dreamweaver autorise les types de documents associs un modle de serveur partager des extensions de fichiers. Par exemple, ASP-JS et ASP-VB peuvent adopter l'extension .asp. Pour savoir quel modle de serveur prvaut, voir canRecognizeDocument() la page 338. Dreamweaver n'autorise pas les types de documents non associs un modle de serveur partager des extensions de fichiers. Si une extension de fichier est revendique par deux types de documents alors qu'un type est associ un modle de serveur et que l'autre ne l'est pas, ce dernier prvaut. Supposons que vous ayez dfini un type de document appel SAM, non associ un modle de serveur et portant l'extension de fichier.sam, et que vous ajoutiez cette extension au type de document ASP-JS. Lorsqu'un utilisateur ouvre un fichier portant l'extension.sam dans Dreamweaver, le programme lui affecte le type de document SAM, et non pas le type ASP-JS.

Ouverture d'un document dans Dreamweaver


Lorsqu'un utilisateur ouvre un document, Dreamweaver identifie en plusieurs tapes le type de document d'aprs son extension de fichier. Si Dreamweaver dtecte un type de document unique, il l'utilise et charge le modle de serveur associ (le cas chant) pour le document que l'utilisateur ouvre. Si cet utilisateur a opt pour l'utilisation des comportements de serveur de Dreamweaver UltraDev4, Dreamweaver charge le modle de serveur UltraDev4 correspondant. Si l'extension de fichier est commune plusieurs types de documents, Dreamweaver effectue les oprations suivantes :

Si un type de document statique figure dans la liste des types de documents, il prvaut. Si tous les types de documents sont dynamiques, Dreamweaver gnre une liste alphabtique des modles de
serveur associs ces types de documents, puis appelle la fonction canRecognizeDocument() pour chacun des modles de serveur (voir canRecognizeDocument() la page 338). Dreamweaver collecte les valeurs de retour et identifie le modle de serveur qui a renvoy l'entier positif le plus grand. Le type de document dont le modle de serveur a renvoy l'entier le plus grand correspond au type de document assign par Dreamweaver au document en cours d'ouverture. Si, toutefois, plusieurs modles de serveur renvoient le mme entier, Dreamweaver passe en revue la liste alphabtique de ces modles de serveur, choisit le premier de la liste, puis l'utilise. Si, par exemple, les types ASP-JS et ASP-VB portent la mme extension.asp et que leur fonction canRecognizeDocument() respective renvoie une valeur gale, Dreamweaver affecte au document le type ASP-JS (puisque ASP-JS apparat en premier dans l'ordre alphabtique). Si Dreamweaver ne peut pas faire correspondre l'extension de fichier un type de document, Dreamweaver ouvre le document au format texte.

EXTENSION DE DREAMWEAVER CS4 24


Personnalisation de Dreamweaver

Personnalisation des prsentations de l'espace de travail


Dreamweaver vous permet de personnaliser la prsentation de l'espace de travail. Vous pouvez ainsi spcifier les panneaux inclus dans la prsentation indique, ainsi que divers autres attributs tels que la position et la taille des panneaux, leur tat (rduit ou dvelopp), la position et la taille de la fentre d'application, ainsi que la position et la taille de la fentre de document. La prsentation de l'espace de travail est spcifie dans les fichiers XML stocks dans le dossier Configuration/Workspace layouts. Les sections suivantes dcrivent la syntaxe des balises XML. Les attributs facultatifs sont dfinis par des accolades ({}) dans la liste des attributs ; les attributs ne comportant pas d'accolades sont donc obligatoires.

<panelset>
Description Balise d'extrmit, qui signale le dbut de la description du jeu de panneaux. Attributs Aucun. Contenu Cette balise peut contenir une ou plusieurs balises application, document ou panelset. Contenant Aucun. Exemple
<panelset> <!-- panelset tags here --> </panelset>

<application>
Description Stipule la position et la taille initiales de la fentre d'application. Attributs
rect, maximize

rect spcifie la position et la taille de la fentre d'application. La chane est exprime au format gauche haut droite bas , spcifi sous forme de nombres entiers. maximize est une valeur boolenne : true si la fentre d'application doit tre agrandie au dmarrage, et false dans

le cas contraire. La valeur par dfaut est true. Contenu Aucun. Contenant Cette balise doit tre imbrique dans une balise panelset.

EXTENSION DE DREAMWEAVER CS4 25


Personnalisation de Dreamweaver

Exemple
<panelset> <application rect="0 0 1000 1200" maximize="false"> </application> </panelset>

<document>
Description Stipule la position et la taille initiales de la fentre de document. Attributs
rect, maximize

rect spcifie la position et la taille de la fentre de document. La chane est exprime au format gauche haut droite bas , spcifi sous forme de nombres entiers. Si la valeur maximize est rgle sur true, la valeur rect n'est pas prise en compte. maximize est une valeur boolenne : true si la fentre de document doit tre agrandie au dmarrage, et false dans le cas contraire. La valeur par dfaut est true.

Contenu Aucun. Contenant Cette balise doit tre imbrique dans une balise panelset. Exemple
<panelset> <document rect="100 257 1043 1200" maximize="false"> </document> </panelset>

<panelframe>
Description Dcrit un groupe entier de panneaux. Attributs
x, y, {width, height}, dock, collapse

x indique la position de gauche du groupe de panneaux. Vous pouvez le rgler sur un nombre entier ou sur une

valeur relative l'cran. Si le nombre entier excde les limites de l'cran, le groupe de panneaux s'affiche l'emplacement le plus proche possible pour tre visible l'cran. Les valeurs relatives gres sont left ou right et identifient la bordure du groupe de panneaux aligne sur la bordure de l'cran virtuel.

y indique la position suprieure du groupe de panneaux. Vous pouvez le rgler sur un nombre entier ou sur une valeur relative l'cran. Si le nombre entier excde les limites de l'cran, le groupe de panneaux s'affiche l'emplacement le plus proche possible pour tre visible l'cran. Les valeurs relatives gres sont top ou bottom et identifient la bordure du groupe de panneaux aligne sur la bordure de l'cran virtuel.

EXTENSION DE DREAMWEAVER CS4 26


Personnalisation de Dreamweaver

width indique la largeur du groupe de panneaux, exprime en pixels. Cet attribut est facultatif. Si vous ne spcifiez

pas de largeur, la valeur par dfaut du groupe de panneaux est utilise.


height indique la hauteur du groupe de panneaux, exprime en pixels. Cet attribut est facultatif. Si vous ne spcifiez pas de hauteur, la valeur par dfaut du groupe de panneaux est utilise. dock est une chane qui identifie la bordure du cadre d'application sur laquelle est ancr le groupe de panneaux. Cet attribut n'est pas pris en compte sur Macintosh, car il est impossible d'ancrer les groupes de panneaux. collapse est une valeur boolenne : true indique que le groupe de panneaux est rduit, et false indique qu'il est dvelopp. Cet attribut n'est pas pris en compte sur Macintosh, car les panneaux flottent.

Contenu Cette balise doit contenir une ou plusieurs balises panelcontainer. Contenant Cette balise doit tre imbrique dans une balise panelset. Exemple
<panelset> <panelframe rect="196 453 661 987" visible="true" dock="floating"> <!-- panelcontainer tags here --> </panelframe> </panelset>

<panelcontainer>
Description Dcrit un groupe entier de panneaux. Attributs
expanded, title,{ height,} activepanel, visible, maximize, maxRestorePanel, maxRestoreIndex, maxRect, tabsinheader

expanded est une valeur boolenne : true si le panneau est dvelopp et false s'il ne l'est pas. title est une chane qui indique le titre du panneau. height est un nombre entier qui indique la hauteur des panneaux, exprime en pixels. Cet attribut est facultatif. Si vous ne spcifiez pas height, la valeur par dfaut de chaque panneau est utilise.

Remarque : La largeur est hrite du parent.

activepanel est une valeur numrique correspondant l'ID du panneau avant. visible est une valeur boolenne : true si le panneau est visible et false s'il ne l'est pas. maximize est une valeur boolenne : true si le panneau doit tre agrandi lorsqu'il s'affiche initialement et false dans le cas contraire. maxRestorePanel est une valeur numrique correspondant l'ID du panneau afficher suite une restauration. maxRect est une chane qui indique la position et la taille du panneau agrandi. La chane est exprime au format

gauche haut droite bas , spcifi sous forme de nombres entiers.


tabsinheader est une valeur boolenne : true indique que les onglets doivent tre placs dans l'en-tte et non sous

la barre d'en-tte ; false indique le contraire.

EXTENSION DE DREAMWEAVER CS4 27


Personnalisation de Dreamweaver

Contenu Cette balise doit contenir une ou plusieurs balises panel. Contenant Cette balise doit tre imbrique dans une balise panelframe. Exemple
<panelset> <panelframe rect="196 453 661 987" visible="true" dock="floating"> <panelcontainer title="Color" height="250" visible="true" expanded="true" activepanel="20"> <!-- panel tags here ---> </panelcontainer> </panelframe> </panelset>

<panel>
Description Spcifie le panneau qui s'affiche dans le contenant. Attributs
id, visibleTab

id est une valeur numrique correspondant l'ID du panneau. Le tableau ci-dessous contient une liste de valeurs.
Logiciel Adobe Flash ID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Panneau Proprits Actions Alignement Comportements Composants Inspecteur de composants Mlangeur Nuanciers Historique Info Bibliothque Explorateur d'animations Sortie Proprits Projet Transformer

EXTENSION DE DREAMWEAVER CS4 28


Personnalisation de Dreamweaver

Logiciel

ID 17 18 19 101 110

Panneau Squence Chanes Dbogueur Bibliothque

Dreamweaver Flex Builder

1 1

Proprits Proprits

visibleTab est une valeur boolenne : true si l'onglet et le panneau doivent tre visibles, false dans le cas

contraire. Contenu Aucun. Contenant Cette balise doit tre imbrique dans une balise panelcontainer. Exemple
<panelset> <panelframe rect="196 453 661 987" visible="true" dock="floating"> <panelcontainer title="Color" height="250" visible="true" expanded="true" activepanel="20"> <panel id="20"></panel> </panelcontainer> </panelframe> </panelset>

Personnalisation de la barre d'outils de codage


La barre d'outils de codage contient normalement 15 boutons. Vous disposez cependant d'autres boutons. Pour personnaliser la barre d'outils de codage, vous pouvez modifier ses boutons et leur ordre d'affichage. Vous devez pour ce faire modifier le fichier Configuration/Toolbars/Toolbars.xml. Vous pouvez galement insrer vos propres boutons par le biais d'Extension Manager. Modification de l'ordre des boutons 1 Ouvrez le fichier Configuration/Toolbars/toolbars.xml.
2 Localisez la section Code view toolbar en recherchant le commentaire suivant :
<!-- Code view toolbar -->

3 Copiez et collez les balises associes aux boutons pour que ces derniers s'affichent dans l'ordre requis dans la barre

d'outils.
4 Enregistrez le fichier.

Suppression d'un bouton 1 Ouvrez le fichier Configuration/Toolbars/toolbars.xml.


2 Localisez la section Coding toolbar en recherchant le commentaire suivant :

EXTENSION DE DREAMWEAVER CS4 29


Personnalisation de Dreamweaver

<!-- Code view toolbar -->

3 Entourez le bouton supprimer d'un commentaire.

L'exemple suivant illustre un bouton entour de commentaires.


<!-- remove button from Coding toolbar <button id="DW_ExpandAll" image="Toolbars/images/MM/T_ExpandAll_Sm_N.png" disabledImage="Toolbars/images/MM/T_ExpandAll_Sm_D.png" tooltip="Expand All" domRequired="false" enabled="dw.getFocus(true) == 'textView' || dw.getFocus(true) == 'html' "command="if (dw.getFocus(true) == 'textView' || dw.getFocus(true) == 'html') dw.getDocumentDOM().source.expandAllCodeFragments();" update="onViewChange" /> -->

4 Enregistrez le fichier.

Pour afficher un bouton qui n'apparat pas sur la barre d'outils, il suffit de supprimer le commentaire qui entoure le bouton dans le fichier XML.

Modification des raccourcis clavier


Dreamweaver offre de nombreux raccourcis clavier pour accder rapidement aux principales fonctionnalits. Les raccourcis clavier par dfaut figurent dans le fichier menus.xml et sont conus pour le clavier amricain. En raison du nombre lev de raccourcis de Dreamweaver, certains raccourcis ne faisant pas appel des caractres alphanumriques (caractres autres que a-z ou 0-9) ncessitent la reconfiguration du clavier. A cette fin, Dreamweaver dispose de plusieurs fichiers XML qui dfinissent le mappage des raccourcis clavier en fonction de diffrentes langues. Ces fichiers sont situs dans le dossier Configuration\Menus\Adaptive Sets. Lorsque Dreamweaver dtecte un clavier autre que le clavier Qwerty amricain, il adapte de faon automatique les raccourcis clavier. Lorsque le fichier appropri n'est pas disponible pour le clavier, Dreamweaver supprime les raccourcis clavier qui ne fonctionnent pas pour ce type de clavier. Les fichiers de raccourcis clavier emploient un code deux lettres pour identifier le clavier. Ainsi, le fichier du clavier allemand est appel de.xml. Lorsqu'une langue ncessite diffrentes dispositions en fonction du pays d'utilisation, le fichier de mappages emploie toujours le code de langue deux lettres, mais suivi par un tiret (-) et un code de pays deux lettres. Par exemple, fr-ca.xml dsigne le clavier canadien franais. Les codes de langue deux lettres est conforme la norme ISO 639 (http://en.wikipedia.org/wiki/List_of_ISO_639_codes), tandis que le code de pays repose sur la norme ISO 3166 (http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Lorsque Dreamweaver dtecte un changement de clavier, il recherche automatiquement le fichier de mappage correspondant. Dreamweaver recherche en premier le fichier propre au pays puis, si ce fichier n'existe pas, il recherche le fichier correspondant la langue. Par exemple, si vous connectez un clavier canadien franais votre ordinateur, Dreamweaver recherche tout d'abord le fichier fr-ca.xml. S'il n'existe pas, Dreamweaver recherche fr.xml. Le tableau suivant regroupe les fichiers de mappage livrs avec Dreamweaver.
Nom de fichier ca.xml de.xml de-ch.xml Plate-forme Windows Catalan Allemand (Allemagne, Autriche) Allemand (Suisse) Plate-forme Macintosh Catalan (Espagne) Autrichien, Allemand Suisse-Allemand

EXTENSION DE DREAMWEAVER CS4 30


Personnalisation de Dreamweaver

Nom de fichier es.xml

Plate-forme Windows Espagnol (international) Espagnol (traditionnel) Franais (France) Franais (Canada) Franais (Suisse) Italien (Italie) Italien (Suisse) S/O Japonais

Plate-forme Macintosh Espagnol - ISO

fr.xml fr-ca.xml fr-ch.xml it.xml it-mac.xml ja.xml nl-be.xml zh-cn.xml

Franais Canadien - CSA Franais Suisse Italien - Pro Italien Japonais

Nerlandais (Belgique) Franais (Belgique) Belge Chinois (RPC) Chinois (Singapour) Chinois simplifi

Si vous utilisez une disposition de clavier qui ne correspond pas celle de Dreamweaver, vous pouvez crer un fichier de mappage personnalis et le placer dans le dossier Configuration\Menus\Adaptive Sets. Cration d'un fichier de mappage du clavier 1 Copiez l'un des fichiers de mappage du clavier dans le dossier Configuration\Menus\Adaptive Sets et nommez-le l'aide du code de langue 2 lettres en fonction de la disposition de votre clavier et employez l'extension .xml. Lorsque vous copiez un fichier, vous devez choisir un fichier de mappage aussi proche que possible de la disposition du clavier. Par exemple, si vous crez un fichier de mappage pour le clavier sudois, il est recommand de copier le fichier de.xml dans la mesure o les dispositions des claviers sudois et allemand sont similaires.
2 Placez le fichier de mappage que vous venez de crer dans un dossier diffrent de Configuration\Menus\Adaptive

Sets.
3 Ouvrez le fichier de mappage du clavier dans Dreamweaver. 4 Supprimez ou ajoutez des balises de raccourci pour la disposition de clavier voulue.

Pour dterminer les balises de raccourci clavier modifier, comparez le jeu de raccourcis du clavier amricain celui de votre langue. La procdure suivante dcrit la comparaison de raccourcis partir de deux dispositions de clavier distinctes.
5 Aprs avoir apport les modifications voulues aux raccourcis clavier, enregistrez le fichier et placez-le dans le

dossier Configuration\Menus\Adaptive Sets. Dterminez les balises de raccourci clavier que vous voulez modifier. 1 Slectionnez la langue correspondant votre clavier sur l'ordinateur, si ce n'est dj fait. Vous devez passer par le systme d'exploitation de l'ordinateur. Par exemple, sous Windows, vous pouvez slectionner la langue l'aide du Panneau de configuration.
2 Lancez l'diteur de raccourcis clavier de Dreamweaver en slectionnant Edition > Raccourcis clavier. 3 Cliquez sur la troisime image de bouton dans le coin suprieur droit de la bote de dialogue. Survolez le bouton

avec le pointeur pour afficher l'infobulle Exporter le jeu au format HTML . La bote de dialogue Enregistrer comme fichier HTML s'affiche afin de vous permettre d'entrer le nom du fichier de rsum de raccourci clavier correspondant la disposition actuelle.
4 Aprs avoir enregistr le fichier de rsum, fermez la bote de dialogue de l'diteur de raccourcis clavier.

EXTENSION DE DREAMWEAVER CS4 31


Personnalisation de Dreamweaver

5 Slectionnez la disposition de clavier amricain ( partir du systme d'exploitation de l'ordinateur). 6 Lancez l'diteur de raccourcis clavier de Dreamweaver en slectionnant Edition > Raccourcis clavier. 7 Cliquez sur la troisime image de bouton dans le coin suprieur droit de la bote de dialogue pour exporter le jeu

dans un fichier HTML.


8 Aprs avoir enregistr le fichier de rsum, fermez la bote de dialogue de l'diteur de raccourcis clavier. 9 Vous pouvez dsormais imprimer les deux fichiers de rsum de raccourci clavier et les comparer pour identifier

les raccourcis supprims par Dreamweaver dans la langue du clavier voulu. Il s'agit des raccourcis clavier que vous devez raffecter en fonction des touches propres votre clavier. A partir des informations obtenues en comparant les deux fichiers, vous pouvez mettre jour votre fichier de mappage en ajoutant ou en supprimant des balises de raccourci pour tout raccourci raffecter.

Fichiers XML de mappage de clavier


L'exemple suivant porte sur le format du mappage de clavier franais (fr.xml) :
<shortcutset language="French"> <shortcut key="Cmd+[" newkey="Cmd+&ugrave;"/> <shortcut key="Cmd+]" newkey="Cmd+)"/> <shortcut platform="win" key="Cmd+Shift+>" newkey="Cmd+Opt+Shift+,"/> <shortcut platform="mac" key="Cmd+Shift+>" newkey="Cmd+<"/> <shortcut platform="win" key="Cmd+Shift+<" newkey="Cmd+Shift+,"/> <shortcut key="Cmd+'" newkey="Cmd+Shift+=" /> ... </shortcutset>

Syntaxe du fichier XML de disposition du clavier :


<shortcutset language="language_name"> <shortcut key="key_combination" newkey="key_combination"/> <shortcut platform="op_system" key="key_combination" newkey="key_combination"/> </shortcutset>

O:

language_name dsigne la langue associe au clavier, telle que Franais, Espagnol, Allemand, etc. key_combination est le raccourci clavier, comme Cmd+[, Cmd+Shift+>, Ctrl+$.
key spcifie le raccourci clavier remplacer. newkey spcifie le raccourci clavier devant remplacer les touches identifies par key.

platform=op_system dsigne le systme auquel le raccourci s'applique. Spcifiez win ou mac. Si aucune plate-forme
n'est spcifie, le raccourci s'applique aux deux plates-formes.

32

Chapitre 3 : Personnalisation du mode Code


En mode Code, Adobe Dreamweaver permet de rdiger rapidement un code lisible et sans erreur grce aux deux outils que sont les indicateurs de code et la coloration du code. De plus, Dreamweaver effectue un contrle de validit du code saisi par rapport aux navigateurs cibles spcifis et permet de modifier le formatage HTML par dfaut. Vous pouvez personnaliser les outils d'indication et de coloration du code en modifiant leurs fichiers d'implmentation au format XML. Vous pouvez ajouter des lments aux menus des indicateurs de code en ajoutant des entres dans le fichier CodeHints.xml ou SpryCodeHints.xml. Vous pouvez modifier les modles de couleur par l'intermdiaire du fichier de style de coloration du code, Colors.xml, ou encore modifier les modles de coloration du code ou en ajouter de nouveaux par l'intermdiaire des fichiers de syntaxe de coloration du code (par exemple, CodeColoring.xml). Vous pouvez galement modifier le fichier de profil CSS (feuille de style en cascade) de votre navigateur cible de manire influer sur le systme de validation des valeurs et des proprits CSS dans Dreamweaver. Vous pouvez enfin modifier le formatage HTML par dfaut de Dreamweaver par l'intermdiaire de la bote de dialogue Prfrences. Les sections suivantes dcrivent les procdures de personnalisation de ces diffrentes fonctions.

A propos des indicateurs de code


Les indicateurs de code sont des menus contextuels qui s'affichent dans Dreamweaver lorsque vous tapez certains caractres en mode Code. Ils vous vitent de saisir tout le texte en proposant une liste de chanes susceptibles de complter la chane que vous tapez. Si la chane que vous tapez apparat dans le menu, slectionnez-la et appuyez sur Entre ou Retour pour complter votre saisie. Si vous tapez <, par exemple, un menu contextuel affiche une liste des noms de balises. Plutt que de taper le reste du nom de la balise, vous pouvez la slectionner dans le menu pour l'inclure votre texte. Dreamweaver fournit galement des indicateurs de code pour le cadre applicatif Spry. Dreamweaver charge les menus d'indicateurs de code partir du fichier CodeHints.xml ou de tout autre type de fichier XML enregistr dans le dossier Configuration/CodeHints. Vous pouvez ajouter des menus d'indicateurs de code dans Dreamweaver en les dfinissant dans vos propres fichiers XML l'aide du format de schma XML qui est dcrit dans cette rubrique et en les plaant dans le dossier Configuration/CodeHints. Une fois le contenu du fichier d'indicateurs de code charg, vous pouvez galement ajouter de faon dynamique de nouveaux menus Indicateurs de code via JavaScript. Par exemple, le code JavaScript ajoute des donnes la liste des variables de session dans le panneau Liaisons. Vous pouvez utiliser le mme code pour ajouter un menu d'indicateurs de code. Dans ce cas, lorsqu'un utilisateur tape "Session." en mode Code, un menu de variables de session s'affiche dans Dreamweaver. Pour obtenir des informations sur l'ajout ou la modification d'un menu d'indicateurs de code avec JavaScript, voir Fonctions de code dans le Guide des API de Dreamweaver. Certains types de menus d'indicateurs de code ne s'expriment pas dans le fichier XML ou l'API JavaScript de Dreamweaver. Les fichiers CodeHints.xml et SpryCodeHints.xml, ainsi que l'API JavaScript, contiennent un sousensemble utile du moteur d'indicateurs de code, mais certaines fonctionnalits de Dreamweaver ne sont pas accessibles. Par exemple, comme il n'existe pas d'accroche JavaScript pouvant afficher un slecteur de couleur, Dreamweaver ne peut pas exprimer le menu Valeurs des attributs l'aide de JavaScript. Vous pouvez uniquement afficher un menu d'lments de texte permettant d'insrer du texte. Remarque : Lorsque vous insrez du texte, le point d'insertion se place aprs la chane insre.

EXTENSION DE DREAMWEAVER CS4 33


Personnalisation du mode Code

Fichier CodeHints.xml
Le fichier CodeHints.xml contient les entits suivantes :

Une liste de tous les groupes de menus


Lorsque vous slectionnez la catgorie Indicateurs de code dans la bote de dialogue Prfrences, la liste des groupes de menus s'affiche dans Dreamweaver. Vous pouvez ouvrir la bote de dialogue Prfrences en choisissant Edition > Prfrences. Dreamweaver fournit les groupes de menus ou les types de menus d'indicateurs de code suivants : Noms de balises, Noms d'attributs, Valeurs d'attributs, Arguments de fonctions, Mthodes et variables d'objets et Entits HTML.

La description de chaque groupe de menus


Cette description relative la catgorie Indicateurs de code apparat dans la bote de dialogue Prfrences lorsque vous slectionnez le groupe de menus dans la liste. La description de l'entre slectionne apparat au-dessous de la liste de groupes de menus.

Des menus d'indicateurs de code


Un menu se compose d'un modle qui dclenche le menu Indicateurs de code et d'une liste de commandes. Par exemple, le modle & peut dclencher un menu &amp;, &gt;, &lt;. L'exemple suivant prsente le format du fichier CodeHints.xml (les balises en gras sont dcrites dans Balises des indicateurs de code la page 38) :

EXTENSION DE DREAMWEAVER CS4 34


Personnalisation du mode Code

<codehints> <menugroup name="HTML Entities" enabled="true" id="CodeHints_HTML_Entities"> <description> <![CDATA[ When you type a '&', a pop-up menu shows a list of HTML entities. The list of HTML entities is stored in Configuration/CodeHints.xml. ]]> </description> <menu pattern="&amp;"> <menuitem value="&amp;amp;" texticon="&amp;"/> <menuitem value="&amp;lt;" icon="lessThan.gif"/> </menu> </menugroup> <menugroup name="Tag Names" enabled="true" id="CodeHints_Tag_Names"> <description> <![CDATA[ When you type '<', a pop-up menu shows all possible tag names.0You can edit the list of tag names using the <a href="javascript:dw.popupTagLibraryEditor()"> Tag Library Editor </a>]]> </description> </menugroup> <menugroup name="Function Arguments" enabled="true" id="CodeHints_Function_Arguments"> <description> ... </description> <function pattern="ArraySort(array, sort_type, sort_order)" doctypes="CFML"/> <function pattern="Response.addCookie(Cookie cookie)" doctypes="JSP"/> </menugroup> </codehints>

Indicateurs de code JavaScript


Dreamweaver prend en charge les indicateurs de code pour le cadre applicatif Spry. Le fichier d'indicateurs de code Spry (SpryCodeHints.xml) reprend le format de base de CodeHints.xml. Il comporte quelques nouveaux mots cls, tels que method, ainsi qu'un nouvel attribut, classpattern, pour associer la liste de membres de la classe la classe (par exemple, Spry.Data.XMLDataSet). La liste de membres de la classe pour les classes est imbrique dans le menu (mthodes, proprits et vnements). La balise <method> et ses attributs est similaire la balise function et ses attributs, mais la balise parent, menu, doit disposer de l'attribut classpattern pour diriger l'association. D'autre part, il existe une balise property pour les proprits et une balise event pour les vnements, qui sont reprsents par les icnes correspondantes dans le menu droulant des indicateurs de code. Vous disposez galement des balises parammenu et parammenuitem pour prendre en charge les indicateurs de paramtres. Le format du fichier SpryCodeHints.xml, est illustr dans l'exemple suivant. Les balises en gras sont dcrites dans Balises des indicateurs de code la page 38.

EXTENSION DE DREAMWEAVER CS4 35


Personnalisation du mode Code

<function pattern="XMLDataSet(xmlsource, xpath, {options})" caseSensitive="true" /> <menu classpattern="Spry.Data.XMLDataSet"> <property pattern="url" icon="shared/mm/images/hintMisc.gif" /> <property pattern="xpath" icon="shared/mm/images/hintMisc.gif" /> ... ... <method pattern="getData()" icon="shared/mm/images/hintMisc.gif" /> <method pattern="getData()" icon="shared/mm/images/hintMisc.gif" /> <method pattern="loadData()" icon="shared/mm/images/hintMisc.gif" /> <method pattern="getCurrentRow()" icon= ".../hintMisc.gif" /> <method pattern="setCurrentRow(rowID)" icon= ".../hintMisc.gif" /> <method pattern="setCurrentRowNumber(rowNumber)" icon= ".../hintMisc.gif" /> <method pattern="getRowNumber(rowObj)" icon= ".../hintMisc.gif" /> <method pattern="setColumnType(columnName, columnType)" icon= ".../hintMisc.gif" /> <parammenu pattern='"' name="columnName" index="0" type="spryDataReferences"> </parammenu> <parammenu pattern='"' name="columnType" index="1" type="enumerated"> <parammenuitem label="integer" value="integer" icon=".../hintMisc.gif"/> <parammenuitem label="image" value="image" icon=".../hintMisc.gif"/> <parammenuitem label="date" value="date" icon=".../hintMisc.gif"/> <parammenuitem label="string" value="string" icon=".../hintMisc.gif"/> </parammenu> </method> <method pattern="getColumnType(columnName)" icon= ".../hintMisc.gif" /> <method pattern="distinct()" icon= ".../hintMisc.gif" /> <method pattern="getSortColumn()" icon= ".../hintMisc.gif" /> <method pattern="sort()" icon= ".../hintMisc.gif" /> ... ... <event pattern="onCurrentRowChanged" icon= ".../hintMisc.gif" /> <event pattern="onDataChanged" icon= ".../hintMisc.gif" /> ... ... </menu> <function pattern="Accordion(element,{options})" caseSensitive="true" /> <menu classpattern="Spry.Widget.Accordion"> <method pattern="openNextPanel()" icon= ".../hintMisc.gif" /> <method pattern="openPreviousPanel()" icon= ".../hintMisc.gif" />

EXTENSION DE DREAMWEAVER CS4 36


Personnalisation du mode Code

<method pattern="openFirstPanel()" icon= ".../hintMisc.gif" /> ... ... </menu> </function> <function pattern="XMLDataSet(xmlsource, xpath, {options})" caseSensitive="true"> <parammenu pattern='{,' name="options" index="2" type="optionArray" allowwhitespaceprefix="true"> <parammenuitem label="sortOnLoad" value="sortOnLoad:" icon="shared/mm/images/hintMisc.gif" datatype="string"/> <optionparammenu pattern="sortOrderOnLoad" label="sortOrderOnLoad" value="sortOrderOnLoad:" icon="shared/mm/images/hintMisc.gif" type="enumerated" datatype="string"> <optionparammenuitem label="ascending" value="ascending" icon="shared/mm/images/hintMisc.gif"/> <optionparammenuitem label="descending" value="descending" icon="shared/mm/images/hintMisc.gif"/> </optionparammenu> </parammenu> </function>

Dclaration des classes Le format suivant dclare une classe en associant une variable la classe :
<variablename>[space][= operator][new keyword][space]<classname>

Par exemple :
var dsFoo = new Spry.Data.XMLDataSet("products.xml", "products/product"); var fooAccordion = new Spry.Widget.Accordion("accordionDivId");

Dans le cas du nom de la classe Spry.XML.DataSet, vous devez la dclarer de nouveau dans le fichier ColorCoding.xml, de faon ce que le moteur d'tat de la couleur l'identifie en tant qu'occurrence de classe et prenne le nom de variable dfini dans la partie gauche de la dclaration et la place dans la liste de variables, ainsi que les types de classe correspondants pour cette page (par ex. la variable fooAccordion et le type de classe Spry.Widget.Accordion dans l'exemple prcdent). Syntaxe de la nouvelle dclaration du nom de classe dans le fichier CodeColoring.xml:
<classlibrary name="Spry Keywords" id="CodeColor_JavascriptSpry"> <class>Spry.Data.XMLDataSet</class> <class>Spry.Widget.Accordion</class> </classlibrary>

O:

classlibrary est une nouvelle balise qui regroupe les classes dans l'id de couleur "CodeColor_JavascriptSpry" class permet d'afficher la liste des diffrentes entres de la bibliothque de classes. La liste de classes peut se

dvelopper afin d'inclure d'autres classes Spry provenant de diffrents packages Spry (comme Debug, Data, Utils, Widgets et Effects), ou d'autres botes outils JavaScript et XML (Ajax) asynchrones ou des bibliothques JavaScript.

EXTENSION DE DREAMWEAVER CS4 37


Personnalisation du mode Code

Indicateurs de code d'attributs Crosstag


Dreamweaver fournit des indicateurs de code pour les noms d'attribut et les valeurs Spry. Comme ces attributs sont communs aux balises, au lieu d'ouvrir chaque fichier balise.vtm et d'ajouter la liste d'attributs Spry, Dreamweaver emploie un nouveau format XML pour les groupes d'attributs (par exemple, spry:region et spry:repeat) et des groupes de balises qui peuvent tre appliqus dans un seul fichier VTM nomm Spry.vtm dans le dossier Configuration/TagLibraries.

Format de groupement de l'attribut Spry


Le format du fichier .vtm est illustr dans l'exemple de code suivant : Ce format permet de spcifier les attributs qui s'appliquent certaines balises. Remarque : Le format du groupement d'attributs Spry peut galement tre utilis en dehors du cadre applicatif Spry.
<crosstag_attributes> <attributegroup id="group_id_1" name="group_name_1"> <attrib name = "fooAttr1"> <attrib name = "barAttr1"> ... <taggroup> <tag name = "fooTag1"> <tag name = "barTag1"> ... </taggroup> </attribgroup> <attributegroup id="group_id_2" name="group_name_2"> <attrib name = "fooAttr2"> <attrib name = "barAttr2"> ... <taggroup> <tag name = "fooTag2"> <tag name = "barTag2"> ... </taggroup> </attribgroup> </crosstag_attributes>

O:

attributegroup donne la liste des attributs du groupe de balises suivantes. taggroup donne la liste des balises auxquelles les attributs prcdents s'appliquent.

EXTENSION DE DREAMWEAVER CS4 38


Personnalisation du mode Code

Exemple
<crosstag_attributes> <attribgroup id="spryRegionAttrs" name="Spry1.2"> <attrib name="spry:region" type="spryDataSet" allowmultiplevalues="yes"/> <attrib name="spry:detailregion" type="spryDataSet" allowmultiplevalues="yes"/> <attrib name="spry:content"/> <attrib name="spry:if"/> <attrib name="spry:choose"> <attrib name="spry:when"/> <attrib name="spry:default"/> <attrib name="spry:state" type="Enumerated"> <attriboption value="read" caption="read"/> <attriboption value="loading" caption="loading"/> <attriboption value="failed" caption="failed"/> </attrib> <taggroup> <tag name="div"/> <tag name="span"/> ... </taggroup> </attribgroup> <attribgroup id="spryBehaviorAttrs" name="Spry1.2"> <attrib name="spry:hover" type="cssStyle"/> <attrib name="spry:select" type="cssStyle"/> <attrib name="spry:odd" type="cssStyle"/> <attrib name="spry:even" type="cssStyle"/> <taggroup> <tag name="a"/> <tag name="abbr"/> <tag name="acronym"/> ... </taggroup> </attribgroup> </crosstag_attributes>

Balises des indicateurs de code


Les fichiers XML d'indicateurs de code ont recours aux balises suivantes, qui dfinissent les menus d'indicateurs de code. Vous pouvez utiliser ces balises pour dfinir les menus d'indicateurs de code.

<codehints>
Description La balise codehints correspond la racine des fichiers CodeHints.xml et SpryCodeHints.xml. Attributs Aucun. Contenu Une ou plusieurs balises menugroup. Contenant Aucun.

EXTENSION DE DREAMWEAVER CS4 39


Personnalisation du mode Code

Exemple
<codehints>

<menugroup>
Description Chaque balise menugroup correspond un type de menu. Vous pouvez afficher les types de menu dfinis dans Dreamweaver en choisissant la catgorie Indicateurs de code dans la bote de dialogue Prfrences. Pour afficher la bote de dialogue Prfrences, choisissez Prfrences dans le menu Edition. Vous pouvez crer un groupe de menus ou ajouter des menus un groupe existant. Les groupes de menus sont des collections logiques de menus que l'utilisateur peut activer ou dsactiver dans la bote de dialogue Prfrences. Attributs
name, enabled, id

L'attribut name est le nom localis qui apparat dans la liste des groupes de menu de la catgorie Indicateurs de code
de la bote de dialogue Prfrences.

L'attribut enabled indique si le groupe de menus est actuellement coch ou activ. Une coche apparat en regard
d'un groupe de menus s'il est activ dans la catgorie Indicateurs de code de la bote de dialogue Prfrences. Pour activer un groupe de menus, assignez-lui la valeur true ; pour le dsactiver, assignez-lui la valeur false.

L'attribut id est un identificateur non localis qui se rapporte au groupe de menus.


Contenu Balises description, menu et function. Contenant Balise codehints. Exemple
<menugroup name="Session Variables" enabled="true" id="Session_Code_Hints">

<description>
Description La balise description contient du texte affich par Dreamweaver lorsque vous slectionnez le groupe de menus dans la bote de dialogue Prfrences. La description apparat au-dessous de la liste de groupes de menus. Elle peut contenir une balise a dans laquelle l'attribut href doit tre une URL JavaScript excute par Dreamweaver si l'utilisateur clique sur le lien. Utilisez la structure XML CDATA pour inclure des caractres spciaux ou illgaux dans la chane afin qu'ils soient considrs comme du texte par Dreamweaver. Attributs Aucun. Contenu Texte de la description.

EXTENSION DE DREAMWEAVER CS4 40


Personnalisation du mode Code

Contenant Balise menugroup. Exemple


<description> <![CDATA[ To add or remove tags and attributes, use the <a href="javascript:dw.tagLibrary.showTagLibraryEditor()">Tag Library Editor</a>.]]> </description>

<menu>
Description Cette balise dcrit un menu contextuel unique. Dreamweaver ouvre ce menu lorsque l'utilisateur tape le dernier caractre de la chane de l'attribut pattern. Par exemple, le menu qui affiche le contenu d'une variable de session peut avoir un attribut pattern gal Session . Attributs pattern, doctypes, casesensitive, classpattern, displayrestriction

L'attribut pattern spcifie le modle des caractres taps entranant l'affichage du menu d'indicateurs de code dans
Dreamweaver. Si le premier caractre est une lettre, un chiffre ou un trait de soulignement, Dreamweaver affiche le menu uniquement si le caractre qui prcde le modle dans le document n'est pas une lettre, un chiffre ou un trait de soulignement. Par exemple, si le modle est Session. , Dreamweaver n'affiche pas le menu si l'utilisateur tape ma_Session. .

L'attribut doctypes indique que le menu est actif uniquement pour les types de documents spcifis. Cet attribut
permet de spcifier diffrentes listes de noms de fonctions pour ASP-JavaScript (ASP-JS), Java Server Pages (JSP), Adobe ColdFusion, etc. Vous pouvez spcifier l'attribut doctypes en tant que liste d'ID de types de documents spars par des virgules. Voir le fichier MMDocumentTypes.xml dans le dossier Configuration/Documenttypes de Dreamweaver pour consulter la liste des types de documents de Dreamweaver.

L'attribut casesensitive indique si le modle fait la distinction entre les majuscules et les minuscules. Les valeurs
possibles pour l'attribut casesensitive sont true, false ou un sous-ensemble de la liste spare par des virgules spcifie pour l'attribut doctypes. La liste des types de documents vous permet de spcifier si le modle fait la distinction entre majuscules et minuscules pour certains types de documents plutt que d'autres. Par dfaut, la valeur est false si vous omettez cet attribut. Si vous dfinissez la valeur de l'attribut casesensitive sur true, le menu des indicateurs de code s'affiche uniquement si le texte tap par l'utilisateur correspond exactement au modle spcifi par l'attribut du modle. Si vous dfinissez la valeur de l'attribut casesensitive sur false, le menu s'affiche mme si le modle est en minuscules et le texte en majuscules.

L'attribut classpattern associe la liste de membres de la classe la classe. L'attribut displayrestriction sert limiter le menu des indicateurs de code des blocs de syntaxe d'un langage
de programmation spcifique, sur la base des modles de coloration du code dfinis dans CodeColoring.xml. Par exemple, si displayrestriction= "JavaScript", le menu d'indicateurs de code est limit au bloc de syntaxe JavaScript. Contenu Balise menuitem. Contenant Balise menugroup.

EXTENSION DE DREAMWEAVER CS4 41


Personnalisation du mode Code

Exemple
<menu pattern="CGI." doctypes="ColdFusion">

<menuitem>
Description Cette balise indique le texte d'un lment dans un menu contextuel d'indicateurs de code. La balise menuitem indique galement la valeur insrer dans le texte lorsque vous slectionnez l'lment. Attributs label, value, {icon}, {texticon}, object, source

L'attribut label correspond la chane affiche dans le menu contextuel de Dreamweaver. L'attribut value correspond la chane insre par Dreamweaver dans le document lorsque vous slectionnez la
commande. Lorsque l'utilisateur slectionne l'lment du menu et appuie sur Entre ou Retour, Dreamweaver remplace tout le texte tap depuis l'affichage du menu. L'utilisateur a tap les caractres correspondant au modle avant l'affichage du menu, si bien que Dreamweaver ne les insre pas une seconde fois. Par exemple, si vous souhaitez insrer &amp, l'entit HTML de l'esperluette (&), vous pouvez dfinir les balises menu et menuitem suivantes :
<menu pattern="&amp;"> <menuitem label="&amp;amp;" value="amp;" texticon="&amp;"/>

L'attribut de valeur n'inclut pas l'esperluette (&), car l'utilisateur l'a tape avant que le menu ne s'affiche.

L'attribut icon (facultatif) spcifie le chemin d'accs un fichier image affich par Dreamweaver sous la forme
d'une icne situe gauche du texte du menu. L'emplacement de ce fichier est dfini par une URL (dossier Configuration).

L'attribut texticon (facultatif) affiche une chane de texte dans la zone d'icne (et non un fichier image). Cet
attribut est utilis pour le menu Entits HTML.

L'attribut object fait rfrence au type auquel appartient l'lment de menu. Par exemple, type de donnes intgr :
chane ou fichier JavaScript personnalis de type de donnes dfini par l'utilisateur.

L'attribut source fait rfrence l'endroit o il est dfini ou d'o il provient. Par exemple, DOM/Javascript/ custom
file.js. Contenu Aucun. Contenant Balise menu. Exemple
<menuitem label="CONTENT_TYPE" value="&quot;CONTENT_TYPE&quot;) " icon="shared/mm/images/hintMisc.gif" />

EXTENSION DE DREAMWEAVER CS4 42


Personnalisation du mode Code

<function>
Description Cette balise figure dans le fichier CodeHints.xml. Cette balise remplace la balise menu pour la spcification des arguments de fonction et des mthodes d'objet d'un menu contextuel d'indicateurs de code. Lorsque vous tapez un nom de fonction ou de mthode en mode Code, Dreamweaver affiche un menu de prototypes de fonction, indiquant l'argument actuel en caractre gras. Chaque fois que vous tapez une virgule, Dreamweaver met jour le menu de manire afficher l'argument suivant en gras. Par exemple, si vous avez tap le nom de fonction ArrayAppend dans un document ColdFusion, le menu d'indicateurs de code affiche ArrayAppend(array, value). Une fois la virgule suivant array saisie, le menu se met jour et affiche ArrayAppend(array, value). Dans le cas des mthodes d'objet, Dreamweaver affiche un menu regroupant les mthodes dfinies pour l'objet dont vous tapez le nom. Les fonctions reconnues sont stockes dans les fichiers XML du dossier Configuration/CodeHints. Attributs
pattern, doctypes, casesensitive

L'attribut pattern spcifie le nom de la fonction et sa liste d'arguments. S'il est utilis avec des mthodes, l'attribut
pattern dcrit le nom de l'objet et de la mthode, ainsi que les arguments de cette dernire. Avec un nom de fonction, le menu d'indicateurs de code s'affiche lorsque l'utilisateur tape functionname(. Le menu affiche la liste des arguments relatifs la fonction. S'il est utilis avec une mthode d'objet, le menu d'indicateurs de code s'affiche lorsque l'utilisateur tape objectname. (point inclus). Ce menu indique les mthodes qui ont t spcifies pour l'objet. Ensuite, le menu d'indicateurs de code affiche une liste des arguments de la mthode, comme il le fait avec une fonction.

L'attribut doctypes indique que le menu est actif uniquement pour les types de documents spcifis. Cet attribut
permet de spcifier diffrentes listes de noms de fonctions pour ASP-JavaScript (ASP-JS), Java Server Pages (JSP), Macromedia ColdFusion, etc. Vous pouvez spcifier l'attribut doctypes en tant que liste d'ID de types de documents spars par des virgules. Pour obtenir une liste des types de documents de Dreamweaver, consultez le fichier Configuration/Documenttypes/MMDocumentTypes.xml.

L'attribut casesensitive indique si le modle fait la distinction entre les majuscules et les minuscules. Les valeurs
possibles pour l'attribut casesensitive sont true, false ou un sous-ensemble de la liste spare par des virgules spcifie pour l'attribut doctypes. La liste des types de documents vous permet de spcifier si le modle fait la distinction entre majuscules et minuscules pour certains types de documents plutt que d'autres. Par dfaut, la valeur est false si vous omettez cet attribut. Si vous dfinissez la valeur de l'attribut casesensitive sur true, le menu d'indicateurs de code s'affiche uniquement si le texte tap par l'utilisateur correspond exactement au modle spcifi par l'attribut du modle. Si vous dfinissez la valeur de l'attribut casesensitive sur false, le menu s'affiche mme si le modle est en minuscules et le texte en majuscules. Contenu Aucun. Contenant Balise menugroup.

EXTENSION DE DREAMWEAVER CS4 43


Personnalisation du mode Code

Exemple
// function example <function pattern="CreateDate(year, month, day)" DOCTYPES="ColdFusion" /> // object method example <function pattern="application.getAttribute(String name)" DOCTYPES="JSP" />

<method>
Description Cette balise est conue pour le cadre applicatif Spry. Cette balise remplace la balise menu pour la spcification des mthodes d'objet d'un menu contextuel d'indicateurs de code. Lorsque vous tapez un nom de mthode en mode Code, Dreamweaver ouvre un menu de prototypes de mthodes, qui fournit une liste de paramtres pour cette mthode. Il surveille ensuite la squence de paramtres mesure qu'ils sont indiqus. Concernant les mthodes qui n'ont pas de paramtres, Dreamweaver termine l'appel de mthode en ajoutant des parenthses (). L'argument actif s'affiche en gras. Chaque fois que vous tapez une virgule, Dreamweaver met jour le menu de manire afficher l'argument suivant en gras. Dans le cas des mthodes d'objet, Dreamweaver affiche un menu regroupant les mthodes dfinies pour l'objet dont vous tapez le nom. Attributs
pattern, icon, object, source, constructor, static, retType

L'attribut pattern spcifie le nom de la mthode et sa liste d'arguments. Il dcrit galement les noms de l'objet et
la mthode, ainsi que les arguments de la mthode. Le menu affiche la liste des arguments de cette mthode. Le menu des indicateurs de code s'affiche lorsque l'utilisateur tape objectname. (point inclus). Ce menu indique les mthodes qui ont t spcifies pour l'objet. Ensuite, le menu d'indicateurs de code affiche une liste des arguments de la mthode, comme il le fait avec une fonction.

L'attribut icon spcifie l'icne utiliser. L'attribut object fait rfrence au type auquel appartient la commande. Par exemple, type de donnes intgr :
chane ou fichier JavaScript personnalis de type de donnes dfini par l'utilisateur.

L'attribut source fait rfrence l'endroit o il est dfini ou d'o il provient. Par exemple, DOM/Javascript/ custom
file.js.

L'argument constructor est une valeur boolenne. constructor = true fait rfrence la mthode qui construit
l'instance de l'objet ; il est marqu sparment par rapport aux autres mthodes d'objet.

L'argument static est une valeur boolenne. static =


Date.parse(dateString)

true indique que la mthode ne fonctionne pas sur une instance spcifique de l'objet, mais sur le type d'objet proprement dit. Par exemple,

L'attribut retType fait rfrence au type de retour de mthode qui, son tour, peut tre un type d'objet afin de
prendre en charge une cascade d'indicateurs de code. Contenu Aucun. Contenant Balise menu.

EXTENSION DE DREAMWEAVER CS4 44


Personnalisation du mode Code

<parammenu>
Description Utilis pour tout objet (JavaScript) afin de spcifier des indicateurs de paramtre pour les paramtres accepts par la mthode ou la fonction. Attributs
pattern, name, index, type

L'attribut pattern spcifie le ou les caractres qui dclenchent le menu d'indicateurs de code. Cet argument est
requis.

L'attribut name spcifie le nom du paramtre. Cet argument est requis. L'attribut index spcifie le numro d'indice du paramtre qui fait l'objet d'un indicateur (commence zro). Cet
argument est requis.

L'attribut type spcifie le type de donnes. Les types de donnes suivants sont pris en charge :
enumerated (valeur par dfaut), qui donne une liste de valeurs <optionparammenuitem> imbriques afficher. spryDataReferences, qui donne la liste des colonnes de l'ensemble de donnes Spry. cssStyle, qui donne la liste des classes CSS disponibles pour la page. cssId, qui donne la liste des rgles d'ID de slection CSS disponibles pour la page. optionArray, qui donne la liste des valeurs <optionparammenu> et <parammenuitem> afficher (permet de

prendre en charge le paramtre de type tableau d'options). Contenu Aucun. Contenant Balise method ou function.

<parammenuitem>
Description Pour tout objet (JavaScript) afin de spcifier des indicateurs de paramtre pour les paramtres accepts par la mthode ou la fonction. Attributs label, value, icon, {datatype}, object, source

L'attribut label spcifie le nom que Dreamweaver doit afficher. Cet argument est requis. L'attribut value spcifie la valeur que Dreamweaver doit supprimer lorsque l'lment est slectionn dans le menu
d'indicateurs de code. Cet argument est requis.

L'attribut icon spcifie l'icne que Dreamweaver doit utiliser dans le menu des indicateurs de code. Cet argument
est requis.

L'attribut datatype permet de spcifier string, ce qui indique que des guillemets fermants doivent tre ajouts
lorsque l'utilisateur slectionne une valeur dans le menu d'indicateurs de code. Cet argument est facultatif.

EXTENSION DE DREAMWEAVER CS4 45


Personnalisation du mode Code

L'attribut object fait rfrence au type auquel appartient la commande. Par exemple, type de donnes intgr :
chane ou fichier JavaScript personnalis de type de donnes dfini par l'utilisateur.

L'attribut source fait rfrence l'endroit o il est dfini ou d'o il provient. Par exemple, DOM/Javascript/ custom
file.js. Contenu Aucun. Contenant Balise parammenu.

<optionparammenu>
Description Utilis pour tout objet (JavaScript) afin de spcifier des options pour les indicateurs de tableau pour les arguments accepts par la mthode ou la fonction. Un tableau d'options est un argument qui peut comporter des sous-arguments sous la forme option:value. La plupart des objets Spry a recours un argument de tableau d'options pour permettre aux utilisateurs de configurer le comportement d'un objet (par exemple, un ensemble de donnes, un widget ou un effet). Les tableaux d'options se prsentent gnralement sous la forme suivante : {option1: valeur1, option2:
valeur2, option3: valeur3, etc.}

Attributs
pattern, label, value, icon, type

L'attribut pattern spcifie le ou les caractres qui dclenchent le menu d'indicateurs de code. Cet argument est
requis.

L'attribut label spcifie le nom du paramtre. Cet argument est requis. L'attribut value spcifie la valeur du paramtre insrer lorsque l'utilisateur slectionne le conseil de code. Cet
argument est requis.

L'attribut icon spcifie l'icne utiliser. Cet argument est requis. L'attribut type spcifie le type de donnes. Les types de donnes suivants sont pris en charge :
enumerated (valeur par dfaut), qui donne une liste de valeurs optionparammenuitem imbriques afficher. spryDataReferences, qui donne la liste des colonnes de l'ensemble de donnes Spry. cssStyle, qui donne la liste des classes CSS disponibles pour la page. cssId, qui donne la liste des rgles d'ID de slection CSS disponibles pour la page.

Contenu Aucun. Contenant Balise parammenu de type optionArray.

EXTENSION DE DREAMWEAVER CS4 46


Personnalisation du mode Code

<optionparammenuitem>
Description Utilis pour tout objet (JavaScript) afin de spcifier des indicateurs de paramtre pour les paramtres accepts par la mthode ou la fonction. Attributs
label, value, icon, {datatype}

L'attribut label spcifie le nom afficher. Cet argument est requis. L'attribut value spcifie la valeur supprimer lorsque l'lment est slectionn dans le menu d'indicateurs de code.
Cet argument est requis.

L'attribut icon spcifie l'icne utiliser dans le menu d'indicateurs de code. Cet argument est requis. L'attribut datatype permet de spcifier string, ce qui indique que des guillemets fermants doivent tre ajouts
lorsque l'utilisateur slectionne une valeur dans le menu d'indicateurs de code. Cet argument est facultatif. Contenu Aucun. Contenant Balise <optionparammenu>.

<property>
Description Cette balise dcrit les proprits/champs d'un objet et comporte les attributs standard suivants. Attributs label, value, icon, object, source, static, propType, item

L'attribut label correspond la chane affiche dans le menu contextuel de Dreamweaver. L'attribut value correspond la chane insre par Dreamweaver dans le document lorsque vous slectionnez la
commande. Lorsque l'utilisateur slectionne l'lment du menu et appuie sur Entre ou Retour, Dreamweaver remplace tout le texte tap depuis l'affichage du menu. L'utilisateur a tap les caractres correspondant au modle avant l'affichage du menu, si bien que Dreamweaver ne les insre pas une seconde fois.

L'attribut icon (facultatif) spcifie le chemin d'accs un fichier image affich par Dreamweaver sous la forme
d'une icne situe gauche du texte du menu. L'emplacement de ce fichier est dfini par une URL (dossier Configuration).

L'attribut object fait rfrence au type auquel appartient l'lment de menu. Par exemple, type de donnes intgr :
chane ou fichier JavaScript personnalis de type de donnes dfini par l'utilisateur.

L'attribut source fait rfrence l'endroit o il est dfini ou d'o il provient. Par exemple, DOM/Javascript/ custom
file.js.

L'argument static est une valeur boolenne. static =


Number.MAX_VALUE

true indique que la mthode ne fonctionne pas sur une instance spcifique de l'objet, mais sur le type d'objet proprement dit. Par exemple,

EXTENSION DE DREAMWEAVER CS4 47


Personnalisation du mode Code

L'attribut propType fait rfrence au type de proprit qui, son tour, peut tre un type d'objet afin de prendre en
charge une cascade d'indicateurs de proprits. Par exemple,
domElement.innerHTML.<code hints for String type>

L'attribut item fait rfrence au type d'lment lorsque l'attribut propType est du type conteneur de collection.
item spcifie le type de chaque lment dans le conteneur (en supposant qu'il s'agisse d'un ensemble homogne, c'est--dire un ensemble d'lments du mme type).

Contenu Aucun. Contenant Balise menu.

<event>
Description Cette balise dcrit les vnements d'un objet et comporte les attributs standard suivants. Attributs label, icon, source, object

L'attribut label spcifie le nom de l'vnement. L'attribut icon spcifie le chemin vers un fichier d'image que Dreamweaver affiche en tant qu'icne ct du texte
du menu.

L'attribut source fait rfrence l'endroit o il est dfini ou d'o il provient. L'attribut object fait rfrence au type auquel appartient l'lment de menu.
Contenant Balise menu. Exemple
<event label="onblur" source="DOM 1&amp;2" icon="shared/mm/images/codeHintEvent.gif"/>

A propos de la coloration du code


Dreamweaver permet de personnaliser ou d'tendre les modles de coloration affichs en mode Code de manire ajouter de nouveaux mots cls un modle ou ajouter des modles de coloration du code correspondant de nouveaux types de documents. Par exemple, si vous dveloppez des fonctions JavaScript dans le script ct client, vous pouvez ajouter le nom de ces fonctions la section des mots cls de manire les afficher dans la couleur indique dans la bote de dialogue Prfrences. De mme, si vous dveloppez un nouveau langage de programmation pour un serveur d'application et que vous souhaitez distribuer un nouveau type de document dans le but d'aider les utilisateurs de Dreamweaver l'inclure dans le processus de cration de pages, vous pouvez ajouter un modle de coloration du code correspondant ce type de document.

EXTENSION DE DREAMWEAVER CS4 48


Personnalisation du mode Code

Dreamweaver contient la fonction JavaScript dreamweaver.reloadCodeColoring() permettant de recharger les fichiers XML de coloration du code susceptibles d'avoir t modifis manuellement. Pour plus d'informations sur cette fonction, voir le Guide des API de Dreamweaver. Pour mettre jour un modle de coloration du code ou ajouter un nouveau modle, vous devez modifier les fichiers de dfinition de coloration du code.

Coloration du code des fichiers


Dreamweaver dfinit les styles et les modles de coloration du code dans des fichiers XML se trouvant dans le dossier Configuration/CodeColoring. Un fichier de style de coloration du code dfinit le style des champs indiqus dans les dfinitions de syntaxe. Le nud racine est <codeColors>. Un fichier de modle de coloration du code dfinit la syntaxe de coloration du code ; le nud racine est <codeColoring>. Le fichier de style de coloration du code de Dreamweaver est Colors.xml. Les fichiers de syntaxe de coloration du code de Dreamweaver sont CodeColoring.xml, ASP JavaScript.xml, ASP VBScript.xml, ASP.NET CSharp.xml et ASP.NET VB.xml. L'extrait du fichier Colors.xml ci-dessous illustre la hirarchie de balises dans un fichier de style de coloration du code :

Les couleurs sont indiques sous la forme de valeurs hexadcimales rouge-vert-bleu (RVB). Par exemple, l'instruction
text="009999" figurant dans le code XML ci-dessus assigne une couleur bleu-vert (sarcelle) l'ID "CodeColor_JavascriptNative".

EXTENSION DE DREAMWEAVER CS4 49


Personnalisation du mode Code

L'extrait du fichier codeColoring.xml ci-dessous illustre la hirarchie de balises dans un fichier de modle de coloration du code ainsi que la relation entre le fichier de styles de couleur et le modle de couleur :

Notez que les balises syntaxColor et tagColor du fichier Colors.xml assignent des valeurs de couleur et de style une valeur de chane id. La valeur id permet alors d'assigner un style une balise scheme dans le fichier CodeColoring.xml. Par exemple, l'id de la balise defaultTag figurant dans l'extrait CodeColoring.xml est "CodeColor_HTMLComment". Dans le fichier Colors.xml, la valeur text= attribue la valeur id de "CodeColor_HTMLComment" est "#999999", c'est--dire gris. Dreamweaver comporte les modles de coloration du code suivants : Default, HTML, JavaScript, ASP_JavaScript, ASP_VBScript, JSP et ColdFusion. Le modle par dfaut possde une valeur id gale "Text". Dreamweaver l'utilise pour les types de documents qui ne possdent pas de modle de coloration du code dfini. Un fichier de coloration du code contient les balises suivantes, dcrites ci-dessous :
scheme, blockEnd, blockStart, brackets, charStart, charEnd, charEsc, commentStart, commentEnd, cssImport/, cssMedia/, cssProperty/, cssSelector/, cssValue/, defaultAttribute, defaultTag, defaultText/, endOfLineComment, entity/, functionKeyword, idChar1, idCharRest, ignoreCase, ignoreMMTParams, ignoreTags, isLocked, keyword, keywords, numbers/, operators, regexp, sampleText, searchPattern, stringStart, stringEnd, stringEsc, tagGroup

<scheme>
Description La balise scheme indique la coloration du code assigne un bloc de texte de code. Un fichier peut contenir plusieurs modles spcifiant diffrentes colorations pour diffrents langages de script ou de balise. Chaque modle possde une priorit qui permet d'imbriquer un bloc de texte correspondant un modle dans un bloc de texte correspondant un autre modle. Depuis Dreamweaver CS4, le filtre Coloration du code fusionne les balises <scheme> possdant le mme id. Toutes les balises qui ne sont pas en conflit sont ajoutes au mme modle (<scheme>). En cas de conflit, c'est le modle possdant la date de fichier la plus rcente qui l'emporte.

EXTENSION DE DREAMWEAVER CS4 50


Personnalisation du mode Code

Attributs name, id, priority, {doctypes}

name="nom_modle" Chane attribuant un nom au modle. Le nom du modle s'affiche dans la bote de dialogue

Modifier le modle de coloration de Dreamweaver. Dreamweaver affiche une combinaison de nom de modle et de champ, par exemple HTML Comment. Si vous n'attribuez pas de nom, les champs du modle n'apparaissent pas dans la bote de dialogue Modifier le modle de coloration. Pour plus d'informations sur la bote de dialogue Modifier le modle de coloration, voir Modification des modles la page 68.

id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe.
priority="chane" Valeurs comprises entre 1 et 99. La priorit la plus haute est 1. Indique la priorit d'un modle. Les blocs se trouvant au sein de blocs dont la priorit est suprieure sont ignors ; les blocs se trouvant au sein de blocs dont la priorit est infrieure ou gale sont prioritaires. Si vous n'indiquez pas de priorit, la valeur par dfaut est de 50. doctypes="liste_doc" Facultatif. Indique une liste des types de documents, spars par des virgules, auxquels s'applique le modle de coloration du code. Cette valeur est indispensable pour la rsolution des conflits impliquant diffrents blocs de dbut et de fin dont les extensions sont identiques.

Contenu
blockEnd, blockStart, brackets, charStart, charEnd, charEsc, commentStart, commentEnd, cssProperty/, cssSelector/, cssValue/, defaultAttribute, defaultText/, endOfLineComment, entity/, functionKeyword, idChar1, idCharRest, ignoreCase, ignoreMMTParam, ignoreTags, keywords, numbers/, operators, regexp, sampleText, searchPattern, stringStart, stringEnd, stringEsc, urlProtocol, urlProtocols

Contenant Balise codeColoring. Exemple


<scheme name="Text" id="Text" doctypes="Text" priority="1">

<blockEnd>
Description Facultatif. Texte dlimitant la fin du bloc de texte de ce modle. Les balises blockEnd et blockStart doivent tre quilibres et leur combinaison doit tre unique. La casse des valeurs indiques n'est pas prise en compte. La valeur de la balise blockEnd peut tre compose d'un seul caractre. Vous pouvez crer plusieurs instances de cette balise. Pour plus d'informations sur les chanes blockEnd, voir Caractres gnriques la page 65. Attributs Aucun. Exemple
<blockEnd><![CDATA[--->]]></blockEnd>

EXTENSION DE DREAMWEAVER CS4 51


Personnalisation du mode Code

<blockStart>
Description Facultatif. Spcifie uniquement si le modle de coloration peut tre imbriqu dans un autre modle de coloration. Les balises blockEnd et blockStart doivent tre quilibres et leur combinaison doit tre unique. La casse des valeurs indiques n'est pas prise en compte. La valeur de la balise blockStart doit comporter au minimum deux caractres. Vous pouvez crer plusieurs instances de cette balise. Pour plus d'informations sur les chanes blockStart, voir Caractres gnriques la page 65. Pour plus d'informations sur l'attribut blockStartscheme, voir Coloration des dlimiteurs de bloc de modle la page 62. Attributs canNest, doctypes, id, name, scheme

canNestIndique si le modle peut s'imbriquer. Les valeurs sont Yes ou No. La valeur par dfaut est No. doctypes="type_doc1, type_doc2, " Obligatoire. Indique une liste des types de documents, spars par des

virgules, dans lesquels vous pouvez imbriquer ce modle de coloration du code. Les types de documents sont dfinis dans le fichier Configuration/Document Types/MMDocumentTypes.xml de Dreamweaver.

id="id_chane" Obligatoire lorsque scheme="customText". Chane d'identificateur permettant de mapper la couleur et le style cet lment de syntaxe. name="nom_affich"Chane apparaissant dans la bote de dialogue Modifier le modle de coloration lorsque scheme="customText". schemeObligatoire. Dfinit la coloration des chanes blockStart et blockEnd. Pour plus d'informations sur les

valeurs possibles de l'attribut scheme , voir Coloration des dlimiteurs de bloc de modle la page 62. Exemple
<blockStart doctypes="ColdFusion,CFC" scheme="innerText" canNest="Yes"><![CDATA[<!---]]> </blockStart>

<brackets>
Description Liste des caractres reprsentant des crochets. Attributs name, id

name="nom_crochet" Chane assignant un nom la liste des crochets. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<brackets name="Bracket" id="CodeColor_JavaBracket"><![CDATA[{[()]}]]> </brackets>

EXTENSION DE DREAMWEAVER CS4 52


Personnalisation du mode Code

<charStart>
Description Contient une chane de texte reprsentant le dlimiteur du dbut d'un caractre. Les balises charStart et charEnd doivent tre quilibres. Vous pouvez indiquer plusieurs paires de balises charStart charEnd. Attributs Aucun. Exemple
<charStart><![CDATA[']]></charStart>

<charEnd>
Description Contient une chane de texte reprsentant le dlimiteur de fin d'un caractre. Les balises charStart et charEnd doivent tre quilibres. Vous pouvez indiquer plusieurs paires de balises charStart charEnd. Attributs Aucun. Exemple
<charEnd><![CDATA[']]></charEnd>

<charEsc>
Description Contient une chane de texte reprsentant un caractre d'chappement. Vous pouvez insrer plusieurs balises charEsc. Attributs Aucun. Exemple
<charEsc><![CDATA[\]]></charEsc>

<commentStart>
Description Chane de texte dlimitant le dbut d'un bloc de commentaire. Les balises commentStart et commentEnd doivent tre quilibres. Vous pouvez indiquer plusieurs paires de balises commentStart/commentEnd. Attributs Aucun. Exemple
<commentStart><![CDATA[<%--]]></commentStart>

EXTENSION DE DREAMWEAVER CS4 53


Personnalisation du mode Code

<commentEnd>
Description Chane de texte dlimitant la fin d'un bloc de commentaire. Les balises commentStart et commentEnd doivent tre quilibres. Vous pouvez indiquer plusieurs paires de balises commentStart/commentEnd. Attributs Aucun. Exemple
<commentEnd><![CDATA[--%>]]></commentEnd>

<cssImport/>
Description Balise vide indiquant la rgle de coloration du code de la fonction @import de l'lment style dans une feuille de style CSS. Attributs name, id

name="nom_importCSS" Chane assignant un nom la fonction @import CSS. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<cssImport name="@import" id="CodeColor_CSSImport" />

<cssMedia/>
Description Balise vide indiquant la rgle de coloration du code de la fonction @media de l'lment style dans une CSS. Attributs
name, id

name="nom_mdiaCSS" Chane assignant un nom la fonction @media CSS. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<cssMedia name="@media" id="CodeColor_CSSMedia" />

<cssProperty/>
Description Balise vide indiquant les rgles CSS et regroupant des attributs de coloration du code.

EXTENSION DE DREAMWEAVER CS4 54


Personnalisation du mode Code

Attributs name, id

name="nom_propritCSS" Chane assignant un nom la proprit CSS. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Prfrence de couleur de code Proprit CSS Exemple


<cssProperty name="Property" id="CodeColor_CSSProperty" />

<cssSelector/>
Description Balise vide indiquant les rgles CSS et regroupant des attributs de coloration du code. Attributs name, id

name="nom_slecteurCSS" Chane assignant un nom au slecteur CSS. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<cssSelector name="Selector" id="CodeColor_CSSSelector" />

<cssValue/>
Description Balise vide indiquant les rgles CSS et regroupant des attributs de coloration du code. Attributs name, id

name="nom_valeurCSS" Chane assignant un nom la valeur CSS. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<cssValue name="Value" id="CodeColor_CSSValue" />

EXTENSION DE DREAMWEAVER CS4 55


Personnalisation du mode Code

<defaultAttribute>
Description Facultatif. Cette balise s'applique uniquement la syntaxe de balise (c'est--dire une syntaxe pour laquelle ignoreTags="No"). Si cette balise figure dans le code, tous les attributs de balise sont colors suivant le style qui lui est assign. Si ce n'est pas le cas, la couleur des attributs est identique celle de la balise correspondante. Attributs
name Chane assignant un nom l'attribut par dfaut.

Exemple
<defaultAttribute name="Attribute"/>

<defaultTag>
Description Cette balise permet de spcifier la couleur et le style par dfaut des balises d'un modle. Attributs name, id

name="nom_affich" Chane affiche par Dreamweaver dans l'diteur de coloration du code. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<defaultTag name="Other Tags" id="CodeColor_HTMLTag" />

<defaultText/>
Description Facultatif. Si cette balise figure dans le code, les chanes de texte dfinies par toute autre balise sont colores suivant le style assign cette balise. Si ce n'est pas le cas, le texte est de couleur noire. Attributs name, id

name="nom_slecteurCSS" Chane assignant un nom au slecteur CSS. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<defaultText name="Text" id="CodeColor_TextText" />

EXTENSION DE DREAMWEAVER CS4 56


Personnalisation du mode Code

<endOfLineComment>
Description Chane de texte dlimitant le dbut d'un commentaire allant jusqu' la fin de la ligne actuelle. Vous pouvez insrer plusieurs balises endOfLineComment/endOfLineComment. Attributs Aucun. Exemple
<endOfLineComment><![CDATA[//]]></endOfLineComment>

<entity/>
Description Balise vide indiquant que les caractres spciaux HTML doivent tre reconnus et contenir des attributs de coloration. Attributs name, id

name="nom_entit" Chane assignant un nom l'entit. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<entity name="Special Characters" id="CodeColor_HTMLEntity" />

<functionKeyword>
Description Identifie les mots cls dfinissant une fonction. Ces mots cls permettent Dreamweaver de naviguer dans le code. Vous pouvez insrer plusieurs balises functionKeyword. Attributs name, id

name="nom_motclFonction" Chane assignant un nom au bloc functionKeyword. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<functionKeyword name="Function Keyword" id="CodeColor_JavascriptFunction">function</functionKeyword>

<idChar1>
Description Liste de chacun des caractres identifiables par Dreamweaver comme premier caractre d'un identifiant.

EXTENSION DE DREAMWEAVER CS4 57


Personnalisation du mode Code

Attributs name, id

name="nom_carID1" Chane assignant un nom la liste des caractres d'identifiant. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<idChar1>_$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</idChar1>

<idCharRest>
Description Liste de caractres devant tre identifis comme les autres caractres de l'identificateur. Si la balise idChar1 n'est pas spcifie, tous les caractres de l'identifiant sont valids en fonction de cette liste. Attributs name, id

name="nom_restCarID" Chane assignant un nom au bloc stringStart. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<idCharRest name="Identifier" id="CodeColor_JavascriptIdentifier"> _$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789</idCharRest>

<ignoreCase>
Description Indique si la casse des caractres doit tre ignore lors de la comparaison des expressions et des mots cls. Les valeurs sont Yes ou No. La valeur par dfaut est Yes. Attributs Aucun. Exemple
<ignoreCase>Yes</ignoreCase>

<ignoreMMTParams>
Description Indique si une couleur particulire doit tre attribue la balise MMTInstance:Param, <!-- InstanceParam ou <!- #InstanceParam. Les valeurs sont Yes et No ; la valeur par dfaut est Yes. Cette balise assure la coloration approprie des pages utilisant des modles. Attributs Aucun.

EXTENSION DE DREAMWEAVER CS4 58


Personnalisation du mode Code

Exemple
<ignoreMMTParams>No</ignoreMMTParams>

<ignoreTags>
Description Indique si les balises doivent tre ignores. Les valeurs sont Yes et No ; la valeur par dfaut est Yes. Rgle sur No lorsque la syntaxe concerne un langage de marquage de balises dlimit par < et >. Rglez la valeur sur Yes si la syntaxe correspond un langage de programmation. Attributs Aucun. Exemple
<ignoreTags>No</ignoreTags>

<isLocked>
Description Indique si le texte correspondant au modle est autoris tre modifi en mode Code. Les valeurs sont Yes et No. La valeur par dfaut est No. Attributs Aucun. Exemple
<isLocked>Yes</isLocked>

<keyword>
Description Chane de texte dfinissant un mot cl. Vous pouvez insrer plusieurs balises keyword. Il n'existe aucune restriction lie au premier caractre d'un mot cl ; en revanche, les caractres suivants doivent tre a-z, A-Z, 0-9, _, $ ou @. La couleur du code est spcifie par les balises contenant keyword. Attributs Aucun. Exemple
<keyword>.getdate</keyword>

<keywords>
Description Liste des mots cls correspondant au type spcifi dans l'attribut category. Vous pouvez insrer plusieurs balises keywords.

EXTENSION DE DREAMWEAVER CS4 59


Personnalisation du mode Code

Attributs name, id

name="nom_mots_cls" Chane assignant un nom la liste des mots cls. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Contenu
<keyword></keyword>

Exemple
<keywords name="Reserved Keywords" id="CodeColor_JavascriptReserved"> <keyword>break</keyword> <keyword>case</keyword> </keywords>

<numbers/>
Description Balise vide spcifiant les chiffres devant tre reconnus et contenant des attributs de couleur. Attributs name, id

name="nom_chiffre" Chane assignant un nom la balise numbers. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<numbers name="Number" id="CodeColor_CFScriptNumber" />

<oprateurs>
Description Liste des caractres devant tre reconnus comme oprateurs. Attributs name, id

name="nom_oprateur" Chane assignant un nom la liste des caractres oprateurs. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe. Exemple
<operators name="Operator" id="CodeColor_JavaOperator"><![CDATA[+*/%<>!?:=&|^~]]></operators>

EXTENSION DE DREAMWEAVER CS4 60


Personnalisation du mode Code

<regexp>
Description Spcifie une liste de balises searchPattern. Attributs name, id, delimiter, escape

name="nom_dbutChane" Chane assignant un nom la liste des chanes de modle de recherche. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe.
delimiterCaractre ou chane situ au dbut et la fin d'une expression rgulire. escape Caractre ou chane signalant le traitement de caractres spciaux, galement appel caractre ou chane d'chappement.

Contenu
<searchPattern></searchPattern>

Exemple
<regexp name="RegExp" id="CodeColor_JavascriptRegexp" delimiter="/" escape="\\"> <searchPattern><![CDATA[(\s*/\e*\\/]]></searchPattern> <searchPattern><![CDATA[=\s*/\e*\\/]]></searchPattern> </regexp>

<sampleText>
Description Texte servant la reprsentation dans la fentre Aperu de la bote de dialogue Modifier le modle de coloration. Pour plus d'informations sur la bote de dialogue Modifier le modle de coloration, voir Modification des modles la page 68. Attributs
doctypes

doctypes="doc_type1, doc_type2,..." Types de documents pour lesquels cet chantillon apparat.

Exemple
<sampleText doctypes="JavaScript"><![CDATA[/* JavaScript */ function displayWords(arrayWords) { for (i=0; i < arrayWords.length(); i++) { // inline comment alert("Word " + i + " is " + arrayWords[i]); } } var tokens = new Array("Hello", "world"); displayWords(tokens); ]]></sampleText>

EXTENSION DE DREAMWEAVER CS4 61


Personnalisation du mode Code

<searchPattern>
Description Chane de caractres dfinissant un modle de recherche rgulier l'aide des caractres gnriques pris en charge. Vous pouvez insrer plusieurs balises searchPattern. Attributs Aucun. Contenant Balise regexp. Exemple
<searchPattern><![CDATA[(\s*/\e*\\/]]></searchPattern>

<stringStart>
Description Ces balises contiennent une chane de texte reprsentant le dlimiteur du dbut d'une chane. Les balises stringStart et stringEnd doivent tre quilibres. Vous pouvez indiquer plusieurs paires de balises stringStart stringEnd. Attributs name, id, wrap

name="nom_stringStart" Chane assignant un nom au bloc stringStart. id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe.
wrap="true" ou "false". Dfinit la reconnaissance ou non des chanes de texte places sur la ligne suivante. La valeur par dfaut est "true".

Exemple
<stringStart name="Attribute Value" id="CodeColor_HTMLString"><![CDATA["]]></stringStart>

<stringEnd>
Description Contient une chane de texte reprsentant le dlimiteur de fin d'une chane de code. Les balises stringStart et stringEnd doivent tre quilibres. Vous pouvez indiquer plusieurs paires de balises stringStart stringEnd. Attributs Aucun. Exemple
<stringEnd><![CDATA["]]></stringEnd>

EXTENSION DE DREAMWEAVER CS4 62


Personnalisation du mode Code

<stringEsc>
Description Contient une chane de texte reprsentant le dlimiteur du caractre d'chappement d'une chane. Vous pouvez insrer plusieurs balises stringEsc. Attributs Aucun. Exemple
<stringEsc><![CDATA[\]]></stringEsc>

<tagGroup>
Description Cette balise regroupe une ou plusieurs balises auxquelles vous pouvez assigner une couleur et un style uniques. Attributs id, name, taglibrary, tags

id="id_chane" Obligatoire. Chane d'identificateur permettant de mapper la couleur et le style cet lment de

syntaxe.
name="nom_affich" Chane affiche par Dreamweaver dans l'diteur de coloration du code. taglibrary="id_bibliothque_balises" Identificateur de la bibliothque de balises laquelle le groupe

appartient.
tags="liste_balise" Balise ou liste de balises spares par des virgules comprenant le groupe de balises.

Exemple
<tagGroup name="HTML Table Tags" id="CodeColor_HTMLTable" taglibrary="DWTagLibrary_html" tags="table,tbody,td,tfoot,th,thead,tr,vspec,colw,hspec" />

Coloration des dlimiteurs de bloc de modle


L'attribut de modle blockStart dtermine la coloration des chanes de dbut et de fin de bloc ou des dlimiteurs de bloc. Les valeurs valides pour l'attribut blockStart sont rpertories ci-aprs. Remarque : Ne pas confondre l'attribut blockStart.scheme et la balise scheme.

innerText
Cette valeur indique Dreamweaver que les dlimiteurs de bloc doivent avoir la mme couleur que le texte par dfaut du modle qu'ils renferment. Le modle Modle illustre l'effet de ce modle. Le modle Modle correspond des blocs de code en lecture seule. La couleur grise indique qu'il est impossible de les modifier. Les dlimiteurs de bloc, savoir les chanes <!#EndEditable --> et <!-- #BeginEditable "..." -->, sont aussi de couleur grise car, il est galement impossible de les modifier.

EXTENSION DE DREAMWEAVER CS4 63


Personnalisation du mode Code

Exemple de code
<!-- #EndEditable --> <p><b><font size="+2">header</font></b></p> <!-- #BeginEditable "test" --> <p>Here's some editable text </p> <p>&nbsp;</p> <!-- #EndEditable -->

Exemple
<blockStart doctypes="ASP-JS,ASP-VB, ASP.NET_CSharp, ASP.NET_VB, ColdFusion,CFC, HTML, JSP,LibraryItem,PHP_MySQL" scheme="innerText"><![CDATA[<!--\s*#BeginTemplate]]> </blockStart>

customText
Cette valeur indique Dreamweaver qu'une couleur personnalise doit tre applique aux dlimiteurs. Exemple de code Les dlimiteurs de bloc de script PHP, qui apparaissent en rouge, illustrent l'effet de la valeur customText :
<?php if ($loginMsg <> "") echo $loginMsg; ?>

Exemple
<blockStart name="Block Delimiter" id="CodeColor_JavaBlock" doctypes="JSP" scheme="customText"><![CDATA[<%]]></blockStart>

outerTag
La valeur outerTag indique que les balises blockStart et blockEnd sont des balises part entire et que Dreamweaver doit les colorer comme des balises du modle qui les entoure. Le modle JavaScript, dans lequel les chanes <script> et </script> correspondent aux balises blockStart et
blockEnd, illustre cette valeur. Ce modle correspond aux blocs de code JavaScript, dans lequel les balises ne sont pas

reconnues; les dlimiteurs doivent donc prendre la coloration du modle qui les entoure. Exemple de code
<script language="JavaScript"> // comment if (true) window.alert("Hello, World"); </script>

Exemple
<blockStart doctypes="PHP_MySQL" scheme="outerTag"> <![CDATA[<script\s+language="php">]]></blockStart>

innerTag
Cette valeur est similaire la valeur outerTag ; la seule diffrence est que la coloration provient du modle se trouvant l'intrieur des dlimiteurs. Ceci s'applique actuellement la balise html.

EXTENSION DE DREAMWEAVER CS4 64


Personnalisation du mode Code

nameTag
Cette valeur indique que la chane blockStart correspond au dbut d'une balise, que la chane blockEnd correspond la fin d'une balise et que ces dlimiteurs doivent tre colors suivant les paramtres de balise du modle. Ce type de modle affiche les balises pouvant tre imbriques dans d'autres balises (par exemple, la balise cfoutput). Exemple de code
<input type="text" name="zip" <cfif newRecord IS "no"> <cfoutput query="employee"> Value="#zip#" </cfoutput> </cfif> >

Exemple
<blockStart doctypes="ColdFusion,CFC" scheme="nameTag"> <![CDATA[<cfoutput\n]]></blockStart>

nameTagScript
Cette valeur est identique au modle nameTag ; cependant, son contenu se compose de script, par exemple, des instructions ou des expressions d'assignation, par opposition aux paires d'attributs name=value. Ce type de modle affiche uniquement les balises contenant du script (par exemple, les balises ColdFusion cfset, cfif et cfifelse) et pouvant tre imbriques au sein d'autres balises. Exemple de code Voir l'exemple illustrant nameTag la page 64. Exemple
<blockStart doctypes="ColdFusion,CFC" scheme="nameTagScript"><![CDATA[<cfset\n]]></blockStart>

Traitement des modles


Dreamweaver comporte trois modes de base de coloration du code : mode CSS, mode Script et mode Balises. Dans chaque mode, Dreamweaver applique uniquement la coloration du code certains champs. Le tableau ci-dessous rpertorie les champs auxquels s'applique la coloration du code pour chaque mode.
Champ defaultText defaultTag defaultAttribute comment string cssProperty cssSelector cssValue X X X X X CSS Balises X X X X X X X Script X

EXTENSION DE DREAMWEAVER CS4 65


Personnalisation du mode Code

Champ character function keyword identifier number operator brackets keywords

CSS

Balises X

Script X X X

X X

X X

X X

Afin de faciliter le processus de dfinition de modles, Dreamweaver permet de spcifier des caractres gnriques et des caractres d'chappement.

Caractres gnriques
La liste ci-dessous rpertorie les caractres gnriques pris en charge dans Dreamweaver, les chanes permettant de les spcifier et une description de leur utilisation.
Caractre gnrique Chane Description d'chappe ment \* Ignore tous les caractres de la rgle jusqu' la dtection du caractre suivant le caractre gnrique. Par exemple, <MMTInstance:Editable name="\*"> permet de dtecter toutes les balises de ce type pour lesquelles l'attribut name est spcifi.

Caractre gnrique

EXTENSION DE DREAMWEAVER CS4 66


Personnalisation du mode Code

Caractre gnrique

Chane Description d'chappe ment \e*x


x correspond au caractre d'chappement.

Caractre gnrique avec caractre d'chappement

Mme utilisation que le caractre gnrique, avec possibilit de spcifier un caractre d'chappement. Le caractre suivant le caractre d'espacement est ignor. Le caractre suivant le caractre gnrique peut ainsi apparatre dans une chane sans correspondre au critre spcifi pour l'arrt du traitement du caractre gnrique. Par exemple, /\e*\\/ permet de reconnatre une expression JavaScript rgulire commenant et terminant par une barre oblique (/) et pouvant contenir des barres obliques prcdes d'une barre oblique inverse (\). La barre oblique inverse correspond au caractre d'chappement de coloration du code ; ds lors, vous devez la prcder d'une barre oblique inverse lorsque vous la spcifiez dans du code XML color.

Espace blanc facultatif

\s*

Permet de reconnatre zro ou plusieurs espaces vides ou les caractres de nouvelle ligne. Par exemple, <!--\s*#include permet de reconnatre des directives d'inclusion ASP, que l'expression #include soit prcde ou non d'espace blanc, car les deux cas sont valides. Les caractres gnriques espace blanc correspondent toutes les combinaisons d'espace blanc et de caractres de nouvelle ligne.

Espace blanc obligatoire \s+

Permet de reconnatre un ou plusieurs espaces vides ou les caractres de nouvelle ligne. Par exemple, <!--#include\s+virtual permet de reconnatre des directives d'inclusion ASP contenant toutes les combinaisons d'espace blanc entre les expressions #include et virtual. Un espace blanc doit obligatoirement sparer ces deux expressions, mais il peut correspondre toutes les combinaisons de caractres d'espace blanc valides. Les caractres gnriques espace blanc correspondent toutes les combinaisons d'espace blanc et de caractres de nouvelle ligne.

Caractres d'chappement
La liste ci-dessous rpertorie les caractres d'chappement pris en charge dans Dreamweaver, les chanes permettant de les spcifier et une description de leur utilisation.
Caractre d'chappement Chane d'chapp ement \\ Description

Barre oblique inverse

La barre oblique inverse (\) correspond au caractre d'chappement de coloration du code ; elle doit donc tre ignore pour tre spcifie dans une rgle de coloration du code. Ce caractre d'chappement correspond tous les caractres non visibles, l'exception de ceux correspondant au caractre de nouvelle ligne, comme les espaces et les tabulations. Les caractres gnriques espace blanc facultatif et espace blanc obligatoire correspondent la fois aux caractres d'espace blanc et ceux de nouvelle ligne.

Espace blanc

\s

Nouvelle ligne

\n

Ce caractre d'chappement correspond aux caractres de nouvelle ligne (galement appels sauts de ligne) et aux retours chariot.

EXTENSION DE DREAMWEAVER CS4 67


Personnalisation du mode Code

Longueur maximale de chane


La longueur maximale autorise pour les chanes de donnes est de 100 caractres. Par exemple, la balise blockEnd suivante contient un caractre gnrique.
<blockEnd><![CDATA[<!--\s*#BeginEditable\s*"\*"\s*-->]]></blockEnd>

En partant du principe que les chanes de caractre gnrique espace blanc facultatif (\s*) correspondent un seul espace, gnr automatiquement par Dreamweaver, la chane de donnes comprend 26 caractres, plus une chane de caractre gnrique (\*) correspondant au nom.
<!-- #BeginEditable "\*" -->

Le nom de rgion modifiable peut donc comporter jusqu' 74 caractres, c'est--dire 100 caractres (longueur maximale) moins 26.

Priorit des modles


Dreamweaver applique la coloration de la syntaxe de texte en mode Code l'aide de l'algorithme suivant :
1 Dreamweaver dtermine le modle de syntaxe initial en fonction du type de document du fichier actuel. Le type de

document du fichier est dtermin en fonction de l'attribut scheme.documentType. Si aucun type n'est dtect, le modle pour lequel scheme.documentType = "Text" est utilis.
2 Les modles peuvent tre imbriqus s'ils comportent des paires blockStartblockEnd. Tous les modles

pouvant tre imbriqus et pour lesquels l'extension du fichier actuel est rpertorie dans l'un des attributs blockStart.doctypes sont activs pour le fichier actuel; les autres modles sont dsactivs. Remarque : Toutes les combinaisons blockStart/blockEnd doivent tre uniques. Les modles peuvent s'imbriquer au sein d'un autre modle condition que scheme.priority soit suprieure ou gale au modle extrieur. Si la priorit est la mme, le modle s'imbrique uniquement au niveau du corps du modle extrieur. Par exemple, le bloc <script>...</script> peut uniquement s'imbriquer dans le bloc <html>...</html> contenant des balises lgales ; il ne peut donc pas s'imbriquer au sein d'une balise, d'un attribut, d'une chane, d'un commentaire, etc. Les modles dont la priorit est suprieure au modle extrieur peuvent s'imbriquer quasiment tous les niveaux du modle extrieur. Par exemple, le bloc <html>...</html> peut non seulement s'imbriquer au niveau du corps du bloc <%...%>, mais galement au sein d'une balise, d'un attribut, d'une chane, d'un commentaire, etc. Le niveau d'imbrication maximum est de 4.
3 Lorsqu'il recherche des chanes blockStart, Dreamweaver utilise toujours la correspondance la plus longue. 4 Une fois la chane blockEnd atteinte pour le modle actuel, la coloration de syntaxe revient au niveau o la chane
blockStart est dtecte. Par exemple, si un bloc <%...%> est dtect au sein d'une chane HTML, la coloration

reprend avec la couleur de la chane HTML.

EXTENSION DE DREAMWEAVER CS4 68


Personnalisation du mode Code

Modification des modles


Vous pouvez modifier les styles d'un modle de coloration du code soit en modifiant le fichier de coloration du code ou en slectionnant la catgorie Coloration du code dans la bote de dialogue Prfrences de Dreamweaver (voir illustration ci-dessous) :

Les paramtres de couleur et de style des champs susceptibles d'apparatre plusieurs fois (par exemple, stringStart) doivent tre indiqus uniquement pour la premire balise. Si vous rpartissez les paramtres de couleur et de style sur plusieurs balises et que vous les modifiez ultrieurement dans la bote de dialogue Prfrences, vous perdrez vos donnes. Remarque : Adobe recommande de crer des copies de sauvegarde de tous les fichiers XML avant d'apporter vos modifications. Vrifiez toutes les modifications apportes manuellement avant de modifier les paramtres de style et de couleur dans la bote de dialogue Prfrences. Si vous modifiez un fichier XML non valide dans la bote de dialogue Prfrences, vous perdrez vos donnes. Pour modifier les styles d'un modle dans la catgorie Coloration du code de la bote de dialogue Prfrences, doublecliquez sur un type de document ou cliquez sur le bouton Modifier le modle de coloration ; la bote de dialogue Modifier le modle de coloration s'affiche.

Pour modifier le style d'un lment en particulier, slectionnez-le dans la liste Styles pour. Le volet Styles pour rpertorie les champs du modle modifi ainsi que les modles susceptibles d'apparatre sous forme de bloc au sein de ce modle. Par exemple, si vous modifiez le modle HTML, les champs des blocs CSS et JavaScript apparaissent galement.

EXTENSION DE DREAMWEAVER CS4 69


Personnalisation du mode Code

Les champs de modle rpertoris correspondent aux champs dfinis dans le fichier XML. La valeur de l'attribut scheme.name prcde chacun des champs rpertoris dans le volet Styles pour. Les champs sans nom ne sont pas rpertoris. Outre la coloration du code, le style ou le format d'un lment dsigne la mise en caractre gras, la mise en italique, le soulignement et la couleur d'arrire-plan. Une fois l'lment slectionn dans le volet Styles pour, vous pouvez modifier toutes ces caractristiques de style. La zone Aperu affiche un chantillon de texte auquel s'appliquent les paramtres indiqus. L'chantillon est dfini dans le paramtre sampleText du modle. Slectionnez un lment dans la zone Aperu pour modifier la slection de la liste Style pour. Si vous modifiez les paramtres d'un lment d'un modle, Dreamweaver consigne la valeur dans le fichier de coloration et remplace le paramtre d'origine. Lorsque vous cliquez sur OK, Dreamweaver actualise automatiquement toutes les modifications de coloration du code.

Exemples de coloration du code


Les exemples de coloration du code ci-dessous illustrent les modles de coloration du code d'un document de style en cascade et d'un document JavaScript. Par souci de concision, les listes de mots cls de l'exemple JavaScript sont abrges. Coloration du code CSS
<scheme name="CSS" id="CSS" doctypes="CSS" priority="50"> <ignoreCase>Yes</ignoreCase> <ignoreTags>Yes</ignoreTags> <blockStart doctypes="ASP-JS,ASP-VB,ASP.NET_CSharp,ASP.NET_VB,ColdFusion, CFC,HTML,JSP,LibraryItem,DWTemplate,PHP_MySQL" scheme="outerTag"> <![CDATA[<style>]]></blockStart> <blockEnd><![CDATA[</style>]]></blockEnd> <blockStart doctypes="ASP-JS,ASP-VB,ASP.NET_CSharp,ASP.NET_VB,ColdFusion, CFC,HTML,JSP,LibraryItem,DWTemplate,PHP_MySQL" scheme="outerTag"> <![CDATA[<style\s+\*>]]></blockStart> <blockEnd><![CDATA[</style>]]></blockEnd> <commentStart name="Comment" id="CodeColor_CSSComment"><![CDATA[ /*]]></commentStart> <commentEnd><![CDATA[*/]]></commentEnd> <endOfLineComment><![CDATA[<!--]]></endOfLineComment> <endOfLineComment><![CDATA[-->]]></endOfLineComment> <stringStart name="String" id="CodeColor_CSSString"><![CDATA["]]></stringStart> <stringEnd><![CDATA["]]></stringEnd> <stringStart><![CDATA[']]></stringStart> <stringEnd><![CDATA[']]></stringEnd> <stringEsc><![CDATA[\]]></stringEsc> <cssSelector name="Selector" id="CodeColor_CSSSelector" /> <cssProperty name="Property" id="CodeColor_CSSProperty" /> <cssValue name="Value" id="CodeColor_CSSValue" /> <sampleText doctypes="CSS"><![CDATA[/* Comment */ H2, .head2 { font-family : 'Sans-Serif'; font-weight : bold; color : #339999; }]]> </sampleText> </scheme>

EXTENSION DE DREAMWEAVER CS4 70


Personnalisation du mode Code

Exemple de texte CSS L'exemple du modle CSS suivant illustre le modle de coloration du code CSS :
/* Comment */ H2, .head2 { font-family : 'Sans-Serif'; font-weight : bold; color : #339999; }

Les lignes suivantes, extraites du fichier Colors.xml, fournissent les valeurs de couleur et de style affiches dans l'exemple et ont t assignes par le modle de coloration du code :
<syntaxColor id="CodeColor_CSSSelector" text="#FF00FF" /> <syntaxColor id="CodeColor_CSSProperty" text="#000099" /> <syntaxColor id="CodeColor_CSSValue" text="#0000FF" />

Coloration du code JavaScript


<scheme name="JavaScript" id="JavaScript" doctypes="JavaScript" priority="50"> <ignoreCase>No</ignoreCase> <ignoreTags>Yes</ignoreTags> <blockStart doctypes="ASP-JS,ASP-VB,ASP.NET_CSharp,ASP.NET_VB,ColdFusion, CFC,HTML,JSP,LibraryItem,DWTemplate,PHP_MySQL" scheme="outerTag"> <![CDATA[<script>]]></blockStart> <blockEnd><![CDATA[</script>]]></blockEnd> <blockStart doctypes="ASP-JS,ASP-VB,ASP.NET_CSharp,ASP.NET_VB,ColdFusion, CFC,HTML,JSP,LibraryItem,DWTemplate,PHP_MySQL" scheme="outerTag"> <![CDATA[<script\s+\*>]]></blockStart> <blockEnd><![CDATA[</script>]]></blockEnd> <commentStart name="Comment" id="CodeColor_JavascriptComment"> <![CDATA[/*]]></commentStart> <commentEnd><![CDATA[*/]]></commentEnd> <endOfLineComment><![CDATA[//]]></endOfLineComment> <endOfLineComment><![CDATA[<!--]]></endOfLineComment> <endOfLineComment><![CDATA[-->]]></endOfLineComment> <stringStart name="String" id="CodeColor_JavascriptString"> <![CDATA["]]></stringStart> <stringEnd><![CDATA["]]></stringEnd> <stringStart><![CDATA[']]></stringStart> <stringEnd><![CDATA[']]></stringEnd> <stringEsc><![CDATA[\]]></stringEsc> <brackets name="Bracket" id="CodeColor_JavascriptBracket"> <![CDATA[{[()]}]]></brackets> <operators name="Operator" id="CodeColor_JavascriptOperator"> <![CDATA[+-*/%<>!?:=&|^]]></operators> <numbers name="Number" id="CodeColor_JavascriptNumber" /> <regexp name="RegExp" id="CodeColor_JavascriptRegexp" delimiter="/" escape="\\"> <searchPattern><![CDATA[(\s*/\e*\\/]]></searchPattern> <searchPattern><![CDATA[=\s*/\e*\\/]]></searchPattern> </regexp> <idChar1>_$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</idChar1> <idCharRest name="Identifier" id="CodeColor_JavascriptIdentifier"> _$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789</idCharRest> <functionKeyword name="Function Keyword" id="CodeColor_JavascriptFunction"> function</functionKeyword>

EXTENSION DE DREAMWEAVER CS4 71


Personnalisation du mode Code

<keywords name="Reserved Keywords" id="CodeColor_JavascriptReserved"> <keyword>break</keyword> . . . </keywords> <keywords name="Native Keywords" id="CodeColor_JavascriptNative"> <keyword>abs</keyword> . . . </keywords> <keywords id="CodeColor_JavascriptNumber"> <keyword>Infinity</keyword> <keyword>Nan</keyword> </keywords> <keywords name="Client Keywords" id="CodeColor_JavascriptClient"> <keyword>alert</keyword> . . . </keywords> <sampleText><![CDATA[/* JavaScript */ function displayWords(arrayWords) { for (i=0; i < arrayWords.length(); i++) { // inline comment alert("Word " + i + " is " + arrayWords[i]); } } var tokens = new Array("Hello", "world"); displayWords(tokens); ]]></sampleText> </scheme>

Exemple de texte JavaScript L'exemple du modle JavaScript suivant illustre le modle de coloration du code JavaScript :
/* JavaScript */ function displayWords(arrayWords) { for (i=0; i < arrayWords.length(); i++) { // inline comment alert("Word " + i + " is " + arrayWords[i]); } } var tokens = new Array("Hello", "world"); displayWords(tokens);

Les lignes suivantes, extraites du fichier Colors.xml, fournissent les valeurs de couleur et de style affiches dans l'exemple et ont t assignes par le modle de coloration du code :
<syntaxColor <syntaxColor <syntaxColor <syntaxColor <syntaxColor <syntaxColor id="CodeColor_JavascriptComment" text="#999999" italic="true" /> id="CodeColor_JavascriptFunction" text="#000000" bold="true" /> id="CodeColor_JavascriptBracket" text="#000099" bold="true" /> id="CodeColor_JavascriptNumber" text="#FF0000" /> id="CodeColor_JavascriptClient" text="#990099" /> id="CodeColor_JavascriptNative" text="#009999" />

EXTENSION DE DREAMWEAVER CS4 72


Personnalisation du mode Code

A propos de la validation du code


Lorsque vous ouvrez un document en mode Code, Dreamweaver vrifie automatiquement la validit des balises, attributs, proprits ou valeurs CSS en fonction des navigateurs cibles spcifis par l'utilisateur. Dreamweaver souligne les erreurs dtectes par une ligne ondule de couleur rouge. Dreamweaver dispose galement d'une nouvelle fonctionnalit de vrification de la compatibilit avec les navigateurs (BCC) qui recherche les combinaisons de codes HTML et CSS et peut provoquer des problmes de rendu de navigateur. Les profils des navigateurs sont stocks dans le dossier Browser Profile du dossier Configuration de Dreamweaver. Chaque profil de navigateur se prsente sous la forme d'un fichier texte portant le nom du navigateur. Par exemple, le profil du navigateur Internet Explorer version 6.0 correspond au fichier Internet_Explorer_6.0.txt. Pour prendre en charge la vrification des navigateurs cibles pour CSS, Dreamweaver stocke les informations de profil CSS d'un navigateur dans un fichier XML dont le nom correspond au profil du navigateur, auquel a t ajout le suffixe _CSS.xml. Par exemple, le profil CSS du navigateur Internet Explorer 6.0 se trouve dans le fichier Internet_Explorer_6.0_CSS.xml. Si vous souhaitez ignorer une erreur signale par Dreamweaver, vous pouvez modifier le fichier de profil CSS. Le fichier de profil CSS se compose de trois balises XML : css-support, property et value. Les sections ci-aprs fournissent une description de chacune de ces balises.

<css-support>
Description Cette balise correspond au nud racine d'un ensemble de balises property et value prises en charge par un navigateur donn. Attributs Aucun. Contenu Balises property et value. Contenant Aucun. Exemple
<css-support> . . . </css-support>

<property>
Description Dfinit une proprit CSS prise en charge par un profil de navigateur.

EXTENSION DE DREAMWEAVER CS4 73


Personnalisation du mode Code

Attributs
name, names, supportlevel, message

name="nom_proprit" Nom de la proprit prendre en charge. names="nom_proprit, property_name,..." Liste, dlimite par des virgules, des noms de proprits prendre en

charge. L'attribut names peut tre considr comme une forme abrge. Par exemple, l'attribut names ci-dessous correspond une mthode abrge de dfinition de l'attribut name qui suit :
<property names="foo,bar"> <value type="named" name="top"/> <value type="named" name="bottom"/> </property> <property name="foo"> <value type="named" name="top"/> <value type="named" name="bottom"/> </property> <property name="bar"> <value type="named" name="top"/> <value type="named" name="bottom"/> </property>

supportlevel="error", "warning", "info"ou "supported" Dfinit le niveau de prise en charge de la

proprit. Si aucune valeur n'est indique, la valeur attribue est "supported". Si vous indiquez un niveau de prise en charge diffrent de "supported" et que vous ne spcifiez pas l'attribut message, Dreamweaver utilise le message par dfaut, La proprit CSS nom_proprit n'est pas prise en charge.

message="chane_message" L'attribut message dfinit la chane du message affich dans Dreamweaver lorsqu'il

dtecte la proprit d'un document. La chane du message dcrit les limites ou les contraintes susceptibles d'apparatre en fonction de la valeur de la proprit. Contenu
value

Contenant
css-support

Exemple
<property name="background-color" supportLevel="supported">

<value>
Description Dfinit une liste de valeurs prises en charge par la proprit actuelle.

EXTENSION DE DREAMWEAVER CS4 74


Personnalisation du mode Code

Attributs
type, name, names, supportlevel, message

type="any", "named", "units", "color", "string" ou "function" Indique le type de valeur. Si vous

spcifiez "named", "units" ou "color", l'attribut name ou names doit spcifier les identifiants de valeur correspondant cet lment. La valeur "units" correspond une valeur numrique, suivie de l'une des valeurs d'units spcifies dans l'attribut name.

name="nom_valeur" Identificateur de valeur CSS. Les espaces et la ponctuation, l'exception du tiret (-), sont interdits. Nom de l'une des valeurs valides pour la proprit CSS nomme dans le nud de proprit parent. Ce nom peut dsigner une valeur spcifique ou un spcificateur d'unit. names="nom1, nom2, . . ."Spcifie une liste d'ID de valeur spars par des virgules. supportlevel="error", "warning", "info"ou "supported" Indique le niveau de prise en charge de cette

valeur dans le navigateur. Si aucune valeur n'est indique, la valeur attribue est "supported".
message="chane_message" L'attribut message dfinit la chane du message affich dans Dreamweaver lorsqu'il

dtecte la valeur de proprit d'un document. Si vous ne spcifiez pas l'attribut message, Dreamweaver affiche la chane de message suivante : nom_valeur n'est pas prise en charge . Contenu Aucun. Contenant
property

Exemple
<property name="margin"> <value type="units" name="ex" supportlevel="warning" message="The implementation of ex units is buggy in Safari 1.0."/> <value type="units" names="%,em,px,in,cm,mm,pt,pc"/> <value type="named" name="auto"/> <value type="named" name="inherit"/> </property>

Modification du formatage HTML par dfaut


La catgorie Format de code de la bote de dialogue Prfrences permet de modifier les prfrences gnrales de formatage du code. L'diteur de la bibliothque de balises (Edition > Bibliothques de balises) permet de modifier le format de balises ou d'attributs spcifiques. Pour plus d'informations, voir Utilisation de Dreamweaver dans le menu Aide de Dreamweaver. Vous pouvez galement modifier le formatage d'une balise en modifiant le fichier VTM correspondant cette balise (dans un sous-dossier du dossier Configuration Tag Libraries) ; il est toutefois prfrable de modifier le formatage directement dans l'application Dreamweaver. Si vous ajoutez ou supprimez un fichier VTM, vous devez modifier le fichier TagLibraries.vtm ; Dreamweaver ignore les fichiers VTM non rpertoris dans le fichier TagLibraries.vtm. Remarque : Modifiez ce fichier dans un diteur de texte et non dans Dreamweaver.

EXTENSION DE DREAMWEAVER CS4 75


Personnalisation du mode Code

A propos du mode Fractionnement vertical


Le mode Fractionnement vertical permet l'affichage cte cte des modes Code et Cration ou Code et Mise en forme du code. Les utilisateurs travaillant sur deux crans peuvent utiliser cette fonctionnalit pour afficher le code sur un cran tout en employant l'autre pour travailler en mode Cration. Le mode Fractionnement vertical permet l'utilisateur :

de choisir l'orientation des modes Code et Cration (horizontale ou verticale) ; de basculer entre les orientations horizontale et verticale des modes Code et Cration et Code fractionn.
Lorsque vous redmarrez Dreamweaver et que vous ouvrez ou crez un document, celui-ci s'affiche dans les modes Code et Cration selon la taille et l'orientation employes le plus rcemment. La fonction dreamweaver.setSplitViewOrientation() dfinit l'orientation et dreamweaver.setPrimaryView() dfinit le mode d'affichage principal. Pour plus d'informations sur l'emploi de ces fonctions, voir Fonctions du mode Fractionnement vertical dans le Guide des API de Dreamweaver.

A propos des fichiers apparents


La fonctionnalit fichiers apparents permet l'utilisateur d'accder aux fichiers auxiliaires et apparents qui sont associs au fichier sur lequel il travaille. Les fichiers apparents peuvent tre des fichiers CSS, de script, SSI (inclusion ct serveur) ou XML. Par exemple, si un fichier CSS est associ au fichier principal, cette fonctionnalit facilite l'affichage et la modification de ce fichier CSS. L'utilisateur peut galement visualiser le fichier principal tout en modifiant le fichier apparent.

Fonctionnement des fichiers apparents


Les fichiers apparents facilitent les activits de modification de l'utilisateurs en l'aidant dans les tches suivantes :

L'utilisateur peut visualiser les fichiers apparents et y accder tout en affichant le fichier principal. Lorsque vous
affichez une page possdant des fichiers apparents (par exemple un fichier CSS), vous pouvez voir les lments suivants :

Page en mode Cration d'un ct Fichier apparent de l'autre ct La barre des fichiers apparents contient les documents influant sur la gnration du code HTML parent.
L'utilisateur peut voir le code HTML source, le code HTML gnr et les documents enfants de premier niveau.

La slection d'un fichier apparent dans la barre des fichiers apparents permet l'utilisateur d'accomplir les
oprations suivantes :

Affichage et modification du fichier apparent en mode Code Affichage de la page parente en mode Cration La slection de contenu en mode Cration et l'apport de modifications dans le fichier apparent ne fait pas
disparatre la slection lorsque l'utilisateur actualise le mode Cration.

Si vous modifiez le code du fichier apparent, vos modifications se rpercutent dans le mode Cration.
Si un fichier est introuvable, un message vous en informe dans une barre situe en haut du cadre de la fentre vide.

EXTENSION DE DREAMWEAVER CS4 76


Personnalisation du mode Code

Terminologie des fichiers apparents


Les termes suivants sont souvent utiliss en association avec les fichiers apparents :
Terme Document de niveau suprieur Document parent Description Tout document ouvert par l'utilisateur. Exemple

Tout document de niveau suprieur rendu en mode Cration.

HTML, dont .lbi, .dwt CFML PHP Fichier de script spcifi par <SCRIPT src="file.js"> Inclusion ct serveur CSS externe Ensembles de donnes XML et HTML Spry Elment de bibliothque <iframe> - source distante Balise d'objet PHP dans PHP DTD Modles Fichiers d'image Fichiers multimdias Fichiers lis l'extrieur par une balise <a>

Document enfant de premier niveau

Tout document se situant un niveau en dessous du document parent. Ces documents influent sur la gnration du code HTML, l'exception de CSS. Les fichiers CSS peuvent en contenir d'autres ; c'est ensemble qu'ils dterminent les styles finalement appliqus la page.

Document enfant de niveau infrieur

Tout document se situant plus de deux niveaux sous le document parent. Ces documents influent sur la gnration du code HTML.

Fichier non apparent

Tout document n'influant pas sur la gnration de code HTML ou tout fichier qu'un utilisateur ne modifie pas activement.

Les fichiers apparents suivants sont pris en charge :


Type Script ct client Description Tous les langages Niveau d'imbrication 1 (l'imbrication du script est impossible)

EXTENSION DE DREAMWEAVER CS4 77


Personnalisation du mode Code

Type Inclusions ct serveur

Description Lorsque toutes les conditions d'extension suivantes sont vraies :

Niveau d'imbrication 1

Modle de serveur dfini Instruction SSI (c.--d. modle) dfinie doctype DW dfini

Exception : Les instructions de fichier inclus de style Apache (<!--#include ... ->) dans les documents HTML sont reconnues. Ensemble de donnes Spry CSS 1 (l'imbrication du script est impossible)

Tout le code CSS externe pour tous les types de mdias DTSS

Infini

API des fichiers apparents Vous pouvez personnaliser le menu des fichiers apparents afin d'afficher les lments suivants :

Nom du fichier apparent Code HTML source et code source gnr


La fonction dreamweaver.openRelatedFile() affiche le fichier apparent en mode Code et la fonction dreamweaver.getActiveRelatedFilePath() affiche le chemin d'accs du fichier apparent actuellement ouvert. Pour plus d'informations sur l'emploi de ces API, voir Fonctions des fichiers apparents dans le Guide des API de Dreamweaver.

A propos de l'affichage en direct


La fonctionnalit d'affichage en direct facilite la prvisualisation de vos pages Web de la faon dont elles s'afficheraient dans un navigateur, sans quitter Dreamweaver. L'utilisateur peut conserver un accs direct au code afin de le modifier. Toute modification apporte au code est visible instantanment. Cette fonctionnalit permet l'utilisateur de voir instantanment la page Web modifie. Si l'utilisateur modifie des fichiers CSS, l'tat actuel du fichier est conserv, mais les modifications CSS sont appliques. L'utilisateur peut galement interagir avec la page et voir des effets JavaScript tels que le survol sans devoir passer de Dreamweaver un navigateur Web. L'affichage en direct emploie le plug-in systme Flash (%SYSTEM%/Macromed/Flash, /Library/Internet Plug-Ins/). Il peut arriver qu'il se replie sur une version Firefox si la version systme du plug-in n'est pas disponible. Si le plug-in est introuvable, une notification s'affiche dans la barre d'information. Le panneau CSS montre toujours le code CSS pertinent pour ce qui est affich en direct, mme si la source est gnre partir d'un emplacement diffrent. L'utilisateur peut ajouter ou supprimer des feuilles de style. Toutefois, les autres modifications au code CSS intgr ou au code CSS dans la balise <head> sont bloques. Les rgles dans le panneau CSS qui ne sont pas modifiables sont marques comme tant en lecture seule. Vous pouvez utiliser l'API de Dreamweaver aux fins suivantes :

Obtention et dfinition du mode Cration

EXTENSION DE DREAMWEAVER CS4 78


Personnalisation du mode Code

Obtention et dfinition du mode En direct l'aide du serveur Obtention des valeurs par dfaut du mode En direct Obtention et dfinition des lments dpendants du mode En direct Consultation des paramtres du mode En direct
Pour plus d'informations sur ces API, voir Fonctions du mode En direct dans le Guide des API de Dreamweaver.

Exemple simple du mode En direct


Dans cet exemple, vous allez utiliser Dreamweaver pour crer une commande qui cre un navigateur simple lorsque l'utilisateur clique sur cette commande dans le menu Commandes. Pour obtenir des informations plus spcifiques sur la cration de commandes avant d'appliquer cet exemple, consultez la section Commandes la page 139 la page 142. Dans Dreamweaver, ouvrez un nouveau fichier HTML de base (il s'agit de votre fichier de dfinition de commande) et enregistrez-le sous le nom liveviewexample.htm. Votre fichier de dfinition de commande se prsente comme suit :
<!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0// dialog"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Browser Test</title> <script type="text/javascript"> var browserLoad = function(e) { var uri = document.getElementById("uri"); uri.value = e.currentBrowserLocation; } var promptToNavigate = function (e) { if( ! confirm(" Is it ok to go from \n" + e.currentBrowserLocation + " to page \n " + e.requestedBrowserLocation ) ) { e.preventDefault(); } } function initUI() { var browser = document.getElementById("browser"); browser.addEventListener("BrowserControlBeforeNavigation", promptToNavigate, true); browser.addEventListener("BrowserControlLoad", browserLoad, true); browser.openURL("http://www.adobe.com"); } function loadUri() { var uri = document.getElementById("uri"); var browser = document.getElementById("browser"); browser.openURL(uri.value); }

EXTENSION DE DREAMWEAVER CS4 79


Personnalisation du mode Code

function showSource(){ var browser = document.getElementById("browser"); alert(browser.getWindowObj().document.documentElement.outerHTML); } function commandButtons() { return new Array( "Close", "window.close()", "Load URI", "loadUri()", "Show Source", "showSource()" ); } </script> </head> <body onLoad="initUI()"> <form> <p> <label> <input id="uri" type="text" style="width:500px"> </label> </p> <mm:browsercontrol id="browser" style="width:500px; height:300px;"/> </form> </body> </html>

80

Chapitre 4 : Extension de Dreamweaver


L'ensemble complet d'outils proposs par Dreamweaver vous permet d'tendre ou de personnaliser ses fonctionnalits. Lorsque vous crez une extension Dreamweaver, suivez la procdure dcrite dans la section Cration d'une extension la page 2. Les fonctionnalits suivantes de Dreamweaver permettent de crer des extensions :

Analyseur HTML (galement baptis systme de rendu) permet de crer des interfaces utilisateur pour les
extensions. L'analyseur emploie des champs de formulaire, des lments positionnement absolu, des images et d'autres lments HTML. Dreamweaver dispose de son propre analyseur HTML.

Une arborescence de dossiers qui organise et stocke les fichiers qui implmentent et configurent les lments et
extensions de Dreamweaver.

Une srie d'API (interfaces de programmation d'applications), qui donnent accs la fonctionnalit de
Dreamweaver au moyen du langage JavaScript.

Un interprteur JavaScript, qui excute les instructions de code JavaScript dans les fichiers d'extension.
Dreamweaver utilise l'interprteur Netscape JavaScript version 1.5. Pour plus d'informations sur les modifications apportes cette version de l'interprteur par rapport aux versions antrieures, voir Traitement de JavaScript par Dreamweaver dans les extensions la page 85.

Types d'extensions Dreamweaver


La liste suivante dcrit les types d'extensions de Dreamweaver :
Insertion, objet de la barre Les extensions permettent de modifier la barre Insertion. Un objet sert gnralement automatiser l'insertion de code dans un document. Il peut galement contenir un formulaire qui regroupe les donnes fournies par les utilisateurs et un code JavaScript qui traite ces donnes. Les fichiers d'objet rsident dans le dossier Configuration/Objects. Commande Les extensions de commande peuvent se charger de la plupart des tches, avec ou sans l'intervention de

l'utilisateur. Les fichiers de commandes sont gnralement dmarrs partir du menu Commandes ; ils peuvent l'tre galement depuis d'autres extensions. Les fichiers de commandes rsident dans le dossier Configuration/Commands.
Commande de menu Les extensions de commande de menu dveloppent l'API de commandes pour effectuer des

tches relatives l'appel d'une commande depuis un menu. Les API des commandes de menu vous permettent galement de crer un sous-menu dynamique.
Barre d'outils Les extensions de barre d'outils permettent d'ajouter des lments aux barres d'outils existantes ou de crer de nouvelles barres d'outils dans l'interface utilisateur de Dreamweaver. Les nouvelles barres d'outils s'affichent sous la barre d'outils par dfaut. Les fichiers de barre d'outils rsident dans le dossier Configuration/Toolbars. Rapport Les extensions de rapport peuvent ajouter des rapports personnaliss sur le site ou modifier le jeu de rapports prdfinis fournis avec Dreamweaver. Vous pouvez galement utiliser l'API de fentre Rsultats pour crer un rapport autonome. Bibliothque et diteur de balises Les extensions de bibliothque et d'diteur de balises fonctionnent avec les fichiers

de bibliothque de balises associs. Les extensions de bibliothque et d'diteur de balises permettent de modifier les attributs des botes de dialogue de balises existantes, de crer de nouvelles botes de dialogue de balises et d'ajouter des

EXTENSION DE DREAMWEAVER CS4 81


Extension de Dreamweaver

balises la bibliothque de balises. Les fichiers d'extension d'diteur et de bibliothques de balises rsident dans le dossier Configuration/TagLibraries.
Inspecteur Proprits Les extensions d'inspecteur Proprits apparaissent dans le panneau d'inspecteur Proprits. La plupart des inspecteurs de Dreamweaver relvent du code principal du produit et ne sont donc pas modifiables. En revanche, les fichiers d'inspecteurs Proprits personnaliss peuvent remplacer les interfaces d'inspecteurs Proprits intgres de Dreamweaver ou en crer afin d'inspecter les balises personnalises. Les fichiers d'inspecteur rsident dans le dossier Configuration/Inspectors. Panneau flottant Les extensions de panneau flottant permettent d'insrer des panneaux flottants dans l'interface

utilisateur de Dreamweaver. Les panneaux flottants peuvent interagir avec la slection, le document ou l'action en cours. Ils peuvent galement afficher des informations utiles. Les fichiers de panneau rsident dans le dossier Configuration/Floaters.
Comportement Les extensions de comportement permettent aux utilisateurs d'ajouter du code JavaScript dans leurs documents. Le code JavaScript excute une tche spcifique en rponse un vnement lorsque le document est affich dans un navigateur. Les extensions de comportement s'affichent dans le menu plus (+) du panneau Comportements de Dreamweaver. Les fichiers de comportement rsident dans le dossier Configuration/Behaviors/Actions. Comportements de serveur Les extensions de comportement de serveur permettent d'ajouter des blocs de code ct

serveur (ASP ou ColdFusion) au document. Le code ct serveur excute des tches sur le serveur lorsque le document est affich dans un navigateur. Les extensions de comportement de serveur s'affichent dans le menu plus (+) du panneau Comportements de serveur de Dreamweaver. Les fichiers de comportement de serveur rsident dans le dossier Configuration/ServerBehaviors.
Source de donnes Les extensions de source de donnes vous permettent d'tablir une connexion avec des donnes dynamiques stockes dans une base de donnes. Les extensions de source de donnes apparaissent dans le menu plus (+) du panneau Liaisons. Les extensions de source de donnes rsident dans le dossier Configuration/DataSources. Format de serveur Les extensions de format de serveur vous permettent de dfinir la mise en forme des donnes

dynamiques.
Composant Les extensions de composant permettent d'ajouter de nouveaux types de composants au panneau Composants. Dreamweaver utilise le terme composant pour dsigner quelques-unes des stratgies d'encapsulation les plus populaires et les plus modernes, comme les composants ColdFusion (CFC). Modle de serveur Les extensions de modle de serveur permettent de prendre en charge de nouveaux modles de

serveurs. Dreamweaver prend en charge les modles de serveurs les plus courants (ASP, JSP, ColdFusion, PHP et ASP.NET). Les extensions de modle de serveur sont ncessaires uniquement pour les solutions de serveur personnalises, des langues diffrentes ou un serveur personnalis. Les fichiers de modle de serveur rsident dans le dossier Configuration/ServerModels.
Traducteur de donnes Les extensions de traducteur de donnes convertissent le code non HTML en code HTML qui

s'affiche ensuite dans le mode Cration de la fentre de document. Ces extensions bloquent galement le code non HTML pour empcher toute analyse par Dreamweaver. Les fichiers de traducteur rsident dans le dossier Configuration/Translators.

Autres mthodes d'extension pour Dreamweaver


Vous pouvez galement tendre les lments suivants de Dreamweaver pour dvelopper ses capacits ou l'adapter votre utilisation.
Types de documents Les types de documents dfinissent le fonctionnement de Dreamweaver avec diffrents modles

de serveur. Les informations relatives aux types de documents pour les modles de serveurs rsident dans le dossier

EXTENSION DE DREAMWEAVER CS4 82


Extension de Dreamweaver

Configuration/DocumentTypes. Pour plus d'informations, voir Types de documents extensibles dans Dreamweaver la page 14.
Fragments de code Les fragments de code sont des blocs de code rutilisables qui sont stocks sous forme de fichiers CSN dans le dossier Configuration/Snippets de Dreamweaver. Ils sont accessibles dans le panneau Fragments de code. Vous pouvez crer de nouveaux fichiers de fragment de code et les installer dans le dossier Snippets afin qu'ils soient disponibles. Indicateurs de code Les indicateurs de code sont des menus qui vous vitent de saisir tout le texte en proposant une

liste de chanes susceptibles de complter la chane que vous tapez. Si une des chanes du menu correspond celle que vous avez commenc entrer, vous pouvez la slectionner pour l'insrer la place de la chane dont vous aviez commenc la saisie. Des menus d'indicateurs de code sont dfinis dans le fichier codehints.xml dans le dossier Configuration/CodeHints. Vous pouvez en ajouter d'autres pour de nouvelles balises et fonctions que vous avez dfinies.
Menus Les menus sont dfinis dans le fichier menus.xml du dossier Configuration/Menus. Vous pouvez ajouter de

nouveaux menus Dreamweaver pour vos extensions en ajoutant leurs balises de menu dans le fichier menus.xml. Pour plus d'informations, voir Menus et commandes de menu la page 150.

Extensions et dossiers de configuration


Les dossiers et les fichiers stocks dans le dossier Configuration de Dreamweaver contiennent les extensions livres avec Dreamweaver. Lorsque vous rdigez une extension, vous devez enregistrer les fichiers dans le dossier appropri afin que Dreamweaver puisse les reconnatre. Ainsi, si vous crez une extension d'inspecteur Proprits, vous enregistrez les fichiers dans le dossier Configuration/Inspectors. Si vous tlchargez puis installez une extension depuis le site Web de Adobe Exchange (www.adobe.com/go/exchange_fr), Extension Manager enregistre automatiquement les fichiers d'extension dans les dossiers appropris. Vous pouvez utiliser les fichiers du dossier Configuration de Dreamweaver comme exemple ; notez toutefois que ces fichiers sont gnralement plus complexes que l'extension typique disponible sur le site Web d'Adobe Exchange. Pour plus d'informations sur le contenu respectif des sous-dossiers du dossier Configuration, voir le fichier Configuration_ReadMe.htm. Le dossier Configuration/Shared ne correspond aucun type d'extension particulier. Il s'agit d'un lieu de stockage central pour les fonctions utilitaires, les classes et les images utilises par plusieurs extensions. Les fichiers rsidant dans le dossier Configuration/Shared/Common sont censs tre utiles un large ventail d'extensions. Ces fichiers constituent la fois de bons exemples des techniques JavaScript et des utilitaires pratiques. Recherchez en priorit dans ces fichiers les fonctions excutant des tches spcifiques, par exemple crer une rfrence DOM (modle d'objet de document) valide pour un objet, vrifier si la slection active se trouve l'intrieur d'une balise particulire, ignorer les caractres dans les chanes, etc. Il est prfrable de crer un sous-dossier distinct dans le dossier Configuration/Shared/Common, comme indiqu ci-aprs, lorsque vous crez des fichiers communs afin de les stocker.

EXTENSION DE DREAMWEAVER CS4 83


Extension de Dreamweaver

Structure de dossier Configuration/Shared/Common/Scripts

Pour plus d'informations sur le dossier Shared, voir Dossier Shared la page 384.

Dossiers de configuration multi-utilisateur


Pour les systmes d'exploitation multi-utilisateur Windows XP, Windows 2000 et Macintosh OS X, Dreamweaver cre un dossier de configuration distinct pour chaque utilisateur, en complment du dossier Configuration de Dreamweaver. Chaque fois que Dreamweaver ou qu'une extension JavaScript crit dans le dossier Configuration, Dreamweaver crit automatiquement dans le dossier de configuration utilisateur. Ceci permet chaque utilisateur de dfinir ses paramtres de personnalisation de Dreamweaver sans modifier les paramtres d'autres utilisateurs. Pour plus d'informations, voir Personnalisation de Dreamweaver dans un environnement multi-utilisateur la page 11 et API d'accs aux fichiers et de configuration multi-utilisateur dans le Guide des API de Dreamweaver.

Excution des scripts au dmarrage ou la fermeture


Si vous placez un fichier de commandes dans le dossier Configuration/Startup, la commande s'excute au dmarrage de Dreamweaver. Les commandes de dmarrage se chargent avant le fichier menus.xml, avant les fichiers du dossier ThirdPartyTags et avant les autres commandes, objets, comportements, inspecteurs, panneaux flottants ou traducteurs. Par consquent, vous pouvez utiliser les commandes de dmarrage pour modifier le fichier menus.xml ou d'autres fichiers d'extension. Vous pouvez galement afficher des avertissements, inviter l'utilisateur donner des informations ou appeler la fonction dreamweaver.runCommand(). Toutefois, vous ne pouvez pas appeler une commande qui ncessite un DOM (Document Object Model) valide partir du dossier Startup. Pour plus d'informations sur le DOM Dreamweaver, voir Modle d'objet de document (DOM) Dreamweaver la page 101. De mme, si vous placez un fichier de commandes dans le dossier Configuration/Shutdown, la commande s'excute l'arrt de Dreamweaver. A partir des commandes de fermeture, vous pouvez appeler la fonction dreamweaver.runCommand(), afficher des avertissements ou inviter l'utilisateur entrer des informations, mais vous ne pouvez pas arrter le processus de fermeture. Pour plus d'informations sur les commandes, voir Commandes la page 139. Pour plus d'informations sur la fonction dreamweaver.runCommand(), voir le Guide des API de Dreamweaver.

EXTENSION DE DREAMWEAVER CS4 84


Extension de Dreamweaver

Rechargement d'extensions
Si vous modifiez une extension pendant que vous utilisez Dreamweaver, vous pouvez la charger nouveau pour appliquer la modification. Rechargement d'extensions 1 Cliquez, tout en maintenant la touche CTRL (Windows) ou Option (Macintosh) enfonce, sur le menu Catgories de la barre de titres du panneau Insertion. Remarque : Cette option n'est pas visible en mode Onglets. Si vous tes en mode Onglets, cliquez l'aide du bouton droit de la souris sur le menu Panneau (coin suprieur gauche). Choisissez Afficher comme un menu, puis cliquez tout en maintenant la touche CTRL enfonce sur Commun afin d'obtenir le menu contenant la commande Recharger extensions.

2 Choisissez Recharger extensions.

Remarque : Dans le cadre d'un systme d'exploitation multi-utilisateur, vous devez modifier les copies des fichiers de configuration contenues dans votre dossier de configuration utilisateur plutt que les fichiers Configuration principaux. Pour plus d'informations, voir Extensions et dossiers de configuration la page 82.

API d'extension
Les API d'extension vous fournissent les fonctions appeles par Dreamweaver pour implmenter chaque type d'extension. Le corps de ces fonctions doit tre rdig conformment aux descriptions de chaque type d'extension. Il faut galement spcifier les valeurs renvoyes attendues par Dreamweaver. Si vous tes dveloppeur et souhaitez travailler directement en langage de programmation C, vous disposez d'une API d'extensibilit C qui vous permet de crer des DLL (bibliothques de liens dynamiques). La fonctionnalit fournie dans ces API enveloppe vos DLL C de code JavaScript afin que votre extension puisse s'excuter en toute transparence dans Dreamweaver. La documentation des API d'extension souligne ce qu'apporte chaque fonction quand Dreamweaver l'appelle et les valeurs renvoyes attendues par Dreamweaver. Voir le Guide des API de Dreamweaver pour plus d'informations sur l'API d'utilitaire et l'API JavaScript, qui proposent des fonctions permettant d'effectuer des tches spcifiques dans vos extensions.

EXTENSION DE DREAMWEAVER CS4 85


Extension de Dreamweaver

Traitement de JavaScript par Dreamweaver dans les extensions


Dreamweaver vrifie le dossier Configuration/type_extension au dmarrage. Si Dreamweaver y dtecte un fichier d'extension, il traite le code JavaScript selon la procdure suivante :

Compilation de tous les lments compris entre les balises d'ouverture et de fermeture SCRIPT Excution du code situ dans les balises SCRIPT ne faisant pas partie d'une dclaration de fonction
Remarque : Cette tape s'impose pendant le dmarrage dans la mesure o certaines extensions peuvent ncessiter l'initialisation des variables globales. Dans le cas des fichiers JavaScript externes spcifis dans les attributs SRC des balises SCRIPT, Dreamweaver se charge des oprations suivantes :

lecture du fichier ; compilation du code ; excution des procdures.


Remarque : Si du code JavaScript de votre fichier d'extension contient la chane ", l'interprteur JavaScript la lit comme une balise script de fin et signale une erreur de littral de chane non termin. Pour viter ce problme, dcoupez la chane en plusieurs morceaux relis entre eux de la faon suivante : "<' + '/SCRIPT>". Dreamweaver excute le code contenu dans le gestionnaire d'vnements onLoad (s'il est prsent dans la balise body) lorsque l'utilisateur choisit la commande ou l'action dans un menu pour les types d'extensions de commande ou de comportement. Dreamweaver excute le code contenu dans le gestionnaire d'vnements onLoad dans la balise body si le corps du document contient un formulaire pour les extensions d'objet. Dreamweaver ignore le gestionnaire onLoad de la balise body dans les extensions suivantes :

Traducteur de donnes Inspecteur Proprits Panneau flottant


Pour toutes les extensions, Dreamweaver excute le code contenu dans d'autres gestionnaires d'vnements (par exemple, onBlur="alert('Ceci est un champ obligatoire.')") lorsque l'utilisateur utilise les champs de formulaire auxquels ils sont rattachs. Dreamweaver prend en charge l'utilisation de gestionnaires d'vnement dans des liens. Les gestionnaires d'vnements des liens doivent respecter la syntaxe suivante :
<a href="#" onMouseDown=alert('hi')>link text</a>

Les plug-ins (rgls sur play en permanence) sont pris en charge dans la balise BODY des extensions. L'instruction document.write(), les applets Java et les contrles Microsoft ActiveX ne sont pas pris en charge dans les extensions.

Affichage de l'aide
La fonction displayHelp(), qui fait partie de nombreuses API d'extension, entrane les deux actions suivantes de Dreamweaver lorsque vous l'incluez dans votre extension :

Ajout d'un bouton d'aide l'interface ; Appel de displayHelp() lorsque l'utilisateur clique sur le bouton d'aide.

EXTENSION DE DREAMWEAVER CS4 86


Extension de Dreamweaver

Vous devez rdiger le corps de la fonction displayHelp() pour afficher l'aide. La faon dont vous codez la fonction displayHelp() dtermine l'affichage de l'aide par votre extension. Vous pouvez demander la fonction dreamweaver.browseDocument() d'ouvrir un fichier dans un navigateur ou de dfinir une mthode personnalise d'affichage de l'aide, comme l'affichage de messages sur un autre lment positionnement absolu dans des fentres d'alerte. L'exemple suivant utilise la fonction displayHelp() pour afficher l'aide en appelant dreamweaver.browseDocument():
// The following instance of displayHelp() opens a browser to display a file // that explains how to use the extension. function displayHelp() { var myHelpFile = dw.getConfigurationPath() + "ExtensionsHelp/myExtHelp.htm"; dw.browseDocument(myHelpFile); }

Localisation d'une extension


Utilisez les techniques suivantes pour faciliter la traduction de vos extensions dans d'autres langues.

Sparez les extensions entre fichiers HTML et JavaScript. Les fichiers HTML peuvent tre dupliqus et localiss,
alors que les fichiers JavaScript ne peuvent pas tre localiss.

Ne dfinissez pas de chanes dans les fichiers JavaScript (vrifiez les alertes et le code de l'interface utilisateur). Vous
devez extraire toutes les chanes localisables en fichiers XML spars dans le dossier Configuration/Strings de Dreamweaver.

N'insrez pas de code JavaScript dans les fichiers HTML except pour les gestionnaires d'vnement ncessaires.
Ceci vite d'avoir rparer plusieurs fois une mme erreur pour chaque traduction une fois les fichiers HTML rpliqus et traduits dans d'autres langues.

Fichiers de chane XML


Conservez toutes les chanes dans des fichiers XML dans le dossier Configuration/Strings de Dreamweaver. Si vous installez plusieurs fichiers d'extension lis, cela vous permet de partager toutes les chanes dans un seul fichier XML. Le cas chant, cela vous permet galement de faire rfrence une mme chane depuis des extensions C++ et JavaScript. Vous pouvez crer un fichier nomm myExtensionStrings.xml. L'exemple suivant montre le format du fichier :
<strings> <!-- errors for feature X --> <string id="featureX/subProblemY" value="There was a with X when you did Y. Try not to do Y!"/> <string id="featureX/subProblemZ" value="There was another problem with X, regarding Z. Don't ever do Z!"/> </strings>

Vos fichiers JavaScript peuvent maintenant se rfrer ces chanes traduisibles en appelant la fonction dw.loadString(), ainsi que l'illustre l'exemple suivant :

EXTENSION DE DREAMWEAVER CS4 87


Extension de Dreamweaver

function initializeUI() { ... if (problemYhasOccured) { alert(dw.loadString("featureX/subProblemY"); } }

Vous pouvez utiliser des barres obliques (/), mais pas d'espaces dans vos identificateurs de chanes. Les barres obliques vous permettent d'tablir une hirarchie et d'inclure l'ensemble des chanes dans un fichier XML unique. Remarque : Les fichiers commenant par cc dans le dossier Configuration/Strings sont des fichiers Contribute. C'est le cas, par exemple, du fichier ccSiteStrings.xml.

Chanes localisables avec valeurs intgres


Certaines chanes d'affichage comportent des valeurs intgres. Vous pouvez utiliser la fonction errMsg() pour afficher ces chanes. La fonction errMsg(), similaire la fonction printf() dans C, se trouve dans le fichier string.js du dossier Configuration/Shared/MM/Scripts/CMN. Utilisez le signe % et la lettre s (les caractres de l'espace rserv) pour indiquer l'emplacement o les valeurs doivent apparatre dans la chane, puis transmettez la chane et les variables (en tant qu'arguments) errMsg(). Par exemple :
<string id="featureX/fileNotFoundInFolder" value="File %s could not be found in folder %s."/>

L'exemple suivant indique comment la chane, ainsi que toute variable imbriquer, est transmise la fonction alert().
if (fileMissing) { alert( errMsg(dw.loadString("featureX/fileNotFoundInFolder"),fileName, folderName) ); }

Utilisation d'Extension Manager


Si vous crez des extensions destines d'autres utilisateurs, il convient de les conditionner conformment aux indications disponibles sur le site Web d'Adobe Exchange (www.adobe.com/go/exchange_fr), sous la rubrique Help > How to Create an Extension (Aide, Comment crer une extension). Aprs avoir rdig puis test une extension dans Extension Manager, slectionnez Fichier > Empaqueter une extension. Une fois l'extension conditionne, vous pouvez l'envoyer sur Exchange partir d'Extension Manager ; pour cela, slectionnez Fichier > Envoyer une extension. Adobe Extension Manager est livr avec Dreamweaver. Vous trouverez des dtails sur son utilisation dans ses fichiers d'aide ou sur le site Web d'Adobe Exchange.

88

Chapitre 5 : Interfaces utilisateur destines aux extensions


La plupart des extensions sont conues pour recevoir des informations de l'utilisateur par le biais d'une interface utilisateur (UI). Ainsi, si vous crez une extension d'inspecteur Proprits associe la balise marquee, vous devez permettre l'utilisateur de spcifier des attributs tels que la direction et la hauteur. Si vous envisagez de demander la certification Adobe pour votre extension, veillez suivre les consignes disponibles dans les fichiers de Extension Manager sur le site Web d'Adobe Exchange (www.adobe.com/go/exchange_fr). Ces consignes n'ont pas pour objet de limiter votre crativit, mais d'assurer le bon fonctionnement des extensions certifies dans l'interface utilisateur d'Adobe Dreamweaver et de vrifier que la conception de l'interface utilisateur de l'extension n'entrave pas sa fonctionnalit.

Instructions de conception d'une interface utilisateur d'extension


En gnral, une extension est cre pour effectuer une tche que l'utilisateur rencontre frquemment. Certaines parties de la tche tant rptitives, une extension permet de les automatiser. Plusieurs tapes de cette tche ou attributs spcifiques du code trait par l'extension peuvent tre modifis. Pour recevoir les entres utilisateur de ces valeurs variables, vous devez crer une interface utilisateur. Vous pouvez par exemple crer une extension de mise jour d'un catalogue de vente sur le Web. Les utilisateurs doivent rgulirement modifier les valeurs des sources d'image, des descriptions d'articles et des prix. Bien que les valeurs voluent, les procdures d'extraction de ces dernires et de mise en forme des informations afficher sur le site Web demeurent identiques. Une extension simple peut automatiser la mise en forme, tout en laissant aux utilisateurs le soin d'entrer manuellement les valeurs actualises des sources d'image, des descriptions d'articles et des prix. Une extension plus complexe peut extraire rgulirement ces valeurs d'une base de donnes. L'interface utilisateur de votre extension a pour objet de recevoir les informations entres par l'utilisateur. Ces informations grent les aspects variables d'une tche rptitive excuts par l'extension. Dreamweaver prend en charge les lments de formulaires HTML et JavaScript comme modules de base de la structure des commandes d'interface utilisateur d'extension et affiche l'interface au moyen de son outil de rendu HTML. Ainsi, une interface utilisateur d'extension peut se prsenter sous la forme d'un simple fichier HTML contenant un tableau deux colonnes, compos de textes descriptifs et de champs de saisie de formulaire. Lorsque vous concevez une extension, vous devez dterminer les variables requises et les lments de formulaire appropris ces dernires. Veillez tenir compte des observations suivantes pendant la conception d'une interface utilisateur d'extension :

Pour attribuer un nom votre extension, indiquez-le dans la balise title de votre fichier HTML. Dreamweaver
affiche ce nom dans la barre de titre Extension.

Alignez droite les tiquettes de texte dans la partie gauche de l'interface utilisateur, et alignez gauche les zones
de texte dans la partie droite. Cette disposition permet l'utilisateur de reprer plus facilement le dbut d'une zone de texte. La zone de texte peut tre suivie d'un texte concis, par exemple une explication ou une unit de mesure.

Alignez gauche le libell des cases cocher et des boutons radio dans la partie droite de l'interface utilisateur.

EXTENSION DE DREAMWEAVER CS4 89


Interfaces utilisateur destines aux extensions

Dans le cas de code lisible, attribuez un nom logique aux zones de texte. Si vous crez votre interface utilisateur
d'extension l'aide de Dreamweaver, vous pouvez utiliser l'inspecteur Proprits ou Quick Tag Editor pour nommer les champs. Le scnario typique consiste, une fois l'interface utilisateur cre, vrifier que le code de l'extension excute correctement les tches suivantes impliquant l'interface :

Rcupration des valeurs des zones de texte Dfinition des valeurs par dfaut des zones de texte ou collecte des valeurs partir de la slection Application des modifications au document de l'utilisateur

Commande de rendu HTML de Dreamweaver


Jusqu' la version 4, Dreamweaver restituait plus d'espace autour des commandes de formulaire que Microsoft Internet Explorer et Netscape Navigator. Dreamweaver ayant recours son moteur de rendu HTML pour afficher les interfaces utilisateur d'extension, les commandes de formulaire de celles-ci sont plus spacieuses. Dans les versions suivantes de Dreamweaver, le rendu des commandes de formulaire est devenu beaucoup plus proche de celui des navigateurs. Pour bnficier des amliorations du procd de rendu, il convient d'utiliser l'une des trois nouvelles instructions DOCTYPE dans les fichiers d'extension, comme indiqu dans les exemples suivants :
<!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//dialog"> <!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//floater"> <!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//pi">

En rgle gnrale, les instructions DOCTYPE doivent figurer sur la premire ligne d'un document. Toutefois, pour viter des conflits avec des directives spcifiques aux extensions, les instructions et directives DOCTYPE peuvent dsormais tre places dans n'importe quel ordre, mais elles doivent figurer avant la balise HTML d'ouverture. Dans les versions prcdentes, les directives spcifiques aux extensions devaient se trouver sur la premire ligne d'un fichier. Par exemple, le commentaire en haut d'un fichier d'inspecteur Proprits, ou la directive MENU-LOCATION=NONE dans une commande. La nouvelle instruction DOCTYPE permet d'afficher vos extensions dans le mode Cration de Dreamweaver. Vous pouvez les voir telles qu'elles apparatront lorsqu'un utilisateur les affichera. Vous disposez de trois exemples d'utilisation du cas dialog dans les fichiers suivants, enregistrs dans le dossier Configuration/Commands : CFLoginWizard.htm, TeamAdminDlgDates.html et TeamAdminDlgDays.html. Les exemples suivants montrent l'inspecteur Proprits de base sans l'instruction DOCTYPE, qui amliore le rendu des commandes de formulaire, puis avec l'instruction DOCTYPE.

EXTENSION DE DREAMWEAVER CS4 90


Interfaces utilisateur destines aux extensions

Commandes d'interface utilisateur personnalises dans les extensions


Outre les lments de formulaire HTML standard, Dreamweaver prend en charge des commandes personnalises qui facilitent la cration d'interfaces flexibles et professionnelles.

Listes de slection modifiables


Les listes de slection modifiables (galement appeles des zones de liste modifiables) permettent d'associer la fonctionnalit d'une liste celle d'une zone de texte. Nombre d'interfaces utilisateur d'extension sont constitues de menus droulants dfinis l'aide de la balise select. Dans Dreamweaver, vous pouvez autoriser la modification de ces menus dans les extensions en ajoutant l'instruction editable="true" la balise select. Pour dfinir une valeur par dfaut, il convient de dfinir l'attribut editText ainsi que la valeur que vous voulez voir apparatre dans la liste de slection. L'exemple suivant illustre les paramtres d'une liste de slection modifiable :
<select name="travelOptions" style="width:250px" editable="true" editText="other (please specify)"> <option value="plane">plane</option> <option value="car">car</option> <option value="bus">bus</option> </select>

Lorsque vous utilisez des listes de slection dans vos extensions, vrifiez la prsence d'un attribut et, le cas chant, sa valeur. En l'absence d'une valeur, la liste de slection renvoie la valeur par dfaut false, laquelle indique que la liste de slection n'est pas modifiable. Tout comme les listes de slection standard, non modifiables, les listes de slection modifiables possdent une proprit selectedIndex (voir Objets, proprits et mthodes du DOM Dreamweaver la page 102). Cette proprit renvoie la valeur -1 lorsque la zone de texte est slectionne. Pour lire la valeur d'une zone de texte modifiable active dans une extension, il suffit de lire la valeur de la proprit editText. La proprit editText renvoie la chane que l'utilisateur a entre dans la zone de texte modifiable ou la valeur de l'attribut editText. Si aucun texte n'a t entr et si aucune valeur n'a t prcise pour editText, elle renvoie une chane vide. Dreamweaver ajoute les attributs personnaliss suivants la balise select afin de contrler les menus droulants modifiables :
Nom d'attribut
editable

Description Dclare que le menu droulant contient une zone de texte modifiable. Conserve ou dfinit le texte dans une zone de texte modifiable.

Valeurs admises Une valeur boolenne true ou


false

editText

Chane d'une valeur quelconque

Remarque : Des listes de slection modifiables sont disponibles dans Dreamweaver. L'exemple suivant cre une extension de commande contenant une liste de slection modifiable l'aide de fonctions JavaScript standard :

EXTENSION DE DREAMWEAVER CS4 91


Interfaces utilisateur destines aux extensions

Cration de l'exemple 1 Crez un fichier vide dans un diteur de texte.


2 Entrez le code suivant :
<html> <head> <title>Editable Dropdown Test</title> <script language="javascript"> function getAlert() { var i=document.myForm.mySelect.selectedIndex; if (i>=0) { alert("Selected index: " + i + "\n" + "Selected text " + document.myForm.mySelect.options[i].text); } else { alert("Nothing is selected" + "\n" + "or you entered a value"); } } function commandButtons() { return new Array("OK", "getAlert()", "Cancel", "window.close()"); } </script> </head> <body> <div name="test"> <form name="myForm"> <table> <tr> <td colspan="2"> <h4>Select your favorite</h4> </td> </tr> <tr> <td>Sport:</td> <td> <select name="mySelect" editable="true" style="width:150px" editText="Editable Text"> <option> Baseball</option> <option> Football </option> <option> Soccer </option> </select> </td> </tr> </table> </form> </div> </body> </html>

3 Enregistrez le fichier sous le nom EditableSelectTest.htm dans le dossier Dreamweaver Configuration/Commands.

EXTENSION DE DREAMWEAVER CS4 92


Interfaces utilisateur destines aux extensions

Test de l'exemple 1 Redmarrez Dreamweaver.


2 Choisissez Commandes > EditableSelectTest.

Lorsque vous slectionnez une valeur dans la liste, un message d'avertissement affiche l'index de la valeur et le texte. Si vous entrez une valeur, un message d'avertissement indique qu'aucun lment n'est slectionn.

Commandes de base de donnes


Les commandes de base de donnes simplifient l'affichage des hirarchies et champs de donnes. Dreamweaver vous permet d'tendre la balise HTML select afin de crer une commande d'arborescence de base de donnes. Vous pouvez galement ajouter une commande de grille de variables. La commande d'arborescence de base de donnes affiche le schma des bases de donnes et la commande de grille de variables affiche les informations tabulaires. La figure suivante prsente une bote de dialogue Jeu d'enregistrements avance utilisant une commande d'arborescence de base de donnes et une commande de grille de variables :

Ajout d'une commande d'arborescence de base de donnes


La commande d'arborescence de base de donnes possde les attributs suivants :
Nom d'attribut
name control.style type connection

Description Nom de la commande d'arborescence de base de donnes Largeur et hauteur mesures en pixels. Type de commande. Nom de la connexion la base de donnes dfinie dans le Gestionnaire de connexions ; si aucun nom n'est spcifi, la commande est vide. Lorsque cet attribut est spcifi, la commande d'arborescence ne dessine ni les indicateurs de dveloppement (Plus, +) ou de rduction (Moins, -), ni les flches correspondantes sur un ordinateur Macintosh. Cet attribut est trs utile pour dessiner des commandes de liste plusieurs colonnes. Lorsque cet attribut est dfini, la commande d'arborescence affiche un en-tte en haut, recensant le nom de chaque colonne.

noexpandbuttons

showheaders

Toutes les balises d'options places dans la balise select sont ignores.

EXTENSION DE DREAMWEAVER CS4 93


Interfaces utilisateur destines aux extensions

Pour ajouter une commande d'arborescence une bote de dialogue, vous pouvez utiliser l'chantillon de code suivant en effectuant les substitutions appropries pour les variables cites :
<select name="DBTree" style="width:400px;height:110px" type="mmdatabasetree" connection="connectionName" noexpandbuttons showHeaders></select>

La modification de l'attribut connection vous permet de rcuprer les donnes slectionnes et de les afficher dans l'arborescence. Vous pouvez utiliser l'attribut DBTreeControl comme objet JavaScript d'enveloppement de la nouvelle balise. Pour obtenir d'autres exemples, voir le fichier DBTreeControlClass.js du dossier Configuration/Shared/Common/Scripts.

Ajout d'une commande de grille de variables


La commande de grille de variables possde les attributs suivants :
Nom d'attribut
name Style type colonnes columnWidth

Description Nom de la commande de grille de variables. Largeur de la colonne, exprime en pixels. Type de commande. Chaque colonne doit disposer d'un nom, spare par une virgule. Largeur de chaque colonne, spare par une virgule. Les colonnes sont de largeur gale si aucune largeur n'est spcifie.

L'exemple suivant ajoute une commande de grille de variables une bote de dialogue :
<select name="ParamList" style="width:515px;" type="mmparameterlist columns"="Name,SQL Data Type,Direction,Default Value,Run-time Value" size=6></select>

L'exemple suivant cre une commande de grille de variables de 500 pixels de large et comportant cinq colonnes de largeur variable :
<select name="ParamList" style="width:500px;" type="mmparameterlist" columns="Name,SQL Data Type,Direction, Default Value,Run-time Value" columnWidth="100,25,11," size=6>

Cet exemple cre deux colonnes vierges de 182 pixels de large chacune. Le calcul est le suivant : le total des colonnes dfinies est de 136. La largeur totale de la commande de grille de variables est de 500. L'espace restant une fois les trois premires colonnes insres est 364. Il reste deux colonnes insrer : 364 divis par 2 est gal 182. Cette commande de grille de variables comporte galement un objet d'enveloppement JavaScript devant tre employ pour accder aux donnes de la commande et les manipuler. L'implmentation de cet objet se trouve dans le fichier GridControlClass.js du dossier Configuration/Shared/MM/Scripts/Class.

Commandes d'arborescence
Les commandes d'arborescence organisent les informations en nuds extensibles et rductibles.

EXTENSION DE DREAMWEAVER CS4 94


Interfaces utilisateur destines aux extensions

La commande d'arborescence affiche les donnes dans un format hirarchis et permet aux utilisateurs d'tendre et de rduire les nuds de l'arborescence. La balise MM:TREECONTROL permet de crer des commandes d'arborescence pour n'importe quel type d'informations. Contrairement la commande d'arborescence de base de donnes dcrite dans la section Ajout d'une commande d'arborescence de base de donnes la page 92, aucune association une base de donnes n'est requise. Dans Dreamweaver, l'Editeur de raccourcis clavier utilise la commande d'arborescence comme reprsent dans la figure suivante :

Cration d'une commande d'arborescence


La balise MM:TREECONTROL cre une commande d'arborescence et peut utiliser d'autres balises afin de complter la structure, comme indiqu dans la liste suivante :

MM:TREECOLUMN est une balise facultative vide qui dfinit une colonne dans la commande d'arborescence. MM:TREENODE est une balise facultative qui dfinit un nud dans l'arborescence. Il s'agit d'une balise non vide qui ne peut contenir que d'autres balises MM:TREENODE.

Les attributs des balises MM:TREECONTROL sont les suivants :


Nom d'attribut
name size

Description Nom de la commande d'arborescence. Facultatif. Nombre de lignes visibles dans la commande; la valeur par dfaut est de 5 lignes. Facultatif. Si le nombre de nuds de l'attribut theControl est suprieur la valeur de l'attribut size, des barres de dfilement s'affichent. Facultatif. Autorise plusieurs slections ; la valeur par dfaut est une slection unique. Facultatif. Dfinition de style pour la hauteur et la largeur de la commande d'arborescence ; si cet attribut est prcis, il est prpondrant sur l'attribut size. Facultatif. Indique que les en-ttes de la colonne doivent tre masqus.

theControl

multiples Style

noheaders

Les attributs des balises MM:TREECOLUMN sont les suivants :

EXTENSION DE DREAMWEAVER CS4 95


Interfaces utilisateur destines aux extensions

Nom d'attribut
name value width

Description Nom de la colonne. Chane qui doit s'afficher dans l'en-tte de la colonne. Largeur de la colonne exprime en pixels (les pourcentages ne sont pas pris en charge ) ; la valeur par dfaut est 100. Facultatif. Indique l'alignement du texte de la colonne : gauche, droite ou centr ; la valeur par dfaut est gauche. Indique si la colonne est visible ou masque.

align

state

Pour une meilleure visibilit, les balises TREECOLUMN doivent suivre immdiatement la balise MM:TREECONTROL, comme indiqu dans l'exemple suivant :
<MM:TREECONTROL name="tree1"> <MM:TREECOLUMN name="Column1" width="100" state="visible"> <MM:TREECOLUMN name="Column2" width="80" state="visible"> ... </MM:TREECONTROL>

Les attributs MM:TREENODE sont dcrits dans le tableau suivant :


Nom d'attribut
name value

Description Nom du nud. Comporte le contenu du nud donn. Pour plusieurs colonnes, il s'agit d'une chane dlimite par un trait vertical. Pour dfinir une colonne vide, placez un seul caractre d'espace avant le trait vertical (|). Spcifie que le nud est dvelopp ou rduit avec les chanes expanded ou collapsed. Vous pouvez slectionner plusieurs nuds en dfinissant cet attribut sur plusieurs nuds d'arborescence, si cette dernire comporte un attribut MULTIPLE. Facultatif. Index de l'icne intgre utiliser, en commenant par 0 : 0 = aucune icne ; 1 = icne de document Dreamweaver ; 2 = icne multi-document

state

selected

icon

Par exemple, tous les nuds de la commande d'arborescence suivante sont dvelopps :
<mm:treecontrol name="test" style="height:300px;width:300px"> <mm:treenode value="rootnode1" state="expanded"> <mm:treenode value="node1" state="expanded"></mm:treenode> <mm:treenode value="node3" state="expanded"></mm:treenode> </mm:treenode> <mm:treenode value="rootnode2"0state="expanded"> <mm:treenode value="node2" state="expanded"></mm:treenode> <mm:treenode value="node4" state="expanded"></mm:treenode> </mm:treenode> </mm:treecontrol>

EXTENSION DE DREAMWEAVER CS4 96


Interfaces utilisateur destines aux extensions

Manipulation du contenu d'une commande d'arborescence


Les commandes et les nuds d'arborescence sous-jacents sont implments comme des balises HTML. Ils sont par consquent analyss par Dreamweaver et stocks dans l'arborescence du document. Ces balises peuvent ensuite tre manipules comme tout autre nud de document. Pour plus d'informations sur les fonctions et mthodes DOM, voir Modle d'objet de document (DOM) Dreamweaver la page 101.
Ajout d'un nud Pour programmer l'ajout d'un nud une commande d'arborescence existante, dfinissez la proprit innerHTML de la balise MM:TREECONTROL ou de l'une des balises MM:TREENODE existantes. La dfinition de la balise inner HTML d'un nud d'arborescence cre un nud imbriqu.

L'exemple suivant ajoute un nud tout en haut de l'arborescence :


var tree = document.myTreeControl; //add a top-level node to the bottom of the tree tree.innerHTML = tree.innerHTML + '<mm:treenode name="node3" value="node3">';

Ajout d'un nud enfant Pour ajouter un nud enfant au nud slectionn, dfinissez la proprit innerHTML du

nud slectionn. L'exemple suivant ajoute un nud enfant un nud parent slectionn :
var tree = document.myTreeControl; var selNode = tree.selectedNodes[0]; //deselect the node, so we can select the new one selnode.removeAttribute("selected"); //add the new node to the top of the selected node's children selNode.innerHTML = '<mm:treenode name="item10" value="New item11" expanded selected>' + selNode.innerHTML;

Suppression d'un nud Pour supprimer le nud slectionn de la structure du document, utilisez la proprit
innerHTML ou outerHTML.

L'exemple suivant supprime le nud parent slectionn entier ainsi que ses nuds enfants :
var tree = document.myTreeControl; var selNode = tree.selectedNodes[0]; selNode.outerHTML = "";

Ajout d'une commande de bouton couleur


Les commandes de bouton couleur permettent d'ajouter une interface de slecteur de couleurs vos extensions. Outre les types d'entres standard tels que le texte, la case cocher et le bouton, Dreamweaver prend en charge mmcolorbutton, un autre type d'entres prsent dans les extensions. Si vous spcifiez <input type="mmcolorbutton"> dans votre code, un slecteur de couleurs s'affiche dans l'interface utilisateur. Vous pouvez dfinir la couleur par dfaut du slecteur en dfinissant un attribut de valeur dans la balise d'entre. Si aucune valeur n'est spcifie, le slecteur de couleurs s'affiche par dfaut en gris, et la proprit value de l'objet d'entre renvoie une chane vide. L'exemple suivant reprsente une balise mmcolorbutton valide :
<input type="mmcolorbutton" name="colorbutton" value="#FF0000"> <input type="mmcolorbutton" name="colorbutton" value="teal">

Un bouton couleur comporte un vnement, onChange, qui est dclench lorsque la couleur est modifie. Veillez synchroniser une zone de texte avec un slecteur de couleurs. Les exemples suivants crent une zone de texte qui synchronise la couleur de la zone de texte avec celle du slecteur de couleurs :

EXTENSION DE DREAMWEAVER CS4 97


Interfaces utilisateur destines aux extensions

<input type = "mmcolorbutton" name="fgcolorPicker" onChange="document.fgcolorText.value=this.value"> <input type = "test" name="fgcolorText" onBlur="document.fgColorPicker.value=this.value">

Dans cet exemple, l'utilisateur modifie la valeur de la zone de texte puis accde un autre lment en appuyant sur la touche Tab ou en cliquant. Le slecteur de couleurs est ensuite mis jour afin d'afficher la couleur spcifie dans la zone de texte. Lorsque l'utilisateur slectionne une nouvelle couleur dans le slecteur, la zone de texte affiche la valeur hexadcimale de cette couleur.

Ajout de contenu Flash Dreamweaver


Le contenu Flash (fichiers SWF) peut s'afficher dans l'interface de Dreamweaver comme partie d'un objet ou d'une commande. Cette prise en charge de Flash est trs utile si vous crez des extensions qui emploient des formulaires, animations, ActionScript ou autre contenu Flash. Pour rsumer, vous permettez aux objets et commandes Dreamweaver d'afficher des botes de dialogue (voir Objets de la barre Insertion la page 111 pour plus d'informations sur la cration d'objets et Commandes la page 139 pour plus d'informations sur les commandes) l'aide de la balise form avec la balise object pour incorporer votre contenu Flash dans une bote de dialogue Dreamweaver.

Exemple d'une bote de dialogue Flash simple


Dans cet exemple, vous allez utiliser Dreamweaver pour crer une commande. La commande cre affiche un fichier SWF nomm myFlash.swf lorsque l'utilisateur clique sur la commande dans le menu Commandes. Pour obtenir des informations plus spcifiques sur la cration de commandes avant d'appliquer cet exemple, consultez la section Commandes la page 139. Remarque : Cet exemple suppose qu'un fichier SWF nomm myFlash.swf se trouve dj dans le dossier Configuration/Commands du dossier d'installation de l'application Dreamweaver. Pour tester cet exemple avec votre propre fichier SWF, enregistrez ce fichier SWF dans le dossier Commands de l'application et remplacez toutes les occurrences de myFlash.swf par le nom de votre fichier. Dans Dreamweaver, ouvrez un nouveau document HTML de base (ce document constituera votre fichier de dfinition de commande). Entre les balises title d'ouverture et de fermeture, entrez My Flash Movie afin que le dbut de votre page indique :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My Flash Movie</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head>

Maintenant, enregistrez le fichier sous le nom My Flash Movie.htm dans le dossier Configuration/Commands de l'application (le fichier doit nanmoins rester ouvert). Enregistrez le fichier de faon pouvoir intgrer votre fichier SWF avec un chemin d'accs relatif ; dans le cas contraire, Dreamweaver emploie un chemin absolu. Revenez au document HTML. Entre les balises body d'ouverture et de fermeture, ajoutez des balises form d'ouverture et de fermeture. Ensuite, entre ces balises form, utilisez l'option de Insertion > Mdias > Flash pour ajouter votre fichier SWF au fichier de dfinition de commande. Lorsque vous y tes invit, slectionnez le fichier SWF dans le dossier Commands, puis cliquez sur OK. Votre fichier de dfinition de commande doit maintenant tre semblable l'exemple suivant (les attributs width et height peuvent tre diffrents, selon les proprits de votre fichier SWF) :

EXTENSION DE DREAMWEAVER CS4 98


Interfaces utilisateur destines aux extensions

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My Flash Movie</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <body> <form> <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="700" height="150"> <param name="movie" value="myFlash.swf"> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="myFlash.swf" width="700" height="150"> <!--<![endif]--> <param name="quality" value="high"/> <param name="wmode" value="opaque" /> <param name="swfversion" value="8.0.35.0" /> <!-- This param tag prompts users with Flash Player 6.0 r65 and higher to download the latest version of Flash Player. Delete it if you don't want users to see the prompt. --> <param name="expressinstall" value="../../../../../ColdFusion8/wwwroot/lr/Scripts/expressInstall.swf" /> <!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. --> <div> <h4>Content on this page requires a newer version of Adobe Flash Player.</h4> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="33" /></a></p> </div> <!--[if !IE]>--> </object> <!--<![endif]--> </object> </form> </body> </html>

Enregistrez nouveau le fichier. Ensuite, quittez et redmarrez Dreamweaver. Slectionnez Commandes > My Flash Movie et votre fichier SWF s'affiche dans une bote de dialogue Dreamweaver, comme indiqu dans la figure suivante :

EXTENSION DE DREAMWEAVER CS4 99


Interfaces utilisateur destines aux extensions

Cet exemple prsente une mise en oeuvre simple de la prise en charge des fichiers SWF dans Dreamweaver. Lorsque vous serez familiaris avec la cration d'objets et de commandes, ou encore de formulaires plus compliqus, vous pourrez intgrer des fichiers SWF dans vos extensions Dreamweaver pour une exprience utilisateur encore plus dynamique. Pour plus d'informations, voir Commandes la page 139, qui porte sur l'criture d'une fonction commandButtons() permettant d'ajouter des boutons la bote de dialogue qui affiche vos fichiers SWF.

Intgration de Photoshop et d'objets dynamiques


Adobe Dreamweaver CS4 importe et manipule les fichiers Photoshop sous la forme d'objets dynamiques. Toute modification apporte l'image d'origine l'aide de Photoshop se rpercute immdiatement dans Dreamweaver. Pour plus d'information sur les API qui intgrent Photoshop Dreamweaver, voir Intgration de Photoshop dans le Guide des API de Dreamweaver.

Exemple d'objet dynamique


Dans cet exemple, vous allez utiliser Dreamweaver pour crer une commande qui met jour un fichier Photoshop (PSD) lorsque l'utilisateur clique sur cette commande dans le menu Commandes. Pour permettre cette commande de fonctionner, veillez placer une image Web d'objet dynamique sur votre page HTML. Pour obtenir des informations plus spcifiques sur la cration de commandes avant d'appliquer cet exemple, consultez la section Commandes la page 139. Dans Dreamweaver, ouvrez un nouveau document HTML de base (ce document constituera votre fichier de dfinition de commande). Votre fichier de dfinition de commande se prsente comme suit :

EXTENSION DE DREAMWEAVER CS4 100


Interfaces utilisateur destines aux extensions

<html xmlns:MMStr ing="http://www.adobe.com /schemes/data/ string/"> <head> <title> Smart Objects API</ title > <SC RIPT SRC="../Shared/Common/Scripts /dwscripts.js"></SC RIPT> <SCRIPT LANGUAGE="Javascript"> function invokeSmartObjectJavaScriptAPICall() { var selection = dw.getSelection(); if (!selection) { alert("Err: No selection!"); return; } var node = dw.offsetsToNode(selection[0], selection[1]); if (!node) { alert("Err: No Node!"); return; } var imageSrc = node.getAttribute("src"); if (!imageSrc) { alert("Err: No src attribute!"); return; } var fullPath = getFullPath(imageSrc); if (!fullPath) { alert("Err: No path!"); return; } //alert(fullPath); alert("updateSmartObjectFromOriginal"); dw.updateSmartObjectFromOriginal(fullPath); } <script> </head> <body onload="invokeSmartObjectJavaScriptAPICall()"> </body> </html>

Enregistrez le fichier sous le nom smartobjects.htm dans le dossier Configuration/Commands de l'application. Lorsque vous y tes invit, slectionnez le fichier SWF dans le dossier Commands, puis cliquez sur OK.

101

Chapitre 6 : Modle d'objet de document (DOM) Dreamweaver


Dans Adobe Dreamweaver, le modle d'objet de document (DOM) est une structure essentielle pour les crateurs d'extensions. Un DOM dfinit la composition des documents crs dans un langage de balisage. En reprsentant les balises et attributs sous forme sous forme d'objets et de proprits, le DOM rend les documents et leurs composants accessibles et exploitables par les langages de programmation.

A propos du DOM de Dreamweaver


La structure d'un document HTML est rvle par son arborescence. La racine est la balise html et les deux parties principales sont les balises head et body. Parmi les ramifications de head figurent les balises title, style, script, isindex, base, meta et link. Les ramifications de la balise body sont les suivantes :

Titres (h1, h2, etc.) Elments de niveau bloc (p, div, form, etc.) Elments intgrs (br, img, etc.) Autres types d'lments
Les lments mergeant de ces ramifications correspondent, entre autres, des attributs tels que width, height, alt, etc. Dans un DOM, la structure de l'arborescence est maintenue et prsente sous la forme d'une hirarchie de nuds parents et de nuds enfants. Le nud racine est orphelin, et les nuds terminaux sont dpourvus de nuds enfants. A chaque niveau de cette structure HTML, l'lment HTML peut revtir la forme d'un nud dans JavaScript. Cette structure vous permet ainsi d'accder au document et tous les lments qui le composent. Dans JavaScript, vous pouvez faire rfrence l'un des objets du document par nom ou par index. Par exemple, supposons qu'un bouton Envoyer dont le nom ou l'ID est myButton soit le second lment du premier formulaire du document. Dans ce cas, les deux rfrences suivantes au bouton sont valides :

Par nom, comme document.myForm.myButton Par index, comme document.forms[0].elements[1]


Les objets qui portent le mme nom, tels qu'un groupe d'options, sont rduits sous forme de tableau. Vous pouvez accder un objet prcis du tableau en augmentant l'index, en prenant zro comme origine. Par exemple, la premire option portant le nom myRadioGroup dans un formulaire nomm myForm possde la rfrence document.myForm.myRadioGroup[0].

EXTENSION DE DREAMWEAVER CS4 102


Modle d'objet de document (DOM) Dreamweaver

Distinction entre les DOM de document utilisateur et d'extension


Il convient de faire la diffrence entre le DOM du document de l'utilisateur et le DOM de l'extension. Les informations prsentes dans cette rubrique s'appliquent aux deux types de documents Dreamweaver, mais la manire de rfrencer chacun des DOM diffre. Si vous tes familier avec l'utilisation de JavaScript dans les navigateurs, vous pouvez dsigner les objets du document par document (par exemple, document.forms[0]). Dans Dreamweaver, document se rapporte au fichier d'extension ; document.forms[0] se rapporte au premier formulaire dans l'UI d'extension. Pour rfrencer les objets dans le document de l'utilisateur, vous devez toutefois appeler dw.getDocumentDOM(), dw.createDocument() ou toute autre fonction qui renvoie un objet de document utilisateur. Ainsi, pour dsigner la premire image du document actif, vous pouvez crire dw.getDocumentDOM().images[0]. Vous pouvez galement stocker l'objet de document dans une variable et vous y rfrer ultrieurement, comme indiqu dans l'exemple suivant :
var dom = dw.getDocumentDOM(); var firstImg = dom.images[0]; firstImg.src = "myImages.gif"; //get the dom of the current document

Ce type d'annotation est commun dans tous les fichiers du dossier Configuration, particulirement dans les fichiers de commandes. Pour plus d'informations sur la mthode dw.getDocumentDOM(), voir la fonction dreamweaver.getDocumentDOM() dans le Guide des API de Dreamweaver.

DOM Dreamweaver
Le DOM Dreamweaver associe un sous-ensemble d'objets, de proprits et de mthodes du DOM Niveau 1 du World Wide Web Consortium (W3C), combins certaines proprits du DOM de Microsoft Internet Explorer 4.0.

Objets, proprits et mthodes du DOM Dreamweaver


Le tableau suivant rpertorie les objets, les proprits, les mthodes et les vnements pris en charge par le DOM Dreamweaver. Certaines proprits sont en lecture seule lorsqu'elles sont accessibles en tant que proprits d'un objet spcifique. Les proprits en lecture seule, lorsqu'elles sont utilises dans le contexte recens, sont marques d'une puce ().

EXTENSION DE DREAMWEAVER CS4 103


Modle d'objet de document (DOM) Dreamweaver

Objet
window

Proprits
navigator document innerWidth innerHeight screenX screenY

Mthodes
alert() confirm() escape() unescape() close() setTimeout() clearTimeout() setInterval() clearInterval() resizeTo()

Evnements
onResize

navigator document

platform forms (tableau d'objets de

Aucun getElementsByTagName() getElementsByAttributeName() getElementById() hasChildNodes()

Aucun onLoad

formulaire)
images (tableau d'objets

image)
layers (tableau d'objets LAYER, ILAYER et

d'lments positionnement absolu) Objets child par nom


nodeType parentNode childNodes previousSibling nextSibling documentElement body URL parentWindow toutes les balises/tous les lments nodeType parentNode childNodes tagName previousSibling nextSibling attributs par nom innerHTML outerHTML getAttribute() setAttribute() removeAttribute() getElementsByTagName() getElementsByAttributeName() hasChildNodes()

EXTENSION DE DREAMWEAVER CS4 104


Modle d'objet de document (DOM) Dreamweaver

Objet
form

Proprits En complment des proprits disponibles pour toutes les balises :


tags:elements (tableau d'objets button, checkbox, password, radio, reset, select, submit, text, file, hidden, image et textarea) mmcolorbutton

Mthodes Uniquement les mthodes disponibles pour toutes les balises.

Evnements Aucun

Objets child par nom


layer

En complment des proprits disponibles pour toutes les balises :


visibility left top width height zIndex

Uniquement les mthodes disponibles pour toutes les balises.

Aucun

image

En complment des proprits disponibles pour toutes les balises :


src

Uniquement les mthodes disponibles pour toutes les balises.

onMouseOver onMouseOut onMouseDown onMouseUp

button reset submit

En complment des proprits disponibles pour toutes les balises :


form

En complment des mthodes disponibles pour toutes les balises :


blur() focus()

onClick

checkbox radio

En complment des mthodes En complment des proprits disponibles pour disponibles pour toutes les balises : toutes les balises : checked blur()
form focus()

onClick

password text file hidden image (field) textarea

En complment des proprits disponibles pour toutes les balises :


form value

En complment des mthodes disponibles pour toutes les balises :


blur() focus() select()

onBlur onFocus

select

En complment des proprits disponibles pour toutes les balises :


form options (tableau d'objets

En complment des mthodes disponibles pour toutes les balises :


blur() (Windows uniquement) focus() (Windows uniquement)

onBlur

(Windows uniquement)
onChange onFocus

d'option)
selectedIndex

(Windows uniquement)

EXTENSION DE DREAMWEAVER CS4 105


Modle d'objet de document (DOM) Dreamweaver

Objet
option

Proprits En complment des proprits disponibles pour toutes les balises :


text

Mthodes Uniquement les mthodes disponibles pour toutes les balises.

Evnements Aucun

mmcolorbutton

En complment des proprits disponibles pour toutes les balises :


name value

Aucun

onChange

array boolean date function number object string regexp text

Correspond Netscape Navigator 4.0

Correspond Netscape Navigator 4.0

Aucun

nodeType parentNode childNodes previousSibling nextSibling data

hasChildNodes()

Aucun

comment

nodeType parentNode childNodes previousSibling nextSibling data

hasChildNodes()

Aucun

NodeList NamedNodeMap

longueur longueur

item() item()

Aucun Aucun

Proprits et mthodes de l'objet document


Le tableau suivant dcrit en dtail les proprits et les mthodes de l'objet document qui sont prises en charge par Dreamweaver. Les proprits en lecture seule sont marques d'une puce ().

EXTENSION DE DREAMWEAVER CS4 106


Modle d'objet de document (DOM) Dreamweaver

Proprit ou mthode
nodeType parentNode parentWindow

Valeur renvoye
Node.DOCUMENT_NODE

null L'objet JavaScript correspond la fentre parente du document. Cette proprit est dfinie dans le DOM de Microsoft Internet Explorer 4.0, mais ne fait pas partie du DOM de niveau 1 ou 2. Une NodeList (liste de nuds) comprend tous les enfants immdiats de l'objet document. En rgle gnrale, le document comporte un seul enfant : l'objet HTML. null null L'objet JavaScript correspond la balise html. Cette proprit est une forme courte permettant d'obtenir la valeur de document.childNodes et d'extraire la balise HTML de la NodeList. L'objet JavaScript correspond la balise body. Cette proprit est une forme courte permettant d'appeler document.documentElement.childNodes et d'extraire la balise body de la NodeList. Pour les documents de jeu de cadres, cette proprit renvoie le nud correspondant au jeu de cadres situ le plus l'extrieur. L'URL de type file:// du document ou, si le fichier n'a pas t enregistr, une chane vide. Une NodeList pouvant tre utilise pour parcourir les balises de type tagName (par exemple, img, div, etc.). Si l'argument tagName est layer , la fonction renvoie toutes les balises LAYER et ILAYER et tous les lments positionnement absolu. Si l'argument tagName est INPUT , la fonction renvoie tous les lments du formulaire. Si un attribut de nom est spcifi pour un ou plusieurs objets tagName, il doit commencer par une lettre conformment la spcification HTML 4.01 ; dfaut, la longueur du tableau renvoye par cette fonction sera incorrecte.

childNodes

previousSibling nextSibling documentElement

body

URL

getElementsByTagName(tagName)

getElementsById(Id)

Obtient le nud d'lment comportant l'id spcifi. O id dsigne une chane contenant l'ID de l'lment obtenir.
var dom = dw.getDocumentDOM(); var contObj = dom.getElementById('content'); alert("The element with the id 'content' is a " + contObj.tagName);

getElementsByAttributeName(attrName)

Un objet NodeList qui permet de parcourir les lments comportant un attribut attrName (par exemple, tous les lments avec l'attribut for ). Ne fait pas partie de DOM niveau 1 ou 2. L'lment HTML comportant l'ID spcifie.
true

getElementById(id) hasChildNodes()

EXTENSION DE DREAMWEAVER CS4 107


Modle d'objet de document (DOM) Dreamweaver

Proprits et mthodes du code HTML


Le tableau ci-dessous rpertorie les proprits et les mthodes des lments HTML dans Dreamweaver, ainsi que leurs valeurs de retour ou leurs explications. Les proprits en lecture seule sont marques d'une puce ().
Proprit ou mthode
nodeType parentNode childNodes

Valeur renvoye
Node.ELEMENT_NODE

Balise parente. S'il s'agit de la balise HTML, l'objet document est renvoy. Une NodeList (liste de nuds) comprend tous les enfants immdiats de la balise. Le nud frre situ juste avant. Par exemple, dans un document HTML, l'objet previousSibling de l'lment body est l'lment head. Le nud frre situ juste aprs. Par exemple, dans un document HTML, l'objet nextSibling de l'lment head est l'lment body. Toute balise script, style ou meta figurant dans la section head constituerait un nud enfant de l'lment head. Le code HTML tagName de l'lment, tel que IMG, A ou DIV. La valeur renvoye est toujours en majuscules. Chane contenant la valeur de l'attribut de balise spcifi. La balise attrName ne peut pas tre utilise si l'attribut attrName est un mot rserv dans le langage JavaScript (par exemple, class). Dans ce cas, utilisez getAttribute() et setAttribute(). Le code source qui figure entre les balises de dbut et de fin. Par exemple, dans le code <p><b>Hello</b>, World!/<p>, p.innerHTML renvoie <b>Hello</b>, World!. Si vous crivez dans cette proprit, l'arborescence DOM est immdiatement mise jour de faon reflter la nouvelle structure du document. Cette proprit est dfinie dans le DOM de Microsoft Internet Explorer 4.0, mais ne fait pas partie du DOM de niveau 1 ou 2. Code source de cette balise, y compris la balise elle-mme. Pour l'exemple de code prcdent, p.outerHTML renvoie <p><b>Hello</b>, World!</p>. Si vous crivez dans cette proprit, l'arborescence DOM est immdiatement mise jour de faon reflter la nouvelle structure du document. Cette proprit est dfinie dans le DOM de Microsoft Internet Explorer 4.0, mais ne fait pas partie du DOM de niveau 1 ou 2. Valeur de l'attribut spcifi, si celui-ci est spcifi explicitement ; sinon, null. Valeur traduite de l'attribut spcifi ou la mme valeur que celle renvoye par getAttribute() si la valeur de l'attribut n'est pas traduite. Cette proprit n'est pas incluse dans le DOM Niveau 1 ; elle a t ajoute Dreamweaver 3 pour prendre en charge la traduction d'attributs. Ne renvoie aucune valeur. Dfinit l'attribut spcifi sur l'exemple de valeur spcifi, img.setAttribute("src", "image/roses.gif"). Ne renvoie aucune valeur. Supprime l'attribut dfini et sa valeur du code HTML de la balise.

previousSibling

nextSibling

tagName

attrName

innerHTML

outerHTML

getAttribute(attrName) getTranslatedAttribute(attrName)

setAttribute(attrName, attrValue)

removeAttribute(attrName)

EXTENSION DE DREAMWEAVER CS4 108


Modle d'objet de document (DOM) Dreamweaver

Proprit ou mthode
getElementsByTagName(tagName)

Valeur renvoye Une NodeList pouvant tre utilise pour parcourir les balises enfants de type tagName (par exemple, IMG, DIV, etc.). Si l'argument tagName est layer , la fonction renvoie toutes les balises LAYER et ILAYER et tous les lments positionnement absolu. Si l'argument tagName est input , la fonction renvoie tous les lments du formulaire. Si un attribut de nom est spcifi pour un ou plusieurs objets tagName, il doit commencer par une lettre conformment la spcification HTML 4.01 ; dfaut, la longueur du tableau renvoye par cette fonction sera incorrecte.

getElementsByAttributeName(attrName)

Un objet NodeList qui permet de parcourir les lments comportant un attribut attrName (par exemple, tous les lments avec l'attribut for ). Ne fait pas partie de DOM niveau 1 ou 2. Valeur boolenne indiquant si la balise a des enfants. Valeur boolenne indiquant si la balise a des attributs traduits. Cette proprit n'est pas incluse dans le DOM Niveau 1 ; elle a t ajoute Dreamweaver 3 pour prendre en charge la traduction d'attributs.

hasChildNodes() hasTranslatedAttributes()

Proprits et mthodes des objets texte


Chaque bloc de texte contigu dans un document HTML (par exemple, le texte compris l'intrieur d'une balise p) est reprsent par un objet JavaScript. Les objets texte n'ont jamais d'enfants. Le tableau suivant dcrit les proprits et les mthodes d'objets texte empruntes au DOM Niveau 1 et employes dans Dreamweaver. Les proprits en lecture seule sont marques d'une puce ().
Proprit ou mthode
nodeType parentNode child Nodes previousSibling

Valeur renvoye
Node.TEXT_NODE

Balise parente Vide Le nud frre situ juste avant. Par exemple, dans le code <p>blah<br />blah</p>, la balise <p> comporte trois nuds enfant (nud texte, nud lment, nud texte). Le nud previousSibling du troisime enfant correspond la balise <br />; le nud previousSibling du premier enfant a la valeur null. Le nud frre situ juste aprs. Par exemple, dans le code <p>blah<br />blah</p>, le nud nextSibling du premier enfant de la balise p est la balise <br /> ; le nud nextSibling du troisime enfant a la valeur null. La chane de texte relle. Les entits du texte sont reprsentes par des caractres uniques (par exemple, le texte Joseph & I est renvoy sous la forme Joseph & I).
false

nextSibling

data

hasChildNodes()

Proprits et mthodes des objets de commentaire


Un objet JavaScript reprsente chaque commentaire HTML. Le tableau suivant dcrit en dtail les proprits et les mthodes d'objets de commentaires empruntes au DOM Niveau 1 et employes dans Dreamweaver. Les proprits en lecture seule sont marques d'une puce ().

EXTENSION DE DREAMWEAVER CS4 109


Modle d'objet de document (DOM) Dreamweaver

Proprit ou mthode
nodeType parentNode childNodes previousSibling nextSibling data

Valeur renvoye
Node.COMMENT_NODE

Balise parente Un tableau NodeList vide Le nud frre situ juste avant. Le nud frre situ juste aprs. Chane de texte comprise entre les marqueurs de commentaires <!- et -->)

hasChildNodes()

false

Objets dreamweaver et site


Dreamweaver implmente les objets standard accessibles au moyen du DOM et ajoute deux objets personnaliss : dreamweaver et site. Ces objets personnaliss sont couramment utiliss dans les API et pour la rdaction d'extensions. Pour plus d'informations sur les mthodes des objets dreamweaver et site, voir le Guide des API de Dreamweaver.

Proprits de l'objet dreamweaver


L'objet dreamweaver possde deux proprits en lecture seule, comme indiqu dans la liste suivante :

La proprit appName prend la valeur "Dreamweaver". La proprit appVersion prend une valeur ayant le format
"versionNumber.releaseNumber.buildNumber[languageCode] (platform)".

Par exemple, la valeur de la proprit appVersion pour la version Windows sudoise de Dreamweaver est "8.0.XXXX [se] (Win32)" ; pour la version Macintosh anglaise, il s'agit de "8.0.XXXX [en] (MacPPC)". Remarque : Vous trouverez la version et le numro de compilation en choisissant l'lment de menu Aide > A propos de. Les proprits appName et appVersion ont t implmentes dans Dreamweaver 3 et ne sont pas disponibles dans les versions antrieures de Dreamweaver. Pour connatre la version spcifique de Dreamweaver, vrifiez en premier lieu l'existence de appVersion. Ensuite, pour le numro de version, procdez comme dans l'exemple suivant :
if (dreamweaver.appVersion && dreamweaver.appVersion.indexOf('3.01') != -1){ // execute code }

L'objet dreamweaver comprend une proprit appele systemScript, qui vous permet de vrifier la langue du systme d'exploitation de l'utilisateur. Elle vous sera utile pour inclure dans le code de votre extension des spcificits des systmes d'exploitation localiss, comme indiqu dans l'exemple suivant :
if (dreamweaver,systemScript && (dreamweaver.systemScript.indexOf('ja')!=-1){ SpecialCase }

La proprit systemScript renvoie les valeurs suivantes pour les systmes d'exploitation localiss :

EXTENSION DE DREAMWEAVER CS4 110


Modle d'objet de document (DOM) Dreamweaver

Langage Japonais Coren Chinois traditionnel Chinois simplifi

Valeur
ja ko zh_tw zh_cn

Les systmes d'exploitation localiss dans les langues europennes renvoient la valeur en.

Objet site
L'objet site n'a aucune proprit. Pour plus d'informations sur les mthodes de l'objet site, voir le Guide des API de Dreamweaver.

111

Chapitre 7 : Objets de la barre Insertion


Vous pouvez ajouter des lments la barre Insertion pour permettre aux utilisateurs d'effectuer automatiquement certaines tches rptitives, voire crer des botes de dialogue pour leur permettre de dfinir des attributs spcifiques. Les objets sont stocks dans le dossier Configuration/Objects du dossier de l'application Dreamweaver. Les sousdossiers du dossier Objects sont regroups en fonction de l'emplacement des objets dans la barre Insertion ; vous pouvez les ouvrir pour visualiser la construction des objets actuels. Par exemple, vous pouvez ouvrir le fichier Configuration/Objects/Common/Hyperlink.htm pour afficher le code correspondant au bouton permettant d'insrer l'objet Hyperlien de la barre Insertion. Le tableau ci-dessous recense les fichiers utiliss pour crer un objet.
Chemin Configuration/Objects/type_objet/ Configuration/Objects/type_objet/ Configuration/Objects/type_objet/ Fichier nom_objet.htm nom_objet.js nom_objet.gif Description Indique l'lment insrer dans le document. Contient les fonctions excuter. Contient l'image qui s'affiche sur la barre Insertion. Dsigne les objets qui s'affichent sur la barre Insertion, ainsi que l'ordre d'affichage correspondant.

Configuration/Objects

insertbar.xml

Fonctionnement des fichiers d'objet


Les objets insrent des chanes de code spcifiques dans le document d'un utilisateur. Les objets permettent l'utilisateur d'ajouter un contenu (images, lments positionnement absolu, tableaux, etc.) en cliquant sur des icnes ou en slectionnant des options du menu. Les objets se composent des lments suivants :

Le fichier HTML dfinissant l'lment insr dans le document.


La section head d'un fichier d'objet contient des fonctions JavaScript (ou fait rfrence des fichiers JavaScript externes) qui traitent les saisies de formulaires depuis la section body et dterminent le contenu qui est ajout au document de l'utilisateur. Le corps d'un fichier d'objet peut contenir un formulaire HTML qui accepte des paramtres pour l'objet (par exemple, le nombre de lignes et de colonnes insrer dans un tableau) et active une bote de dialogue o les utilisateurs peuvent entrer des attributs. Remarque : Les objets les plus simples contiennent uniquement le code HTML insrer, sans les balises body et head. Pour plus dinformations, consultez la section Customizing Dreamweaver (Personnalisation de Dreamweaver) du centre de support d'Adobe.

L'image figurant dans la barre Insertion (18 x 18 pixels). Additions au fichier insertbar.xml. Le fichier insertbar.xml dfinit l'endroit o apparat l'objet dans la barre
Insertion.

EXTENSION DE DREAMWEAVER CS4 112


Objets de la barre Insertion

Un utilisateur peut slectionner un objet en cliquant sur une icne de la barre Insertion ou en choisissant un lment dans le menu Insertion. Lorsqu'un utilisateur slectionne un objet, les vnements suivants se produisent :
1 Adobe Dreamweaver appelle la fonction canInsertObject() pour dterminer s'il doit afficher une bote de

dialogue. La balise form est recherche dans le fichier d'objet. Si un formulaire existe et que vous slectionnez l'option Afficher la bote de dialogue lors de l'insertion d'un objet de la bote de dialogue Prfrences gnrales, Dreamweaver appelle la fonction windowDimensions(), si elle est dfinie. Dreamweaver appelle la fonction pour dterminer la taille de la bote de dialogue dans laquelle le formulaire doit tre affich. Si le fichier d'objet ne contient aucun formulaire, Dreamweaver n'affiche pas de bote de dialogue et ignore l'tape 2.
2 Si Dreamweaver affiche une bote de dialogue l'tape 1, l'utilisateur saisit les paramtres de l'objet (tels que le

nombre de lignes et de colonnes d'un tableau) dans les champs de texte de la bote de dialogue, puis clique sur OK.
3 Dreamweaver appelle la fonction objectTag() et insre la valeur renvoye correspondante dans le document

aprs la slection en cours (celle-ci n'est pas remplace).


4 Si Dreamweaver ne trouve pas la fonction objectTag(), il recherche une fonction insertObject() et l'appelle.

Fichier de dfinition de la barre Insertion


Le fichier Configuration/Objects/insertbar.xml dfinit les proprits de la barre Insertion. Ce fichier XML contient la dfinition de chacun des objets, dans leur ordre d'apparition. La premire fois qu'un utilisateur dmarre Dreamweaver, la barre Insertion s'affiche horizontalement au-dessus du document. Sa visibilit et sa position sont ensuite enregistres dans le Registre.

Hirarchie des balises du fichier Insertbar.xml


L'exemple ci-dessous affiche le format et la hirarchie des balises imbriques du fichier insertbar.xml :
<?xml version="1.0" ?> <!DOCTYPE insertbarset SYSTEM "-//Adobe//DWExtension insertbar 10.0"> <insertbar xmlns:MMString="http://www.adobe.com/schemes/data/string/"> <category id="DW_Insertbar_Common" MMString:name="insertbar/categorycommon" folder="Common"> <button id="DW_Hyperlink" image="Common\Hyperlink.png" MMString:name="insertbar/hyperlink" file="Common\Hyperlink.htm" /> <button id="DW_Email" image="Common\E-Mail Link.png" MMString:name="insertbar/email" file="Common\E-Mail Link.htm" /> <separator /> <menubutton id="DW_Images" MMString:name="insertbar/images" image="Common\Image.png"> <button id="DW_Image" image="Common\Image.png" MMString:name="insertbar/image" file="Common\Image.htm" /> ... </menubutton> <separator /> <button id="DW_TagChooser" MMString:name="insertbar/tagChooser" image="Common\Tag Chooser.gif" command="dw.showTagChooser()" codeOnly="TRUE"/> </category> ... </insertbar>

EXTENSION DE DREAMWEAVER CS4 113


Objets de la barre Insertion

Remarque : Les balises insertbar et category emploient les balises de fermeture </insertbar> et </category> pour indiquer la fin de leur contenu. La fin des attributs et du contenu des balises button, checkbutton et separator est indique par une barre oblique (/) insre avant le crochet de fermeture.

Balises de dfinition de la barre Insertion


Le fichier insertbar.xml contient les balises et les attributs suivants :

<insertbar>
Description Cette balise dsigne le contenu du fichier de dfinition de la barre Insertion. La balise de fermeture </insertbar> indique la fin du contenu. Attributs Aucun. Exemple
<insertbar> <category id="DW_Insertbar_Common" folder="Common"> <button id="DW_Hyperlink" image="Common\Hyperlink.gif" file="Common\Hyperlink.htm"/>0 ... </insertbar>

<category>
Description Cette balise dfinit une catgorie de la barre Insertion (par exemple, Commun, Formulaires ou HTML). La balise de fermeture </category> indique la fin du contenu. Remarque : Par dfaut, la barre Insertion regroupe diffrentes catgories (par exemple, Commun, Formulaires ou HTML). Dans les versions prcdentes de Dreamweaver, la barre Insertion se composait de diffrents onglets. Les utilisateurs peuvent dfinir leurs prfrences quant l'organisation des objets de la barre Insertion (par catgorie ou par onglet). Si l'utilisateur choisit l'organisation par onglet, la balise category dfinit chacun d'eux. Attributs
id, {folder}, {showIf}

Exemple
<category id="DW_Insertbar_Common" folder="Common"> <button id="DW_Hyperlink" image="Common\Hyperlink.gif" file="Common\Hyperlink.htm"/> </category>

<menubutton>
Description Cette balise dfinit un menu droulant dans la barre Insertion.

EXTENSION DE DREAMWEAVER CS4 114


Objets de la barre Insertion

Attributs
id, image, {showIf}, {name}, {folder}

Exemple
<menubutton id="DW_ImageMenu" name="Images" image="Common\imagemenu.gif" folder="Images"> <button id="DW_Image" image="Common\Image.gif" enabled="" showIf="" file="Common\Image.htm" /> </menubutton>

<button />
Description Cette balise dfinit un bouton de la barre Insertion permettant l'utilisateur d'excuter le code spcifi par les attributs command ou file. Attributs
id, image, name, {canDrag}, {showIf}, {enabled}, {command}, {file}, {tag}, {codeOnly}

Exemple
<button id="DW_Object" image="Common\Object.gif" name="Object" enabled="true" showIf="" file="Common\Obect.htm" />

<checkbutton />
Description Ce type de bouton peut se voir attribuer l'tat activ ou dsactiv. Lorsque vous cliquez dessus, ce bouton apparat en surbrillance comme tant enfonc. Lorsqu'il est dsactiv, un bouton de type checkbutton apparat plat. Dreamweaver possde des tats Survol, Enfonc, Survol et enfonc et Dsactiv et enfonc. La commande doit faire en sorte qu'un clic sur le bouton d'activation provoque un changement de son tat. Attributs
id, image, checked, {showIf}, {enabled}, {command}, {file}, {tag}, {name}, {codeOnly}

Exemple
<checkbutton id="DW_StandardView" name = "Standard View" image="Tools\Standard View.gif" checked="_View_Standard" command="dw.getDocumentDOM().setShowLayoutView(false)"/>

EXTENSION DE DREAMWEAVER CS4 115


Objets de la barre Insertion

<separator />
Description Cette balise affiche une ligne verticale sur la barre Insertion. Attributs
{showIf}

Exemple
<separator showIf="_VIEW_CODE"/>

Attributs des balises de dfinition de la barre Insertion


La signification des attributs correspondant aux balises de dfinition de la barre Insertion est la suivante :

id="unique id"
Description L'attribut id correspond l'identificateur des boutons affichs dans la barre Insertion. Chaque lment du fichier doit possder un attribut id unique. Exemple
id="DW_Anchor"

image="image_path
Description Cet attribut indique le chemin d'accs, par rapport au dossier Configuration de Dreamweaver, du fichier de l'icne affiche dans la barre Insertion. Le format de cette icne doit figurer parmi les formats pris en charge par Dreamweaver, mais il s'agit en principe d'un fichier au format GIF ou JPEG, d'une taille de 18x 18 pixels. Exemple
image="Common/table.gif"

canDrag="Boolean
Description Cet attribut spcifie si l'utilisateur a la possibilit de faire glisser l'icne dans le code ou dans l'espace de travail pour insrer l'objet correspondant dans le document. Si vous ne spcifiez pas cet attribut, la valeur par dfaut est true. Exemple
canDrag="false"

EXTENSION DE DREAMWEAVER CS4 116


Objets de la barre Insertion

showIf="enabler"
Description Cet attribut indique que ce bouton doit s'afficher dans la barre Insertion uniquement si la valeur de l'activateur Dreamweaver dsign est rgle sur true. Si vous ne spcifiez pas l'attribut showIf, le bouton s'affiche systmatiquement. Vous disposez des activateurs suivants : _SERVERMODEL_ASP, _SERVERMODEL_ASPNET, _SERVERMODEL_JSP, _SERVERMODEL_CFML (pour toutes les versions d'Adobe ColdFusion), _SERVERMODEL_CFML_UD4 (uniquement pour UltraDev version 4 d'Adobe ColdFusion), _SERVERMODEL_PHP, _FILE_TEMPLATE, _VIEW_CODE, _VIEW_DESIGN, _VIEW_LAYOUT, _VIEW_EXPANDED_TABLES, et _VIEW_STANDARD. Pour spcifier plusieurs activateurs, sparez-les par des virgules (chaque virgule signifie ET). Pour exclure des activateurs (NOT), utilisez un point d'exclamation (!). Exemple Si vous souhaitez qu'un bouton apparaisse uniquement en mode Code dans une page ASP, dfinissez les activateurs comme suit :
showIf="_VIEW_CODE, _SERVERMODEL_ASP"

enabled="enabler"
Description Cet attribut indique que l'utilisateur peut accder l'lment si la valeur de DW_enabler est rgle sur true. Si vous ne spcifiez pas la fonction enabled, l'lment est systmatiquement activ par dfaut. Vous disposez des activateurs suivants : _SERVERMODEL_ASP,_SERVERMODEL_ASPNET, _SERVERMODEL_JSP, _SERVERMODEL_CFML (pour toutes les versions de ColdFusion), _SERVERMODEL_CFML_UD4 (uniquement pour UltraDev version 4 de ColdFusion),
_SERVERMODEL_PHP, _FILE_TEMPLATE, _VIEW_CODE, _VIEW_DESIGN, _VIEW_LAYOUT, _VIEW_EXPANDED_TABLES, et _VIEW_STANDARD.

Pour spcifier plusieurs activateurs, sparez-les par des virgules (chaque virgule signifie ET). Pour exclure des activateurs (NOT), utilisez un point d'exclamation (!). Exemple Pour que le bouton soit disponible en mode Code uniquement, indiquez :
enabled="_VIEW_CODE"

Le bouton s'affiche alors en gris dans les autres modes.

checked="enabler"
Description L'attribut checked est obligatoire si vous insrez la balise checkbutton. L'lment est activ si la valeur de DW_enabler est dfinie sur true. Vous disposez des activateurs suivants : _SERVERMODEL_ASP, _SERVERMODEL_ASPNET, _SERVERMODEL_JSP, _SERVERMODEL_CFML (pour toutes les versions de ColdFusion), _SERVERMODEL_CFML_UD4 (uniquement pour UltraDev version 4 de ColdFusion),
_SERVERMODEL_PHP, _FILE_TEMPLATE, _VIEW_CODE, _VIEW_DESIGN, _VIEW_LAYOUT, _VIEW_EXPANDED_TABLES, et _VIEW_STANDARD.

EXTENSION DE DREAMWEAVER CS4 117


Objets de la barre Insertion

Pour spcifier plusieurs activateurs, sparez-les par des virgules (chaque virgule signifie ET). Pour exclure des activateurs (NOT), utilisez un point d'exclamation (!). Exemple
checked="_View_Layout"

command="API_function"
Description Au lieu d'indiquer Dreamweaver de se rfrer un fichier HTML comportant le code insrer, vous pouvez associer une commande cette balise. Lorsque l'utilisateur clique sur le bouton auquel se rapporte cette balise, Dreamweaver effectue alors la commande spcifie. Exemple
command="dw.showTagChooser()"

file="file_path"
Description L'attribut file dfinit le chemin d'accs, par rapport au dossier Configuration de Dreamweaver, d'un fichier d'objet. Dreamweaver drive l'infobulle de l'icne d'objet partir du titre du fichier d'objet, sauf si vous spcifiez l'attribut name. Exemple
file="Templates/Editable.htm"

tag="editor"
Description Cet attribut ordonne Dreamweaver d'appeler un diteur de balises. En mode Code, si l'attribut tag est dfini et que l'utilisateur clique sur l'objet, Dreamweaver appelle la bote de dialogue Balise. En mode Code, si vous spcifiez les attributs tag et command, Dreamweaver appelle l'diteur de balises. En mode Cration, si codeOnly="TRUE" et que l'attribut file n'est pas spcifi, Dreamweaver active les modes Code et Cration, place le focus dans la partie code et appelle l'diteur de balises. Exemple
tag = "form"

name="tooltip_text
Description L'attribut name dfinit l'infobulle qui s'affiche lorsque le curseur de la souris pointe sur l'objet concern. Si vous spcifiez un fichier d'objet sans spcifier l'attribut name, Dreamweaver utilise le nom du fichier comme infobulle. Remarque : Si vous ne spcifiez pas l'attribut name, l'objet ne pourra pas tre regroup dans la catgorie Favoris de l'interface de la barre Insertion. Certains objets de la barre Insertion utilisent une variante de l'attribut name comportant le prfixe MMString. Le prfixe MMString indique une chane localise ; ces valeurs sont dcrites dans Localisation d'une extension la page 86.

EXTENSION DE DREAMWEAVER CS4 118


Objets de la barre Insertion

Exemple
name = "cfoutput"

Modification de la barre Insertion


Vous pouvez dplacer les objets d'une catgorie une autre, renommer les diffrentes catgories et supprimer de manire dfinitive certains objets du panneau. Pour que vos modifications soient prises en compte et apparaissent dans la barre Insertion, vous devez redmarrer Dreamweaver ou recharger les extensions. Pour plus d'informations sur le rechargement des extensions, voir Rechargement d'extensions la page 84. Dplacement ou copie d'un objet rpertori dans une catgorie de la barre Insertion vers une autre catgorie ou vers un emplacement diffrent de la mme catgorie 1 Enregistrez une copie de sauvegarde du fichier insertbar.xml (nommez-la par exemple insertbar.sauvegarde.xml).
2 Ouvrez le fichier insertbar.xml d'origine. 3 Recherchez la balise button reprsentant l'objet dplacer ou copier. Par exemple, pour dplacer l'objet Image

de son emplacement au sein de la catgorie Commun, recherchez la balise button dont l'attribut id est "DW_Image".
4 Coupez ou copiez l'ensemble de la balise button. 5 Recherchez la balise category reprsentant la catgorie dans laquelle vous souhaitez dplacer ou copier l'objet. 6 Recherchez l'emplacement de la catgorie dans lequel vous souhaitez faire apparatre l'objet. 7 Collez la balise button. 8 Enregistrez le fichier insertbar.xml. 9 Rechargez les extensions.

Suppression d'un objet de la barre Insertion 1 Enregistrez une copie de sauvegarde du fichier insertbar.xml (nommez-la par exemple insertbar.sauvegarde.xml).
2 Ouvrez le fichier insertbar.xml d'origine. 3 Recherchez la balise button reprsentant l'objet supprimer. 4 Supprimez l'intgralit de la balise button. 5 Enregistrez le fichier insertbar.xml. 6 Sur votre disque, retirez les fichiers HTML, GIF et JavaScript du dossier dans lequel ils se trouvent pour les placer

dans un dossier non rpertori dans le fichier insertbar.xml. Par exemple, vous pouvez crer un nouveau dossier dans le dossier Configuration/Objects pour y placer les fichiers de l'objet. Si vous tes certain de vouloir supprimer cet objet, vous pouvez supprimer les fichiers de manire dfinitive. Il peut nanmoins s'avrer utile de conserver une copie de sauvegarde de ces fichiers en vue de pouvoir les restaurer, le cas chant.
7 Rechargez les extensions.

Modification de l'ordre des catgories de la barre Insertion 1 Enregistrez une copie de sauvegarde du fichier insertbar.xml (nommez-la par exemple insertbar.sauvegarde.xml).
2 Ouvrez le fichier insertbar.xml d'origine. 3 Recherchez la balise category correspondant la catgorie dplacer, puis slectionnez-la ainsi que l'ensemble de

son contenu.

EXTENSION DE DREAMWEAVER CS4 119


Objets de la barre Insertion

4 Coupez cette balise. 5 Collez la balise dans son nouvel emplacement. Veillez ne pas coller la balise au sein d'une autre balise category. 6 Enregistrez le fichier insertbar.xml. 7 Rechargez les extensions.

Cration d'une nouvelle catgorie 1 Enregistrez une copie de sauvegarde du fichier insertbar.xml (nommez-la par exemple insertbar.sauvegarde.xml).
2 Ouvrez le fichier insertbar.xml d'origine. 3 Crez une balise category et indiquez le dossier par dfaut ainsi que l'ensemble des objets contenus dans cette

catgorie.
4 Pour plus d'informations sur la syntaxe des balises dans insertbar.xml, voir Balises de dfinition de la barre

Insertion la page 113.


5 Enregistrez le fichier insertbar.xml. 6 Rechargez les extensions.

Ajout d'un nouvel objet dans la barre Insertion


Vous pouvez ajouter des objets la barre Insertion. Pour que vos modifications soient prises en compte et apparaissent dans la barre Insertion, vous devez redmarrer Dreamweaver ou recharger les extensions. Pour plus d'informations sur le rechargement des extensions, voir Rechargement d'extensions la page 84.
1 Dfinissez la chane spcifique de code destine au document de l'utilisateur par le biais de HTML et, en option,

JavaScript.
2 Identifiez ou crez l'image (18 x 18 pixels) correspondant au bouton intgrer l'interface de Dreamweaver.

Si vous crez une image de taille suprieure, Dreamweaver la redimensionne pour lui attribuer une taille de 18 x 18 pixels. Si vous ne crez pas d'image pour un objet, une icne d'objet par dfaut reprsente par un point d'interrogation (?) apparat dans la barre Insertion.
3 Ajoutez les nouveaux fichiers au dossier Configuration/Objects. 4 Modifiez le fichier insertbar.xml pour indiquer l'emplacement des nouveaux fichiers et spcifiez les attributs

(consultez la section Fichier de dfinition de la barre Insertion la page 112) dfinissant l'aspect du bouton.
5 Redmarrez Dreamweaver ou rechargez les extensions.

Le nouvel objet apparat dans la barre Insertion l'emplacement indiqu. Remarque : Mme si les fichiers d'objet peuvent tre stocks dans des dossiers spars, il est important que le nom de chaque fichier soit unique. La fonction dom.insertObject(), par exemple, recherche les fichiers dans l'ensemble du dossier Objects sans tenir compte des sous-dossiers (pour plus d'informations sur la fonction dom.insertObject(), voir le Guide des API de Dreamweaver). Si le dossier Forms contient un fichier nomm Button.htm et qu'un autre fichier nomm Button.htm se trouve galement dans le dossier MyObjects, Dreamweaver ne parvient pas les diffrencier. S'il existe deux instances du fichier Button.htm, dom.insertObject() affiche deux objets nomms Button ; il est ds lors difficile pour l'utilisateur de les diffrencier.

Ajout d'objets au menu Insertion


Pour ajouter ou contrler la position d'un objet du menu Insertion (ou de tout autre menu), modifiez le fichier menus.xml. Ce fichier contrle l'intgralit de la structure de menus pour Dreamweaver. Pour plus d'informations sur la modification du fichier menus.xml, voir Menus et commandes de menu la page 150.

EXTENSION DE DREAMWEAVER CS4 120


Objets de la barre Insertion

Si vous souhaitez distribuer l'extension d'autres utilisateurs de Dreamweaver, voir Utilisation d'Extension Manager la page 87 pour en savoir plus sur le conditionnement des extensions.

Exemple simple d'insertion d'un objet


Cet exemple ajoute la barre Insertion un objet permettant aux utilisateurs de rayer d'une ligne (barrer) le texte slectionn en cliquant sur un bouton. Cet objet s'utilise lors de l'insertion de commentaires concernant l'dition d'un document. Cet exemple implique des manipulations du texte ; vous pouvez par consquent dcouvrir certains des objets existants dans le menu droulant Texte de la catgorie HTML de la barre Insertion et vous en servir comme d'un modle. Par exemple, vous pouvez examiner les fichiers d'objet Bold, Emphasis et Heading pour observer des fonctionnalits similaires, dont le principe consiste insrer une balise de part et d'autre du texte slectionn dans Dreamweaver. La procdure de cration de l'objet Strikethrough est la suivante :

Cration du fichier HTML


Le titre de l'objet est indiqu entre les balises title d'ouverture et de fermeture. Vous spcifiez galement le langage de script JavaScript.
1 Crez un document vierge. 2 Ajoutez le code suivant :
<html> <head> <title>Strikethrough</title> <script language="javascript"> </script> </head> <body> </body> </html>

3 Enregistrez le fichier sous le nom Strikethrough.gif dans le dossier Configuration/Objects/Text.

Ajout de fonctions JavaScript


Dans cet exemple, les fonctions JavaScript dfinissent le comportement de l'objet Strikethrough et insrent le code correspondant. Vous devez placer toutes les fonctions API dans la section head du fichier. Les fichiers d'objet existants, par exemple, Configuration/Objects/Text/Em.htm, sont bass sur le mme modle de fonctions et de commentaires. La premire fonction utilise par le fichier de dfinition d'objet est la fonction isDOMRequired(), qui indique si le mode Cration doit tre synchronis avec le mode Code existant avant de poursuivre l'excution. Cependant, l'objet Superscript peut s'utiliser avec de nombreux autres objets en mode Code ; une synchronisation impose n'est donc pas ncessaire. Ajout de la fonction isDOMRequired() 1 Dans la section head du fichier Strikethrough.htm, ajoutez la fonction ci-dessous entre les balises script d'ouverture et de fermeture :

EXTENSION DE DREAMWEAVER CS4 121


Objets de la barre Insertion

<script language="javascript"> function isDOMRequired() { // Return false, indicating that this object is available in Code view. return false; } </script>

2 Enregistrez le fichier.

Ensuite, indiquez si vous souhaitez utiliser la fonction objectTag() ou insertObject(). L'opration effectue par l'objet Strikethrough consiste simplement insrer la balise s de part et d'autre du texte slectionn. Il ne remplit donc pas les conditions ncessaires l'utilisation de la fonction insertObject() (voir insertObject() la page 130). Dans la fonction objectTag(), indiquez dw.getFocus() pour dterminer si le mode actuel correspond au mode Code. Si le mode Code est actif, la fonction insre la balise approprie (majuscule ou minuscule) de part et d'autre du texte slectionn. Si le mode Cration est actif, la fonction utilise dom.applyCharacterMarkup() pour assigner le format du texte slectionn. Notez que cette fonction s'utilise uniquement avec les balises prises en charge (pour plus d'informations, voir dom.applyCharacterMarkup() dans le Guide des API de Dreamweaver). Pour utiliser d'autres balises ou oprations, il sera peut-tre ncessaire de faire appel d'autres fonctions API. Une fois le format appliqu par Dreamweaver, le point d'insertion (curseur) rapparat dans le document, sans message ni invite pralable. La procdure ci-dessous illustre la forme de la fonction objectTag() une fois ces informations renseignes. Ajout de la fonction objectTag()
1 Dans la section head du fichier Strikethrough.htm, ajoutez la fonction ci-dessous aprs la fonction
isDOMRequired() : function objectTag() { // Determine if the user is in Code view. var dom = dw.getDocumentDOM(); if (dw.getFocus() == 'textView' || dw.getFocus(true) == 'html'){ var upCaseTag = (dw.getPreferenceString("Source Format", "Tags Upper Case", "") == 'TRUE'); // Manually wrap tags around selection. if (upCaseTag){ dom.source.wrapSelection('<S>','</S>'); }else{ dom.source.wrapSelection('<s>','</s>'); } // If the user is not in Code view, apply the formatting in Design view. }else if (dw.getFocus() == 'document'){ dom.applyCharacterMarkup("s"); } // Just return--don't do anything else. return; }

2 Enregistrez le fichier sous le nom Strikethrough.gif dans le dossier Configuration/Objects/Text.

Au lieu d'inclure les fonctions JavaScript dans la section head du fichier HTML, vous pouvez crer un fichier JavaScript distinct. Cette organisation part s'utilise notamment pour les objets contenant plusieurs fonctions ou des fonctions susceptibles d'tre partages par d'autres objets. Sparation du fichier de dfinition d'objet HTML des fonctions JavaScript de prise en charge 1 Crez un document vierge.
2 Collez toutes les fonctions JavaScript dans le fichier.

EXTENSION DE DREAMWEAVER CS4 122


Objets de la barre Insertion

3 Supprimez ces fonctions du fichier Strikethrough.htm, puis ajoutez le nom du fichier JavaScript l'attribut src de

la balise script, comme indiqu dans l'exemple suivant :


<html> <head> <title>Strikethrough</title> <script language="javascript" src="Strikethrough.js"> </script> </head> <body> </body> </html>

4 Enregistrez le fichier Strikethrough.htm. 5 Enregistrez le fichier qui contient prsent les fonctions JavaScript sous le nom Strikethrough.js dans le dossier

Configuration/Objects/Text.

Cration de l'image utilise dans la barre Insertion


1 Crez une image GIF de 18x 18 pixels, ainsi que l'indique la figure suivante :

2 Enregistrez le fichier sous le nom Strikethrough.gif dans le dossier Configuration/Objects/Text.

Modification du fichier insertbar.xml


Vous devez prsent modifier le fichier insertbar.xml file, afin que Dreamweaver puisse associer ces deux lments l'interface de la barre Insertion. Remarque : Avant de modifier le fichier insertbar.xml file, vous pouvez l'enregistrer sous l'extension insertbar.xml.bak de manire conserver une copie de sauvegarde. Le code contenu dans le fichier insertbar.xml dsigne tous les objets figurant dans la barre Insertion.

Chaque balise category du fichier XML cre une catgorie dans l'interface. Chaque balise menubutton cre un menu droulant dans la barre Insertion. Chaque balise button du fichier XML affiche une icne dans la barre Insertion et la relie au fichier HTML ou la
fonction correspondants. Ajout du nouvel objet la barre Insertion 1 Recherchez la ligne suivante situe au dbut du fichier insertbar.xml :
<category id="DW_Insertbar_Common" MMString:name="insertbar/category/common" folder="Common">

Cette ligne indique le dbut de la catgorie Commun de la barre Insertion.


2 Crez une nouvelle ligne la suite de la balise category, puis insrez la balise button en lui assignant les attributs
id, image et file correspondant l'objet Strikethrough.

L'ID doit correspondre au nom unique du bouton. Conformment aux conventions de dnomination, utilisez
DW_Text_Strikethrough pour cet objet. Les attributs image et file indiquent simplement Dreamweaver

l'emplacement des fichiers en rapport avec l'objet, comme indiqu ci-dessous :

EXTENSION DE DREAMWEAVER CS4 123


Objets de la barre Insertion

<button id="DW_Text_Strikethrough" image="Text\Strikethrough.gif" file="Text\Strikethrough.htm"/>

3 Enregistrez le fichier insertbar.xml. 4 Rechargez les extensions (voir Rechargement d'extensions la page 84).

Le nouvel objet s'affiche au dbut de la catgorie Commun de la barre Insertion.

Ajout d'une bote de dialogue


Vous pouvez ajouter un formulaire votre objet de manire ce que l'utilisateur puisse indiquer des commentaires avant que Dreamweaver n'insre le code spcifi (par exemple, l'objet Hyperlien ncessite la saisie des valeurs texte, lien, cible, index de catgorie, titre et cl d'accs). Dans cet exemple, vous ajoutez un formulaire l'objet Barr cr dans l'exemple prcdent. Le formulaire entrane l'ouverture d'une bote de dialogue permettant l'utilisateur de colorer le texte en rouge et d'ajouter la balise Strikethrough. Cet exemple suppose que vous avez dj cr un fichier JavaScript distinct nomm Strikethrough.js. Tout d'abord, dans le fichier Strikethrough.js, ajoutez la fonction appele par le formulaire si l'utilisateur modifie la couleur du texte. Cette fonction est similaire la fonction objectTag() de l'objet Strikethrough, mais elle est facultative. Cration de la fonction 1 Aprs la fonction objectTag() dans Strikethrough.js, crez la fonction fontColorRed() en entrant le code suivant :
function fontColorRed(){ var dom = dw.getDocumentDOM(); if (dw.getFocus() == 'textView' || dw.getFocus(true) == 'html'){ var upCaseTag = (dw.getPreferenceString("Source Format", "Tags Upper Case", "") == 'TRUE'); // Manually wrap tags around selection. if (upCaseTag){ dom.source.wrapSelection('<FONT COLOR="#FF0000">','</FONT>'); }else{ dom.source.wrapSelection('<font color="#FF0000">','</font>'); } }else if (dw.getFocus() == 'document'){ dom.applyFontMarkup("color", "#FF0000"); } // Just return -- don't do anything else. return; }

Remarque : Comme dom.applyCharacterMarkup() ne gre pas les modifications de couleur de police, vous devez identifier la fonction API correspondant ce type d'opration. Pour plus d'informations, voir dom.applyFontMarkup() dans le Guide des API de Dreamweaver.
2 Enregistrez le fichier sous le nom Strikethrough.js.

Ensuite, ajoutez le formulaire au fichier Strikethrough.htm. Le formulaire illustr dans l'exemple ci-dessous est une simple case cocher permettant d'appeler la fonction fontColorRed() lorsqu'elle est active. La balise form permet de dfinir votre formulaire, la balise table assure la dfinition de sa mise en forme (si vous n'effectuez pas cette tape, la taille de la bote de dialogue ou la disposition des champs risque d'tre incorrecte).

EXTENSION DE DREAMWEAVER CS4 124


Objets de la barre Insertion

Ajout du formulaire 1 Ajoutez le code ci-dessous aprs la balise body :


<form> <table border="0" height="100" width="100"> <tr valign="baseline"> <td align="left" nowrap> <input type="checkbox" name="red" onClick=fontColorRed()>Red text</input> </td> </tr> </table> </form>

2 Enregistrez le fichier sous le nom Strikethrough.htm. 3 Rechargez les extensions (voir Rechargement d'extensions la page 84).

Test de la bote de dialogue 1 Activez la case cocher Red Text.

2 Cliquez sur OK pour excuter la fonction objectTag(), qui barre le texte :

EXTENSION DE DREAMWEAVER CS4 125


Objets de la barre Insertion

Cration d'un menu droulant dans la barre Insertion


La barre Insertion de Dreamweaver implique un nouveau mode d'organisation des objets. La barre Insertion prend dsormais en charge des menus droulants qui permettent d'organiser les objets dans des groupes de plus petite taille, comme le montre l'illustration suivante.

L'exemple ci-dessous cre une nouvelle catgorie, Editorial, dans la barre Insertion, puis ajoute un menu droulant cette catgorie. Le menu droulant regroupe l'objet Strikethrough que vous avez dj cr, ainsi qu'un objet Blue Text que vous allez crer. Les objets de la catgorie Editorial permettent aux utilisateurs :

d'ajouter des commandes ditoriaux dans un fichier ; de barrer le contenu qu'ils veulent supprimer ou de donner une couleur bleue au nouveau contenu.
Organisation des fichiers 1 Crez le dossier Configuration/Objects/Editorial dans le dossier d'installation de Dreamweaver.
2 Copiez les fichiers correspondant l'exemple d'objet Strikethrough cr plus haut dans le dossier Editorial

(Strikethrough.htm, Strikethrough.js et Strikethrough.gif). Cration de l'objet Blue Text 1 Crez un formulaire HTML.
2 Ajoutez le code suivant :

EXTENSION DE DREAMWEAVER CS4 126


Objets de la barre Insertion

<html> <head> <title>Blue Text</title> <script language="javascript"> //--------------- API FUNCTIONS--------------function isDOMRequired() { // Return false, indicating that this object is available in Code view. return false; } function objectTag() { // Manually wrap tags around selection. var dom = dw.getDocumentDOM(); if (dw.getFocus() == 'textView' || dw.getFocus(true) == 'html'){ var upCaseTag = (dw.getPreferenceString("Source Format", "Tags Upper Case", "") == 'TRUE'); // Manually wrap tags around selection. if (upCaseTag){ dom.source.wrapSelection('<FONT COLOR="#0000FF">','</FONT>'); }else{ dom.source.wrapSelection('<font color="#0000FF">','</font>'); } }else if (dw.getFocus() == 'document'){ dom.applyFontMarkup("color", "#0000FF"); } // Just return -- don't do anything else. return; } </script> </head> <body> </body> </html>

3 Enregistrez le fichier sous le nom AddBlue.htm dans le dossier Editorial.

Vous pouvez maintenant crer une image pour l'objet Blue Text. Cration de l'image 1 Crez un fichier GIF de 18x 18 pixels, similaire la figure ci-dessous :

2 Enregistrez l'image sous le nom AddBlue.gif dans le dossier Editorial.

Modifiez ensuite le fichier insertbar.xml. Ce fichier dfinit les objets de la barre Insertion ainsi que leur emplacement. Notez les nombreuses balises menubutton et leurs attributs dans les balises category ; ces balises menubutton dfinissent chacun des menus droulants de la catgorie HTML. Dans les balises menubutton, chaque balise button dfinit l'un des lments du menu droulant. Modification du fichier insertbar.xml
1 Recherchez la ligne de code suivante situe au dbut du fichier :

EXTENSION DE DREAMWEAVER CS4 127


Objets de la barre Insertion

<insertbar xmlns:MMString="http://www.adobe.com/schemes/data/string/">

La balise insertbar dfinit le dbut de chacun des lments de la barre Insertion.


2 Aprs cette ligne, ajoutez une nouvelle balise category pour la catgorie Editorial que vous voulez crer. Donnez-

lui un ID unique, un nom et des attributs de dossier, et ajoutez une balise category de fermeture, comme le montre l'exemple suivant :
<category id="DW_Insertbar_Editorial" name="Editorial" folder="Editorial"> </category>

3 Rechargez les extensions. Pour plus d'informations sur le rechargement des extensions, voir Rechargement

d'extensions la page 84. La catgorie Editorial apparat dans la barre Insertion :

4 Entre les balises d'ouverture et de fermeture category, ajoutez le menu droulant en insrant la balise menubutton

ainsi que les attributs suivants, y compris un ID unique.


<menubutton id="DW_Insertbar_Markup" name="markup" image="Editorial\Strikethrough.gif" folder="Editorial">

Pour plus d'informations sur les attributs, voir Attributs des balises de dfinition de la barre Insertion la page 115.
5 Ajoutez les objets du nouveau menu droulant l'aide de la balise button, comme suit :
<button id="DW_Editorial_Strikethrough" image="Editorial\Strikethrough.gif" file="Editorial\Strikethrough.htm"/>

6 A la suite de l'objet Strikethrough, insrez l'objet Blue Text, comme suit :


<button id="DW_Blue_Text" image="Editorial\AddBlue.gif name="Blue Text" file="Editorial\AddBlue.htm"/>

Remarque : La balise button ne possde pas de balise de fermeture spare, elle se termine simplement par "/>".
7 Terminez l'insertion dans le menu droulant en spcifiant la balise de fermeture </menubutton>.

Le code ci-dessous reprsente l'ensemble de la catgorie regroupant le menu droulant et les deux objets :

EXTENSION DE DREAMWEAVER CS4 128


Objets de la barre Insertion

<category id="DW_Insertbar_Editorial" name="Editorial" folder="Editorial"> <menubutton id="DW_Insertbar_Markup" name="markup" image="Editorial\Strikethrough.gif" folder="Editorial"> <button id="DW_Editorial_Strikethrough" image="Editorial\Strikethrough.gif" file="Editorial\Strikethrough.htm"/> <button id="DW_Blue_Text" image="Editorial\AddBlue.gif" name="Blue Text" file="Editorial\AddBlue.htm"/> </menubutton> </category>

Test du nouveau menu droulant 1 Rechargez les extensions. Pour plus d'informations sur le rechargement des extensions, voir Rechargement d'extensions la page 84.
2 Cliquez sur le menu Editorial.

Le menu droulant ci-dessous s'affiche :

Fonction de l'API des objets


Cette section dcrit les fonctions de l'API des objets. Vous devez dfinir soit la fonction insertObject(), soit la fonction objectTag(). Pour plus d'informations sur ces fonctions, voir insertObject() la page 130. Les autres fonctions sont facultatives.

canInsertObject()
Disponibilit Dreamweaver MX. Description Cette fonction dtermine si la bote de dialogue de l'objet doit tre affiche. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une valeur boolenne. Exemple Le code ci-dessous indique Dreamweaver de vrifier la prsence d'une chane spcifique dans un document avant de permettre l'utilisateur d'insrer l'objet slectionn :

EXTENSION DE DREAMWEAVER CS4 129


Objets de la barre Insertion

function canInsertObject(){ var docStr = dw.getDocumentDOM().documentElement.outerHTML; var patt = /hava/; var found = ( docStr.search(patt) != -1 ); var insertionIsValid = true; if (!found){ insertionIsValid = false; alert("the document must contain a 'hava' string to use this object.");} return insertionIsValid;}

displayHelp()
Description Si vous dfinissez cette fonction, un bouton Aide apparat sous les boutons OK et Annuler dans la bote de dialogue Paramtres. Cette fonction est appele lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple L'exemple suivant permet d'afficher le fichier monObjetAide.htm dans un navigateur ; ce fichier explique l'utilisation de l'extension :
function displayHelp(){ var myHelpFile = dw.getConfigurationPath() + '/ExtensionsHelp/myObjectHelp.htm'; dw.browseDocument(myHelpFile); }

isDOMRequired()
Description Cette fonction dtermine si l'objet requiert un DOM valide pour fonctionner. Si cette fonction renvoie la valeur true ou si la fonction n'est pas dfinie, Dreamweaver suppose que la commande ncessite un DOM valide et synchronise les modes Code et Cration du document avant de l'excuter. La synchronisation met jour toutes les modifications effectues en mode Affichage de code dans le mode Cration. Arguments Aucun. Valeurs renvoyes Dreamweaver renvoie la valeur true si une commande ncessite un DOM valide pour fonctionner, sinon false.

EXTENSION DE DREAMWEAVER CS4 130


Objets de la barre Insertion

insertObject()
Disponibilit Dreamweaver MX. Description Cette fonction est obligatoire si la fonction objectTag() n'est pas dfinie. Elle est appele si l'utilisateur clique sur OK. Elle insre du code dans le document de l'utilisateur et ferme la bote de dialogue ou affiche un message d'erreur sans fermer la bote de dialogue. Il s'agit d'une fonction de substitution la fonction objectTag(). Elle ne suppose pas que l'utilisateur tape son texte au niveau du point d'insertion actuel et permet la validation des donnes lorsque l'utilisateur clique sur OK. Utilisez la fonction insertObject() dans l'une des conditions suivantes :

Vous devez insrer un code plusieurs endroits. Vous devez insrer un code un endroit autre que le point d'insertion. Vous devez valider une entre avant d'insrer le code.
Si aucune de ces conditions ne s'applique, utilisez la fonction objectTag(). Arguments Aucun. Valeurs renvoyes Dreamweaver attend soit une chane contenant un message d'erreur, soit une chane vide. Dans ce dernier cas, la bote de dialogue de l'objet se ferme lorsque l'utilisateur clique sur OK. Sinon, Dreamweaver affiche le message d'erreur et la bote de dialogue reste l'cran. Activateur
canInsertObject()

Exemple Dans l'exemple ci-dessous, la fonction insertObject() est utilise car une entre doit tre valide avant d'insrer le code :
function insertObject() { var theForm = document.forms[0]; var nameVal = theForm.firstField.value; var passwordVal = theForm.secondField.value; var errMsg = "", var isValid = true; // ensure that field values are complete and valid if (nameVal == "" || passwordVal == "") { errMsg = "Complete all values or click Cancel." } else if (nameVal.length < 4 || passwordVal.length < 6) { errMsg = "Your name must be at least four characters, and your password at least six"; } if (!errMsg) { // do some document manipulation here. Exercise left to the reader } return errMsg; }

EXTENSION DE DREAMWEAVER CS4 131


Objets de la barre Insertion

objectTag()
Description Les fonctions objectTag() et insertObject() s'excluent mutuellement. Si elles sont toutes deux dfinies dans un document, la fonction objectTag() est utilise. Pour plus dinformations, voir insertObject() la page 130. Cette fonction insre une chane de code dans le document de l'utilisateur. Le renvoi d'une chane vide ou d'une valeur null (aussi appele "return") signale Dreamweaver qu'aucune action ne doit tre effectue. Remarque : Dans ce cas, les modifications sont censes avoir t effectues manuellement avant l'instruction return; aussi, ne rien faire dans ce cas n'quivaut pas cliquer sur Annuler. Dans Dreamweaver, si le mode Code est actif et que la slection porte sur une plage (par opposition au point d'insertion), cette dernire est remplace par la chane renvoye par la fonction objectTag(). La valeur est true, mme si la fonction objectTag() renvoie une chane vide ou ne renvoie rien. La fonction objectTag() renvoie une chane vide ou une valeur null car l'utilisateur a dj modifi manuellement le document. Dans le cas contraire, des guillemets doubles ("") suppriment souvent les modifications en remplaant la slection. Arguments Aucun. Valeurs renvoyes Dreamweaver attend la chane insrer dans le document de l'utilisateur. Exemple L'exemple suivant de la fonction objectTag() insre une combinaison OBJECT/EMBED pour un contrle ActiveX et un plug-in spcifiques :
function objectTag() { return '\n' + '<OBJECT CLASSID="clsid:166F1OOB-3A9R-11FB-8075444553540000" \n' + 'CODEBASE="http://www.mysite.com/product/cabs/ myproduct.cab#version=1,0,0,0" \n' + 'NAME="MyProductName"> \n' + '<PARAM NAME="SRC" VALUE=""> \n' + '<EMBED SRC="" HEIGHT="" WIDTH="" NAME="MyProductName"> \n' + '</OBJECT>' }

windowDimensions()
Description Cette fonction dfinit les dimensions prcises de la bote de dialogue Options. Si cette fonction n'est pas dfinie, les dimensions de la fentre sont calcules automatiquement. Remarque : Ne dfinissez cette fonction que si vous souhaitez utiliser une bote de dialogue Options ayant des dimensions suprieures 640 x 480 pixels. Arguments platform

La valeur de l'argument platform est soit "macintosh", soit "windows", selon la plate-forme utilise par
l'utilisateur.

EXTENSION DE DREAMWEAVER CS4 132


Objets de la barre Insertion

Valeurs renvoyes Dreamweaver renvoie une chane au format "widthInPixels,heightInPixels". Les dimensions renvoyes sont infrieures la taille totale de la bote de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyes ne permettent pas de faire apparatre toutes les options, des barres de dfilement s'affichent. Exemple L'exemple suivant de la fonction windowDimensions() rgle les dimensions de la bote de dialogue Paramtres sur 648x 520 pixels sous Windows et sur 660x 580 sur Macintosh :
function windowDimensions(platform){ var retval = "" if (platform = = "windows"){ retval = "648, 520"; }else{ retval = "660, 580"; } return retval; }

133

Chapitre 8 : API de vrification des problmes de compatibilit du navigateur


Dans Adobe Dreamweaver, la fonctionnalit BCC (vrification de la compatibilit du navigateur) permet de crer des mises en forme de page qui fonctionnent bien (d'un point de vue esthtique et fonctionnel) quel que soit le navigateur en identifiant le code HTML et les feuilles CSS qui risquent de poser des problmes de compatibilit. Cette fonctionnalit a recours JavaScriptpour rechercher dans le document de l'utilisateur les combinaisons HTML et CSS qui posent problme. Le code JavaScript est stock dans les fichiers HTML de dtection des problmes, qui doivent tre enregistrs dans le dossier Configuration/BrowserProfiles/Issues/ pour fonctionner correctement.

Procdure de dtection
Lorsque l'utilisateur procde une vrification de compatibilit pour la premire fois (ou lorsqu'il clique sur OK dans la bote de dialogue relative aux navigateurs cible), les vnements suivants se produisent :
1 Dreamweaver lit les profils des navigateurs retenus dans le dossier Configuration/BrowserProfiles/. 2 Dreamweaver appelle la fonction getIssueID() pour tous les fichiers de problme qui figurent dans le dossier

Configuration/BrowserProfiles/Issues/ pour obtenir l'ID unique de ces fichiers.


3 Dreamweaver appelle la fonction getAffectedBrowserDisplayNames(), si dfinie, pour chaque fichier Issue. 4 Dreamweaver appelle la fonction getAffectedBrowserProfiles() pour chaque fichier Issue afin de dterminer

si le ou les navigateurs slectionns sont concerns.


5 Dreamweaver appelle la fonction getIssueName() pour chaque fichier Issue afin de dterminer le nom afficher

dans le panneau Rsultats lorsqu'un problme est dtect.


6 Dreamweaver appelle la fonction getIssueDescription pour chaque fichier Issue afin de dterminer le texte

afficher dans le volet droit du panneau Rsultats et dans l'infobulle lorsque le curseur de la souris survole un fichier Issue en mode Code, en cas de problme dtect. Les vnements suivants se produisent pour chaque navigateur slectionn dans la bote de dialogue de configuration BCC l'issue de l'tape 6 de la procdure prcdente, et pour toutes les vrifications de compatibilit suivantes : Squence d'vnements 1 Dreamweaver analyse les styles qui s'appliquent au document actuel, qu'ils soient dfinis en ligne, dans l'en-tte, ou dans une feuille de style externe, tel que le navigateur concern les lirait.
2 Dreamweaver appelle la fonction findIssue() pour tous les fichiers Issue qui s'applique au navigateur concern.

Exemple de fichiers de problmes


Les exemples suivants portent sur les fichiers ColAndColgroupCapturedByCaption.htm et ColAndColgroupCapturedByCaption.js situs dans le dossier Configuration/BrowserProfiles/Issues/.

EXTENSION DE DREAMWEAVER CS4 134


API de vrification des problmes de compatibilit du navigateur

ColAndColgroupCapturedByCaption.htm
<!DOCTYPE HTML SYSTEM "-// //DWExtension layout-engine 5.0//dialog"> <html> <head> <title>Col and Colgroup Captured by Caption</title> <script src="../../Shared/Common/Scripts/dwscripts.js"></script> <script src="issue_utils.js"></script> <script src="ColAndColgroupCapturedByCaption.js"></script> <script> //--------------- LOCALIZEABLE GLOBALS-----------------var ISSUE_NAME = "Col and Colgroup/Caption Conflict"; var ISSUE_DESC = "If the caption tag is placed directly after the opening table tag as required by the HTML 4.01 specification, any styles applied to col and colgroup tags in the same table are ignored."; //--------------- END LOCALIZEABLE--------------</script> </head> <body> </body> </html>

ColAndColgroupCapturedByCaption.js
function findIssue(){ var DOM = dw.getDocumentDOM(); var issueNodes = new Array(); if (DOM){ // first see if there are any caption tags in the doc. var captions = DOM.getElementsByTagName('caption'); // declare a mess of variables that we'll need in the // for loop below. var currCap = null, props = null, parentTable = null; var colgroups = null, cols = null, allcol = null; var property = "", definedStyles = new Array(); // ok, now loop through all the captions, if any. for (var i=0; i < captions.length; i++){ currCap = captions[i]; parentTable = currCap.parentNode; // the caption is only a problem if it's in the valid // spot (i.e., the first child of the table) if (currCap == parentTable.childNodes[0]){ // find all colgroup and col tags that are in the // same table as the caption. colgroups = parentTable.getElementsByTagName('colgroup'); cols = parentTable.getElementsByTagName('col'); allcol = colgroups.concat(cols); for (var x=0; x < allcol.length; x++){

EXTENSION DE DREAMWEAVER CS4 135


API de vrification des problmes de compatibilit du navigateur

// if styles are declared for any colgroup or col // tag in this table, we have a problem node. don't // bother looking further. props = window.getDeclaredStyle(allcol[x]); property = ""; definedStyles.length = 0; for (property in props) { definedStyles.push(property); } if (definedStyles.length > 0){ issueNodes.push(currCap); break; } } } } } return issueNodes; } function getAffectedBrowserDisplayNames(){ return new Array("Safari 2.0"); } function getAffectedBrowserProfiles(){ return new Array("Safari 2.0"); } function getIssueID(){ return "COL_AND_COLGROUP_CAPTURED_BY_CAPTION"; } function getIssueName(){ return ISSUE_NAME; } function getIssueDescription(){ return ISSUE_DESC; } function getConfidenceLevel(){ //DETCON 4 return issueUtils.CONFIDENCE_HIGH; }

Fonctions de l'API de vrification des problmes


Toutes les fonctions de l'API de vrification sont requises l'exception de getAffectedBrowserDisplayNames(). Comme pour toutes les API d'extension, vous devez crire le corps de chaque fonction et renvoyer une valeur approprie Dreamweaver. Pour plus d'informations sur les fonctions de vrification de la compatibilit du navigateur, consultez la rubrique Contenu de page dans le Guide des API de Dreamweaver.

findIssue()
Disponibilit Dreamweaver CS3.

EXTENSION DE DREAMWEAVER CS4 136


API de vrification des problmes de compatibilit du navigateur

Description Recherche dans le document les combinaisons de styles CSS et de code HTML susceptibles de provoquer un problme de rendu dans un navigateur. Arguments Aucun. Valeurs renvoyes Un tableau de nuds d'lment qui identifient (ou reprsentent) le problme. Dreamweaver slectionne ces nuds pendant que l'utilisateur navigue parmi les diffrents problmes de compatibilit. Exemple La fonction findIssue() suivante renvoie une liste de balises <button> auxquelles float: left ou float: right a t appliqu :
function findIssue(){ var DOM = dw.getDocumentDOM(); var issueNodes = new Array(); var buttons = DOM.getElementsByTagName('button'); var props = null; for (var i=0; i < buttons.length; i++){ props = window.getDeclaredStyle(buttons[i]); if (props.cssFloat == "left" || props.cssFloat == "right"){ issueNodes.push(buttons[i]); } } return issueNodes; }

getAffectedBrowserProfiles()
Disponibilit Dreamweaver CS3. Description Fournit Dreamweaver la liste des navigateurs posant problme. Arguments Aucun. Valeurs renvoyes Un tableau de noms de navigateurs, devant tous correspondre la premire ligne d'un profil de navigateur correct (voir les fichiers TXT dans le dossier Configuration/BrowserProfiles). Exemple
function getAffectedBrowsers(){ return new Array("Microsoft Internet Explorer 5.0", "Microsoft Internet Explorer 5.5", "Microsoft Internet Explorer 6.0"); }

EXTENSION DE DREAMWEAVER CS4 137


API de vrification des problmes de compatibilit du navigateur

getAffectedBrowserDisplayNames()
Disponibilit Dreamweaver CS3. Description Fournit Dreamweaver la liste des navigateurs posant problme et visibles par les utilisateurs. Cette fonction est facultative ; si elle n'est pas fournie, les noms de profil donns par getAffectedBrowserProfiles() sont utiliss. Arguments Aucun. Valeurs renvoyes Un tableau de noms de navigateur. Ce tableau doit tre parallle celui qui a t renvoy par getAffectedBrowserProfiles(). Exemple
function getAffectedBrowsers(){ return new Array("IE/Win 5.0", "IE/Win 5.5", "IE/Win 6.0"); }

getIssueID()
Disponibilit Dreamweaver CS3. Description Fournit Dreamweaver un ID unique pour le problme. Arguments Aucun. Valeurs renvoyes Chane avec identificateur unique de problme. Exemple
function getIssueID() { return "EXPANDING_BOX_PROBLEM"; }

getIssueName()
Disponibilit Dreamweaver CS3.

EXTENSION DE DREAMWEAVER CS4 138


API de vrification des problmes de compatibilit du navigateur

Description Fournit Dreamweaver le nom ou une brve description du problme. Arguments Aucun. Valeurs renvoyes Chane contenant le nom ou une brve description du problme. Exemple
function getIssueName(){ return "The Expanding Box Problem"; }

getIssueDescription()
Disponibilit Dreamweaver CS3. Description Fournit Dreamweaver une description dtaille du problme. Arguments Aucun. Valeurs renvoyes Chane contenant le nom ou une brve description du problme. Exemple
function getIssueDescription(){ return "Fixed-dimension boxes will incorrectly expand to fit their content instead of clipping content at the specified width or height."; }

139

Chapitre 9 : Commandes
Les commandes d'Adobe Dreamweaver permettent d'excuter presque n'importe quel type de modification dans le document actif de l'utilisateur, dans d'autres documents ouverts ou dans tout document HTML situ sur un disque local. Les commandes peuvent insrer, supprimer ou rorganiser les balises et les attributs HTML, les commentaires et le texte. Les commandes sont des fichiers HTML. La section body d'un fichier de commandes peut contenir un formulaire HTML acceptant des options pour la commande (par exemple, le tri des lments d'un tableau et la colonne de rfrence du tri). La balise head d'un fichier de commandes contient des fonctions JavaScript qui traitent les entres de formulaire de la section body et contrlent les modifications apportes au document de l'utilisateur. Le tableau ci-dessous recense les fichiers utiliss pour crer une commande.
Chemin Configuration/Commands/ Configuration/Commands/ Fichier commandname.htm nom_commande.js Description Dsigne l'interface utilisateur. Contient les fonctions excuter.

Fonctionnement des commandes


Lorsque l'utilisateur clique sur un menu contenant une commande, les vnements suivants se produisent :
1 Dreamweaver appelle la fonction canAcceptCommand() pour dterminer si l'option de menu doit tre dsactive.

Si la fonction canAcceptCommand() renvoie une valeur false, la commande est estompe dans le menu et la procdure s'arrte. Si la fonction canAcceptCommand() renvoie une valeur true, la procdure peut se poursuivre.
2 L'utilisateur slectionne une commande dans le menu. 3 Dreamweaver appelle la fonction receiveArguments(), si elle est dfinie, dans le fichier de commandes de menu

slectionn afin de permettre la commande de traiter tous les arguments transmis depuis l'option de menu ou la fonction dreamweaver.runCommand(). Pour plus d'informations sur la fonction dreamweaver.runCommand(), voir le Guide des API de Dreamweaver.
4 Dreamweaver appelle la fonction commandButtons(), si elle est dfinie, pour identifier les boutons qui figurent

dans la partie droite de la bote de dialogue Options et le code qui doit tre excut lorsque l'utilisateur clique sur ces boutons.
5 Dreamweaver recherche la balise form dans le fichier de commandes. S'il existe un formulaire, Dreamweaver

appelle la fonction windowDimensions(), qui redimensionne la bote de dialogue Options contenant les lments body du fichier. Si la fonction windowDimensions() n'est pas dfinie, Dreamweaver redimensionne automatiquement la bote de dialogue.
6 Si la balise body du fichier de commandes contient le gestionnaire onLoad, Dreamweaver l'excute (que la bote de

dialogue soit affiche ou non). Si aucune bote de dialogue ne s'affiche, les tapes restantes ne sont pas excutes.
7 L'utilisateur slectionne les options de la commande. Dreamweaver excute les gestionnaires d'vnements associs

aux champs du formulaire au fur et mesure que l'utilisateur les rencontre.


8 L'utilisateur clique sur l'un des boutons dfinis par la fonction commandButtons(). 9 Dreamweaver excute le code associ. La bote de dialogue reste affiche jusqu' ce que l'un des scripts de la

commande appelle la fonction window.close().

EXTENSION DE DREAMWEAVER CS4 140


Commandes

Ajout de commandes au menu Commandes


Dreamweaver ajoute automatiquement tous les fichiers se trouvant dans le dossier Configuration/Commandes au bas du menu Commandes. Pour empcher qu'une commande ne s'affiche dans le menu Commandes, insrez le commentaire suivant sur la premire ligne du fichier :
<!-- MENU-LOCATION=NONE -->

Lorsque cette ligne est prsente, Dreamweaver ne cre pas d'lment de menu pour le fichier et vous devez appeler dw.runCommand() pour excuter la commande.

Exemple de commande simple


Cette extension simple ajoute un lment dans le menu Commandes et vous permet de convertir le texte slectionn dans votre document en majuscules ou en minuscules. Lorsque vous cliquez sur l'lment de menu, une interface trois boutons est active et vous permet de soumettre votre choix. Pour crer cette extension, vous devez crer l'interface utilisateur, crire le code JavaScript et tester l'extension. Cet exemple cre deux fichiers dans le dossier Commands : Change Case.htm, qui contient l'interface utilisateur, et Change Case.js, qui contient le code JavaScript. Le cas chant, vous pouvez crer uniquement le fichier Change Case.htm et insrer le code JavaScript dans la section head.

Cration de l'interface utilisateur


L'interface utilisateur est un formulaire qui contient deux options, permettant l'utilisateur de slectionner majuscules ou minuscules.
1 Crez un document vierge. 2 Ajoutez le code suivant dans le fichier pour crer le formulaire :

EXTENSION DE DREAMWEAVER CS4 141


Commandes

<!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//dialog"> <HTML> <HEAD> <Title>Make Uppercase or Lowercase</Title> <SCRIPT SRC="Change Selection Case.js"></SCRIPT> </HEAD> <BODY> <form name="uorl"> <table border="0"> <!--DWLayoutTable--> <tr> <td valign="top" nowrap> <p> <label> <input type="radio" name="RadioGroup1" value="uppercase" checked> Uppercase</label> <br> <label> <input type="radio" name="RadioGroup1" value="lowercase"> Lowercase</label> </p></td> </tr> </table> </form> </BODY> </HTML>

3 Enregistrez le fichier sous le nom Change Case.htm dans le dossier Configuration/Commands.

Le contenu de la balise Title, Majuscules et minuscules, s'affiche dans la barre en haut de la bote de dialogue. Dans le formulaire, un tableau compos de deux cellules contrle la mise en forme des lments. Les cellules contiennent deux options : Majuscules et Minuscules. L'option Majuscules possde l'attribut checked, ce qui en fait la slection par dfaut et fait en sorte que l'utilisateur doit slectionner une des deux options ou annuler la commande. Le formulaire doit s'apparenter l'image suivante :

La fonction commandBUttons() insre les boutons OK et Annuler qui permettent l'utilisateur de valider le choix ou d'annuler l'opration. Pour plus dinformations, voir commandButtons() la page 147.

Ecriture du code JavaScript


L'exemple suivant est compos de deux fonctions API d'extension, canAcceptCommand() et commandButtons(), appeles par Dreamweaver, et d'une fonction dfinie par l'utilisateur, changeCase(), appele depuis la fonction commandButtons().

EXTENSION DE DREAMWEAVER CS4 142


Commandes

Dans cet exemple, vous allez rdiger du code JavaScript pour excuter les tches suivantes : Dterminer si la commande doit tre active ou estompe. La premire tche lors de la cration d'une commande est de dterminer les cas o l'lment doit tre actif ou non. Lorsque l'utilisateur clique sur le menu Commands, Dreamweaver appelle la fonction canAcceptCommand() pour chaque lment de menu afin de dterminer si celui-ci doit tre activ. Si canAcceptCommand() renvoie la valeur true, Dreamweaver affiche le texte d'lment de menu comme actif ou activ. Si canAcceptCommand() renvoie la valeur false, Dreamweaver estompe l'lment de menu. Dans l'exemple suivant, l'lment de menu est actif lorsque l'utilisateur a slectionn du texte dans le document.
1 Crez un document vierge. 2 Ajoutez le code suivant :
function canAcceptCommand(){ var theDOM = dw.getDocumentDOM(); // Get the DOM of the current document var theSel = theDOM.getSelection(); // Get start and end of selection var theSelNode = theDOM.getSelectedNode(); // Get the selected node var theChildren = theSelNode.childNodes; // Get children of selected node return (theSel[0] != theSel[1] && (theSelNode.nodeType == Node.TEXT_NODE || theSelNode.hasChildNodes() && (theChildren[0].nodeType == Node.TEXT_NODE))); }

3 Enregistrez le fichier sous le nom Change Case.js dans le dossier Configuration/Commands.

Les premires lignes de la fonction canAcceptCommand() extraient le texte slectionn en rcuprant le DOM du document de l'utilisateur. La fonction getSelection() est alors appele sur l'objet de document. Ensuite, la fonction rcupre le nud qui contient le texte slectionn, suivi par ses enfants, comme indiqu dans le code suivant. Enfin, la dernire ligne vrifie si la slection (ou son premier enfant) est constitue de texte et envoie en retour la valeur true ou false. La premire partie de l'instruction return (theSel[0] != theSel[1]) vrifie si l'utilisateur a effectu une slection dans le document. La variable theSel est un tableau deux entres maintenant les dcalages de dbut et de fin de la slection dans le document. Si les deux valeurs ne sont pas gales, du contenu a t slectionn. Si les valeurs des deux entres sont gales, il y a juste un point d'insertion. Rien n'a t slectionn.

EXTENSION DE DREAMWEAVER CS4 143


Commandes

La partie suivante de l'instruction return (&& (theSelNode.nodeType == Node.TEXT_NODE) vrifie que le nud slectionn est constitu de texte. Si c'est le cas, la fonction canAcceptCommand() renvoie la valeur true. Si nud n'est pas de type texte, le test se poursuit afin de vrifier si le nud a des enfants (|| theSelNode.hasChildNodes()) et si le premier nud enfant est de type texte (&& (theChildren[0].nodeType == Node.TEXT_NODE))). Si les deux conditions sont runies (true), canAcceptCommand() renvoie la valeur true et Dreamweaver active l'lment de menu en bas du menu Commandes, comme indiqu ci-dessous :

EXTENSION DE DREAMWEAVER CS4 144


Commandes

Dans le cas contraire, canAcceptCommand() renvoie la valeur false et Dreamweaver estompe l'lment, comme indiqu ci-dessous :

Association de fonctions aux boutons OK et Annuler Lorsque l'utilisateur clique sur le bouton OK ou Annuler, l'extension doit excuter l'action approprie. Pour ce faire, vous spcifiez la fonction JavaScript associe un clic sur l'un des deux boutons.
1 Ouvrez le fichier Change Case.js dans le dossier Configuration/Commands. 2 En fin de fichier, insrez le code suivant :
function commandButtons() { return new Array("OK", "changeCase()", "Cancel", "window.close()"); }

3 Enregistrez le fichier.

La fonction commandButtons() entrane l'affichage des boutons OK et Annuler par Dreamweaver et indique celuici la marche suivre lorsque l'utilisateur clique sur ces boutons. La fonction commandButtons() indique Dreamweaver qu'il faut appeler changeCase() lorsque l'utilisateur clique sur OK et appeler window.close() lorsque l'utilisateur clique sur Annuler. Pour permettre l'utilisateur de choisir entre majuscules et minuscules Lorsque l'utilisateur clique sur un lment de menu, l'extension ncessite un mcanisme permettant l'utilisateur de choisir entre majuscules et minuscules. L'interface utilisateur fournit ce mcanisme en dfinissant deux boutons radio permettant d'offrir ce choix l'utilisateur.
1 Ouvrez le fichier Change Case.js. 2 En fin de fichier, insrez le code suivant :

EXTENSION DE DREAMWEAVER CS4 145


Commandes

function changeCase() { var uorl; // Check whether user requested uppercase or lowercase. if (document.forms[0].elements[0].checked) uorl = 'u'; else uorl = 'l'; // Get the DOM. var theDOM = dw.getDocumentDOM(); // Get the outerHTML of the HTML tag (the // entire contents of the document). var theDocEl = theDOM.documentElement; var theWholeDoc = theDocEl.outerHTML; // Get the node that contains the selection. var theSelNode = theDOM.getSelectedNode(); // Get the children of the selected node. var theChildren = theSelNode.childNodes; var i = 0; if (theSelNode.hasChildNodes()){ while (i < theChildren.length){ if (theChildren[i].nodeType == Node.TEXT_NODE){ var selText = theChildren[i].data; var theSel = theDOM.nodeToOffsets(theChildren[0]); break; } ++i; } } else { // Get the offsets of the selection var theSel = theDOM.getSelection(); // Extract the selection var selText = theWholeDoc.substring(theSel[0],theSel[1]); } if (uorl == 'u'){ theDocEl.outerHTML = theWholeDoc.substring(0,theSel[0]) + selText.toUpperCase() + theWholeDoc.substring(theSel[1]); } else { theDocEl.outerHTML = theWholeDoc.substring(0,theSel[0]) + selText.toLowerCase() + theWholeDoc.substring(theSel[1]); } // Set the selection back to where it was when you started theDOM.setSelection(theSel[0],theSel[1]); window.close(); // close extension UI }

3 Enregistrez le fichier sous le nom Change Case.js dans le dossier Configuration/Commands.

La fonction changeCase() est une fonction dfinie par l'utilisateur qui est appele par la fonction commandButtons() lorsque l'utilisateur clique sur OK. Cette fonction modifie la casse du texte slectionn (passage en majuscules ou minuscules). L'interface utilisateur reposant sur des boutons radio, une slection sera obligatoirement effectue ; il n'est pas ncessaire de tester le cas o aucun choix n'est effectu par l'utilisateur.

EXTENSION DE DREAMWEAVER CS4 146


Commandes

La fonction changeCase() teste en premier lieu la proprit document.forms[0].elements[0].checked. La proprit document.forms[0].elements[0] se rapporte au premier lment du premier formulaire de l'objet de document actuel, savoir l'interface utilisateur de l'extension. La proprit checked prend la valeur true si l'lment est activ.Dans le cas contraire, il prend la valeur false. Dans l'interface, elements[0] se rapporte au premier bouton radio, savoir le bouton Majuscules. Un des boutons radio tant forcment slectionn lorsque l'utilisateur clique sur OK, le code suppose que, si le choix n'est pas Majuscules, c'est Minuscules qui a t choisi. La fonction rgle la variable uorl sur u ou l pour stocker la rponse de l'utilisateur. Le code restant dans la fonction rcupre le texte slectionn, le convertit dans la casse slectionne et le copie de nouveau sa place dans le document. Pour extraire le texte slectionn pour le document de l'utilisateur, la fonction rcupre le DOM. Elle rcupre ensuite l'lment racine du document, savoir la balise html. Le document entier est enfin extrait dans la variable theWholeDoc. Ensuite, changeCase() appelle la fonction getSelectedNode() pour modifier le nud contenant le texte slectionn. Il rcupre galement les nuds enfants (theSelNode.childNodes) au cas o la slection serait une balise contenant du texte, comme <b>text</b>. S'il y a des nuds enfants, (hasChildNodes() renvoie la valeur true), la commande navigue de nud en nud la recherche d'un nud constitu de texte. Si un tel nud est trouv, le texte (theChildren[i].data) est stock dans selText et les dcalages du nud textuel sont stocks dans theSel. S'il n'y a aucun nud enfant, la commande appelle la fonction getSelection() et stocke les dcalages de dbut et de fin de slection dans theSel. Il extrait ensuite la chane entre ces deux dcalages et la conserve dans selText. La fonction vrifie alors la variable uorl pour dterminer si l'utilisateur a slectionn les majuscules. Si c'est le cas, la fonction rcrit le code HTML dans le document dans diffrentes sections : tout d'abord, le dbut du document au dbut de la slection, puis le texte slection, converti en majuscules (selText.toUppercase()), et enfin la fin du texte slectionn la fin du document. Si l'utilisateur slectionne minuscules, la fonction effectue la mme opration mais appelle selText.toLowerCase() pour convertir le texte slectionn en minuscules. Finalement, changeCase() rinitialise la slection et appelle window.close() pour fermer l'interface utilisateur.

Test de l'extension
Une fois les fichiers placs dans le dossier Commands, vous pouvez tester l'extension.
1 Redmarrez Dreamweaver ou rechargez les extensions. Pour plus d'informations sur le rechargement des

extensions, voir Rechargement d'extensions la page 84. L'entre Modifier la casse doit maintenant tre affiche dans le menu Commandes.
2 Tapez du texte dans un document. 3 Slectionnez le texte.

Remarque : La commande Modifier la casse est estompe tant que vous n'avez pas slectionn de texte dans le document.
4 Slectionnez Modifier la casse dans le menu Commandes.

Le texte change de casse.

EXTENSION DE DREAMWEAVER CS4 147


Commandes

Fonctions de l'API des commandes


Les fonctions personnalises de l'API des commandes de menu ne sont pas obligatoires.

canAcceptCommand()
Description Cette fonction indique si la commande est adapte la slection en cours. Remarque : Ne dfinissez la fonction canAcceptCommand() que s'il existe au moins un cas o elle renvoie la valeur false. Si la fonction n'est pas dfinie, la commande est considre comme approprie. Ce processus entrane des gains de temps et de performances. Arguments Aucun. Valeurs renvoyes Dreamweaver s'attend recevoir la valeur true si la commande est approprie. Si la valeur est false, la commande apparat estompe dans le menu. Exemple Dans l'exemple suivant, la fonction canAcceptCommand() rend la commande disponible uniquement lorsque la slection correspond un tableau :
function canAcceptCommand(){ var retval=false; var selObj=dw.getDocumentDOM.getSelectedNode(); return (selObj.nodeType == Node.ELEMENT_NODE && selObj.tagName=="TABLE");{ retval=true; } return retval; }

commandButtons()
Description Cette fonction dfinit les boutons devant figurer dans la bote de dialogue Options et leur comportement lorsque l'utilisateur clique dessus. Si cette fonction n'est pas dfinie, aucun bouton n'apparat et la section body du fichier de commandes s'tend de faon remplir la totalit de la bote de dialogue. Par dfaut, ces boutons s'affichent dans le haut de la bote de dialogue. Vous pouvez placer ces boutons dans le bas de la bote de diualogue en dfinissant deux valeurs supplmentaires dans la fonction commandButtons(). Par dfaut, les boutons sont aligns droite. La dfinition de la valeur PutButtonsOnLeft entrane l'alignement des boutons suivants gauche sur la mme ligne. Arguments Aucun.

EXTENSION DE DREAMWEAVER CS4 148


Commandes

Valeurs renvoyes Dreamweaver renvoie un tableau contenant un nombre pair d'lments. Le premier lment est une chane contenant le libell du premier bouton. Le deuxime lment est une chane de code JavaScript dfinissant le comportement du premier bouton lorsque l'utilisateur clique dessus. Les autres lments dfinissent les boutons supplmentaires de la mme manire. Exemple L'exemple suivant de commandButtons() dfinit trois boutons : OK, Cancel et Help, placs dans le coin suprieur droit (position par dfaut) de la bote de dialogue :
function commandButtons(){ return new Array("OK" , "doCommand()" , "Cancel" , "window.close()" , "Help" , "showHelp()"); }

Vous pouvez personnaliser le positionnement et l'alignement des boutons. Exemple L'exemple suivant de commandButtons() affiche les boutons dans le bas de la bote de dialogue. Lorsque la premire valeur de la plage renvoyes est PutButtonsOnBottom, vous pouvez dfinir la seconde valeur comme defaultButton, avec le nom d'un des boutons. Ce bouton est slectionn par dfaut et est utilis lorsque l'utilisateur appuie sur la touche Entre. Dans cet exemple, OKbutton est dfini comme bouton par dfaut.
function commandButtons(){ return new Array("PutButtonsOnBottom" , "OkButton defaultButton" , "OK" , "doCommand()" , "Cancel" , "window.close()" , "Help" , "showHelp()"); }

Exemple Dans l'exemple suivant, le bouton Help est align gauche l'aide de PutButtonsOnLeft.
function commandButtons(){ return new Array("PutButtonsOnBottom", "OkButton defaultButton", "OK", "doCommand()", "Cancel", "window.close()", "PutButtonsOnLeft", "Help" , "showHelp()");}

isDOMRequired()
Description Cette fonction dtermine si la commande requiert un DOM valide pour fonctionner. Si cette fonction renvoie une valeur true ou si la fonction n'est pas dfinie, Dreamweaver suppose que la commande ncessite un DOM valide et synchronise les modes Affichage de code et Cration du document avant de l'excuter. La synchronisation entrane la mise jour de toutes les modifications effectues en mode Affichage de code dans le mode Cration. Arguments Aucun.

EXTENSION DE DREAMWEAVER CS4 149


Commandes

Valeurs renvoyes Dreamweaver renvoie la valeur true si une commande ncessite un DOM valide pour fonctionner, sinon false.

receiveArguments()
Description Cette fonction traite tous les arguments provenant d'un lment de menu ou de la fonction dw.runCommand(). Arguments {arg1}, {arg2},...{argN}

Si l'attribut arguments est dfini pour une balise menuitem, la valeur de l'attribut est transmise la fonction
receiveArguments() sous forme d'un ou plusieurs arguments. Les arguments peuvent galement tre transmis

une commande par la fonction dw.runCommand(). Valeurs renvoyes Dreamweaver ne renvoie rien.

windowDimensions()
Description Cette fonction dfinit les dimensions de la bote de dialogue des paramtres. Si cette fonction n'est pas dfinie, les dimensions de la fentre sont calcules automatiquement. Remarque : Ne dfinissez cette fonction que si vous souhaitez utiliser une bote de dialogue Options ayant des dimensions suprieures 640 x 480 pixels. Arguments platform

La valeur de l'argument platform est soit "macintosh", soit "windows", selon la plate-forme utilise par
l'utilisateur. Valeurs renvoyes Dreamweaver renvoie une chane au format "widthInPixels,heightInPixels". Les dimensions renvoyes sont infrieures la taille totale de la bote de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyes ne permettent pas de faire apparatre toutes les options, des barres de dfilement s'affichent. Exemple Dans l'exemple suivant, la fonction windowDimensions() dfinit les dimensions de la bote de dialogue des paramtres 648 x 520 pixels :
function windowDimensions(){ return "648,520"; }

150

Chapitre 10 : Menus et commandes de menu


Adobe Dreamweaver cre les menus partir de la structure dfinie dans le fichier menus.xml du dossier Configuration/Menus de Dreamweaver. Vous pouvez rorganiser, renommer ou supprimer des commandes de menu en modifiant le fichier menus.xml. Vous pouvez galement ajouter, modifier et supprimer les raccourcis clavier de commandes de menu. Toutefois, dans la plupart des cas, il est plus facile de modifier les raccourcis clavier l'aide de l'diteur de raccourcis clavier (voir l'aide de Dreamweaver). Les modifications effectues dans les menus Dreamweaver ne sont prises en compte qu'aprs le redmarrage de Dreamweaver ou le rechargement des extensions.

Fichier menus.xml
Le fichier menus.xml contient une liste structure des barres de menus, menus, commandes de menu, sparateurs, listes de raccourcis et raccourcis clavier. Des balises XML dcrivent ces lments ; vous pouvez les modifier dans un diteur de texte. Remarque : Faites preuve de prudence lorsque vous modifiez les menus. Dreamweaver ignore les menus ou commandes de menu comportant des erreurs de syntaxe XML. Dans un systme d'exploitation multiutilisateurs, vous pouvez apporter dans Dreamweaver des modifications qui se rpercutent sur menus.xml. Par exemple, vous pouvez modifier des raccourcis clavier l'aide de l'diteur de raccourcis clavier. Dans un tel cas, Dreamweaver cre un fichier menus.xml dans votre dossier Configuration d'utilisateur. Pour personnaliser menus.xml dans un systme d'exploitation multi-utilisateur, modifiez la copie du fichier dans votre dossier de configuration utilisateur. Vous pouvez galement copier le fichier menus.xml principal dans votre de configuration utilisateur si Dreamweaver n'y a pas encore cr de version. Pour plus d'informations, voir Dossiers de configuration multi-utilisateur la page 83. Si vous ouvrez le fichier menus.xml dans un diteur XML, il se peut que des messages d'erreur concernant les esperluettes (&) du fichier menus.xml s'affichent. Nous vous recommandons de modifier le fichier menus.xml dans un diteur de texte ; vitez de le modifier dans Dreamweaver. Pour toutes informations de base sur XML, voir l'aide de Dreamweaver. Remarque : Avant de modifier le fichier menus.xml ou tout autre fichier de configuration Dreamweaver, effectuez une copie de sauvegarde. Si vous avez oubli d'effectuer une copie de sauvegarde, vous pouvez remplacer menus.xml par une copie du fichier menus.bak qui se trouve dans le dossier Configuration. Une barre de menu (marque par des balises menu bar d'ouverture et de fermeture) peut tre un menu ou un jeu de menus. Par exemple, il existe une barre de menu principale, une barre de menu distincte pour le panneau Site (qui n'apparat que sous Windows et pas sur Macintosh), ainsi qu'une barre pour chaque menu contextuel. Chaque barre de menus comporte un ou plusieurs menus indiqus par des balises menu. Chacun de ces menus comporte une ou plusieurs commandes de menu, indiques par des balises menuitem et dfinies par divers attributs. Un menu peut galement comporter des sparateurs (indiqus par des balises separator) ainsi que des sous-menus.

EXTENSION DE DREAMWEAVER CS4 151


Menus et commandes de menu

Outre les raccourcis clavier principaux associs aux commandes de menu, Dreamweaver fournit des raccourcis alternatifs et contextuels. Par exemple, CTRL+Y (Windows) ou Commande+Y (Macintosh) est le raccourci de la fonction Rtablir. CTRL+MAJ+Z et Commande+MAJ+Z sont des raccourcis secondaires pour cette fonction Rtablir. Ces raccourcis alternatifs et contextuels (ainsi que d'autres raccourcis ne pouvant pas tre reprsents dans les balises des commandes de menu) sont dfinis dans les listes de raccourcis du fichier menus.xml. Ces listes de raccourcis (indiques par des balises shortcutlist) comportent un ou plusieurs raccourcis indiqus par des balises shortcut. Les sections ci-aprs dcrivent la syntaxe des balises du fichier menus.xml. Les attributs facultatifs sont signals dans la liste des attributs par des accolades ({}). Les attributs qui ne sont pas signals ainsi sont considrs comme obligatoires.

<menubar>
Description Fournit des informations sur une barre de menus de la structure de menus de Dreamweaver. Attributs
name, {app}, id, {platform}

name Nom de la barre de menus. Bien que l'attribut name soit obligatoire, vous pouvez lui assigner la valeur "". app Nom de l'application dans laquelle la barre de menus est disponible. Non utilis actuellement. id ID de menu de la barre de menus. Les ID de menu du fichier menus.xml doivent tous tre uniques. platform Indique que la barre de menus ne doit apparatre que sur la plate-forme spcifie. Les valeurs possibles

sont "win" et "mac". Contenu Cette balise doit comporter une ou plusieurs balises menu. Contenant Aucun. Exemple La barre de menus principale (fentre de document) est dfinie par la balise menubar suivante :
<menubar name="Main Window" id="DWMainWindow"> <!-- menu tags here --> </menubar>

<menu>
Description Fournit des informations sur un menu ou un sous-menu de la structure de menus de Dreamweaver.

EXTENSION DE DREAMWEAVER CS4 152


Menus et commandes de menu

Attributs
name, {app}, id, {platform}, {showIf}

name Nom du menu tel qu'il apparat dans la barre de menus. Pour dfinir la cl d'accs (mnmonique) du menu

sous Windows, insrez un trait de soulignement (_) avant la lettre d'accs. Sur Macintosh, le trait de soulignement est supprim automatiquement.

app Nom de l'application dans laquelle le menu est disponible. Non utilis actuellement. id ID du menu. Les ID de menu du fichier doivent tous tre uniques. platform Indique que le menu ne doit apparatre que sur la plate-forme spcifie. Les valeurs possibles sont "win"

et "mac".
showIf Indique que le menu ne doit apparatre que si l'activateur Dreamweaver spcifi a la valeur true. Vous disposez des activateurs suivants : _SERVERMODEL_ASP, _SERVERMODEL_ASPNET, _SERVERMODEL_JSP, _SERVERMODEL_CFML (pour toutes les versions d'Adobe ColdFusion), _SERVERMODEL_CFML_UD4 (pour UltraDev version 4 de ColdFusion), _SERVERMODEL_PHP, _FILE_TEMPLATE, _VIEW_CODE, _VIEW_DESIGN, _VIEW_LAYOUT, _VIEW_EXPANDED_TABLES, et _VIEW_STANDARD. Vous pouvez spcifier plusieurs activateurs en les sparant par des virgules (chaque virgule signifie ET). Vous pouvez utiliser des points d'exclamation ("!") titre d'exclusion. Ainsi, si vous souhaitez que le menu n'apparaisse qu'en mode Code dans une page ASP, dfinissez les attributs de la faon suivante : showIf="_VIEW_CODE, _SERVERMODEL_ASP".

Contenu Cette balise peut contenir une ou plusieurs balises menuitem et separator. Elle peut galement contenir d'autres balises menu (pour crer des sous-menus) ainsi que des balises HTML comment standard. Contenant Cette balise doit tre imbrique dans une balise menubar. Exemple
<menu name="_File" id="DWMenu_File"> <!-- menuitem, separator, menu, and comment tags here --> </menu>

<menuitem>
Description Dfinit une commande de menu Dreamweaver. Attributs
name, id, {app}, {key}, {platform}, {enabled}, {arguments}, {command}, {file}, {checked}, {dynamic}, {isdomrequired}, {showIf}

name Nom de la commande intgre au menu. Un trait de soulignement indique que la lettre suivante est dfinie comme cl d'accs (mnmonique) de la commande (sous Windows uniquement). id Permet Dreamweaver d'identifier l'lment. Cet ID doit tre unique dans l'ensemble de la structure de menus.

Si vous ajoutez de nouvelles commandes de menu au fichier menus.xml, indiquez le nom de votre entreprise ou toute autre chane unique comme prfixe aux ID des commandes de menu.

app Nom de l'application dans laquelle figure la commande de menu. Non utilis actuellement.

EXTENSION DE DREAMWEAVER CS4 153


Menus et commandes de menu

key Raccourci clavier de la commande, le cas chant. Utilisez les chanes suivantes pour spcifier les touches de modification : Cmd dsigne la touche Ctrl (Windows) ou Commande (Macintosh). Alt et Opt dsignent la touche Alt (Windows) ou la touche Option (Macintosh). Ces chanes sont interchangeables. Shift dsigne la touche Maj, quelle que soit la plate-forme utilise. Ctrl dsigne la touche Ctrl, quelle que soit la plate-forme utilise.

Lorsque plusieurs touches de modification sont assignes un raccourci, elles sont spares par un signe Plus (+).
Par exemple, la chane Cmd+Opt+5 dans l'attribut key signifie que l'utilisateur doit appuyer sur Ctrl+Alt+5 (Windows) ou Commande+Option+5 (Macintosh) afin d'excuter la commande de menu.

Les touches spciales sont dsignes par leur nom : F1 F12, Pg.
spciales.

Suiv., Pg. Prc., Orig., Fin, Inser, Suppr,

Tab, Echap, Ret. Arr. et Espace. Vous pouvez galement assigner les touches de modification aux touches

platform Indique la plate-forme sur laquelle apparat l'lment. Les valeurs valides sont "win" (Windows) ou "mac" (Macintosh). Si vous ne spcifiez aucun attribut platform, la commande de menu apparat sur les deux platesformes. Si vous souhaitez qu'une commande de menu ait un comportement spcifique en fonction de la plateforme, spcifiez deux commandes de menu avec un nom identique (mais des ID distincts) : l'une avec platform="win" et l'autre avec platform="mac". enabled Fournit un code JavaScript (gnralement un appel de fonction JavaScript) dterminant si la commande

de menu est actuellement active. Si la fonction renvoie la valeur false, la commande de menu est estompe. La valeur par dfaut est "true", mais il est prfrable de spcifier systmatiquement une valeur mme si la valeur est "true".

argumentsFournit des arguments que Dreamweaver transmet au code dans le fichier JavaScript indiqu dans l'attribut file. Ces arguments doivent tre entours d'apostrophes ('), l'intrieur de la chane de valeur d'un attribut dlimite par des guillemets doubles. command Spcifie une expression JavaScript qui est excute lorsque l'utilisateur slectionne l'lment dans le menu.

Pour spcifier un code JavaScript complexe, utilisez un fichier JavaScript (indiqu dans l'attribut file). Vous devez spcifier l'attribut file ou command pour chaque commande de menu.

file Nom du fichier HTML contenant le code JavaScript qui contrle la commande de menu. Spcifiez le chemin du fichier par rapport au dossier Configuration. Par exemple, pour la commande de menu Aide Bienvenue, spcifiez l'attribut file="Commands/Welcome.htm". L'attribut file remplace les attributs command, enabled et checked. Vous devez spcifier l'attribut file ou command pour chaque commande de menu. Pour plus d'informations sur la cration d'un fichier de commandes par l'intermdiaire du panneau Historique, voir l'aide de Dreamweaver. Pour plus d'informations sur la rdaction des commandes JavaScript, voir Commandes la page 139. checked Expression JavaScript dterminant si une coche doit s'afficher en regard de la commande de menu dans

le menu; si la valeur de cette expression est true , la coche s'affiche.


dynamic Si cet attribut est spcifi, il indique que la commande de menu doit tre dtermine dynamiquement par

un fichier HTML ; ce dernier contient un code JavaScript dfinissant le texte et l'tat de la commande de menu. Si vous spcifiez l'attribut dynamic pour une balise, vous devez galement spcifier l'attribut file.

isdomrequired Indique s'il est ncessaire de synchroniser les modes Cration et Code avant d'excuter le code

associ cette commande de menu. Les valeurs admises sont "true" (par dfaut) et "false". Si vous dfinissez la valeur "false", les modifications apportes au fichier par la commande de menu n'utilisent pas le DOM Dreamweaver. Pour plus d'informations sur le DOM, voir Modle d'objet de document (DOM) Dreamweaver la page 101.

EXTENSION DE DREAMWEAVER CS4 154


Menus et commandes de menu

showIf Indique que la commande de menu ne doit apparatre que si la valeur de l'activateur Dreamweaver spcifi est true. Vous disposez des activateurs suivants : _SERVERMODEL_ASP, _SERVERMODEL_ASPNET, _SERVERMODEL_JSP, _SERVERMODEL_CFML (pour toutes les versions d'Adobe ColdFusion), _SERVERMODEL_CFML_UD4 (pour UltraDev version 4 de ColdFusion), _SERVERMODEL_PHP, _FILE_TEMPLATE, _VIEW_CODE, _VIEW_DESIGN, _VIEW_LAYOUT, _VIEW_EXPANDED_TABLES, et _VIEW_STANDARD. Vous pouvez spcifier plusieurs activateurs en les sparant par des virgules (chaque virgule signifie ET). Vous pouvez utiliser des points d'exclamation ("!") titre d'exclusion. Ainsi, si vous souhaitez que la commande de menu apparaisse en mode Code, mais pas sur une page ColdFusion, dfinissez l'attribut de la faon suivante : showIf="_VIEW_CODE, !_SERVERMODEL_CFML".

Contenu Aucun (balise vide). Contenant Cette balise doit tre imbrique dans une balise menu. Exemple
<menuitem name="_New" key="Cmd+N" enabled="true" command="dw.createDocument()" id="DWMenu_File_New" />

<separator>
Description Indique qu'un sparateur doit apparatre l'emplacement correspondant du menu. Attributs
{app} app Nom de l'application dans laquelle le sparateur apparat. Non utilis actuellement.

Contenu Aucun (balise vide). Contenant Cette balise doit tre imbrique dans une balise menu. Exemple
<separator />

<shortcutlist>
Description Spcifie une liste de raccourcis dans le fichier menus.xml. Attributs
{app}, id, {platform}

app Nom de l'application dans laquelle la liste de raccourcis est disponible. Non utilis actuellement.

EXTENSION DE DREAMWEAVER CS4 155


Menus et commandes de menu

id ID de la liste de raccourcis. Cet ID doit tre identique celui de la barre de menus (ou menu contextuel) de

Dreamweaver laquelle les raccourcis sont associs. Les valeurs admises sont les suivantes : "DWMainWindow",
"DWMainSite", "DWTimelineContext" et "DWHTMLContext".

platform Indique que la liste de raccourcis ne doit apparatre que sur la plate-forme spcifie. Les valeurs possibles

sont "win" et "mac". Contenu Une ou plusieurs balises shortcut peuvent tre imbriques dans cette balise. Celle-ci peut galement contenir une ou plusieurs balises comment (dont la syntaxe est identique celle des balises comment HTML). Contenant Aucun. Exemple
<shortcutlist id="DWMainWindow"> <!-- shortcut and comment tags here --> </shortcutlist>

<shortcut>
Description Spcifie un raccourci clavier dans le fichier menus.xml. Attributs
key, {app}, {platform}, {file}, {arguments}, {command}, id, {name}

key Combinaison de touches permettant d'activer le raccourci clavier. Pour plus d'informations sur la syntaxe, voir <menuitem> la page 152. app Nom de l'application dans laquelle le raccourci est disponible. Non utilis actuellement. platform Indique que le raccourci ne fonctionne que sur la plate-forme spcifie. Les valeurs possibles sont "win" et "mac". Si vous ne dfinissez pas cet attribut, le raccourci fonctionne sur les deux plates-formes. file Chemin d'accs au fichier contenant le code JavaScript excut par Dreamweaver lorsque le raccourci clavier est utilis. L'attribut file prime sur l'attribut command. Vous devez spcifier l'attribut file ou command pour chaque raccourci. arguments Fournit des arguments que Dreamweaver transmet au code dans le fichier JavaScript indiqu dans

l'attribut file. Ces arguments doivent tre entours d'apostrophes ('), l'intrieur de la chane de valeur d'un attribut dlimite par des guillemets doubles.

command Code JavaScript excut par Dreamweaver lorsque le raccourci clavier est utilis. Spcifiez l'attribut file

or command pour chaque raccourci.


id Identificateur unique d'un raccourci. name Nom de la commande excute par le raccourci clavier, bas sur le modle des noms de commande de menu. Par exemple, l'attribut name du raccourci F12 correspond "Aperu dans le navigateur principal".

Contenu Aucun (balise vide).

EXTENSION DE DREAMWEAVER CS4 156


Menus et commandes de menu

Contenant Cette balise doit tre imbrique dans une balise shortcutlist. Exemple
<shortcut key="Cmd+Shift+Z" file="Menus/MM/Edit_Clipboard.htm" arguments="'redo'" id="DWShortcuts_Edit_Redo" />

<tool>
Description Cette balise reprsente un outil unique et contient tous les raccourcis associs ce dernier sous la forme de sous-balises, stockes dans le fichier menus.xml. Attributs
{name}, id

name Version localise du nom de l'outil. id Identificateur d'outil interne qui dsigne l'outil auquel s'appliquent les raccourcis.

Contenu Cette balise peut contenir une ou plusieurs balises activate, override ou action. Contenant Cette balise doit tre imbrique dans une balise menu. Exemple
<tool name="Hand tool" id="com.Macromedia.dreamweaver.tools.hand"> <!-- tool tags here --> </tool>

<action>
Description Contient la combinaison de touches et le code JavaScript excuter lorsque l'outil est actif et que l'utilisateur compose la combinaison de touches. Attributs
{name}, key, command, id

name Version localise de l'action. key Combinaison de touches permettant d'excuter l'action. Pour plus d'informations sur la syntaxe, voir <menuitem> la page 152. command Instructions JavaScript excuter. Le format de cet attribut est identique celui de l'attribut command de <shortcut> la page 155. id Identificateur unique de l'action.

EXTENSION DE DREAMWEAVER CS4 157


Menus et commandes de menu

Contenu Aucun (balise vide). Contenant Cette balise doit tre imbrique dans une balise tool. Exemple
<action name="Set magnification to 50%" key="5" command="dw.activeViewScale = 0.50" id ="DWTools_Zoom_50" />

<activate>
Description Contient la combinaison de touches permettant d'activer l'outil. Attributs
{name}, key, id

name Version localise de l'action. key Combinaison de touches permettant d'activer l'outil. Pour plus d'informations sur la syntaxe, voir <menuitem> la page 152. id Identificateur unique de l'action.

Contenu Aucun (balise vide). Contenant Cette balise doit tre imbrique dans une balise tool. Exemple
<activate name="Switch to Hand tool" key="H" id="DWTools_Hand_Active1" />

<override>
Description Contient la combinaison de touches permettant d'activer temporairement l'outil. S'il excute un autre outil modal, l'utilisateur peut appuyer sur cette touche et la maintenir enfonce pour basculer d'un outil l'autre. Attributs
{name}, key, id

name Version localise de l'action. key Combinaison de touches permettant d'activer rapidement l'outil. Pour plus d'informations sur la syntaxe, voir <menuitem> la page 152. id Identificateur unique de l'action.

EXTENSION DE DREAMWEAVER CS4 158


Menus et commandes de menu

Contenu Aucun (balise vide). Contenant Cette balise doit tre imbrique dans une balise tool. Exemple
<override name="Quick switch to Hand tool" key="Space" id="DWTools_Hand_Override" />

Modification des menus et des commandes de menu


En modifiant le fichier menus.xml, vous pouvez dplacer les commandes de menu au sein d'un menu ou d'un menu un autre. Vous pouvez galement ajouter des sparateurs dans les menus ou les supprimer et dplacer des menus au sein d'une barre de menus ou d'une barre de menus une autre. En outre, vous pouvez ajouter des lments dans les menus contextuels ou en retirer en appliquant la mme procdure que pour les autres menus. Pour plus d'informations, voir Fichier menus.xml la page 150. Dplacement d'une commande de menu 1 Quittez Dreamweaver.
2 Effectuez une copie de sauvegarde du fichier menus.xml. 3 Ouvrez le fichier menus.xml dans un diteur de texte comme BBEdit, Macromedia HomeSite ou Wordpad. Ne

l'ouvrez pas dans Dreamweaver.


4 Coupez une balise menuitem complte, depuis la chane <menuitem initiale jusqu' la squence /> finale. 5 Placez le point d'insertion l'emplacement requis pour la commande de menu. Cet emplacement doit se situer entre

une balise menu et la balise /menu correspondante.


6 Collez la commande de menu son nouvel emplacement.

Cration d'un sous-menu lors du dplacement d'une commande de menu 1 Placez le point d'insertion dans un menu (entre une balise menu et la balise /menu correspondante).
2 Insrez une nouvelle balise menu et une balise /menu dans le menu. 3 Ajoutez les nouvelles commandes de menu dans le nouveau sous-menu.

Insertion d'un sparateur entre deux commandes de menu Insrez une balise separator/ entre les deux balises menuitem. Suppression d'un sparateur existant Supprimez la ligne separator/ correspondante. Dplacement dun menu 1 Quittez Dreamweaver.
2 Effectuez une copie de sauvegarde du fichier menus.xml.

EXTENSION DE DREAMWEAVER CS4 159


Menus et commandes de menu

3 Ouvrez le fichier menus.xml dans un diteur de texte comme BBEdit, HomeSite ou Wordpad. Ne l'ouvrez pas dans

Dreamweaver.
4 Coupez un menu ainsi que son contenu, depuis la balise d'ouverture menu jusqu' la balise de fermeture /menu. 5 Placez le point d'insertion au nouvel emplacement du menu. Cet emplacement doit se situer entre une balise
menubar et la balise /menubar correspondante.

6 Copiez le menu son nouvel emplacement.

Modification du nom d'un menu ou d'une commande de menu


Pour modifier le nom d'un menu ou d'une commande de menu, il suffit de modifier le fichier menus.xml.
1 Quittez Dreamweaver. 2 Effectuez une copie de sauvegarde du fichier menus.xml. 3 Ouvrez le fichier menus.xml dans un diteur de texte comme HomeSite, BBEdit ou Wordpad. Ne l'ouvrez pas dans

Dreamweaver.
4 Si vous modifiez le nom d'une commande de menu, localisez la balise menuitem adquate, puis modifiez son

attribut name. Si vous modifiez le nom d'un menu, localisez la balise menu adquate, puis modifiez son attributname. Dans tous les cas, ne modifiez pas l'attribut id.
5 Enregistrez, puis fermez le fichier menus.xml. Relancez Dreamweaver afin que les modifications soient prises en

compte.

Modification des raccourcis clavier


Si les raccourcis clavier par dfaut ne vous conviennent pas, vous pouvez les modifier, les supprimer ou en crer de nouveaux. Pour ce faire, la solution la plus simple est d'utiliser l'Editeur de raccourcis clavier. Pour plus d'informations, voir l'aide de Dreamweaver. Il est galement possible de modifier les raccourcis clavier directement dans le fichier menus.xml, mais les risques d'erreur sont plus levs que si vous utilisez l'Editeur de raccourcis clavier.
1 Quittez Dreamweaver. 2 Effectuez une copie de sauvegarde du fichier menus.xml. 3 Ouvrez le fichier menus.xml dans un diteur de texte comme BBEdit, HomeSite ou Wordpad. Ne l'ouvrez pas dans

Dreamweaver.
4 Consultez le tableau des raccourcis clavier (disponible partir du centre de support de Dreamweaver sur

http://www.adobe.com/go/dreamweaver_support_fr) et choisissez un raccourci non utilis ou que vous souhaitez rassigner. Si vous rassignez un raccourci clavier, reportez les modifications sur une copie imprime de la matrice pour vous y rfrer ultrieurement.
5 Lorsque vous rassignez un raccourci clavier, localisez la commande de menu laquelle il renvoie, puis supprimez

l'attribut key="shortcut" de cette commande de menu.


6 Localisez la commande de menu laquelle vous souhaitez assigner ou rassigner le raccourci clavier. 7 Si un raccourci clavier est dj assign cette commande de menu, localisez l'attribut key dans la ligne. Si aucun

raccourci ne lui a t assign, ajoutez l'attribut key="" parmi les autres attributs au sein de la balise menuitem.
8 Entre les guillemets (") de l'attribut key, saisissez le nouveau raccourci clavier.

Si vous saisissez une combinaison de touches, sparez ces dernires par un signe Plus (+). Pour plus d'informations sur les modificateurs, voir la description de la balise menuitem dans <menuitem> la page 152.

EXTENSION DE DREAMWEAVER CS4 160


Menus et commandes de menu

Si le raccourci clavier est dj assign une autre commande de menu et que vous n'avez pas supprim cette assignation, le raccourci ne s'applique qu' la premire commande laquelle il est associ dans le fichier menus.xml. Remarque : Vous pouvez utiliser un mme raccourci clavier pour une commande de menu Windows et Macintosh.
9 Saisissez le nouveau raccourci l'emplacement adquat de la matrice des raccourcis clavier.

Menus droulants et menus contextuels


Dreamweaver comporte des menus droulants ou contextuels dans un grand nombre de panneaux et de botes de dialogue. Certains menus contextuels sont dfinis dans le fichier menus.xml. Les autres sont dfinis dans divers fichiers XML. Il vous est possible de crer, supprimer ou modifier des lments de ces menus. Cependant, en rgle gnrale, il est prfrable de crer une extension afin d'effectuer ces changements. Les menus droulants et contextuels de Dreamweaver rpertoris ci-dessous sont dfinis dans des fichiers XML au moyen de balises identiques celles du fichier menus.xml :

Sources de donnes (menu droulant Plus (+) du panneau Liaisons) : dfinies dans les fichiers DataSources.xml
situs dans les sous-dossiers du dossier DataSources.

Comportements de serveur (menu droulant Plus (+) du panneau Comportements de serveur) : dfinis dans les
fichiers ServerBehaviors.xml situs dans les sous-dossiers du dossier ServerBehaviors.

Formats de serveur (menu droulant Plus (+) de la bote de dialogue Modifier la liste de formats) : dfinis dans les
fichiers ServerFormats.xml situs dans les sous-dossiers du dossier ServerFormats.

Les lments du menu droulant formats qui permettent une liaison dans le panneau Liaisons sont dfinis dans les
fichiers Formats.xml situs dans les sous-dossiers du dossier ServerFormats. Vous pouvez ajouter des entres ce menu partir de Dreamweaver via la bote de dialogue d'ajout de format.

Les commandes de menu de la bote de dialogue Editeur de la bibliothque de balises sont dfinies dans le fichier
TagLibraries/TagImporters/TagImporters.xml.

Les commandes de menu des paramtres de la bote de dialogue de gnration de comportement, elle-mme
comprise dans le Crateur de comportements de serveur, sont dfinies dans le fichier Shared/Controls/String Menu/Controls.xml.

Les lments des menus contextuels associs aux composants ColdFusion sont dfinis dans
Components/ColdFusion/CFCs/CFCsMenus.xml.

Les lments des menus contextuels associs aux sources de donnes ColdFusion sont dfinis dans
Components/ColdFusion/DataSources/DataSourcesMenus.xml.

Les commandes des menus contextuels associes aux divers composants de serveur sont dfinies dans des fichiers
XML situs dans les sous-dossiers du dossier Components.

Commandes de menu
Les commandes de menu rendent les menus plus souples et plus dynamiques. Elles permettent d'excuter pratiquement n'importe quel type de modification dans le document actif, dans d'autres documents ouverts ou dans tout document HTML situ sur un disque local.

EXTENSION DE DREAMWEAVER CS4 161


Menus et commandes de menu

Les commandes de menu sont des fichiers HTML rfrencs dans l'attribut file d'une balise menuitem du fichier menus.xml. La section body d'un fichier de commandes de menu peut contenir un formulaire HTML destin recevoir les options de la commande, par exemple la faon de trier un tableau et selon quelle colonne. La section head d'un fichier de commandes de menu contient des fonctions JavaScript. Ces fonctions traitent la saisie du formulaire partir de la section body et contrlent les modifications apportes au document de l'utilisateur. Les commandes de menu sont stockes dans le dossier Configuration/Menus du dossier de l'application Dreamweaver. Remarque : Sous Mac OS X 10.3, les commandes sont stockes dans utilisateur/Library/Application Support/Adobe/Dreamweaver 9/Commands/nomcommande.html. Le tableau ci-dessous recense les fichiers utiliss pour crer une commande de menu.
Chemin Configuration/Menus/ Fichier menus.xml Description Contient une liste structure des barres de menus, menus, commandes de menu, sparateurs, listes de raccourcis et raccourcis clavier. Modifiez ce fichier pour ajouter de nouveaux menus et commandes de menu. Contient les fonctions requises par la commande de menu.

Configuration/Menus/

nom_commande.htm

Remarque : Si vous ajoutez des commandes de menu personnalises dans Dreamweaver, faites-le au plus haut niveau du dossier Menus ou crez un sous-dossier. Le dossier MM est rserv aux commandes de menu fournies avec Dreamweaver.

Modification du menu Commandes


Vous pouvez ajouter certains types de commandes au menu Commandes et les renommer sans avoir modifier le fichier menus.xml. Pour plus d'informations sur menus.xml, voir Modification des menus et des commandes de menu la page 158. Remarque : Le mot commande a deux significations distinctes dans Dreamweaver. Au sens strict du terme, une commande est un type d'extension particulier. Cependant, dans certains contextes, le terme commande correspond lment de menu, c'est--dire tout lment apparaissant dans un menu Dreamweaver, quelle que soit sa fonction ou son fonctionnement. Pour crer de nouvelles commandes places automatiquement dans le menu Commandes, utilisez le panneau Historique. Vous pouvez galement utiliser Extension Manager pour installer de nouvelles extensions, notamment des commandes. Pour plus d'informations, voir l'aide de Dreamweaver. Pour rorganiser les lments du menu Commandes ou pour dplacer des lments d'un menu un autre, il est ncessaire de modifier le fichier menus.xml. Modification du nom d'une commande que vous avez cre 1 Choisissez Commandes > Modifier la liste des commandes. Une bote de dialogue s'affiche, rpertoriant toutes les commandes que vous pouvez renommer. Les commandes se trouvant dans le menu Commandes par dfaut n'apparaissent pas dans cette liste et ne peuvent pas tre supprimes de cette manire.
2 Slectionnez la commande que vous souhaitez renommer. 3 Indiquez son nouveau nom. 4 Cliquez sur Fermer.

EXTENSION DE DREAMWEAVER CS4 162


Menus et commandes de menu

Le nouveau nom apparat dans le menu Commandes. Suppression d'une commande que vous avez cre 1 Choisissez Commandes > Modifier la liste des commandes. Une bote de dialogue s'affiche, rpertoriant toutes les commandes que vous pouvez supprimer. Les commandes se trouvant dans le menu Commandes par dfaut n'apparaissent pas dans cette liste et ne peuvent pas tre supprimes de cette manire.
2 Slectionnez la commande que vous souhaitez supprimer. 3 Cliquez sur Supprimer, puis confirmez que vous voulez supprimer la commande.

La commande est supprime. La suppression d'une commande n'implique pas seulement la suppression de la commande du menu : le fichier contenant le code de la commande est galement supprim. Cette procdure de suppression doit donc tre utilise avec discernement. Si vous souhaitez supprimer une commande sans supprimer le fichier, localisez le fichier sous Configuration/Commands, puis placez-le dans un autre dossier.
4 Cliquez sur Fermer.

Fonctionnement des commandes de menu


Lorsque l'utilisateur clique sur un menu avec un lment contenant une commande de menu, les vnements suivants se produisent :
1 Si l'une des balises menuitem du menu contient l'attribut dynamic, Dreamweaver appelle la fonction
getDynamicContent() dans le fichier de commandes de menu associ afin de complter le menu.

2 Dreamweaver appelle la fonction canAcceptCommand() dans chaque fichier de commandes de menu rfrenc

dans le menu pour vrifier si la commande correspond l'lment slectionn.

Si la fonction canAcceptCommand() renvoie la valeur false, l'lment de menu apparat gris. Si la fonction canAcceptCommand() renvoie la valeur true ou si elle n'est pas dfinie, Dreamweaver appelle la
fonction isCommandChecked() pour dterminer si l'lment de menu doit tre coch. Si la fonction
isCommandChecked() n'est pas dfinie, aucune coche n'apparat.

3 Dreamweaver appelle la fonction setMenuText() pour dterminer le texte devant s'afficher dans le menu.

Si la fonction setMenuText() n'est pas dfinie, Dreamweaver utilise le texte spcifi dans la balise menuitem.
4 L'utilisateur slectionne un lment dans le menu. 5 Dreamweaver appelle la fonction receiveArguments(), si elle est dfinie, dans le fichier de commandes de menu

slectionn afin de permettre la commande de traiter tous les arguments transmis depuis l'lment de menu. Remarque : S'il s'agit d'un lment de menu dynamique, l'ID correspondant est le seul argument transmis.
6 Dreamweaver appelle la fonction commandButtons(), si elle est dfinie, pour identifier les boutons qui figurent

dans la partie droite de la bote de dialogue Options et le code qui doit tre excut lorsque l'utilisateur clique sur ces boutons.
7 Dreamweaver recherche une balise form dans le fichier de commandes de menu.

S'il existe un formulaire, Dreamweaver appelle la fonction windowDimensions() pour dterminer la taille de la
bote de dialogue Options qui contient les lments BODY du fichier.

Si la fonction windowDimensions() n'est pas dfinie, Dreamweaver redimensionne automatiquement la bote


de dialogue.

EXTENSION DE DREAMWEAVER CS4 163


Menus et commandes de menu

8 Si la balise body du fichier de commandes de menu contient le gestionnaire onLoad, Dreamweaver excute le code

associ ce gestionnaire (qu'une bote de dialogue soit affiche ou non). Si aucune bote de dialogue ne s'affiche, les tapes restantes ne sont pas excutes.
9 L'utilisateur slectionne des options dans la bote de dialogue. Dreamweaver excute les gestionnaires d'vnements

associs aux champs du formulaire au fur et mesure que l'utilisateur les rencontre.
10 L'utilisateur clique sur l'un des boutons dfinis par la fonction commandButtons(). 11 Dreamweaver excute le code associ au bouton sur lequel l'utilisateur a cliqu. 12 La bote de dialogue reste affiche jusqu' ce que l'un des scripts du fichier de commandes de menu appelle la

fonction window.close().

Exemple de commande de menu simple


Cet exemple de commande de menu simple explique le fonctionnement des commandes de menu Annuler et Rtablir. La commande de menu Annuler permet l'utilisateur d'annuler sa dernire modification, la commande Rtablir permet de rtablir une modification prcdemment annule au moyen de Annuler. Pour mettre en oeuvre cet exemple, crez les commandes de menu, rdigez le code JavaScript et placez le fichier de commandes dans le dossier Menu.

Cration d'une commande de menu


Pour crer un menu nomm MyMenu qui contient les commandes Undo (Annuler ) et Redo (Rtablir), ajoutez les balises HTML de menu suivantes. Ajoutez ces balises aprs la dernire balise </menu> de fermeture dans menus.xml.
<menu name="MyMenu" id="MyMenu_Edit"> <menuitem name="MyUndo" key="Cmd+Z" file="Menus/MyMenu.htm" arguments="'undo'" id="MyMenu_Edit_Undo" /> <menuitem name="MyRedo" key="Cmd+Y" file="Menus/MyMenu.htm" arguments="'redo'" id="MyMenu_Edit_Redo" /> </menu>

L'attribut key dfinit les raccourcis clavier que l'utilisateur peut utiliser pour appeler la commande de menu. L'attribut file indique le nom du fichier de commandes excut par Dreamweaver lorsque ce dernier appelle la commande. La valeur de l'attribut arguments dfinit les arguments transmis par Dreamweaver lorsque ce dernier appelle la fonction receiveArguments(). La figure suivante reprsente ces commandes de menu :

Code JavaScript pour le menu


Lorsque l'utilisateur slectionne Undo ou Redo dans le menu MyMenu, Dreamweaver appelle le fichier de commandes MyMenu.htm spcifi par l'attribut file de la balise menuitem. Crez le fichier de commandes MonMenu.htm dans le dossier Configuration/Menus de Dreamweaver et ajoutez les trois fonctions API des commandes de menu (canAcceptCommand(), receiveArguments() et setMenuText()) afin de mettre en uvre la logique associe aux lments de menu Annuler et Rtablir. Les sections ci-dessous dcrivent ces fonctions.

EXTENSION DE DREAMWEAVER CS4 164


Menus et commandes de menu

canAcceptCommand() Dreamweaver appelle la fonction canAcceptCommand() pour chaque lment du menu MyMenu afin de dterminer s'il doit tre activ ou dsactiv. Dans le fichier MyMenu.htm, la fonction canAcceptCommand() vrifie la valeur de l'argument arguments[0] afin de dterminer si Dreamweaver traite un lment de menu Redo ou Undo. Si l'argument "undo" est dfini, la fonction canAcceptCommand() appelle la fonction d'activateur dw.canUndo() et renvoie la valeur renvoye (true ou false). De mme, si l'argument "redo" est dfini, la fonction canAcceptCommand() appelle la fonction d'activateur dw.canRedo() et renvoie sa valeur Dreamweaver. Si la fonction canAcceptCommand() renvoie la valeur false, Dreamweaver grise l'lment de menu pour lequel la fonction a t appele. L'exemple suivant dcrit le code de la fonction canAcceptCommand() :
function canAcceptCommand() { var selarray; if (arguments.length != 1) return false; var bResult = false; var whatToDo = arguments[0]; if (whatToDo == "undo") { bResult = dw.canUndo(); } else if (whatToDo == "redo") { bResult = dw.canRedo(); } return bResult; }

receiveArguments() Dreamweaver appelle la fonction receiveArguments() pour traiter les arguments dfinis dans la balise menuitem. Pour les lments de menu Undo et Redo, la fonction receiveArguments() appelle soit la fonction dw.undo(), soit la fonction dw.redo(), selon la valeur de l'argument arguments[0] ("undo" ou "redo" respectivement). La fonction dw.undo() annule la dernire action effectue par l'utilisateur dans la fentre de document, la bote de dialogue ou le panneau actif. La fonction dw.redo() rtablit la dernire opration annule. Le code de la fonction receiveArguments() ressemble ceci :
function receiveArguments() { if (arguments.length != 1) return; var whatToDo = arguments[0]; if (whatToDo == "undo") { dw.undo(); } else if (whatToDo == "redo") { dw.redo(); } }

EXTENSION DE DREAMWEAVER CS4 165


Menus et commandes de menu

Dans cette commande, la fonction receiveArguments() traite les arguments et excute la commande. Des commandes de menu plus complexes peuvent appeler des fonctions diffrentes pour excuter la commande. Par exemple, le code suivant vrifie si le premier argument est "foo" ; si c'est le cas, il appelle la fonction doOperationX() et lui transmet le deuxime argument. Si le premier argument est "bar", le code appelle la fonction doOperationY() et lui transmet le deuxime argument. La fonction doOperationX() ou doOperationY() est charge de l'excution de la commande.
function receiveArguments(){ if (arguments.length != 2) return; var whatToDo = arguments[0]; if (whatToDo == "foo"){ doOperationX(arguments[1]); }else if (whatToDo == "bar"){ doOperationX(arguments[1]); } }

setMenuText() Dreamweaver appelle la fonction setMenuText() pour dterminer le texte de l'lment de menu. Si la fonction setMenuText() n'est pas dfinie, Dreamweaver utilise le texte spcifi dans l'attribut name de la balise menuitem. La fonction setMenuText() vrifie la valeur de l'argument transmis par Dreamweaver (arguments[0]). Si la valeur de cet argument est "undo", Dreamweaver appelle la fonction dw.getUndoText() ; si sa valeur est "redo", Dreamweaver appelle la fonction dw.getRedoText(). La fonction dw.getUndoText() renvoie le texte spcifiant l'opration que Dreamweaver doit annuler. Par exemple, si l'utilisateur utilise plusieurs fois la commande Redo, la fonction dw.getUndoText() peut renvoyer le texte de menu Undo Edit source . De mme, la fonction dw.getRedoText() renvoie le texte spcifiant l'opration que Dreamweaver doit rtablir. Si l'utilisateur utilise plusieurs fois la commande Undo, la fonction dw.RedoText() peut renvoyer le texte de menu Redo Edit Source . Le code de la fonction setMenuText() ressemble ceci :
function setMenuText() { if (arguments.length != 1) return ""; var whatToDo = arguments[0]; if (whatToDo == "undo") return dw.getUndoText(); else if (whatToDo == "redo") return dw.getRedoText(); else return ""; }

Enregistrement du fichier de commandes dans le dossier Menu


Pour mettre en uvre les lments de menu Annuler et Rtablir, vous devez enregistrer le fichier MyMenu.htm dans le dossier Configuration/Menus de Dreamweaver ou dans un sous-dossier cr cet effet. L'emplacement du fichier doit correspondre celui que vous avez spcifi dans la balise menuitem. Pour que Dreamweaver puisse l'exploiter, vous devez redmarrer Dreamweaver ou recharger les extensions. Pour plus d'informations sur le rechargement des extensions, voir Rechargement d'extensions la page 84.

EXTENSION DE DREAMWEAVER CS4 166


Menus et commandes de menu

Pour excuter les commandes de menu, slectionnez l'lment de menu lorsqu'il est activ. Dreamweaver appelle alors les fonctions dans le fichier de commandes, comme indiqu dans la section Fonctionnement des commandes de menu la page 162.

Exemple de menu dynamique


Cet exemple dcrit la mise en uvre du sous-menu Aperu dans le navigateur de Dreamweaver qui permet d'afficher la liste des navigateurs disponibles. Cet exemple dcrit galement l'ouverture du fichier en cours (ou des fichiers slectionns dans le panneau Site) dans le navigateur spcifi par l'utilisateur. En mettant ce menu dynamique en oeuvre, vous crez les lments du menu dynamique et vous rdigez le code JavaScript.

Cration d'lments de menu dynamique


Les balises de menu du fichier menus.xml prsentes ci-dessous dfinissent le sous-menu Aperu dans le navigateur du menu Fichier :
<menu name="_Preview in Browser" id="DWMenu_File_PIB"> <menuitem dynamic name="No Browsers Selected" file="Menus/MM/PIB_Dynamic.htm" arguments="'No Browsers'" id="DWMenu_File_PIB_Default" /> <separator /> <menuitem name="_Edit Browser List..." enabled="true" command="dw.editBrowserList()" id="DWMenu_File_PIB_EditBrowserList" /> </menu>

La premire balise menuitem dfinit l'lment de menu par dfaut Pas de navigateur slectionn. Cet lment apparat dans le sous-menu si vous n'avez spcifi aucun navigateur pour l'lment Aperu dans le navigateur dans la bote de dialogue Prfrences. Si vous avez spcifi Microsoft Internet Explorer, le sous-menu est similaire l'illustration cidessous :

L'attribut name du premier lment de menu indique le fichier de commandes PIB_Dynamic.htm. Ce fichier contient les lignes suivantes :
<SCRIPT LANGUAGE="javascript" SRC="PIB_Dynamic.js"></SCRIPT>

La balise script inclut le code JavaScript du fichier PIB_Dynamic.js, lequel contient le code JavaScript associ au sousmenu Aperu dans le navigateur. Il est possible d'enregistrer ce code directement dans le fichier PIB_Dynamic.htm, mais il est plus utile de l'enregistrer dans un fichier spar. Ceci permet en effet d'inclure le mme code dans un grand nombre de commandes.

Code JavaScript pour l'lment de menu dynamique


Etant donn que la premire balise menuitem contient l'attribut dynamic, Dreamweaver appelle la fonction getDynamicContent() du fichier PIB_Dynamic.js dcrite dans l'exemple suivant :

EXTENSION DE DREAMWEAVER CS4 167


Menus et commandes de menu

function getDynamicContent(itemID) { var browsers = null; var PIB = null; var i; var j=0; browsers = new Array(); PIB = dw.getBrowserList(); for (i=0; i<PIB.length; i=i+2) { browsers[j] = new String(PIB[i]); if (dw.getPrimaryBrowser() == PIB[i+1]) browsers[j] += "\tF12"; else if (dw.getSecondaryBrowser() == PIB[i+1]) browsers[j] += "\tCmd+F12"; browsers[j] += ";id='"+escQuotes(PIB[i])+"'"; if (itemID == "DWPopup_PIB_Default") browsers[j] = MENU_strPreviewIn + browsers[j]; j = j+1; } return browsers; }

La fonction getDynamicContent() appelle la fonction dw.getBrowserList() afin d'obtenir un tableau des noms de navigateurs indiqus dans la section Aperu dans le navigateur de la bote de dialogue Prfrences. Ce tableau contient les noms de tous les navigateurs et les chemins d'accs aux fichiers excutables. Ensuite, pour chaque lment du tableau (i=0; i<PIB.length; i=i+2), la fonction getDynamicContents() place le nom du navigateur (PIB[i]) dans un second tableau appel browsers (browsers[j] = new String(PIB[i]);). Si un navigateur a t dsign comme navigateur principal ou secondaire, la fonction ajoute les noms des raccourcis clavier qui permettent de l'appeler. La chane ";id=" est ensuite ajoute, suivie du nom du navigateur entre apostrophes (exemple: ;id='iexplore'). Si l'argument itemID est "DWPopup_PIB_Default", la fonction fait prcder l'lment du tableau de la chane Preview in. Une fois qu'une entre a t cre pour chaque navigateur rpertori dans la bote de dialogue Prfrences, la fonction getDynamicContent() renvoie les navigateurs du tableau vers Dreamweaver. Si vous n'avez slectionn aucun navigateur, la fonction renvoie la valeur null et Dreamweaver affiche Pas de navigateur slectionn dans le menu. canAcceptCommand() Dreamweaver appelle ensuite la fonction canAcceptCommand() pour chaque balise menuitem faisant rfrence un fichier de commandes avec l'attribut file. Si la fonction canAcceptCommand() renvoie la valeur false, l'lment de menu s'affiche en gris. Si la fonction canAcceptCommand() renvoie la valeur true, Dreamweaver active l'lment de menu. Si la fonction renvoie true ou si elle n'est pas dfinie, Dreamweaver appelle la fonction isCommandChecked() pour dterminer si l'lment de menu doit tre coch. Si la fonction isCommandChecked() n'est pas dfinie, aucune coche n'apparat.

EXTENSION DE DREAMWEAVER CS4 168


Menus et commandes de menu

function canAcceptCommand() { var PIB = dw.getBrowserList(); if (arguments[0] == 'primary' || arguments[0] == 'secondary') return havePreviewTarget(); return havePreviewTarget() && (PIB.length > 0); }

La fonction canAcceptCommand() du fichier PIB_Dynamic.js rcupre nouveau la liste des navigateurs cre dans la bote de dialogue Prfrences. Elle vrifie ensuite si le premier argument (arguments[0]) est principal ou secondaire. Si tel est le cas, elle renvoie la valeur renvoye par la fonction havePreviewTarget(). Dans le cas contraire, elle effectue des tests afin de vrifier l'appel de la fonction havePreviewTarget()et de voir si des navigateurs ont t spcifis ou non (PIB.length > 0). Si les deux tests sont vrais (true), la fonction renvoie la valeur true. Si au moins un test est faux (false), la fonction renvoie la valeur false. havePreviewTarget() La fonction havePreviewTarget() est dfinie par l'utilisateur et renvoie la valeur true si Dreamweaver dispose d'une cible valide afficher dans le navigateur. Ce peut tre un document ou un groupe de fichiers slectionn dans le panneau Site. La fonction havePreviewTarget() ressemble l'exemple ci-dessous :
function havePreviewTarget() { var bHavePreviewTarget = false; if (dw.getFocus(true) == 'site') { if (site.getFocus() == 'remote') { bHavePreviewTarget = site.getRemoteSelection().length > 0 && site.canBrowseDocument(); } else if (site.getFocus() != 'none') { var selFiles = site.getSelection(); if (selFiles.length > 0) { var i; bHavePreviewTarget = true; for (i = 0; i < selFiles.length; i++) { var selFile = selFiles[i]; // For server connections, the files will // already be remote URLs. if (selFile.indexOf("://") == (-1)) { var urlPrefix = "file:///"; var strTemp = selFile.substr(urlPrefix.length); if (selFile.indexOf(urlPrefix) == -1)

EXTENSION DE DREAMWEAVER CS4 169


Menus et commandes de menu

bHavePreviewTarget = false; else if (strTemp.indexOf("/") == -1) bHavePreviewTarget = false; else if (!DWfile.exists(selFile)) bHavePreviewTarget = false; else if (DWfile.getAttributes(selFile).indexOf("D") != -1) bHavePreviewTarget = false; } else { bHavePreviewTarget = true; } } } } } else if (dw.getFocus() == 'document' || dw.getFocus() == 'textView' || dw.getFocus("true") == 'html' ) { var dom = dw.getDocumentDOM('document'); if (dom != null) { var parseMode = dom.getParseMode(); if (parseMode == 'html' || parseMode == 'xml') bHavePreviewTarget = true; } } return bHavePreviewTarget; }

La fonction havePreviewTarget() rgle la valeur bHavePreviewTarget sur false comme valeur renvoye par dfaut. Cette fonction effectue deux tests de base en appelant la fonction dw.getFocus() pour dterminer quelle partie de l'application est active. Lors du premier test, elle vrifie que le panneau Site est actif (if (dw.getFocus(true) == 'site')). Si ce n'est pas le cas, elle vrifie, lors du second test, si un document (dw.getFocus() == 'document'), le mode Texte (dw.getFocus() == 'textView') ou l'inspecteur de code (dw.getFocus("true") == 'html') est actif. Si aucun test n'est vrai (true), la fonction renvoie la valeur false. Si le panneau Site est actif, la fonction vrifie si l'affichage est dfini sur distant. Si c'est le cas, la fonction dfinit
bHavePreviewTarget sur true, s'il existe des fichiers distants (site.getRemoteSelection().length > 0) et que vous

pouvez les ouvrir dans un navigateur (site.canBrowseDocument()). Si l'affichage n'est pas distant, et s'il n'est pas dfini sur Aucun, la fonction obtient une liste des fichiers slectionns (var selFiles = site.getSelection();) sous la forme d'URL file:///. La fonction effectue un test sur chaque lment de la liste afin de vrifier si la chane de caractres :// est prsente. Si ce n'est pas le cas, le code effectue une srie de tests sur l'lment de la liste. Si l'lment ne se prsente pas sous la forme d'une URL file:/// (if (selFile.indexOf(urlPrefix) == -1)), la valeur renvoye est false. Si le reste de la chane apparaissant aprs le prfixe file:/// ne contient pas de barre oblique (/) (if (strTemp.indexOf("/") == -1)), la valeur renvoye est dfinie sur false. Si le fichier n'existe pas (else if (!DWfile.exists(selFile))), la valeur renvoye est dfinie sur false. Enfin, la fonction vrifie si le fichier spcifi est un dossier (else if (DWfile.getAttributes(selFile).indexOf("D") != -1)). Si selfile est un dossier, la fonction renvoie la valeur false. Autrement, si la cible est un fichier, la fonction dfinit bHavePreviewTarget sur la valeur true.

EXTENSION DE DREAMWEAVER CS4 170


Menus et commandes de menu

Si un document, le mode Texte ou l'inspecteur de code est actif (else if (dw.getFocus() == 'document' || dw.getFocus() == 'textView' || dw.getFocus("true") == 'html' )), la fonction obtient le DOM et vrifie s'il s'agit d'un document HTML ou XML. Si tel est le cas, la fonction dfinit bHavePreviewTarget sur true. Enfin, la fonction renvoie la valeur stocke dans bHavePreviewTarget. receiveArguments() Dreamweaver appelle la fonction receiveArguments() pour que la commande traite tous les arguments provenant de l'lment de menu. En ce qui concerne le menu Aperu dans le navigateur, la fonction receiveArguments() appelle le navigateur slectionn par l'utilisateur. La fonction receiveArguments() ressemble ceci :
function receiveArguments() { var whichBrowser = arguments[0]; var theBrowser = null; var i=0; var browserList = null; var result = false; if (havePreviewTarget()) { // Code to check if we were called from a shortcut key if (whichBrowser == 'primary' || whichBrowser == 'secondary') { // get the path of the selected browser if (whichBrowser == 'primary') { theBrowser = dw.getPrimaryBrowser(); } else if (whichBrowser == 'secondary') { theBrowser = dw.getSecondaryBrowser(); } // Match the path with the name of the corresponding browser // that appears in the menu. browserList = dw.getBrowserList(); while(i < browserList.length) { if (browserList[i+1] == theBrowser) theBrowser = browserList[i]; i+=2; } } else theBrowser = whichBrowser; // Only launch the browser if we have a valid browser selected. if (theBrowser != "file:///" && typeof(theBrowser) != "undefined" && theBrowser.length > 0) { if (dw.getFocus(true) == 'site') { // Only get the first item of the selection because // browseDocument() can't take an array. //dw.browseDocument(site.getSelection()[0],theBrowser); site.browseDocument(theBrowser); }

EXTENSION DE DREAMWEAVER CS4 171


Menus et commandes de menu

else dw.browseDocument(dw.getDocumentPath('document'),theBrowser); } else { // Otherwise, F12 or Ctrl+F12 was pressed, ask if the user wants // to specify a primary or secondary browser now. if (whichBrowser == 'primary') { result = window.confirm(MSG_NoPrimaryBrowserDefined); } else if (whichBrowser == 'secondary') { result = window.confirm(MSG_NoSecondaryBrowserDefined); } // If the user clicked OK, show the prefs dialog with the browser panel. if (result) dw.showPreferencesDialog('browsers'); } } }

La fonction commence par rgler la variable whichBrowser sur la valeur transmise par Dreamweaver, arguments[0]. Outre la dfinition d'autres valeurs par dfaut, la fonction rgle galement le renvoi sur la valeur par dfaut, false. Une fois les variables initialises, la fonction receiveArguments() appelle la fonction dfinie par l'utilisateur
havePreviewTarget() et teste le rsultat. Si le rsultat du test est vrai (true), la fonction vrifie si l'utilisateur a

slectionn le navigateur principal ou secondaire. Dans ce cas, la fonction dfinit la variable theBrowser sur le chemin du fichier excutable qui lance le navigateur (dw.getPrimaryBrowser() ou dw.getSecondaryBrowser()). La fonction effectue ensuite une boucle qui examine la liste des navigateurs renvoye par dw.getBrowsersList(). Si le chemin vers un navigateur de la liste correspond au chemin vers le navigateur principal ou secondaire, la fonction dfinit la variable theBrowser sur la valeur de correspondance dans browserList. La valeur contient le nom du navigateur et le chemin vers le fichier excutable qui lance le navigateur. Si havePreviewTarget() renvoie la valeur false, la fonction dfinit la variable theBrowser sur la valeur de la variable whichBrowser. La fonction receiveArguments() teste ensuite la variable theBrowser pour vrifier qu'elle ne dbute pas par un chemin, qu'elle n'est pas "non dfinie" ("undefined") et que sa taille est suprieure 0. Si toutes ces conditions sont remplies et que le panneau Site est actif, la fonction receiveArguments() appelle la fonction site.browseDocument() pour qu'elle ouvre dans le navigateur slectionn les fichiers slectionns dans le panneau Site. Si le panneau Site n'est pas actif, la fonction receiveArguments() appelle la fonction dw.browseDocument() et lui transmet le chemin du document actif et la valeur de la variable theBrowser, qui spcifie le nom du navigateur utiliser pour afficher le document. Si l'utilisateur a appuy sur des touches de raccourci (F12 ou Ctrl+F12) et qu'aucun navigateur principal ou secondaire n'a t spcifi, une bote de dialogue s'affiche pour l'avertir. Si l'utilisateur clique sur OK, la fonction appelle la fonction dw.showPreferencesDialog() avec l'argument browsers pour que l'utilisateur puisse spcifier un navigateur ce stade.

Fonctions de l'API des commandes de menu


Les fonctions personnalises de l'API des commandes de menu ne sont pas obligatoires.

EXTENSION DE DREAMWEAVER CS4 172


Menus et commandes de menu

canAcceptCommand()
Description Dtermine si l'lment de menu doit tre actif ou gris. Arguments {arg1}, {arg2},...{argN}} S'il s'agit d'une option de menu dynamique, l'ID unique correspondant spcifi dans la fonction getDynamicContents() est le seul argument transmis. Si l'attribut arguments est dfini pour une balise menuitem, la valeur de l'attribut est transmise la fonction canAcceptCommand() (et aux fonctions isCommandChecked() la page 173, receiveArguments() la page 174 et setMenuText() la page 175) sous forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer deux lments de menu appelant la mme commande de menu. Remarque : L'attribut arguments n'est pas pris en compte pour les options de menu dynamiques. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si l'lment doit tre activ, false dans les autres cas.

commandButtons()
Description Dfinit les boutons figurant dans la partie droite de la bote de dialogue Options et leur comportement lorsque l'utilisateur clique dessus. Si cette fonction n'est pas dfinie, aucun bouton n'apparat et la section body du fichier de commandes de menu s'tend de faon remplir la totalit de la bote de dialogue. Arguments Aucun. Valeurs renvoyes Dreamweaver renvoie un tableau contenant un nombre pair d'lments. Le premier lment est une chane contenant le libell du premier bouton. Le deuxime lment est une chane de code JavaScript dfinissant le comportement du premier bouton lorsque l'utilisateur clique dessus. Les autres lments dfinissent les boutons supplmentaires de la mme manire. Exemple Dans l'exemple suivant, la fonction commandButtons() dfinit les boutons OK, Cancel (Annuler) et Help (Aide).
function commandButtons(){ return new Array("OK" , "doCommand()" , "Cancel" , "window.close()" , "Help" , "showHelp()"); }

getDynamicContent()
Description Extrait le contenu de la partie dynamique du menu.

EXTENSION DE DREAMWEAVER CS4 173


Menus et commandes de menu

Arguments menuID L'argument menuID est la valeur de l'attribut id dans la balise menuitem associe l'lment de menu. Valeurs renvoyes Dreamweaver attend un tableau de chanes, o chaque chane contient le nom d'un lment de menu et son ID unique, spars par un point-virgule. Si cette fonction renvoie la valeur null, aucune modification n'est apporte au menu. Exemple Dans l'exemple suivant, la fonction getDynamicContent() renvoie un tableau de quatre lments de menu (My Menu Item 1, My Menu Item 2, My Menu Item 3 et My Menu Item 4) :
function getDynamicContent(){ var stringArray= new Array(); var i=0; var numItems = 4; for (i=0; i<numItems;i++) stringArray[i] = new String("My Menu Item " + i + "; id='My-MenuItem" + i + "'"); return stringArray; }

isCommandChecked()
Description Dtermine si une coche doit apparatre ct de l'lment de menu. Arguments {arg1}, {arg2},...{argN} S'il s'agit d'une option de menu dynamique, l'ID unique correspondant spcifi dans la fonction getDynamicContents() est le seul argument transmis. Si l'attribut arguments est dfini pour une balise menuitem, la valeur de l'attribut est transmise la fonction isCommandChecked() (et aux fonctions canAcceptCommand() la page 172, receiveArguments() la page 174 et setMenuText() la page 175) sous forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer deux lments de menu appelant la mme commande de menu. Remarque : L'attribut arguments n'est pas pris en compte pour les options de menu dynamiques. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si une coche doit apparatre en regarde de l'lment de menu, false dans le cas contraire.

EXTENSION DE DREAMWEAVER CS4 174


Menus et commandes de menu

Exemple
function isCommandChecked() { var bChecked = false; var cssStyle = arguments[0]; if (dw.getDocumentDOM() == null) return false; if (cssStyle == "(None)") { return dw.cssStylePalette.getSelectedStyle() == ''; } else { return dw.cssStylePalette.getSelectedStyle() == cssStyle; } return bChecked; }

receiveArguments()
Description Traite tous les arguments transmis partir d'un lment du menu ou de la fonction dw.runCommand(). S'il s'agit d'une option de menu dynamique, elle traite l'ID de l'option de menu dynamique. Arguments {arg1}, {arg2},...{argN} S'il s'agit d'une option de menu dynamique, l'ID unique correspondant spcifi dans la fonction
getDynamicContents() est le seul argument transmis. Si l'attribut arguments est dfini pour une balise menuitem,

la valeur de l'attribut est transmise la fonction receiveArguments() (et aux fonctions canAcceptCommand() la page 172, isCommandChecked() la page 173 et setMenuText() la page 175) sous forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer deux lments de menu appelant la mme commande de menu. Remarque : L'attribut arguments n'est pas pris en compte pour les options de menu dynamiques. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple
function receiveArguments() { var styleName = arguments[0]; if (styleName == "(None)") dw.getDocumentDOM('document').applyCSSStyle('',''); else dw.getDocumentDOM('document').applyCSSStyle('',styleName); }

EXTENSION DE DREAMWEAVER CS4 175


Menus et commandes de menu

setMenuText()
Description Spcifie le texte devant s'afficher dans le menu. Remarque : N'utilisez pas cette fonction si vous utilisez getDynamicContent() la page 172. Arguments {arg1}, {arg2},...{argN} Si l'attribut arguments est dfini pour une balise menuitem, la valeur de l'attribut est transmise la fonction
setMenuText() (et aux fonctions canAcceptCommand() la page 172, isCommandChecked() la page 173 et

receiveArguments() la page 174) sous forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer deux lments de menu appelant la mme commande de menu. Valeurs renvoyes Dreamweaver attend la chane devant apparatre dans le menu. Exemple
function setMenuText() { if (arguments.length != 1) return ""; var whatToDo = arguments[0]; if (whatToDo == "undo") return dw.getUndoText(); else if (whatToDo == "redo") return dw.getRedoText(); else return ""; }

windowDimensions()
Description Dfinit les dimensions de la bote de dialogue des paramtres. Si cette fonction n'est pas dfinie, les dimensions de la fentre sont calcules automatiquement. Remarque : Ne dfinissez cette fonction que si vous souhaitez utiliser une bote de dialogue suprieure 640 x 480pixels. Arguments platform La valeur de l'argument platform est soit "macintosh", soit "windows", selon la plate-forme utilise par l'utilisateur. Valeurs renvoyes Dreamweaver renvoie une chane au format "widthInPixels,heightInPixels". Les dimensions renvoyes sont infrieures la taille totale de la bote de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyes ne permettent pas de faire apparatre toutes les options, des barres de dfilement s'affichent.

EXTENSION DE DREAMWEAVER CS4 176


Menus et commandes de menu

Exemple Dans l'exemple suivant, la fonction windowDimensions() dfinit les dimensions de la bote de dialogue des paramtres 648 x 520 pixels :
function windowDimensions(){ return "648,520"; }

177

Chapitre 11 : Barres d'outils


Pour crer une nouvelle barre d'outils dans Adobe Dreamweaver , il suffit de crer un fichier de dfinition de barre d'outils et de placer ce fichier dans le dossier Configuration/Toolbars. Le tableau ci-dessous rpertorie les fichiers utiliss pour crer une barre d'outils :
Chemin Configuration/Toolbars/ Fichier toolbars.xml Description Modifiez ce fichier pour changer le contenu de la barre d'outils. Crez ce fichier pour gnrer une barre d'outils. Image d'icne associe l'lment de barre d'outils. Fichier de commandes associ l'lment de barre d'outils.

Configuration/Toolbars/

nouvelle_barre_outils.xml

Configuration/Toolbars/

fichier_image.gif

Configuration/Commands/

MyCommand.htm

Fonctionnement des barres d'outils


Les barres d'outils sont dfinies par les fichiers XML et d'image localiss dans le dossier Toolbars du dossier Configuration principal de Dreamweaver. Les barres d'outils par dfaut de Dreamweaver sont stockes dans le fichier toolbars.xml du dossier Configuration/Toolbars. Au dmarrage, Dreamweaver charge tous les fichiers de barre d'outils du dossier Toolbars. Pour ajouter une nouvelle barre d'outils, vous pouvez simplement copier le fichier correspondant dans le dossier Toolbars, plutt que de modifier le fichier toolbars.xml original. Les fichiers XML de barre d'outils dfinissent une ou plusieurs barres d'outils, ainsi que les lments qui les composent. Une barre d'outils est une liste d'lments tels que des boutons, des zones de texte, des menus droulants, etc. Un lment de barre d'outils est un contrle auquel l'utilisateur peut accder. Certains types de contrles de barre d'outils, tels que les boutons-poussoirs et les menus droulants, sont associs une icne. Les icnes sont stockes dans le sous-dossier images du dossier Toolbars. Elles sont gnralement au format de fichier GIF ou JPEG, mais tous les formats compatibles avec Dreamweaver sont accepts. Les images des barres d'outils Adobe sont stockes dans le dossier Toolbars/images/MM. Tout comme pour les menus, vous pouvez spcifier la fonction de chaque lment de la barre d'outils en dfinissant ses attributs ou par l'intermdiaire d'un fichier de commandes. Les fichiers de commandes des barres d'outils Adobe sont stocks dans le dossier Toolbars/MM. L'API de barre d'outils est compatible avec l'API de commandes de menu. Les contrles de barre d'outils peuvent ainsi rutiliser les fichiers de commandes des menus. Contrairement aux menus, les lments de barre d'outils peuvent tre dfinis indpendamment des barres d'outils qui les utilisent. Vous pouvez ainsi utiliser des lments de barre d'outils dans plusieurs barres d'outils en appliquant la balise itemref. Lorsque Dreamweaver charge une barre d'outils pour la premire fois, sa visibilit et sa position sont dtermines par le fichier de dfinition de la barre d'outils. Par la suite, sa visibilit et sa position sont enregistres et restaures partir du registre (Windows) ou du fichier de prfrences de Dreamweaver (Macintosh).

EXTENSION DE DREAMWEAVER CS4 178


Barres d'outils

Comportement des barres d'outils


Sous Windows, les barres d'outils Dreamweaver se comportent, en gnral, comme les barres d'outils standard du systme. Les barres d'outils Dreamweaver prsentent toutefois les caractristiques suivantes :

Vous pouvez les ancrer, les dtacher et les repositionner par rapport aux autres barres d'outils en utilisant la
fonction de glisser-dposer.

Vous pouvez les ancrer horizontalement sur le bord suprieur ou infrieur la fentre. La taille des barres d'outils ne change pas. La taille d'une barre d'tat ne se rduit pas lorsque le conteneur est rduit
ou lorsque d'autres barres d'outils sont ajoutes.

Vous pouvez afficher ou masquer les barres d'outils partir du menu Affichage > Barres d'outils. Les barres d'outils ne peuvent pas se chevaucher. Lorsque vous faites glisser une barre d'outils, seul son contour s'affiche.
Sur Macintosh, les barres d'outils sont toujours attaches la fentre de document. Vous pouvez les afficher ou les masquer partir du menu, mais vous ne pouvez pas les faire glisser, les rorganiser ni les dtacher. Dans l'espace de travail de Dreamweaver, qui intgre toutes les fentres de documents de Dreamweaver dans un unique cadre parent, vous pouvez spcifier si les barres d'outils doivent s'ancrer l'espace de travail ou la fentre de document. Les barres d'outils ancres l'espace de travail de Dreamweaver n'apparaissent qu'une seule fois. Elles fonctionnent toujours sur le document au premier plan. Dans l'espace de travail de Dreamweaver, vous pouvez ancrer les barres d'outils au-dessus, en dessous, gauche ou droite de la barre Insertion. Les barres d'outils ancres l'espace de travail de Dreamweaver ne sont pas automatiquement dsactives lorsque la fentre de document est ferme. Les lments de la barre d'outils dterminent s'ils doivent rester actifs lorsque aucun document n'est ouvert. Lorsque les barres d'outils sont ancres sur la fentre de document, une instance s'affichera pour chaque fentre. La barre d'outils attache une fentre de document est dsactive lorsque la fentre dans laquelle elle est ancre n'est pas la fentre active. Les gestionnaires de mise jour sont excuts ds que leur fentre devient la fentre active. Vous ne pouvez pas faire glisser les barres d'outils entre la fentre de document et l'espace de travail de Dreamweaver.

Fonctionnement des commandes de la barre d'outils


Lorsque Dreamweaver dessine une barre d'outils, les vnements suivants se produisent :
1 Pour chaque lment de contrle de la barre d'outils, Dreamweaver dtermine si l'attribut file existe. 2 Si l'attribut file existe, Dreamweaver appelle la fonction canAcceptCommand() pour dfinir si le contrle doit tre

activ dans le contexte actuel du document. Par exemple, dans la zone de texte Titre du document de la barre d'outils de Dreamweaver, la fonction canAcceptCommand() vrifie l'existence d'un DOM et si le document actif est un fichier HTML. Si ces deux conditions sont vrifies, la fonction renvoie la valeur true et Dreamweaver active la zone de texte dans la barre d'outils.
3 Si l'attribut file existe, Dreamweaver ignore les attributs suivants, s'ils sont spcifis : checked, command,
DOMRequired, enabled, script, showif, update et value.

4 Si l'attribut file n'existe pas, Dreamweaver traite les attributs qui sont dfinis pour l'lment de contrle de barre

d'outils : checked, command, DomRequired etc. Pour plus d'informations sur les attributs de balises d'lments spcifiques, voir Attributs des balises d'lments la page 190.

EXTENSION DE DREAMWEAVER CS4 179


Barres d'outils

5 Dreamweaver appelle la fonction getCurrentValue() chaque cycle de mise jour, comme spcifi par l'attribut
update, pour dterminer la valeur de contrle afficher.

6 L'utilisateur slectionne un lment dans la barre d'outils. 7 Dreamweaver appelle la fonction receiveArguments() pour traiter les arguments spcifis par l'attribut
arguments de l'lment de la barre d'outils.

Pour plus d'informations sur le rle des fonctions spcifiques dans l'API de commande de barre d'outils, voir Fonctions de l'API de commande de barre d'outils la page 195.

Fichier simple de commande de barre d'outils


Cet exemple simple implmente un lment de zone de texte Titre comme indiqu sur la barre d'outils Document de Dreamweaver. L'lment de zone de texte permet l'utilisateur d'entrer un nom pour le document Dreamweaver en cours. Procdez comme suit pour implmenter cet exemple de barre d'outils :

Cration de la zone de texte


Pour ajouter une barre d'outils dans Dreamweaver, vous placez le fichier XML contenant la dfinition de barre d'outils dans le dossier Configuration de Dreamweaver. L'illustration suivante prsente la zone de texte Title (titre) :

L'lment de barre d'outils editcontrol suivant dfinit une zone de texte nomme Title :
<EDITCONTROL ID="DW_SetTitle" label="Title: " tooltip="Document Title" width="150" file="Toolbars/MM/EditTitle.htm"/>

L'attribut tooltip entrane l'affichage dans Dreamweaver de la mention Title du document dans une infobulle lorsque l'utilisateur positionne le curseur sur la zone de texte. L'attribut width dfinit la taille du champ en pixels. L'attribut file prcise que le fichier EditTitle.htm contient les fonctions JavaScript qui agissent sur la zone de texte. Pour voir la dfinition complte de la barre d'outils Document de Dreamweaver, voir la barre d'outils principale (id="DW_Toolbar_Main") dans le fichier toolbars.xml.

Code JavaScript pour la zone de texte


Lorsque l'utilisateur agit sur la zone de texte, Dreamweaver invoque le fichier de commandes EditTitle.htm dans le dossier Toolbars/MM. Ce fichier contient trois fonctions JavaScript qui agissent sur la zone de texte Titre. Ces fonctions sont canAcceptCommand(), receiveArguments() et getCurrentValue().

canAcceptCommand(): active l'lment de la barre d'outils


La fonction canAcceptCommand() se compose d'une ligne de code qui s'assure qu'un DOM (modle d'objet de document) est disponible et que le document est analys comme HTML. La fonction renvoie le rsultat de ces tests. Si les conditions renvoient la valeur true, Dreamweaver active l'lment de zone de texte sur la barre d'outils. Si la fonction renvoie la valeur false, Dreamweaver dsactive l'lment.

EXTENSION DE DREAMWEAVER CS4 180


Barres d'outils

La fonction se prsente comme suit :


function canAcceptCommand() { return (dw.getDocumentDOM() != null && dw.getDocumentDOM().getParseMode() == 'html'); }

receiveArguments(): dfinit le titre


Dreamweaver appelle la fonction receiveArguments(), prsente dans l'exemple suivant, lorsque l'utilisateur entre une valeur dans la zone de texte Title du document et appuie sur la touche Entre, ou slectionne une autre commande. La fonction se prsente comme suit :
function receiveArguments(newTitle) { var dom = dw.getDocumentDOM(); if (dom) dom.setTitle(newTitle); }

Dreamweaver transmet newTitle, savoir la valeur entre par l'utilisateur, la fonction receiveArguments(). La fonction receiveArguments() vrifie immdiatement s'il existe un DOM. Si c'est le cas, la fonction receiveArguments() dfinit le titre du nouveau document en transmettant newTitle la fonction dom.setTitle().

getCurrentValue(): obtient le titre


Lorsqu'un cycle de mise jour survient, selon la frquence par dfaut dtermine dans le gestionnaire d'vnements onEdit, Dreamweaver appelle la fonction getCurrentValue() pour dterminer la valeur afficher pour le contrle. La frquence de mise jour par dfaut du gestionnaire d'vnements onEdit dtermine la frquence de mise jour car le contrle de zone de texte Title ne dispose pas d'attribut update. Pour la zone de texte Title du document, la fonction getCurrentValue() suivante appelle la fonction
dom.getTitle() de l'interface de programmation d'application (API) JavaScript pour obtenir et renvoyer le titre en

cours. La fonction se prsente comme suit :


function getCurrentValue() { var title = ""; var dom = dw.getDocumentDOM(); if (dom) title = dom.getTitle(); return title; }

La fonction getTitle() renvoie la valeur Document sans nom, affiche dans la zone de texte, en attendant que l'utilisateur attribue un titre au document. Aprs la saisie d'un titre par l'utilisateur, la fonction getTitle() renvoie cette valeur et Dreamweaver l'affiche comme nouveau titre du document. Pour voir le fichier HTML complet qui contient les fonctions JavaScript pour la zone de texte Title, voir le fichier EditTitle.htm dans le dossier Toolbars/MM. Le dossier MM est rserv aux fichiers Adobe. Crez un nouveau dossier dans le dossier Toolbars afin d'y stocker votre code JavaScript.

EXTENSION DE DREAMWEAVER CS4 181


Barres d'outils

Fichier de dfinition de la barre d'outils


Une barre d'outils est une simple liste de boutons radio, boutons-poussoirs, zones de texte et autres lments de barre d'outils, ventuellement divise par des balises separator. Chaque lment de barre d'outils peut tre une rfrence un lment l'aide de la balise itemref, une sparation, l'aide de la balise separator ou une dfinition complte d'lment de barre d'outils pour une case cocher ou une zone de texte, comme dcrit, par exemple, dans Balises d'lments de barre d'outils la page 185. Tous les fichiers de dfinition de barre d'outils commencent par les dclarations suivantes :
<?xml version="1.0" encoding="optional_encoding"?> <!DOCTYPE toolbarset SYSTEM "-//Macromedia//DWExtension toolbar 5.0">

Si l'encodage est ignor, Dreamweaver utilise l'encodage par dfaut du systme d'exploitation. Aprs les dclarations, le fichier se compose d'une seule balise toolbarset, qui peut contenir les balises suivantes : toolbar, itemref, separator, include et itemtype, o itemtype vaut button, checkbutton, radiobutton, menubutton, dropdown, combobox, editcontrol ou colorpicker. L'exemple suivant, un extrait abrg du fichier toolbars.xml, reprsente la hirarchie des balises dans le fichier de barre d'outils. Dans cet exemple, les attributs d'lments de barre d'outils qui sont dcrits dans les sections suivantes, sont remplacs par des points de suspension pour la description des attributs de l'lment de barre d'outils.
<?xml version="1.0"?> <!DOCTYPE toolbarset SYSTEM "-//Adobe//DWExtension toolbar 10.0"> <toolbarset> <!-- main toolbar --> <toolbar id="DW_Toolbar_Main" label="Document"> <radiobutton id="DW_CodeView" . . ./> <radiobutton id="DW_SplitView" . . ./> <radiobutton id="DW_DesignView" . . ./> <separator/> <checkbutton id="DW_LiveDebug" . . ./> <checkbutton id="DW_LiveDataView" . . ./> <separator/> <editcontrol id="DW_SetTitle" . . ./> <menubutton id="DW_FileTransfer" . . ./> <menubutton id="DW_Preview" . . ./> <separator/> <button id="DW_DocRefresh" . . ./> <button id="DW_Reference" . . ./> <menubutton id="DW_CodeNav" . . ./> <menubutton id="DW_ViewOptions" . . ./> </toolbar> </toolbarset>

Les descriptions de chaque balise de barre d'outils sont fournies ci-dessous.

<toolbar>
Description Dfinit une barre d'outils. Dreamweaver affiche les lments et les sparateurs de gauche droite dans l'ordre spcifi et les met en forme automatiquement. Le fichier de barre d'outils ne spcifie pas l'espacement entre les lments, mais vous pouvez dfinir la largeur de certains types d'lments.

EXTENSION DE DREAMWEAVER CS4 182


Barres d'outils

Attributs
id, label, {container}, {initiallyVisible}, {initialPosition}, {relativeTo}

id="unique_id" Obligatoire. Une chane d'identificateur doit tre unique dans un fichier ainsi que dans tous les fichiers inclus dans ce fichier. Les fonctions API JavaScript qui manipulent une barre d'outils se rfrent cette dernire par son ID. Pour plus d'informations sur ces fonctions, voir le Guide des API de Dreamweaver. Si deux barres d'outils dans un mme fichier possdent le mme ID, Dreamweaver affiche un message d'erreur. label="string" Obligatoire. L'attribut label spcifie l'tiquette, une chane de caractres que Dreamweaver affiche pour l'utilisateur. L'tiquette s'affiche dans le menu Affichage > Barre d'outils et dans la barre de titre de la barre d'outils lorsque celle-ci est flottante. container="mainframe" ou "document" La valeur par dfaut est "mainframe". Indique la position d'ancrage de la barre d'outils dans l'espace de travail de Dreamweaver sous Windows. Si le contenant indique "mainframe", la barre d'outils apparat l'extrieur de l'espace de travail et fonctionne sur le document au premier plan. Si le contenant indique "document", la barre d'outils apparat dans chaque fentre de document. Sur Macintosh, toutes les barres d'outils s'affichent dans chaque fentre de document. initiallyVisible="true" ou "false". Cette balise indique si la barre d'outils doit tre visible la premire fois

que Dreamweaver la charge depuis le dossier Toolbars. Aprs la premire fois, c'est l'utilisateur qui dtermine sa visibilit. Dreamweaver enregistre l'tat actuel dans le registre systme (Windows) ou le fichier de prfrences de Dreamweaver (Macintosh) l'utilisateur quitte Dreamweaver. Dreamweaver rtablit le rglage depuis le registre ou le fichier de prfrences lorsqu'il redmarre. Vous pouvez manipuler la visibilit de la barre d'outils en utilisant les fonctions dom.getToolbarVisibility() et dom.setToolbarVisibility(), comme dcrit dans le Guide des API de Dreamweaver. Si vous ne dfinissez pas une valeur pour l'attribut initiallyVisible, celui-ci adopte la valeur true.

initialPosition="top", "below" ou "floating". Indique la position initiale de la barre d'outils dfinie par Dreamweaver, par rapport aux autres barres d'outils lors du premier chargement. Les valeurs possibles de l'argument initialPosition sont dcrites dans la liste suivante : top Il s'agit de la position par dfaut, de faon ce que la barre d'outils s'affiche en haut de la fentre du document.

Si plusieurs barres d'outils spcifient top pour un type de fentre donn, elles apparaissent dans l'ordre de chargement dans Dreamweaver. Cet ordre risque d'tre alatoire si les barres d'outils sont localises dans des fichiers spars.

below La barre d'outils s'affiche au dbut de la ligne, juste sous la barre d'outils spcifie par l'attribut relativeTo. Dreamweaver signale une erreur si la barre d'outils relativeTo est introuvable. Si plusieurs barres d'outils spcifient below par rapport la mme barre d'outils, elles apparaissent dans l'ordre de chargement dans Dreamweaver. Cet ordre risque d'tre alatoire si les barres d'outils sont localises dans des fichiers spars. floating La barre d'outils n'est pas ancre la fentre ; elle flotte au-dessus du document. Dreamweaver place

automatiquement la barre d'outils de sorte qu'elle soit dcale par rapport aux autres barres d'outils flottantes. Sur Macintosh, floating est trait de la mme faon que top. Comme avec l'attribut initiallyVisible, l'attribut initialPosition s'applique uniquement lors du premier chargement de la barre d'outils par Dreamweaver. Ensuite, la position de la barre d'outils est enregistre dans le registre ou dans le fichier de prfrences de Dreamweaver. Vous pouvez rtablir la position de la barre d'outils en utilisant la fonction dom.setToolbarPosition(). Pour plus d'informations sur la fonction dom.setToolbarPosition(), voir le Guide des API de Dreamweaver. Si vous ne spcifiez pas une valeur pour l'attribut initialPosition, Dreamweaver positionne la barre d'outils selon l'ordre de chargement.

EXTENSION DE DREAMWEAVER CS4 183


Barres d'outils

relativeTo="id_barre_outils" Cet attribut est requis si l'attribut initialPosition indique below. Dans les autres cas, cet argument est ignor. Indique l'ID de la barre d'outils en dessous de laquelle cette barre d'outils doit tre place.

Contenu La balise toolbar comprend les balises include, itemref et separator ainsi que des dfinitions d'lments individuels tels que button, combobox, dropdown, etc. Pour obtenir une description des dfinitions d'lments que vous pouvez spcifier, voir Balises d'lments de barre d'outils la page 185. Contenant La balise toolbarset. Exemple
<toolbar id="MyDWedit_toolbar" label="Edit">

<include/>
Description Charge les lments de barre d'outils depuis le fichier spcifi avant de continuer charger le fichier en cours. Les lments de barre d'outils dfinis dans le fichier inclus peuvent tre rfrencs dans le fichier en cours. Si un fichier tente plusieurs fois d'inclure un autre fichier, Dreamweaver affiche un message d'erreur et ignore la fonction include. Les balises toolbar dans le fichier inclus sont ignores, mais les lments dans ces barres d'outils restent disponibles comme rfrences dans le fichier en cours. Attributs Le chemin de fichier, relatif au dossier Toolbars, du fichier XML de la barre d'outils inclure. Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple
<include file="mine/editbar.xml"/>

<itemtype/>
Description Dfinit un lment de barre d'outils. Les lments de barre d'outils peuvent tre des boutons, des boutons radio, des boutons-poussoirs, des zones de liste modifiables, des menus droulants, etc. Pour obtenir la liste des types d'lments de barre d'outils que vous pouvez dfinir, voir Balises d'lments de barre d'outils la page 185. Attributs Les attributs varient en fonction de l'lment que vous dfinissez. Pour obtenir la liste des attributs que vous pouvez spcifier pour les lments de barre d'outils, voir Attributs des balises d'lments la page 190.

EXTENSION DE DREAMWEAVER CS4 184


Barres d'outils

Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple


<button id="strikeout_button" .../>

<itemref/>
Description Fait rfrence (et inclut dans la barre d'outils en cours) un lment de barre d'outils dfini dans une barre d'outils prcdente ou en dehors de toutes les barres d'outils. Attributs
id, {showIf}

id="id_reference" Obligatoire. Il doit s'agir de l'ID d'un lment dfini au pralable ou inclus dans le fichier. Dreamweaver n'autorise pas les rfrences en aval. Si une balise d'lment de barre d'outils fait rfrence un ID non dfini, Dreamweaver affiche un message d'erreur et ignore la rfrence. showIf="script" Indique que cet lment apparat uniquement sur la barre d'outils si le script spcifi renvoie la

valeur true. Par exemple, vous pouvez utiliser showIf pour afficher certains boutons dans une application donne uniquement, ou lorsqu'une page est crite en langage ct serveur, tel que Adobe ColdFusion, ASP ou JSP. Si vous ne spcifiez pas l'attribut showIf, l'lment apparat systmatiquement. Dreamweaver vrifie cette proprit chaque fois que l'activateur de l'lment s'excute, c'est--dire en fonction de la valeur de l'attribut update. Vous devez utiliser cet attribut avec prudence. L'attribut peut tre utilis dans la dfinition de l'lment ou dans une rfrence l'lment depuis une barre d'outils. Si la dfinition et la rfrence spcifient toutes deux l'attribut showIf, Dreamweaver affiche l'lment uniquement si les deux conditions sont vrifies. L'attribut showIf est l'quivalent de la fonction showIf() dans un fichier de commandes. Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple
<itemref id="strikeout_button">

<separator/>
Description Insre un sparateur l'emplacement en cours dans la barre d'outils.

EXTENSION DE DREAMWEAVER CS4 185


Barres d'outils

Attributs {showIf}

L'attribut showif indique que le sparateur ne doit apparatre sur la barre d'outils que si le script donn renvoie la
valeur true. Par exemple, vous pouvez utiliser l'attribut showIf pour afficher le sparateur uniquement dans une application donne ou uniquement lorsque la page contient un certain type de document. Si l'attribut showIf n'est pas spcifi, le sparateur s'affiche systmatiquement. Contenu Aucun. Contenant La balise toolbar. Exemple
<separator/>

Balises d'lments de barre d'outils


Chaque type d'lments de barre d'outils possde sa propre balise et son propre ensemble d'attributs obligatoires et facultatifs. Vous pouvez dfinir des lments toolbar l'intrieur ou l'extrieur des barres d'outils. En gnral, il est prfrable de les dfinir l'extrieur et de les rfrencer partir des barres d'outils l'aide de la balise itemref. Vous pouvez dfinir les types d'lments suivants dans une barre d'outils.

<button>
Description Ce bouton-poussoir excute une commande spcifique lorsque vous cliquez dessus. Il ressemble au bouton Rfrence de la barre d'outils de Dreamweaver et se comporte comme tel. Attributs
id, image, tooltip, command, {showIf}, {disabledImage}, {overImage}, {label}, {file}, {domRequired}, {enabled}, {update}, {arguments}

Vous trouverez une description de chaque attribut dans la section Attributs des balises d'lments la page 190. Contenu Aucun. Contenant La balise toolbar ou toolbarset.

EXTENSION DE DREAMWEAVER CS4 186


Barres d'outils

Exemple
<BUTTON ID="DW_DocRefresh" image="Toolbars/images/MM/refresh.gif" disabledImage="Toolbars/images/MM/refresh_dis.gif" tooltip="Refresh Design View (F5)" enabled="((dw.getDocumentDOM() != null) && (dw.getDocumentDOM().getView() != 'browse') && (!dw.getDocumentDOM().isDesignViewUpdated()))" command="dw.getDocumentDOM().synchronizeDocument()" update="onViewChange,onCodeViewSyncChange"/>

<checkbutton>
Description Un bouton-poussoir est un bouton qui peut tre activ ou dsactiv et qui excute une commande spcifique lorsqu'il est activ. Lorsqu'il est activ, il apparat enfonc et en surbrillance. Lorsqu'il est dsactiv, il apparat plat. Dreamweaver implmente les tats suivants pour le bouton-poussoir : Survol, Enfonc, Survol et enfonc et Dsactiv et enfonc. Le gestionnaire spcifi par l'attribut checked ou par la fonction isCommandChecked() doit garantir que le fait de cliquer sur ce bouton modifie son tat. Attributs
id, {showIf}, image, {disabledImage}, {overImage}, tooltip, {label}, {file}, {domRequired}, {enabled}, checked, {update}, command, {arguments}

Vous trouverez une description de chaque attribut dans la section Attributs des balises d'lments la page 190. Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple
<CHECKBUTTON ID="DW_LiveDebug" image="Toolbars/images/MM/debugview.gif" disabledImage="Toolbars/images/MM/globe_dis.gif" tooltip="Live Debug" enabled="dw.canLiveDebug()" checked="dw.getDocumentDOM() != null && dw.getDocumentDOM().getView() == 'browse'" command="dw.toggleLiveDebug()" showIf="dw.canLiveDebug()" update="onViewChange"/>

<radiobutton>
Description Le bouton radio se comporte comme le bouton-poussoir, mais apparat en relief lorsqu'il est dsactiv. Dreamweaver implmente les tats suivants pour le bouton radio : Survol, Enfonc, Survol et enfonc et Dsactiv et enfonc. Dreamweaver n'impose pas l'exclusion mutuelle entre les boutons radio. Le gestionnaire spcifi par l'attribut checked ou par la fonction isCommandChecked() doit garantir que les tats activ et dsactiv des boutons radio sont cohrents.

EXTENSION DE DREAMWEAVER CS4 187


Barres d'outils

Les boutons radio fonctionnent comme les boutons des modes Code, Cration et des boutons correspondants de la barre d'outils de document de Dreamweaver. Attributs
id, image, tooltip, checked, command, {showIf}, {disabledImage}, {overImage}, {label}, {file}, {domRequired}, {enabled}, {update}, {arguments}

Vous trouverez une description de chaque attribut dans la section Attributs des balises d'lments la page 190. Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple
<RADIOBUTTON ID="DW_CodeView" image="Toolbars/images/MM/codeView.gif" disabledImage="Toolbars/images/MM/codeView_dis.gif" tooltip="Show Code View" domRequired="false" enabled="dw.getDocumentDOM() != null" checked="dw.getDocumentDOM() != null && dw.getDocumentDOM().getView() == 'code'" command="dw.getDocumentDOM().setView('code')" update="onViewChange"/>

<menubutton>
Description Un bouton de menu est un bouton qui appelle le menu contextuel spcifi par l'attribut menuid. Dreamweaver dfinit les tats Survol et Enfonc pour les boutons de menu. Dreamweaver ne dessine pas la flche de menu, c'est--dire la flche vers le bas qui indique que des lments de menu sont joints au bouton. Vous devez l'inclure dans votre icne. Les boutons Gestion de fichiers et Navigation dans le code sur la barre d'outils de document de Dreamweaver sont des exemples de boutons de menu. Attributs
id, image, tooltip, menuID, domRequired, enabled, {showIf}, {disabledImage}, {overImage}, {label}, {file}, {update}

Vous trouverez une description de chaque attribut dans la section Attributs des balises d'lments la page 190. Contenu Aucun. Contenant La balise toolbar ou toolbarset.

EXTENSION DE DREAMWEAVER CS4 188


Barres d'outils

Exemple
<MENUBUTTON ID="DW_CodeNav" image="Toolbars/images/MM/codenav.gif" disabledImage="Toolbars/images/MM/codenav_dis.gif" tooltip="Code Navigation" enabled="dw.getFocus() == 'textView' || dw.getFocus() == 'html'" menuID="DWCodeNavPopup" update="onViewChange"/>

<dropdown>
Description Un menu droulant (ou contextuel) est un menu non modifiable qui excute une commande spcifique attache une fonction JavaScript lorsque vous slectionnez une entre et que le menu se met jour. Ce menu ressemble l'option Format de l'inspecteur Proprits de texte et fonctionne de la mme manire, mais s'affiche en taille standard et non en taille rduite comme dans l'inspecteur Proprits. Attributs
id, tooltip, file, enabled, checked, value, command, {showIf}, {label}, {width}, {domRequired}, {update}, {arguments}

Vous trouverez une description de chaque attribut dans la section Attributs des balises d'lments la page 190. Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple
<dropdown id="Font_Example" width="115" tooltip="Font" domRequired="false" file="Toolbars/mine/fontExample.htm" update="onSelChange"/>

<combobox>
Description Une zone de liste est un menu droulant modifiable qui excute une commande lorsque vous slectionnez une entre ou que vous apportez une modification dans la zone de texte, puis changez la slection. Le menu ressemble l'option Police de l'inspecteur Proprits de texte et fonctionne de la mme manire, mais s'affiche en taille standard et non en taille rduite comme dans l'inspecteur Proprits. Attributs
id, file, tooltip, enabled, value, command, {showiI}, {label}, {width}, {domRequired}, {update}, {arguments}

Vous trouverez une description de chaque attribut dans la section Attributs des balises d'lments la page 190.

EXTENSION DE DREAMWEAVER CS4 189


Barres d'outils

Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple


<COMBOBOX ID="Address_URL" width="300" tooltip="Address" label="Address: " file="Toolbars/MM/AddressURL.htm" update="onBrowserPageBusyChange"/>

<editcontrol>
Description Une zone de contrle d'dition est une zone de texte modifiable qui excute une commande lorsque vous apportez une modification dans la zone de texte et changez la slection. Attributs
id, tooltip, file, value, command, {showIf}, {label}, {width}, {domRequired}, {enabled}, {update}, {arguments}

Vous trouverez une description de chaque attribut dans la section Attributs des balises d'lments la page 190. Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple
<EDITCONTROL ID="DW_SetTitle" label="Title: " tooltip="Document Title" width="150" file="Toolbars/MM/EditTitle.htm"/>

<colorpicker>
Description Un slecteur de couleur est un panneau de couleurs, sans zone de texte associe, qui excute une commande lorsque l'utilisateur slectionne une nouvelle couleur. Ce panneau ressemble au slecteur de couleur de l'inspecteur Proprits de Dreamweaver et se comporte de la mme manire. Vous pouvez choisir une autre icne pour remplacer l'icne par dfaut.

EXTENSION DE DREAMWEAVER CS4 190


Barres d'outils

Attributs
id, tooltip, value, command, {showIf}, {image}, {disabledImage}, {overImage}, {label}, {colorRect}, {file}, {domRequired}, {enabled}, {update}, {arguments}

Vous trouverez une description de chaque attribut dans la section Attributs des balises d'lments la page 190. Contenu Aucun. Contenant La balise toolbar ou toolbarset. Exemple
<colorpicker id="Color_Example" image="Toolbars/images/colorpickerIcon.gif" disabledImage="Toolbars/images/colorpickerIconD.gif" colorRect="0 12 16 16" tooltip="Text Color" domRequired="false" file="Toolbars/mine/colorExample.htm" update="onSelChange"/>

Attributs des balises d'lments


Vous pouvez affecter des attributs et des commandes aux lments de barres d'outils afin de dterminer leur apparence et leur comportement. Vous pouvez galement inclure d'autres fichiers de barres d'outils et faire rfrence des lments dfinis dans d'autres barres d'outils. Les attributs de balises d'lments de barre d'outils ont les significations suivantes :

id="unique_id"
Obligatoire. L'attribut id est l'identificateur de l'lment de barre d'outils. L'attribut id doit tre unique dans le fichier en cours, ainsi que dans tous les fichiers inclus dans le fichier en cours. La balise itemref utilise l'id de l'lment pour indiquer et inclure un lment dans une barre d'outils. Exemple
<button id="DW_DocRerefresh" . . . >

showIf="script"
Facultatif. Cet attribut prcise que l'lment s'affiche dans la barre d'outils uniquement si le script renvoie la valeur true. Par exemple, vous pouvez utiliser l'attribut showIf pour afficher certains boutons uniquement lorsqu'une page est crite dans un certain type de langage ct serveur, tel que Adobe ColdFusion, ASP ou JSP. Si vous ne spcifiez pas l'attribut showIf, l'lment apparat systmatiquement. L'attribut showIf est vrifi chaque fois que l'activateur de l'lment s'excute, c'est--dire en fonction de la valeur de l'attribut update. Utilisez l'attribut showIf avec modration.

EXTENSION DE DREAMWEAVER CS4 191


Barres d'outils

Vous pouvez spcifier l'attribut showIf dans la dfinition de l'lment et dans une rfrence l'lment sur une balise itemref. Si la dfinition et la rfrence spcifient l'attribut showIf, l'lment s'affiche uniquement si les deux conditions indiquent la valeur true. L'attribut showIf est l'quivalent de la fonction showIf() dans un fichier de commandes de barre d'outils. Si vous spcifiez l'attribut showIf et la fonction showif(), la fonction remplace l'attribut. Exemple
showIf="dw.canLiveDebug()"

image="image_path"
Cet attribut est obligatoire pour les boutons, les boutons-poussoirs, les boutons radio, les boutons de menu et de zone de liste modifiable. L'attribut image est facultatif pour les slecteurs de couleurs, et est ignor pour les autres types d'lments. L'attribut image spcifie le chemin, par rapport au dossier Configuration, du fichier de l'icne qui s'affiche sur le bouton. En gnral, le fichier de l'icne est au format GIF ou JPEG, mais tous les formats compatibles avec Dreamweaver sont accepts. Si vous spcifiez une icne pour un slecteur de couleur, celle-ci le remplace entirement. Si l'attribut colorRect est galement dfini, la couleur en cours s'affiche au-dessus de l'icne dans le rectangle spcifi. Exemple
image="Toolbars/images/MM/codenav.gif"

disabledImage="image_path"
Facultatif. Dreamweaver ignore l'attribut disabledImage des lments autres que les boutons, les boutons-poussoirs, les boutons radio, les boutons de menu, de slecteurs de couleurs et de zone de liste modifiable. Cet attribut spcifie le chemin, par rapport au dossier Configuration, du fichier de l'icne que Dreamweaver affiche si le bouton est dsactiv. Si vous ne spcifiez pas l'attribut disabledImage, Dreamweaver affiche l'image spcifie dans l'attribut image lorsque le bouton est dsactiv. Exemple
disabledImage="Toolbars/images/MM/codenav_dis.gif"

overImage="image_path"
Facultatif. Dreamweaver ignore l'attribut overImage des lments autres que les boutons, les boutons-poussoirs, les boutons radio, les boutons de menu, de slecteurs de couleurs et de zone de liste modifiable. Cet attribut spcifie le chemin, par rapport au dossier Configuration, du fichier de l'icne que Dreamweaver affiche lorsque l'utilisateur survole le bouton l'aide de la souris. Si vous ne spcifiez pas l'attribut overImage, le bouton ne change pas lorsque l'utilisateur le survole, mais Dreamweaver dessine un cercle autour du bouton. Exemple
overImage="Toolbars/images/MM/codenav_ovr.gif"

tooltip="tooltip string"
Obligatoire. Cet attribut spcifie le texte d'identification ou infobulle qui apparat lorsque le curseur de la souris survole l'lment de la barre d'outils.

EXTENSION DE DREAMWEAVER CS4 192


Barres d'outils

Exemple
tooltip="Code Navigation"

label="label string"
Facultatif. Cet attribut spcifie un libell qui s'affiche ct de l'lment. Dreamweaver n'ajoute pas automatiquement un signe deux points aux libells. Les libells des lments qui ne sont pas des boutons sont toujours placs gauche de l'lment. Dreamweaver place les libells des boutons, boutons-poussoirs, boutons radio, boutons de menu et boutons de liste l'intrieur du bouton, droit de l'icne. Exemple
label="Title: "

width="number"
Facultatif. Cet attribut ne s'applique qu'aux lments de zone de texte, menu contextuel et zone de liste en spcifiant la largeur de l'lment en pixels. Si vous ne spcifiez pas l'attribut width, Dreamweaver utilise une largeur par dfaut moyenne. Exemple
width="150"

menuID="menu_id"
Cet attribut est obligatoire pour les boutons de menu et les boutons de liste, sauf si vous prcisez la fonction getMenuID() dans un fichier de commande associ. Dreamweaver ignore l'attribut menuID pour les autres types d'lments. Cet attribut spcifie l'ID de la barre de menu contenant le menu contextuel qui doit apparatre lorsque l'utilisateur clique sur le bouton, le bouton de menu ou de liste. L'ID provient de l'attribut ID d'une balise menubar dans le fichier menus.xml. Exemple
menuID="DWCodeNavPopup"

colorRect="left top right bottom"


L'attribut est facultatif pour les slecteurs de couleur qui disposent d'un attribut image. L'attribut colorRect est ignor pour tous les autres types d'lments, ainsi que pour les slecteurs de couleurs qui ne spcifient pas une image. Si vous spcifiez l'attribut colorRect, Dreamweaver affiche la couleur couramment slectionne dans le slecteur de couleur, dans le rectangle, par rapport au ct gauche ou suprieur de l'icne. Si vous ne spcifiez pas l'attribut colorRect, Dreamweaver n'affiche pas la couleur couramment slectionne sur l'image. Exemple
colorRect="0 12 16 16"

EXTENSION DE DREAMWEAVER CS4 193


Barres d'outils

file="command_file_path"
Obligatoire pour les menus droulants et les zones de liste modifiables. L'attribut file est facultatif pour les autres types d'lments. L'attribut file spcifie le chemin, par rapport au dossier Configuration, du fichier de commandes contenant les fonctions JavaScript qui serviront renseigner, mettre jour et excuter l'lment. L'attribut file remplace les attributs enabled, checked, value, update, domRequired, menuID, showIf et command. En gnral, si vous spcifiez un fichier de commandes avec l'attribut file, Dreamweaver ignore tous les attributs quivalents spcifis dans la balise. Pour plus d'informations sur les fichiers de commande, voir Fonctions de l'API de commande de barre d'outils la page 195. Exemple
file="Toolbars/MM/EditTitle.htm"

domRequired="true" ou "false"
Facultatif. Comme avec les menus, l'attribut domRequired spcifie si le mode Cration doit tre synchronis avec le mode Code avant que Dreamweaver n'excute la commande associe. Si vous ne dfinissez pas cet attribut, il adopte la valeur true. Cet attribut est l'quivalent de la fonction isDOMRequired() dans un fichier de commandes de barre d'outils. Exemple
domRequired="false"

enabled="script"
Facultatif. Comme avec les menus, le script renvoie une valeur spcifiant si l'lment est activ. Si vous ne dfinissez pas cet attribut, il adopte la valeur enabled. L'attribut enabled est l'quivalent de la fonction canAcceptCommand() dans un fichier de commandes de barre d'outils. Exemple
enabled="dw.getFocus() =='textView' || dw.getFocus() == 'html'"

checked="script"
Cet attribut est obligatoire pour les boutons-poussoirs et les boutons radio. Dreamweaver ignore l'attribut checked pour les autres types d'lments. Comme avec les menus, le script renvoie une valeur spcifiant si l'lment est activ ou pas. L'attribut checked est l'quivalent de la fonction isCommandChecked() dans un fichier de commandes de barre d'outils. Si vous ne dfinissez pas cet attribut, il adopte la valeur unchecked. Exemple
checked="dw.getDocumentDOM() != null && dw.getDocumentDOM().getView() == 'code'"

value="script"
Cet attribut est obligatoire pour les menus contextuels, les zones de liste modifiable, les zones de texte et les slecteurs de couleurs. Dreamweaver ignore l'attribut value pour les autres types d'lments.

EXTENSION DE DREAMWEAVER CS4 194


Barres d'outils

Pour dterminer la valeur afficher pour les menus droulants et les zones de liste modifiables, Dreamweaver appelle d'abord la fonction isCommandchecked() pour chaque lment dans le menu. Si la fonction isCommandchecked() renvoie la valeur true pour un lment, Dreamweaver affiche la valeur du premier. Si aucun lment ne renvoie la valeur true ou si la fonction isCommandChecked() n'est pas dfinie, Dreamweaver appelle la fonction getCurrentValue() ou excute le script spcifi par l'attribut value. Si le contrle est une zone de liste modifiable, Dreamweaver affiche la valeur renvoye. Si le contrle est un menu droulant, Dreamweaver ajoute temporairement la valeur renvoye dans la liste et l'affiche. Dans tous les autres cas, le script renvoie la valeur en cours afficher. Pour les menus droulants ou les zones de liste modifiables, cette valeur doit correspondre l'un des lments dans la liste du menu. Pour les zones de liste modifiables et les zones de texte, la valeur peut correspondre une chane quelconque renvoye par le script. Pour les slecteurs de couleurs, la valeur doit tre une couleur valide, mais Dreamweaver ne met pas ceci en vigueur. L'attribut value est l'quivalent de la fonction getCurrentValue() dans un fichier de commandes de barre d'outils.

update="update_frequency_list"
Facultatif. Cet attribut spcifie la frquence d'excution des gestionnaires des attributs enabled, checked, showif et value pour mettre jour l'tat visible de l'lment. L'attribut update est l'quivalent de la fonction receiveArguments() dans un fichier de commandes de barre d'outils. Vous devez spcifier la frquence de la mise jour des lments de barre d'outils car ces lments, contrairement aux lments de menu, sont toujours visibles. C'est pourquoi vous devez toujours slectionner la frquence la moins leve possible et vous assurer que les gestionnaires des attributs enabled, checked et value sont aussi simples que possible. La liste suivante prsente les gestionnaires possibles pour la fonction update_frequency_list, dans l'ordre croissant de frquence. Si vous ne dfinissez pas une valeur pour l'attribut update, la frquence de mise jour prend la valeur onEdit. Vous pouvez spcifier plusieurs frquences de mise jour, spares par des virgules. Les gestionnaires s'excutent sur l'un des vnements spcifis suivants :

onServerModelChange s'excute lorsque le modle de serveur de la page en cours change. onCodeViewSyncChange s'excute lorsque le mode Code se synchronise ou se dsynchronise avec le mode

Cration.
onViewChange s'excute chaque fois que l'utilisateur bascule entre les modes Code et Cration, ou entre les modes Code et Cration. onEdit s'excute chaque fois que le document est modifi en mode Cration. Les modifications apportes en mode Code ne dclenchent pas cet vnement. onSelChange s'excute chaque fois que la slection est modifie en mode Cration. Les modifications apportes en mode Code ne dclenchent pas cet vnement. onEveryIdle s'excute rgulirement lorsque l'application est inactive. Ceci peut demander un certain temps car les gestionnaires enabler/checked/showif/value sont excuts frquemment. Utilisez-la uniquement pour les boutons dont l'tat actif doit tre modifi rapidement des moments spcifiques.

Remarque : En ralit, dans tous ces cas, Dreamweaver excute les gestionnaires aprs l'vnement spcifi, lorsque l'application est au repos. L'excution des gestionnaires aprs chaque modification ou changement de slection n'est pas garantie ; les gestionnaires s'excutent ds que possible aprs une srie de modifications ou de changements de slection. Par contre, les gestionnaires s'excutent lorsque l'utilisateur clique sur un lment de barre d'outils. Exemple
update="onViewChange"

EXTENSION DE DREAMWEAVER CS4 195


Barres d'outils

command="script"
Cet attribut est obligatoire pour tous les lments, l'exception des boutons de menu. Dreamweaver ignore l'attribut command pour les boutons de menu. Spcifie la fonction JavaScript excuter lorsque l'utilisateur effectue l'une des oprations suivantes :

L'utilisateur clique sur un bouton. L'utilisateur slectionne un lment dans un menu droulant ou dans une zone de liste. L'utilisateur appuie sur la touche Tab pour passer une autre zone, appuie sur la touche Retour ou clique hors d'une
zone de texte ou de liste.

L'utilisateur slectionne une couleur dans un slecteur de couleur.


L'attribut command est l'quivalent de la fonction receiveArguments() dans un fichier de commandes de barre d'outils. Exemple
command="dw.toggleLiveDebug()"

arguments="argument_list"
Facultatif. Cet attribut spcifie la liste d'arguments, spars par des virgules, pour transmettre la fonction receiveArguments() un fichier de commandes de barre d'outils. Si vous ne dfinissez pas l'attribut arguments, Dreamweaver transmet l'ID de l'lment de la barre d'outils. En outre, les menus contextuels, les zones de liste modifiables, les zones de texte et les slecteurs de couleurs transmettent leur valeur en cours comme premier argument, avant ceux spcifis par l'attribut arguments et avant l'ID de l'lment si aucun argument n'est spcifi. Exemple Dans une barre d'outils qui comporte les boutons Annuler et Rpter, chaque bouton appelle le fichier de commandes de menu, Edit_Clipboard.htm, et transmet un argument spcifiant l'action, comme indiqu dans l'exemple suivant :
<button id="DW_Undo" image="Toolbars/images/MM/undo.gif" disabledImage="Toolbars/images/MM/undo_dis.gif" tooltip="Undo" file="Menus/MM/Edit_Clipboard.htm" arguments="'undo'" update="onEveryIdle"/> <button id="DW_Redo" image="Toolbars/images/MM/redo.gif" disabledImage="Toolbars/images/MM/redo_dis.gif" tooltip="Redo" file="Menus/MM/Edit_Clipboard.htm" arguments="'redo'" update="onEveryIdle"/>

Fonctions de l'API de commande de barre d'outils


Dans de nombreux cas o vous avez spcifi un script pour un attribut, vous pouvez galement implmenter cet attribut l'aide d'une fonction JavaScript dans un fichier de commandes. Cette action est ncessaire lorsque les fonctions doivent accepter des arguments, comme dans le gestionnaire d'une zone de texte, et obligatoire pour les menus droulants et les zones de liste modifiables.

EXTENSION DE DREAMWEAVER CS4 196


Barres d'outils

L'API du fichier de commandes pour les lments de la barre d'outils est une extension de l'API du fichier de commandes de menu ; vous pouvez ainsi rutiliser les fichiers de commandes de menu en tant que fichiers de commandes de barre d'outils en leur ajoutant des fonctions supplmentaires spcifiques aux barres d'outils.

canAcceptCommand()
Disponibilit Dreamweaver MX. Description Dtermine si la barre d'outils est active. La condition par dfaut d'un lment tant l'tat activ, vous n'avez pas besoin de dfinir cette fonction, sauf si la valeur false est renvoye dans au moins un cas. Arguments Dans le cas des menus droulants, zones de liste modifiables, zones de texte et slecteurs de couleurs, le premier argument est la valeur en cours dans le contrle. La fonction getDynamicContent() peut, ventuellement, associer des ID individuels aux lments d'un menu droulant. Si l'lment slectionn dans le menu droulant dispose d'un ID, Dreamweaver transmet cet ID la fonction canAcceptCommand() au lieu de transmettre la valeur. En ce qui concerne les zones de liste modifiables, si le contenu actuel de la zone de texte ne correspond pas une entre dans le menu droulant, Dreamweaver transmet le contenu de la zone de texte. Dreamweaver effectue la comparaison avec le menu droulant, sans respecter la casse, afin de dterminer si le contenu de la zone de texte correspond une entre de la liste. Si vous spcifiez l'attribut arguments pour cet lment de la barre d'outils dans le fichier toolbars.xml, les arguments sont transmis ensuite. Si vous n'avez pas dfini l'attribut arguments, Dreamweaver transmet l'ID de l'lment. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si l'lment est activ, false dans les autres cas. Exemple
function canAcceptCommand() { return (dw.getDocumentDOM() != null); }

getCurrentValue()
Disponibilit Dreamweaver MX. Description Renvoie la valeur actuelle afficher dans l'lment. Dreamweaver appelle la fonction getCurrentValue() pour les menus droulants, les zones de liste modifiables, les zones de texte et les slecteurs de couleurs. Pour les menus droulants, la valeur en cours doit reprsenter l'un des lments dans le menu. Si ce n'est pas le cas, Dreamweaver slectionne le premier lment de la liste. Pour les zones de liste modifiables et les zones de texte, cette valeur peut correspondre une chane quelconque renvoye par la fonction. Pour les slecteurs de couleurs, la valeur doit tre une couleur valide, mais Dreamweaver ne met pas ceci en vigueur. Cette fonction est l'quivalent de l'attribut value.

EXTENSION DE DREAMWEAVER CS4 197


Barres d'outils

Arguments Aucun. Valeurs renvoyes Dreamweaver attend l'affichage d'une chane contenant la valeur en cours. Pour le slecteur de couleur, la chane contient la forme RVB de la couleur slectionne (par exemple #FFFFFF pour le blanc). Exemple
function getCurrentValue() { var title = ""; var dom = dw.getDocumentDOM(); if (dom) title = dom.getTitle(); return title; }

getDynamicContent()
Disponibilit Dreamweaver MX. Description Cette fonction est obligatoire pour les menus droulants et les zones de liste modifiables. Comme pour les menus, cette fonction renvoie un tableau de chanes pour renseigner le menu droulant. Chacune de ces chanes peut ventuellement se terminer par ";id=id". Si un ID est spcifi, Dreamweaver le transmet la fonction receiveArguments() au lieu de faire apparatre la chane dans le menu. Le nom getDynamicContent() prte confusion car cette fonction doit tre utilise mme si la liste des entres dans le menu est fixe. Par exemple, le fichier Text_Size.htm du dossier Configuration/Menus/MM n'est pas un menu dynamique ; il est conu pour tre appel depuis des lments statiques d'un ensemble de menus. Toutefois, l'ajout d'une fonction getDynamicContent() renvoyant une liste de tailles de police possibles permet d'utiliser le mme fichier de commandes dans un menu droulant de barre d'outils. Les lments de barre d'outils ignorent les caractres de soulignement dans les chanes des tableaux renvoys, pour vous permettre de rutiliser les fichiers de commandes de menu. Dans le fichier de commandes de menu, Dreamweaver ignore la fonction getDynamicContent(), car l'lment de menu n'est pas marqu comme dynamique. Arguments Aucun. Valeurs renvoyes Dreamweaver attend un tableau de chanes pour renseigner le menu.

EXTENSION DE DREAMWEAVER CS4 198


Barres d'outils

Exemple
function getDynamicContent() { var items = new Array; var filename = dw.getConfigurationPath() + "/Toolbars/MM/AddressList.xml"; var location = MMNotes.localURLToFilePath(filename); if (DWfile.exists(location)) { var addressData = DWfile.read(location); var addressDOM = dw.getDocumentDOM(dw.getConfigurationPath() + '/Shared/MM/Cache/empty.htm'); addressDOM.documentElement.outerHTML = addressData; var addressNodes = addressDOM.getElementsByTagName("url"); if (addressNodes.length) { for (var i=0; i < addressNodes.length ; i++ ) { items[i] = addressNodes[i].address + ";id='" + addressNodes[i].address + "'"; } } } return items;

getMenuID()
Disponibilit Dreamweaver MX. Description Uniquement valide pour les boutons de menu. Dreamweaver appelle la fonction getMenuID() pour obtenir l'ID du menu devant apparatre lorsque l'utilisateur clique sur le bouton. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une chane contenant un ID de menu, dfini dans le fichier menus.xml.

EXTENSION DE DREAMWEAVER CS4 199


Barres d'outils

Exemple
function getMenuID() { var dom = dw.getDocumentDOM(); var menuID = ''; if (dom) { var view = dom.getView(); var focus = dw.getFocus(); if (view == 'design') { menuID = 'DWDesignOnlyOptionsPopup'; } else if (view == 'split') { if (focus == 'textView') { menuID = 'DWSplitCodeOptionsPopup'; } else { menuID = 'DWSplitDesignOptionsPopup'; } } else if (view == 'code') { menuID = 'DWCodeOnlyOptionsPopup'; } else { menuID = 'DWBrowseOptionsPopup'; } } return menuID; }

getUpdateFrequency()
Disponibilit Dreamweaver MX. Description Spcifie la frquence d'excution des gestionnaires des attributs enabled, checked, showif et value pour mettre jour l'tat visible de l'lment. Vous devez spcifier la frquence de la mise jour des lments de barre d'outils, car ces lments, contrairement aux lments de menu, sont toujours visibles. C'est pourquoi vous devez toujours choisir la frquence la moins leve possible et vous assurer que les gestionnaires des attributs enabled, checked et value sont aussi simples que possible. Cette fonction est l'quivalent de l'attribut update dans un lment de barre d'outils. Arguments Aucun.

EXTENSION DE DREAMWEAVER CS4 200


Barres d'outils

Valeurs renvoyes Dreamweaver attend une chane contenant la liste des gestionnaires de mise jour, spars par des virgules. Vous trouverez la liste complte des gestionnaires de mise jour possibles dans la section update="update_frequency_list" la page 194. Exemple
function getUpdateFrequency() { return onSelChange"; }

isCommandChecked()
Disponibilit Dreamweaver MX. Description Renvoie une valeur indiquant si l'lment est slectionn. Dans le cas des boutons, l'attribut checked indique si le bouton apparat activ ou enfonc. La fonction isCommandChecked() est l'quivalent de l'attribut checked dans une balise d'lment de barre d'outils. Arguments Dans le cas des menus droulants, zones de liste modifiables, zones de texte et slecteurs de couleurs, le premier argument est la valeur en cours dans le contrle. La fonction getDynamicContent() peut, ventuellement, associer des ID individuels aux lments d'un menu droulant. Si l'lment slectionn dans le menu dispose d'un ID, Dreamweaver transmet cet ID la fonction isCommandChecked() au lieu de transmettre la valeur. En ce qui concerne les zones de liste modifiables, si le contenu actuel de la zone de texte ne correspond pas une entre dans le menu droulant, Dreamweaver transmet le contenu de la zone de texte. Dreamweaver compare le contenu de la zone de liste avec celui du menu droulant, sans tenir compte des majuscules et des minuscules, pour vrifier la correspondance des lments. Si vous avez spcifi l'attribut arguments pour cet lment, les arguments sont transmis ensuite. Si vous ne dfinissez pas l'attribut arguments, Dreamweaver transmet l'ID de l'lment de la barre d'outils. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si l'lment est activ, false dans les autres cas. Exemple L'exemple suivant dtermine quel lment, le cas chant, doit tre activ dans un menu droulant contenant des formats de paragraphe et des styles CSS :

EXTENSION DE DREAMWEAVER CS4 201


Barres d'outils

function isCommandChecked() { var bChecked = false; var style = arguments[0]; var textFormat = dw.getDocumentDOM().getTextFormat(); if (dw.getDocumentDOM() == null) bChecked = false; if (style == "(None)") bChecked = (dw.cssStylePalette.getSelectedStyle() == '' || textFormat == "" || textFormat == "P" || textFormat == "PRE"); else if (style == "Heading 1") bChecked =0(textFormat == "h1"); else if (style == "Heading 2") bChecked =0(textFormat == "h2"); else if (style == "Heading 3") bChecked =0(textFormat == "h3"); else if (style == "Heading 4") bChecked =0(textFormat == "h4"); else if (style == "Heading 5") bChecked =0(textFormat == "h5"); else if (style == "Heading 6") bChecked =0(textFormat == "h6"); else bChecked = (dw.cssStylePalette.getSelectedStyle() == style); return bChecked; }

isDOMRequired()
Disponibilit Dreamweaver MX. Description Spcifie si la commande de barre d'outils ncessite un DOM valide pour fonctionner. Si cette fonction renvoie la valeur true ou si la fonction n'est pas dfinie, Dreamweaver suppose que la commande ncessite un DOM valide et synchronise les modes Code et Cration du document avant de l'excuter. Cette fonction est l'quivalent de l'attribut domRequired dans une balise d'lment de barre d'outils. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si DOM est requis, false dans les autres cas. Exemple
function isDOMRequired() { return false; }

EXTENSION DE DREAMWEAVER CS4 202


Barres d'outils

receiveArguments()
Disponibilit Dreamweaver MX. Description Traite tous les arguments transmis depuis un lment de barre d'outils. La fonction receiveArguments() est l'quivalent de l'attribut command dans une balise d'lment de barre d'outils. Arguments Dans le cas des menus droulants, zones de liste modifiables, zones de texte et slecteurs de couleurs, le premier argument est la valeur en cours dans le contrle. La fonction getDynamicContent() peut, ventuellement, associer des ID individuels aux lments d'un menu droulant. Si l'lment slectionn dans le menu contextuel droulant dispose d'un ID, Dreamweaver transmet cet ID la fonction receiveArguments() au lieu de transmettre la valeur. En ce qui concerne les zones de liste modifiables, si le contenu actuel de la zone de texte ne correspond pas une entre dans le menu droulant, Dreamweaver transmet le contenu de la zone de texte. Dreamweaver compare le contenu de la zone de liste avec celui du menu droulant, sans tenir compte des majuscules et des minuscules, pour vrifier la correspondance des lments. Si vous avez spcifi l'attribut arguments pour cet lment, les arguments sont transmis ensuite. Si vous n'avez pas dfini l'attribut arguments, Dreamweaver transmet l'ID de l'lment. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple
function receiveArguments(newTitle) { var dom = dw.getDocumentDOM(); if (dom) dom.setTitle(newTitle); }

showIf()
Disponibilit Dreamweaver MX. Description Indique qu'un lment apparat sur la barre d'outils uniquement si la fonction renvoie la valeur true. Par exemple, vous pouvez utiliser la fonction showIf() pour afficher certains boutons uniquement lorsque la page utilise un modle de serveur donn. Si vous ne dfinissez pas la fonction showif(), l'lment s'affiche toujours. La fonction showIf() est l'quivalent de l'attribut showIf dans une balise d'lment de barre d'outils. La fonction showIf() est appele chaque fois que l'activateur de l'lment s'excute ; c'est--dire, en fonction de la valeur renvoye par la fonction getUpdateFrequency(). Arguments Aucun.

EXTENSION DE DREAMWEAVER CS4 203


Barres d'outils

Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si l'lment s'affiche, false dans les autres cas. Exemple
function showif() { var retval = false; var dom = dw.getDocumentDOM(); if(dom) { var view = dom.getView(); if(view == 'design') { retval = true; } } return retval; }

204

Chapitre 12 : Rapports
Adobe Dreamweaver prend en charge deux types de rapports : les rapports de site et les rapports autonomes.

Rapports de site
Les API de rapports peuvent ajouter des rapports personnaliss sur le site ou modifier le jeu de rapports prdfinis fournis avec Dreamweaver. Vous ne pouvez accder aux rapports de site que par l'intermdiaire de la bote de dialogue Rapports. Les rapports de site sont localiss dans le dossier Configuration/Reports de Dreamweaver. Ce dossier contient plusieurs sous-dossiers reprsentant les diffrentes catgories de rapport, chaque rapport ne pouvant appartenir qu' une seule catgorie. Les noms de catgorie sont limits 31 caractres. Chaque sous-dossier peut contenir un fichier nomm _foldername.txt. Si ce fichier est prsent, Dreamweaver utilise son contenu comme nom de catgorie. S'il n'existe pas, Dreamweaver utilise le nom du dossier. Lorsque l'utilisateur slectionne plusieurs rapports de site dans la bote de dialogue Rapports, Dreamweaver place tous les rsultats dans la mme fentre Rsultats, sous l'onglet Rapports du site du panneau Rsultats. Dreamweaver remplace ces rsultats ds que l'utilisateur excute un nouveau rapport de site. Le tableau ci-dessous recense les fichiers utiliss pour crer un rapport de site :
Chemin Configuration/Reports/{type/} Fichier reportname.js Description Contient les fonctions requises pour gnrer le contenu du rapport. Appelle les fichiers JavaScript appropris. Dfinit l'interface utilisateur (UI) de la bote de dialogue Paramtres associe au rapport, le cas chant. Fournit les fonctions communes utilises pour la gnration de rapports.

Configuration/Reports/{type/}

reportname.htm

Configuration/Reports/

Reports.js

Fonctionnement des rapports de site


1 Pour accder aux rapports, choisissez Site > Rapports. Dans la bote de dialogue qui s'affiche, slectionnez les

rapports excuter sur des cibles spcifiques.


2 Slectionnez les fichiers pour lesquels effectuer les rapports l'aide du menu Rapport sur. Ce menu contient les

commandes suivantes : Document actif, Site local en cours entier, Fichiers slectionns dans le site et Dossier. Lorsque vous slectionnez la commande Dossier, un bouton Parcourir et un champ de texte s'affichent pour vous permettre de choisir un dossier.
3 Vous pouvez personnaliser des rapports possdant des paramtres en cliquant sur le bouton Paramtres, puis en

saisissant des valeurs pour ces paramtres. Pour pouvoir dfinir vous-mme des paramtres, le rapport doit contenir une bote de dialogue Paramtres. La dfinition de ces paramtres est facultative ; il n'est pas ncessaire de dfinir les paramtres de chaque rapport. Si un rapport ne possde pas de bote de dialogue Paramtres, le bouton Paramtres est estomp lorsque vous slectionnez le rapport dans la liste.
4 Une fois le rapport slectionn et les paramtres dfinis, vous cliquez sur le bouton Excuter.

EXTENSION DE DREAMWEAVER CS4 205


Rapports

Remarque : Si un rapport contient le gestionnaire preventFileActivity, Dreamweaver vous interdit d'excuter toute tche associe aux fichiers pendant l'excution du rapport. Dreamweaver efface alors tous les lments de l'onglet Rapports du site du panneau Rsultats. Dreamweaver appelle la fonction beginReporting() dans chaque rapport avant le dbut du processus de gnration de rapport. Si un rapport renvoie la valeur false partir de cette fonction, celle-ci est retire du processus de rapport.
5 Chaque fichier est transmis chaque rapport slectionn dans la bote de dialogue l'aide de la fonction
processFile(). Si le rapport doit inclure des informations sur ce fichier dans la liste des rsultats, la fonction dw.resultsPalette.siteReports.addResultItem() doit tre appele. Le processus se poursuit jusqu' ce que

tous les fichiers slectionns par l'utilisateur soient traits ou jusqu' ce que l'utilisateur clique sur le bouton Arrter situ au bas de la fentre. Dreamweaver affiche le nom de chaque fichier en cours de traitement et le nombre de fichiers restant traiter.
6 Dreamweaver appelle la fonction endReporting() dans chaque rapport la fin du traitement des fichiers et du

processus de rapport.

Exemple simple de rapport de site


L'exemple d'extension simple recense toutes les images rfrences dans un fichier spcifique, un site entier, des fichiers slectionns ou un dossier et affiche le rapport dans l'onglet Rapports du site de la fentre de rsultats. Pour crer cette extension, vous devez crer la dfinition du rapport et rdiger le code JavaScript. Cet exemple cre deux fichiers dans le dossier HTML Reports : List images.htm, qui contient la dfinition du rapport, et List Images.js, qui contient le code JavaScript spcifique ce rapport. Vous rfrencez en outre le fichier Reports.js, intgr Dreamweaver.

Cration de la dfinition du rapport


La dfinition du rapport spcifie le nom du rapport tel qu'il s'affiche dans la bote de dialogue Rapports, appelle tout fichier JavaScript requis et dfinit l'interface utilisateur de la bote de dialogue Paramtres, le cas chant.
1 Crez le fichier Configuration/Reports/HTML Reports/List Images.htm. 2 Ajoutez le code ci-dessous pour indiquer le nom du rapport qui s'affichera dans la bote de dialogue Rapports, dans

le titre de la page HTML.


<html> <head> <title>List Images</title>

3 En fin de fichier, ajoutez la balise script et spcifiez le fichier Reports.js dans l'attribut src.
<script src="../Reports.js"></script>

4 En fin de fichier, ajoutez une autre balise script et spcifiez le fichier List Images.js, que vous allez crer l'tape

suivante, dans l'attribut src.


<html> <head> <title>List Images</title> <script src="../Reports.js"></script> <script src="List Images.js"></script>

5 Fermez la balise head, insrez des balises body d'ouverture et de fermeture, puis fermez la balise html.

EXTENSION DE DREAMWEAVER CS4 206


Rapports

</head> <body> </body> </html>

6 Enregistrez le fichier sous le nom List Images.js dans le dossier Configuration/Reports/HTML Reports.

Ecriture du code JavaScript


Dreamweaver propose le fichier Reports.js, partir duquel vous pouvez appeler toute fonction. Vous devez cependant crer galement le fichier JavaScript contenant toute fonction spcifique votre rapport de site personnalis.
1 Crez le fichier Configuration/Reports/HTML Reports/List Images.js et insrez le contenu ci-dessous :
// Function: configureSettings // Description: Standard report API, used to initialize and load //the default values. Does not initialize the UI. // function configureSettings() { return false; } // Function: processFile // Description: Report command API called during file processing. // function processFile (fileURL) { if (!isHTMLType(fileURL)) //If the file isn't an HTML file return; //skip it. var curDOM = dw.getDocumentDOM(fileURL); // Variable for DOM var tagList = curDOM.getElementsByTagName('img'); // Variable for img tags var imgfilename; // Variable for file name specified in img tag for (var i=0; i < tagList.length; i++) { // For img tag list imgfilename = tagList[i].getAttribute('src'); // Get image filename if (imgfilename != null) { // If a filename is specified // Print the appropriate icon, HTML filename, // image filename, and line number reportItem(REP_ITEM_CUSTOM, fileURL, imgfilename, curDOM.nodeToSourceViewOffsets(tagList[i])); } } }

2 Enregistrez le fichier sous le nom List Images.js dans le dossier Configuration/Reports/HTML Reports.

Rapports autonomes
Vous pouvez utiliser l'API de fentre Rsultats pour crer un rapport autonome. Les rapports autonomes sont des commandes normales qui utilisent directement l'API de la fentre des rsultats plutt que l'API de rapports. Les rapports autonomes sont accessibles de la mme manire que les autres commandes, partir des menus ou d'une autre commande. Les rapports autonomes rsident dans le dossier Configuration/Commands de Dreamweaver. Une commande personnalise associe un rapport autonome figure dans le menu Commandes. Dreamweaver cre une nouvelle fentre de rsultats chaque fois que l'utilisateur excute un nouveau rapport autonome.

EXTENSION DE DREAMWEAVER CS4 207


Rapports

Chemin Configuration/Commands

Fichier commandname.htm

Description Dfinit l'interface utilisateur de la bote de dialogue qui s'affiche lorsque vous slectionnez la commande et contient le code JavaScript ou une rfrence au fichier JavaScript qui excute les actions requises pour gnrer le rapport. Gnre une fentre de rsultats et y insre le rapport.

Configuration/Commands

commandname.js

Mode de fonctionnement des rapports autonomes


1 La commande personnalise, que vous crez pour gnrer le rapport, ouvre une nouvelle fentre de rsultats en

appelant la fonction dw.createResultsWindow() et en stockant l'objet de rsultats renvoys dans une variable de fentre. Les fonctions restantes du processus doivent tre appeles en tant que mthodes de cet objet.
2 La commande personnalise initialise le titre et le format de la fentre Rsultats en appelant les fonctions
setTitle() et SetColumnWidths() en tant que mthodes de l'objet de la fentre Rsultats.

3 La commande peut commencer immdiatement ajouter des lments dans la fentre Rsultats en appelant la

fonction addItem() ou itrer une liste de fichiers en appelant les fonctions setFileList() et startProcessing() en tant que mthodes de l'objet de la fentre Rsultats.
4 Lorsque la commande appelle resWin.startProcessing(), Dreamweaver appelle la fonction processFile()

pour chaque URL de fichier dans la liste. Dfinissez la fonction processFile() dans la commande autonome. Elle reoit l'URL de fichier comme seul argument. Utilisez la fonction setCallbackCommands() de l'objet de la fentre Rsultats si vous voulez que Dreamweaver appelle la fonction processFile() dans une autre commande.
5 Pour appeler la fonction addItem(), la fonction processFile() doit avoir accs la fentre de rsultats cre par

la commande autonome. La fonction processFile() peut galement appeler la fonction stopProcessing() de l'objet de la fentre Rsultats pour arrter le traitement des fichiers de la liste.

Exemple de rapport autonome simple


L'extension simple de rapport autonome recense les images rfrences dans un fichier spcifique et affiche le rapport dans la fentre de rsultats. Pour crer cette extension, vous devez crer l'interface utilisateur de la bote de dialogue et rdiger le code JavaScript. Cet exemple cre deux fichiers dans le dossier Configuration/Commands : List images.htm, qui dfinit l'interface utilisateur de la bote de dialogue qui s'affiche lorsque l'utilisateur choisir la commande personnalise, et Listimages.js, qui contient le code JavaScript spcifique ce rapport.

Cration de l'interface utilisateur de la bote de dialogue


La section body du fichier HTML spcifie le contenu de la bote de dialogue qui s'affiche lorsque l'utilisateur slectionne la commande personnalise et appelle tout fichier JavaScript requis.
1 Crez le fichier Configuration/Commands/Listimages.htm. 2 Insrez le code ci-dessous dans le fichier Listimages.htm :

EXTENSION DE DREAMWEAVER CS4 208


Rapports

<html> <head> <title>Standalone report example</title> <script src="Listimages.js"> </script> </head> <body> <div name="test"> <form name="myForm"> <table> <tr> <td>Click OK to display the standalone report.</td> </tr> </table> </form> </div> </body>

3 Enregistrez le fichier sous le nom Listimages.htm dans le dossier Configuration/Commands.

Ecriture du code JavaScript


Crez le fichier JavaScript contenant les fonctions spcifiques votre rapport autonome.
1 Crez le fichier Listimages.js dans le dossier Configuration/Commands et insrez-y le code suivant :

EXTENSION DE DREAMWEAVER CS4 209


Rapports

function stdaloneresultwin() { var curDOM = dw.getDocumentDOM("document"); var tagList = curDOM.getElementsByTagName('img'); var imgfilename; var iOffset = 0; var iLineNumber = 0; var resWin = dw.createResultsWindow("Images in File", ["Line", "Image"]); for (var i=0; i < tagList.length; i++) { // Get the name of the source file. imgfilename = tagList[i].getAttribute('src'); // Get the character offset from the start of the file // to the start of the img tag. iOffset = curDOM.nodeToOffsets(curDOM.images[i]); // Based on the offset, figure out what line in the file // the img tag is on. iLineNumber = curDOM.getLineFromOffset(iOffset[0]); // As long as the src attribute specifies a file name, if (imgfilename != null) { // display the line number, and image path. resWin.addItem(resWin, "0", "Images in Current File", null, null, null, [iLineNumber, imgfilename]); } } return; } // add buttons to dialog function commandButtons() { return new Array("OK", "stdaloneresultwin()", "Cancel", "window.close()"); }

2 Enregistrez le fichier sous le nom Listimages.js dans le dossier Configuration/Commands.

Fonctions de l'API de rapports


La fonction processFile() est la seule fonction obligatoire pour l'API de rapports. Toutes les autres fonctions sont facultatives.

processFile()
Disponibilit Dreamweaver 4.

EXTENSION DE DREAMWEAVER CS4 210


Rapports

Description Cette fonction est appele lorsqu'un fichier doit tre trait. La commande Rapport doit traiter le fichier sans le modifier et utiliser la fonction dw.ResultsPalette.SiteReports(), addResultItem() ou resWin.addItem() pour renvoyer des informations sur ce fichier. Dreamweaver publie automatiquement le DOM de chaque fichier lorsque le traitement est termin. Arguments strFilePath L'argument strFilePath est le nom et le chemin complet du fichier traiter. Valeurs renvoyes Dreamweaver ne renvoie rien.

beginReporting()
Disponibilit Dreamweaver 4. Description Cette fonction est appele au dbut du processus de rapport, avant l'excution du rapport. Si la commande Rapport renvoie la valeur false partir de la fonction, la commande Rapport est exclue du processus de rapport. Arguments target L'argument target est une chane indiquant la cible de la session de rapport. Il peut s'agir d'une des valeurs suivantes : "CurrentDoc", "CurrentSite", "CurrentSiteSelection" (pour les fichiers slectionns dans un site), ou "Folder:+ le chemin vers le dossier slectionn par l'utilisateur" (par exemple, "Folder:c:temp"). Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si le rapport s'excute correctement, et false si l'lment target est exclu de l'excution du rapport.

endReporting()
Disponibilit Dreamweaver 4. Description Cette fonction est appele la fin du processus de rapport. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien.

EXTENSION DE DREAMWEAVER CS4 211


Rapports

commandButtons()
Disponibilit Dreamweaver 4. Description Dfinit les boutons devant figurer dans la partie droite de la bote de dialogue Options et leur comportement lorsque l'utilisateur clique dessus. Si cette fonction n'est pas dfinie, aucun bouton n'apparat et la section body du fichier de rapports s'tend de faon remplir la totalit de la bote de dialogue. Arguments Aucun. Valeurs renvoyes Dreamweaver renvoie un tableau contenant un nombre pair d'lments. Le premier lment est une chane contenant le libell du premier bouton. Le deuxime lment est une chane de code JavaScript dfinissant le comportement du premier bouton lorsque l'utilisateur clique dessus. Les autres lments dfinissent les boutons supplmentaires de la mme manire. Exemple Dans l'exemple suivant, la fonction commandButtons() dfinit trois boutons : OK, Annuler et Aide.
function commandButtons(){ return new Array("OK" , "doCommand()" , "Cancel" , "window.close()" , "Help" , "showHelp()"); }

configureSettings()
Disponibilit Dreamweaver 4. Description Dtermine si le bouton Paramtres du rapport doit tre activ dans la bote de dialogue Rapports lorsqu'un rapport est slectionn. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si le bouton Paramtres du rapport doit tre activ, false dans les autres cas.

windowDimensions()
Disponibilit Dreamweaver 4.

EXTENSION DE DREAMWEAVER CS4 212


Rapports

Description Dfinit les dimensions de la bote de dialogue des paramtres. Si cette fonction n'est pas dfinie, les dimensions de la fentre sont calcules automatiquement. Remarque : Ne dfinissez cette fonction que si vous souhaitez utiliser une bote de dialogue Options ayant des dimensions suprieures 640 x 480 pixels. Arguments platform La valeur de l'argument platform est soit "macintosh", soit "windows", selon la plate-forme utilise par l'utilisateur. Valeurs renvoyes Dreamweaver renvoie une chane au format "widthInPixels,heightInPixels". Les dimensions renvoyes sont infrieures la taille totale de la bote de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyes ne permettent pas de faire apparatre toutes les options, des barres de dfilement s'affichent. Exemple Dans l'exemple suivant, la fonction windowDimensions() dfinit les dimensions de la bote de dialogue Paramtres 648 x 520 pixels :
function windowDimensions(){ return "648,520"; }

213

Chapitre 13 : Bibliothques et diteurs de balises


Dreamweaver enregistre les informations sur chaque balise, y compris leurs attributs, dans un groupe de sous-dossiers localiss dans le dossier Configuration/TagLibraries. Les fonctions de l'diteur de balises et du slecteur de balises utilisent les informations enregistres dans ces dossiers lors de la manipulation et de la modification des balises. Dreamweaver comprend des diteurs pour les langages suivants : HTML, ASP.NET, CFML, JRun et JSP. Vous pouvez personnaliser ces diteurs et en crer de nouveaux, ou ajouter de nouvelles balises aux bibliothques de balises. Avant de vous lancer dans la cration d'diteurs de balises personnaliss, vous devez comprendre la structure de la bibliothque de balises. Le tableau ci-dessous recense les fichiers utiliss pour crer une bibliothque de balises :
Chemin Configuration/TagLibraries/ Configuration/TagLibraries/langage/ Fichier TagLibraries.vtm tag.vtm Description Recense chaque balise installe. Inclut des informations sur les balises, tels les attributs correspondants, et indique si la balise est associe une balise de fermeture, ainsi que les rgles de mise en forme.

Configuration/TagLibraries/langage/

Fichier_image_balis Fichier facultatif afficher dans e.gif l'inspecteur Proprits.

Format de fichier bibliothque de balises


La bibliothque de balises est compose d'un fichier racine, du fichier TagLibraries.vtm, contenant la liste des balises installes, et d'un fichier VTML pour chaque balise dans la bibliothque. Le fichier TagLibraries.vtm fonctionne comme une table des matires et contient des pointeurs vers le fichier VTML de chaque balise. La figure suivante indique comment Dreamweaver rpartit les fichiers VTML en fonction du langage de marquage :

EXTENSION DE DREAMWEAVER CS4 214


Bibliothques et diteurs de balises

Les utilisateurs de Macromedia HomeSite d'Adobe peuvent reconnatre la structure des fichiers VTML, mais Dreamweaver n'utilise pas ces fichiers de la mme manire que HomeSite. La diffrence la plus importante est que Dreamweaver contient son propre programme de rendu HTML pour l'affichage des interfaces utilisateur (UI) des extensions, et n'utilise donc pas les fichiers Dreamweaver VTML dans le processus de rendu de l'interface utilisateur. L'exemple suivant prsente la structure du fichier TagLibraries.vtm :
<taglibraries> <taglibrary name="Name of tag library" doctypes="HTML,ASP-JS,ASP-VB" tagchooser="relative path to TagChooser.xml file" id="DWTagLibrary_html"> <tagref name="tag name" file="relative path to tag .vtm file"/> </taglibrary> <taglibrary name="CFML Tags" doctypes="ColdFusion" servermodel="Cold Fusion" tagchooser="cfml/TagChooser.xml" id="DWTagLibrary_cfml"> <tagref name="cfabort" file="cfml/cfabort.vtm"/> </taglibrary> <taglibrary name="ASP.NET Tags" doctypes="ASP.NET_CSharp,ASP.NET_VB" servermodel="ASPNet" prefix="<asp:" tagchooser="ASPNet/TagChooser.xml" id="DWTagLibrary_aspnet"> <tagref name="dataset" file="aspnet/dataset.vtm" prefix="<mm:dataset"/> </taglibrary> </taglibraries>

La balise taglibrary regroupe une ou plusieurs balises dans une bibliothque de balises. Lorsque vous importez des balises ou crez un nouveau jeu de balises, vous pouvez les regrouper dans des bibliothques de balises. Souvent, un regroupement taglibrary correspond un ensemble de balises qui sont dfinies dans un fichier TLD de pages JSP (JavaServer Pages), un fichier DTD (Document Type Definition) de format XML, un espace de nom ASP.Net ou dans tout autre regroupement logique. Le tableau suivant prsente les attributs taglibrary :
Attribut
taglibrary.name

Description Utilis pour rfrencer la bibliothque de balises dans l'interface utilisateur.

Obligatoire ou facultatif Obligatoire

taglibrary.doctypes

Indique les types de documents pour lesquels cette bibliothque Obligatoire est active. Lorsque la bibliothque est active, les balises de bibliothque s'affichent dans le menu contextuel Indicateurs de code. Les bibliothques de balises ne peuvent pas toutes tre actives en mme temps car des conflits de nom risquent de survenir (par exemple, les fichiers HTML et WML ne sont pas compatibles). Lorsqu'ils sont spcifis, les balises qui appartiennent la bibliothque de balises prennent la forme taglibrary.prefix+ tagref.name. Par exemple, si taglibrary.prefix vaut "<jrun:" et si tagref.name vaut "if", la balise prend la forme "<jrun:if". Cet attribut peut tre ignor pour une balise dfinie. Facultatif

taglibrary.prefix

EXTENSION DE DREAMWEAVER CS4 215


Bibliothques et diteurs de balises

Attribut
taglibrary.servermodel

Description

Obligatoire ou facultatif

Si les balises dans la bibliothque de balises s'excutent sur un Facultatif serveur d'application, l'attribut servermodel identifie le modle serveur de la balise. S'il s'agit de balises ct client (et non de balises ct serveur), l'attribut servermodel est ignor. L'attribut servermodel est utilis galement pour vrifier les navigateurs cibles. Facultatif Cet attribut peut tre une chane quelconque diffrente des attributs taglibrary.ID des autres bibliothques de balises du fichier. Extension Manager utilise l'attribut ID afin de laisser aux fichiers MXP la possibilit d'insrer de nouveaux taglibrary et fichiers tags dans le fichier TagLibraries.vtm. Un chemin relatif au fichier TagChooser.xml associ cette bibliothque de balises. Facultatif

taglibrary.id

taglibrary.tagchooser

Le tableau suivant prsente les attributs tagref :


Attribut
tagref.name tagref.prefix

Description Utilis pour rfrencer la balise dans l'interface utilisateur.

Obligatoire ou facultatif Obligatoire

Indique comment doit s'afficher la balise en mode Code. Lorsqu'il Facultatif est utilis, l'attribut tagref.prefix dtermine le prfixe de la balise en cours. Lorsqu'il est dfini, il remplace la valeur spcifie pour l'attribut taglibrary.prefix. Rfrence le fichier VTML de la balise. Facultatif

tagref.file

L'attribut tagref.prefix pouvant remplacer la valeur de l'attribut taglibrary.prefix, la relation entre ces deux attributs peut prter confusion. Le tableau suivant montre la relation entre les attributs taglibrary.prefix et tagref.prefix :
L'attribut taglibrary.prefix est-il dfini ? Non Oui Non Oui L'attribut tagref.prefix est-il dfini ? Non Non Oui Oui Prfixe de balise obtenu

'<' + tagref.name taglibrary.prefix + tagref.name tagref.prefix tagref.prefix

Pour dfinir les balises, Dreamweaver utilise une version modifie du format de fichier VTML. L'exemple suivant prsente tous les lments que Dreamweaver doit utiliser pour dfinir une balise individuelle :

EXTENSION DE DREAMWEAVER CS4 216


Bibliothques et diteurs de balises

<tag name="input" bind="value" casesensitive="no" endtag="no"> <tagformat indentcontents="yes" formatcontents="yes" nlbeforetag nlbeforecontents=0 nlaftercontents=0 nlaftertag=1 /> <tagdialog file = "input.HTM"/> <attributes> <attrib name="name"/> <attrib name="wrap" type="Enumerated"> <attriboption value="off"/> <attriboption value="soft"/> <attriboption value="hard"/> /attrib> <attrib name="onFocus" casesensitive="yes"/> <event name="onFocus"/> </attributes> </tag>

Le tableau suivant prsente les attributs de dfinition des balises :


Attribut Description Obligatoire ou facultatif Facultatif

tag.bind

Utilis par le panneau Liaisons de donnes. Lorsque vous slectionnez une balise de ce type, l'attribut bind indique l'attribut par dfaut pour la liaison des donnes.

tag.casesensitive

Indique si le nom de la balise doit respecter la Facultatif casse. Si le nom de la balise doit respecter la casse, il est insr dans le document de l'utilisateur exactement comme spcifi dans la bibliothque de balises. S'il n'est pas ncessaire de respecter la casse, le nom de la balise est insr en utilisant la casse par dfaut spcifie dans l'onglet Format de code de la bote de dialogue Prfrences. Si vous ne spcifiez pas l'attribut casesensitive, la balise ne distingue par les majuscules des minuscules. Spcifie si la balise dispose d'une balise Facultatif d'ouverture et d'une balise de fermeture. Par exemple, la balise input ne comporte pas de balise de fermeture. Il n'existe pas de balise /input correspondante. Si la balise de fermeture est facultative, l'attribut ENDTAG doit tre dfini sur Yes. Spcifiez xml pour appliquer la syntaxe XML une balise vide. Par exemple, <tag
name="foo" endtag="xml" tagtype="empty"> insre <foo/>.

tag.endtag

tagformat

Dfinit les rgles de mise en forme de la balise. Facultatif Dans les versions antrieures Dreamweaver MX, les rgles de mise en forme taient enregistres dans le fichier SourceFormat.txt. Indique si le contenu de cette balise doit tre mis Facultatif en retrait. Indique si le contenu de cette balise doit tre analys. Cet attribut est dfini sur No pour les balises telles que SCRIPT et STYLE, dans lesquelles le contenu n'est pas du code HTML. Facultatif

tagformat.indentcontents

tagformat.formatcontents

EXTENSION DE DREAMWEAVER CS4 217


Bibliothques et diteurs de balises

Attribut

Description

Obligatoire ou facultatif

tagformat.nlbeforetag

Spcifie si un caractre de nouvelle ligne doit tre Facultatif inclus avant cette balise. La valeur 0 signifie non et la valeur 1, oui. Le nombre de caractres de nouvelle ligne devant tre insrs avant le contenu de cette balise. Le nombre de caractres de nouvelle ligne devant tre insrs aprs le contenu de cette balise. Facultatif

tagformat.nlbeforecontents

tagformat.nlaftercontents

Facultatif

tagformat.nlaftertag

Spcifie si un caractre de nouvelle ligne doit tre Facultatif inclus aprs cette balise. La valeur 0 signifie non et la valeur 1, oui. Le nom de l'attribut, tel qu'il apparat dans le code source. Obligatoire

attrib.name

attrib.type

S'il n'est pas dfini, l'attribut attrib.type est Facultatif "text". Ses valeurs peuvent tre les suivantes : TEXT (texte libre) ENUMERATED (liste de valeurs numres) COLOR (valeur de couleur : nom ou valeur hexadcimale) FONT (nom ou famille de polices) STYLE (attribut de styles CSS) CSSSTYLE (nom de classe CSS) CSSID (ID de classe CSS) FILEPATH (chemin d'accs complet un fichier) DIRECTORY (chemin d'accs un dossier) FILENAME (nom de fichier seul) RELATIVEPATH (reprsentation relative du chemin d'accs) FLAG (attribut ON/OFF qui ne contient aucune valeur). Indique si le nom de l'attribut doit respecter la Facultatif casse. Si l'attribut CASESENSITIVE est absent, le nom de l'attribut ne distingue pas les majuscules des minuscules.

attrib.casesensitive

Remarque : Dans les versions antrieures Dreamweaver MX, les informations sur les balises sont enregistres dans le fichier Configuration/TagAttributeList.txt.

Slecteur de balises
Le slecteur de balises vous permet d'afficher les balises dans des groupes fonctionnels et d'accder rapidement aux balises frquemment utilises. Pour ajouter une balise ou un groupe de balises dans le slecteur de balises, vous devez d'abord l'ajouter dans la bibliothque de balises. Vous pouvez effectuer cette opration l'aide de la bote de dialogue Editeur de la bibliothque de balises ou en installant une extension Dreamweaver, empaquete dans un fichier MXP.

Fichiers Tagchooser.xml
Les fichiers Tagchooser.xml contiennent les mtadonnes utilises pour organiser les regroupements de balises qui apparaissent dans le slecteur de balises. Chaque balise livre avec Dreamweaver est enregistre dans un regroupement fonctionnel, et est disponible dans le slecteur de balises. Vous pouvez regrouper les balises existantes et crer des groupes de nouvelles balises en modifiant les fichiers TagChooser.xml. Vous pouvez galement personnaliser la structure des balises en crant des sous-catgories pour permettre aux utilisateurs d'accder facilement aux balises les plus importantes pour leur travail.

EXTENSION DE DREAMWEAVER CS4 218


Bibliothques et diteurs de balises

Les fichiers TagLibraries.vtm prennent en charge l'utilisation de l'attribut taglibrary.tagchooser, qui pointe vers les fichiers Tagchooser.xml. Si vous modifiez les fichiers Tagchooser.xml existants ou si vous en crez de nouveaux, l'attribut taglibrary.tagchooser doit pointer vers l'emplacement exact du slecteur de balises pour pouvoir fonctionner correctement. S'il n'existe pas d'attribut taglibrary.tagchooser, le slecteur de balises affiche l'arborescence dfinie dans le TagLibraries.vtm. Les fichiers TagChooser.xml rsident dans le dossier Configuration/TagLibraries/Nom_bibliothque_balises. L'exemple suivant prsente la structure des fichiers TagChooser.xml :
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?> <tclibrary name="Friendly name for library node" desc='Description for incorporated reference' reference="Language[,Topic[,Subtopic]]"> <category name="Friendly name for category node" desc='Description for incorporated reference' reference="Language[,Topic[,Subtopic]]" id="Unique id"> <category name="Friendly name for subcategory node" ICON="Relative path" desc='Description for incorporated reference' reference="Language,Topic[,Subtopic]" id="Unique id"> <element name="Friendly name for list item" value='Value to pass to visual dialog editors' desc='Description for incorporated reference' reference="Language[,Topic[,Subtopic]]" id="Unique id"/> ... more elements to display in the list view ... </category> ... more subcategories ... </category> ... more categories ... </tclibrary>

Le tableau suivant prsente les balises pouvant tre utilises dans les fichiers TagChooser.xml :
Balise
tclibrary

Description Balise extrieure qui encapsule cette structure de slecteur de balises de la bibliothque de balises. Cette valeur s'affiche dans le nud Arborescence.

Obligatoire ou facultatif Obligatoire

tclibrary.name tclibrary.desc

Obligatoire

Cette valeur est une chane HTML qui s'affiche dans la section Infos sur Facultatif (desc et reference les balises de la bote de dialogue Slecteur de balises. S'il n'existe pas s'excluent mutuellement) d'attribut desc, les informations Infos sur les balises proviennent du panneau Rfrence. Interchangeable avec tclibrary.reference. Cette valeur dcrit le langage, la rubrique et la sous-rubrique afficher Facultatif (desc et reference dans la section Infos sur les balises de la bote de dialogue Slecteur de s'excluent mutuellement) balises. Interchangeable avec tclibrary.desc.

tclibrary.reference

La balise category reprsente tous les autres nuds dans l'arborescence sous le nud de la balise tclibrary, comme illustr dans le tableau suivant :

EXTENSION DE DREAMWEAVER CS4 219


Bibliothques et diteurs de balises

Balise
category.name category.desc

Description Cette valeur s'affiche dans le nud Arborescence.

Obligatoire ou facultatif Obligatoire

Cette valeur est une chane HTML qui s'affiche dans la section Infos sur Facultatif (desc et reference les balises de la bote de dialogue Slecteur de balises. Si desc ou s'excluent mutuellement) reference attr n'est pas spcifi, rien ne s'affiche dans la section Infos sur les balises. Cette valeur dcrit le langage, la rubrique et la sous-rubrique afficher Facultatif (desc et reference dans la section Infos sur les balises. s'excluent mutuellement) Cette valeur est un chemin relatif vers un fichier GIF d'icne. Toute chane diffrente des attributs category.id des autres catgories dans ce fichier. Facultatif Obligatoire

category.reference

category.icon category.id

Le tableau suivant rpertorie les attributs de la balise element, qui reprsente la balise insrer :
Attribut
element.name element.value

Description Cette valeur s'affiche comme un lment de liste. Une valeur place directement dans le code ou un paramtre qui est transmis vers les botes de dialogue visuelles.

Obligatoire ou facultatif Obligatoire Obligatoire

element.desc

Cette valeur est une chane HTML et s'affiche dans le panneau Rfrence Facultatif (desc et reference incorpor. S'il n'est pas spcifi, l'attribut reference affiche le contenu s'excluent mutuellement) de la rfrence dans le panneau Rfrence incorpor. Jusqu' trois chanes, spares par des virgules, dcrivant Facultatif (desc et reference respectivement le langage, la rubrique et la sous-rubrique. Ces s'excluent mutuellement) informations s'affichent dans le panneau Rfrence. La premire chane est obligatoire. La deuxime chane est obligatoire pour la balise element seulement et facultative pour les balises category et tclibrary. La troisime chane est facultative. Toute chane diffrente des attributs element.id des autres lments dans ce fichier. Facultatif

element.reference

element.id

Exemple simple de cration d'un diteur de balise


Les exemples dans cette section utilisent cfweather, une balise Adobe ColdFusion conue pour extraire la temprature courante partir d'une base de donnes mtorologiques, et illustrent les tapes ncessaires la cration d'un nouvel diteur de balises. Les attributs de la balise cfweather sont dcrits dans le tableau suivant :
Attribut
zip tempaturescale

Description Un code postal de cinq chiffres L'chelle de temprature (Celsius ou Fahrenheit)

Pour crer ce nouvel diteur de balises, enregistrez la balise, crez une dfinition de balise, crez une interface utilisateur de l'diteur et ajoutez une balise au Slecteur de balises.

EXTENSION DE DREAMWEAVER CS4 220


Bibliothques et diteurs de balises

Enregistrement de la balise dans la bibliothque de balises


Afin que Dreamweaver puisse reconnatre la nouvelle balise, celle-ci doit tre identifie dans le fichier TagLibraries.vtm, localis dans le dossier Configuration/TagLibraries. Toutefois, l'utilisateur peut se trouver sur une plate-forme multiutilisateurs telles que Windows XP, Windows 2000, Windows NT ou Mac OS X. Dans ce cas, un autre fichier TagLibraries.vtm se trouve dans le dossier Configuration de l'utilisateur. C'est ce fichier qui doit tre mis jour, car il s'agit de l'instance que Dreamweaver recherche et analyse. L'emplacement du dossier Configuration varie selon la plate-forme utilisateur. Sous Windows 2000 et Windows XP :
<drive>:\Documents and Settings\<username>\Application Data\Adobe\\xc2 Dreamweaver CS4\Configuration

Remarque : Sous Windows XP, il se peut que ce dossier se trouve dans un dossier cach. Sous Mac OS X :
<drive>:Users:<username>:Library:Application Support:Adobe: Dreamweaver CS4:Configuration

Si Dreamweaver ne parvient pas trouver le fichier TagLibraries.vtm dans le dossier Configuration de l'utilisateur, il effectue une recherche dans le dossier Configuration de Dreamweaver. Remarque : Sur une plate-forme multi-utilisateurs, si vous modifiez la copie du fichier TagLibraries.vtm qui se trouve dans le dossier Configuration de Dreamweaver, Dreamweaver n'est pas inform de ces modifications. Dreamweaver analyse la copie du fichier TagLibraries.vtm dans le dossier Configuration de l'utilisateur, et pas celle qui se trouve dans son propre dossier Configuration.
cfweather est une balise ColdFusion. Vous pouvez donc enregistrer la balise cfweather dans le groupe de

bibliothque de balises correspondant qui existe dj.


1 Ouvrez le fichier TagLibraries.vtm dans l'diteur de texte. 2 Faites dfiler les bibliothques de balises existantes jusqu' localiser les balises CFML. 3 Ajoutez un lment de rfrence de balise, comme indiqu dans l'exemple suivant :
<tagref name="cfweather" file="cfml/cfweather.vtm"/>

4 Enregistrez le fichier.

La balise est maintenant enregistre dans la bibliothque de balises et contient un pointeur vers le fichier de dfinition de balise cfweather.vtm.

Cration d'un fichier de dfinition de balise (VTML)


Lorsqu'un utilisateur slectionne une balise enregistre l'aide du slecteur de balises ou d'un diteur de balises, Dreamweaver recherche un fichier VTML correspondant pour la dfinition de la balise.
1 Dans un diteur de texte, crez un fichier contenant les lments suivants :

EXTENSION DE DREAMWEAVER CS4 221


Bibliothques et diteurs de balises

<TAG NAME="cfweather" endtag="no"> <TAGFORMAT NLBEFORETAG="1" NLAFTERTAG="1"/> <TAGDIALOG FILE="cfweather.htm"/> <ATTRIBUTES> <ATTRIB NAME="zip" TYPE="TEXT"/> <ATTRIB NAME="tempaturescale" TYPE="ENUMERATED"> <ATTRIBOPTION VALUE="Celsius"/> <ATTRIBOPTION VALUE="Fahrenheit"/> </ATTRIB> </ATTRIBUTES> </TAG>

2 Enregistrez le fichier cfweather.vtm dans le dossier Configuration/Taglibraries/CFML.

Le fichier de dfinition de balise permet Dreamweaver d'excuter les oprations de code contextuel, de finalisation de code et de mise en forme pour la balise cfweather.

Cration d'une interface utilisateur d'diteur de balises


1 Enregistrez le fichier cfweather.htm dans le dossier Configuration/Taglibraries/CFML :
<!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//dialog"> <html> <head> <title>CFWEATHER</title> <script src="../../Shared/Common/Scripts/dwscripts.js"></script> <script src="../../Shared/Common/Scripts/ListControlClass.js"></script> <script src="../../Shared/Common/Scripts/tagDialogsCmn.js"></script> <script> /************************* GLOBAL VARS **************************/ var TEMPATURESCALELIST; // tempaurelist control (initialized in initializeUI()) var theUIObjects; // array of UI objects used by common API functions /****************************************************************/ // inspectTag() API function defined (required by all tag editors) function inspectTag(tagNodeObj) { // call into a common library version of inspectTagCommon defined // in tagDialogCmns.js (note that it's been included) // For more information about this function, look at the comments // for inspectTagCommon in tagDialogCmn.js tagDialog.inspectTagCommon(tagNodeObj, theUIObjects); } function applyTag(tagNodeObj) { // call into a common library version of applyTagCommon defined // in tagDialogCmns.js (note that it's been included) // For more information about this function, look at the comments // for applyTagCommon in tagDialogCmn.js tagDialog.applyTagCommon(tagNodeObj, theUIObjects); } function initializeUI() { // define two arrays for the values and display captions for the list control

EXTENSION DE DREAMWEAVER CS4 222


Bibliothques et diteurs de balises

var theTempatureScaleCap = new Array("celsius","fahrenheit"); var theTempatureScaleVal = new Array("celsius","fahrenheit"); // instantiate a new list control TEMPATURESCALELIST = new ListControl("thetempaturescale"); // add the tempaturescalelist dropdown list control to the uiobjects theUIObjects0= new Array(TEMPATURESCALELIST); // call common populateDropDownList function defined in tagDialogCmn.js to // populate the tempaturescale list control tagDialog.populateDropDownList(TEMPATURESCALELIST, theTempatureScaleCap, theTempatureScaleVal, 1); } </script> </head> <body onLoad="initializeUI()"> <div name="General"> <table border="0" cellspacing="4"> <tr> <td valign="baseline" align="right" nowrap="nowrap">Zip Code: </td> <td nowrap="nowrap"> <input type="text" id="attr:cfargument:zip" name="thezip" attname="zip" style="width:100px"0/>&nbsp; </td> </tr> <tr> <td valign="baseline" align="right" nowrap="nowrap">Type: </td> <td nowrap="nowrap"> <select name="thetempaturescale" id="attr:cfargument:tempaturescale" attname="tempaturescale" editable="false" style="width:200px"> </select> </td> </tr> </table> </div> </body> </html>

Vous allez ensuite vrifier le bon fonctionnement de l'diteur de balises.


2 Lancez Dreamweaver. 3 Entrez cfweather en mode Code. 4 Cliquez l'aide du bouton droit de la souris sur la balise. 5 Slectionnez Modifier la balise cfweather dans le menu contextuel.

Si l'diteur de balises dmarre, il a t cr correctement.

Ajout d'une balise au slecteur de balises


1 Modifiez le fichier TagChooser.xml dans le dossier Configuration/Taglibraries/CFML en ajoutant une nouvelle

catgorie appele Balises tierces, qui met en valeur la balise cfweather, comme indiqu dans l'exemple suivant :

EXTENSION DE DREAMWEAVER CS4 223


Bibliothques et diteurs de balises

<category name="Third Party Tags" icon="icons/Elements.gif" reference='CFML'> <element name="cfweather" value='cfweather zip="" temperaturescale="fahrenheit">' /> </category>

Remarque : Sur les plates-formes multi-utilisateurs, le fichier Tagchooser.xml existe galement dans le dossier Configuration de l'utilisateur. Pour plus d'informations sur les plates-formes multi-utilisateurs, voir Enregistrement de la balise dans la bibliothque de balises la page 220. Vrifiez prsent que la balise cfweather figure bien dans le slecteur de balises.
2 Choisissez Insertion > Balise. 3 Dveloppez le groupe Balises CFML. 4 Slectionnez le groupe Balises tierces qui s'affiche au bas du slecteur de balises. La balise cfweather s'affiche dans

la zone de liste sur la droite.


5 Slectionnez cfweather, puis cliquez sur le bouton Insrer.

L'diteur de balises doit apparatre.

Fonctions de l'API de l'diteur de balises


Afin de crer un nouvel diteur de balises, vous devez fournir une implmentation pour les fonctions inspectTag(), validateTag() et applyTag(). Vous trouverez un exemple d'implmentation dans la section Cration d'une interface utilisateur d'diteur de balises la page 221.

inspectTag()
Disponibilit Dreamweaver MX. Description La fonction est appele au premier affichage de l'diteur de balises. La fonction reoit la balise modifie par l'utilisateur comme un argument sous la forme d'un objet dom. La fonction extrait des valeurs d'attribut de la balise en cours d'dition et utilise ces valeurs pour initialiser les lments de formulaire dans l'diteur de balises. Arguments
tag

L'argument tag constitue le nud DOM de la balise modifie.


Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple Supposons que l'utilisateur modifie la balise suivante :
<crfweather zip = "94065"/>

EXTENSION DE DREAMWEAVER CS4 224


Bibliothques et diteurs de balises

Si l'diteur contient une zone de texte de modification de l'attribut zip, la fonction doit initialiser l'lment de formulaire pour permettre l'utilisateur de consulter le code postal dans le champ de texte, plutt que de consulter le champ vide. Le code suivant excute l'initialisation :
function inspectTag(tag) { document.forms[0].zip.value = tag.zip }

validateTag()
Disponibilit Dreamweaver MX. Description Lorsqu'un utilisateur clique sur un nud dans la commande d'arborescence ou sur OK, la fonction excute la validation des entres sur les lments de formulaire HTML affichs actuellement. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si l'entre pour les lments de formulaire HTML est valide, false si les valeurs d'entre ne sont pas valides. Exemple Lors de la cration d'un tableau, l'utilisateur entre un nombre entier ngatif pour le nombre de lignes. La fonction validateTag() dtecte l'entre non valide, affiche un message d'alerte et renvoie la valeur false.

applyTag()
Disponibilit Dreamweaver MX. Description Lorsque l'utilisateur clique sur OK, Dreamweaver appelle la fonction validateTag(). Si la fonction validateTag() renvoie la valeur true, Dreamweaver appelle cette fonction et transmet l'objet dom reprsentant la balise en cours de modification. La fonction interprte les valeurs des lments de formulaires et les enregistre dans l'objet dom. Arguments
tag

L'argument tag constitue le nud DOM de la balise modifie.


Valeurs renvoyes Dreamweaver ne renvoie rien.

EXTENSION DE DREAMWEAVER CS4 225


Bibliothques et diteurs de balises

Exemple Reprenons l'exemple cfweather. Dans le code suivant, si l'utilisateur remplace le code postal 94065 par 53402, afin de mettre jour le document de l'utilisateur de sorte qu'il utilise le nouveau code postal, vous devez galement mettre jour l'objet dom.
function applyTag(tag) { tag.zip = document.forms[0].zip.value }

226

Chapitre 14 : Inspecteurs Proprits


L'inspecteur Proprits est probablement le panneau flottant le plus connu de l'interface L'inspecteur Proprits est indispensable pour dfinir, examiner et modifier le nom, la taille, l'apparence et d'autres attributs de la slection. Il sert galement lancer des diteurs internes et externes pour l'lment slectionn. Le tableau ci-dessous recense les fichiers utiliss pour crer un inspecteur Proprits :
Chemin Configuration/Inspectors/ Fichier Nom_inspecteur_proprits.ht m Nom_inspecteur_proprits.js Description Dfinit l'interface utilisateur (UI) de l'inspecteur Proprits. Contient les fonctions requises par l'inspecteur Proprits. Fichier facultatif afficher dans l'inspecteur Proprits.

Configuration/Inspectors/

Configuration/Inspectors/

Fichier_image_balise.gif

Fichiers d'inspecteur Proprits


Dreamweaver intgre plusieurs interfaces compatibles avec l'inspecteur Proprits permettant de dfinir des proprits pour de nombreuses balises HTML standard. Comme ces inspecteurs intgrs font partie du code Dreamweaver lmentaire, le dossier Configuration ne contient pas de fichiers d'inspecteur Proprits correspondants. Cependant, les fichiers d'inspecteur Proprits personnaliss permettent d'ignorer ces interfaces intgres ou d'en crer de nouvelles pour contrler les balises personnalises. Les fichiers d'inspecteur Proprits personnaliss rsident dans le dossier Configuration/Inspectors du dossier de l'application Dreamweaver. Le fichier HTML d'inspecteur Proprits doit contenir un commentaire (en plus du commentaire doctype), juste devant la balise HTML d'ouverture. Ce principe est illustr dans l'exemple suivant :
<!-- tag:serverModel:tagNameOrKeyword,priority:1to10,selection: exactOrWithin,hline,vline, serverModel--> <!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//pi">

Ce commentaire comporte les lments suivants :

L'lment serverModel indique que Dreamweaver ne doit charger cet inspecteur Proprits que lorsque le modle
de serveur spcifi est actif.

L'lment tagNameOrKeyword est la balise qui est inspecte ou l'un des mots cls suivants : *COMMENT* (pour les
commentaires), *LOCKED* (pour les rgions verrouilles) ou *ASP* (pour les balises ASP).

L'lment 1to10 est la priorit du fichier d'inspecteur Proprits. 1 indique que cet inspecteur n'est utilis que si
aucun autre ne peut inspecter la slection. 10 indique que cet inspecteur a priorit sur tous les autres qui pourraient inspecter la slection.

L'lment exactOrWithin indique si la slection peut tre contenue dans la balise (within) ou si elle doit contenir
exactement la balise (exact).

L'lment facultatif hline indique qu'une ligne grise horizontale doit apparatre entre les moitis suprieure et
infrieure de l'inspecteur en mode tendu.

EXTENSION DE DREAMWEAVER CS4 227


Inspecteurs Proprits

L'lment facultatif vline indique qu'une ligne grise verticale doit apparatre entre le champ de nom de balise et le
reste des proprits dans l'inspecteur.

L'lment facultatif serverModel indique le modle de serveur de l'inspecteur Proprits. Le modle de serveur de
l'inspecteur Proprits doit tre identique l'inspecteur Proprits du document. Si ce n'est pas le cas, Dreamweaver n'utilise pas l'inspecteur Proprits pour afficher les proprits de la slection actuelle. Supposons par exemple que le modle de serveur d'un document soit Adobe ColdFusion. Celui de l'inspecteur Proprits, par contre, est ASP. Dans ce cas, Dreamweaver n'utilisera pas cet inspecteur Proprits pour les slections dans le document. Le commentaire suivant est appropri pour un inspecteur conu pour inspecter la balise happy :
<!-- tag:happy, priority:8,selection:exact,hline,vline,serverModel:ASP -->

Dans certains cas, il est essentiel de prciser que votre extension n'emploie que le rendu d'extensions de Dreamweaver et pas le moteur de rendu prcdent. Vous pouvez le faire en insrant la ligne suivante juste avant le commentaire de la balise, comme le montre l'exemple suivant :
<!--DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//pi"-->

La section body du fichier d'inspecteur Proprits contient un formulaire HTML. Au lieu d'afficher le contenu du formulaire dans une bote de dialogue, Dreamweaver utilise le formulaire pour dfinir les zones d'entre et la mise en page de l'inspecteur Proprits. La section head d'un fichier d'inspecteur Proprits contient des fonctions JavaScript ou une rfrence au(x) fichier(s) JavaScript.

Fonctionnement des fichiers d'inspecteur Proprits


Au dmarrage, Dreamweaver lit la premire ligne de chaque fichier HTM et HTML dans le dossier Configuration/Inspectors, recherchant la chane de commentaire qui dfinit le type, la priorit et le type de slection d'un inspecteur Proprits. Les fichiers qui ne possdent pas ce commentaire en premire ligne sont ignors. Lorsque l'utilisateur effectue une slection dans Dreamweaver ou dplace le point d'insertion vers un emplacement diffrent, les vnements suivants se produisent :
1 Dreamweaver recherche tout inspecteur possdant un type de slection within. 2 S'il n'existe aucun inspecteur within, Dreamweaver recherche l'arborescence du document partir de la balise

actuellement slectionne pour vrifier s'il existe des inspecteurs pour les autres balises entourant la slection. S'il n'existe aucun inspecteur within, Dreamweaver recherche tous les inspecteurs possdant le type de slection exact.
3 Pour la premire balise possdant un ou plusieurs inspecteurs, Dreamweaver appelle chaque fonction
canInspectSelection() de l'inspecteur. Si la fonction renvoie la valeur false, Dreamweaver ne considre plus l'inspecteur comme un candidat pour inspecter cette slection.

4 S'il reste plusieurs inspecteurs potentiels aprs avoir appel la fonction canInspectSelection(), Dreamweaver

trie les inspecteurs restant en fonction de leur priorit.


5 Si plusieurs inspecteurs potentiels ont le mme degr de priorit, Dreamweaver slectionne l'inspecteur suivant

l'ordre alphabtique.
6 L'inspecteur choisi apparat dans le panneau flottant Inspecteur Proprits. Si le fichier d'inspecteur Proprits

dfinit la fonction displayHelp(), une petite icne en forme de point d'interrogation (?) apparat dans le coin suprieur droit de l'inspecteur.

EXTENSION DE DREAMWEAVER CS4 228


Inspecteurs Proprits

7 Dreamweaver appelle la fonction inspectSelection() pour runir des informations sur la slection en cours et

renseigner les champs de l'inspecteur.


8 Les gestionnaires d'vnements associs aux champs dans l'interface de l'inspecteur Proprits s'excutent au fur et

mesure que l'utilisateur les rencontre. Par exemple, vous pouvez avoir un vnement onBlur qui appelle la fonction setAttribute() pour dfinir un attribut selon la valeur saisie par l'utilisateur.

Exemple simple d'inspecteur Proprits


L'inspecteur Proprits suivant inspecte la balise marquee, rserve Microsoft Internet Explorer. L'exemple vous permet de dfinir la valeur de l'attribut direction dans l'inspecteur Proprits. Pour dfinir la valeur des autres attributs de la balise marquee, servez-vous de cet exemple comme d'un modle. Pour crer cette extension, vous devez crer l'interface utilisateur, crire le code JavaScript, crer l'image et tester.

Cration de l'interface utilisateur


Vous crez un fichier HTML contenant un formulaire, qui s'affiche dans l'inspecteur Proprits.
1 Crez un document vierge. 2 Sur la premire ligne du fichier, ajoutez le commentaire suivant, qui identifie l'inspecteur Proprits :
<!-- tag:MARQUEE,priority:9,selection:exact,vline,hline -->

3 Pour spcifier le titre du document et le fichier JavaScript crer, insrez le code suivant aprs le commentaire :
<HTML> <HEAD> <TITLE>Marquee Inspector</TITLE> <SCRIPT src="marquee.js"></SCRIPT> </HEAD> <BODY> </BODY> </HTML>

4 Pour indiquer les lments qui s'affichent dans l'inspecteur Proprits, insrez le code suivant entre les balises body

d'ouverture et de fermeture :

EXTENSION DE DREAMWEAVER CS4 229


Inspecteurs Proprits

<!-- Specify the image that will appear in the Property inspector --> <SPAN ID="image" STYLE="position:absolute; width:23px; height:17px; z-index:16; left: 3px; top: 2px"> <IMG SRC="marquee.png" WIDTH="36" HEIGHT="36" NAME="marqueeImage"> </SPAN> <SPAN ID="label" STYLE="position:absolute; width:23px; height:17px; z-index:16; left: 44px; top: 5px">Marquee</SPAN> <!-- If your form fields are in different AP elements, you must create a separate form inside each AP element and reference it as shown in the inspectSelection() and setInterjectionTag() functions. --> <SPAN ID="topLayer" STYLE="position:absolute; z-index:1; left: 125px; top: 3px; width: 431px; height: 32px"> <FORM NAME="topLayerForm"> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"> <TR> <TD VALIGN="baseline" ALIGN="right">Direction:</TD> <TD VALIGN="baseline" ALIGN="right"> <SELECT NAME="marqDirection" STYLE="width:86" onChange="setMarqueeTag()"> <OPTION VALUE="left">Left</OPTION> <OPTION VALUE="right">Right</OPTION> </SELECT> </TR> </TABLE> </FORM> </SPAN>

5 Enregistrez le fichier sous le nom marquee.htm dans le dossier Configuration/Inspectors.

Ecriture du code JavaScript


Vous devez ajouter des fonctions JavaScript pour vous assurer qu'il sera possible d'inspecter la slection, pour inspecter la slection et pour entrer les valeurs appropries depuis l'inspecteur Proprits.
1 Crez un document vierge. 2 Pour spcifier que l'inspecteur Proprits s'affiche lorsque la slection contient la balise marquee, ajoutez la

fonction suivante :
function canInspectSelection(){ return true; }

3 Pour actualiser la valeur de l'attribut direction qui s'affiche dans le champ de texte, ajoutez la fonction suivante

en fin de fichier :

EXTENSION DE DREAMWEAVER CS4 230


Inspecteurs Proprits

function inspectSelection(){ // Get the DOM of the current document. var theDOM = dw.getDocumentDOM(); // Get the selected node. var theObj = theDOM.getSelectedNode(); // Get the value of the DIRECTION attribute on the MARQUEE tag. var theDirection = theObj.getAttribute('direction'); // Initialize a variable for the DIRECTION attribute to -1. // This is used to store the menu index that corresponds to // the value of the attribute. // var typeIndex = -1; var directionIndex = -1; // If there was a DIRECTION attribute... if (theDirection){ // If the value of DIRECTION is "left", set typeIndex to 0. if (theDirection.toLowerCase() == "left"){ directionIndex = 0; // If the value of DIRECTION is "right", set typeIndex to 1. }else if (theDirection.toLowerCase() == "right"){ directionIndex = 1; } } // If the value of the DIRECTION attribute was "left" // or "right", choose the corresponding // option from the pop-up menu in the interface. if (directionIndex != -1){ document.topLayer.document.topLayerForm.marqDirection.selectedIndex = directionIndex; } }

4 Pour extraire la slection actuelle et afficher dans la zone de texte de l'inspecteur Proprits la valeur de l'attribut
direction, ajoutez la fonction suivante en fin de fichier : function setMarqueeTag(){ // Get the DOM of the current document. var theDOM = dw.getDocumentDOM(); // Get the selected node. var theObj = theDOM.getSelectedNode(); // Get the index of the selected option in the pop-up menu // in the interface. var directionIndex = document.topLayer.document.topLayerForm.marqDirection.selectedIndex; // Get the value of the selected option in the pop-up menu // in the interface. var theDirection = document.topLayer.document.topLayerForm.marqDirection. options[directionIndex].value; // Set the value of the direction attribute to theDirection. theObj.setAttribute('direction',theDirection); }

5 Enregistrez le fichier sous le nom marquee.js dans le dossier Configuration/Inspectors.

EXTENSION DE DREAMWEAVER CS4 231


Inspecteurs Proprits

Cration de l'image
Le cas chant, vous pouvez crer l'image qui s'affiche dans l'inspecteur Proprits.
1 Crez une image de 36 pixels de large sur 36 pixels de haut. 2 Enregistrez l'image sous le nom marquee.gif dans Configuration/Inspectors.

En rgle gnrale, vous pouvez enregistrer les images associes aux inspecteurs Proprits dans tout format pris en charge par Dreamweaver.

Test de l'inspecteur Proprits


Vous pouvez enfin tester l'inspecteur Proprits.
1 Redmarrez Dreamweaver. 2 Crez une page HTML ou ouvrez une page HTML existante. 3 Ajoutez le code suivant dans la section body de la page :
<MARQUEE></MARQUEE>

4 Affichez en surbrillance le texte que vous venez d'ajouter.

L'inspecteur Proprits que vous avez cr pour la balise marquee apparat.


5 Entrez la valeur de l'attribut direction dans l'inspecteur Proprits.

La balise affiche sur votre page est modifie ; elle inclut prsent l'attribut direction et la valeur entre dans l'inspecteur Proprits.

Fonctions de l'API de l'inspecteur Proprits


Deux des fonctions de l'API de l'inspecteur Proprits (canInspectSelection() et inspectSelection()) sont obligatoires.

canInspectSelection()
Description Dtermine si l'inspecteur Proprits est appropri pour la slection en cours. Arguments Aucun. Remarque : Utilisez dom.getSelectedNode() pour obtenir la slection en cours en tant qu'objet JavaScript (pour plus d'informations sur dom.getSelectedNode(), voir le Guide des API de Dreamweaver). Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si l'inspecteur peut inspecter la slection actuelle et false dans le cas contraire.

EXTENSION DE DREAMWEAVER CS4 232


Inspecteurs Proprits

Exemple L'instance suivante de la fonction canInspectSelection() renvoie la valeur true si la slection contient l'attribut CLASSID et si la valeur de cet attribut est "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" (l'ID de classe pour Adobe Flash Player) :
function canInspectSelection(){3 var theDOM = dw.getDocumentDOM(); var theObj = theDOM.getSelectedNode(); return (theObj.nodeType == Node.ELEMENT_NODE && theObj.hasAttribute("classid") && theObj.getAttribute("classid").toLowerCase()== "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"); }

displayHelp()
Description Si cette fonction est dfinie, une icne en forme de point d'interrogation (?) apparat dans le coin suprieur droit de l'inspecteur Proprits. Cette fonction est appele lorsque l'utilisateur clique sur l'icne. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple L'occurrence suivante de displayHelp() ouvre un fichier dans une fentre du navigateur. Ce fichier explique les champs de l'inspecteur Proprits :
function displayHelp(){ dw.browseDocument('http://www.hooha.com/dw/inspectors/inspHelp.html'); }

inspectSelection()
Description Actualise le contenu des zones de texte en fonction des attributs de la slection en cours. Arguments maxOrMin

L'argument maxOrMin est max ou min, selon que l'inspecteur Proprits est en tat dvelopp ou compress.
Valeurs renvoyes Dreamweaver ne renvoie rien.

EXTENSION DE DREAMWEAVER CS4 233


Inspecteurs Proprits

Exemple L'occurrence suivante de la fonction inspectSelection() rcupre la valeur de l'attribut content et l'utilise pour remplir un champ de formulaire appel keywords :
function inspectSelection(){ var dom = dreamweaver.getDocumentDOM(); var theObj = dom.getSelectedNode(); document.forms[0].keywords.value = theObj.getAttribute("content"); }

234

Chapitre 15 : Panneaux flottants


Vous pouvez crer des panneaux flottants ou des inspecteurs sans tre soumis aux contraintes de taille et de disposition des inspecteurs Proprits. Pour dfinir les proprits de la slection actuelle, vous devez de prfrence opter pour un inspecteur Proprits personnalis. Toutefois, les panneaux flottants personnaliss offrent davantage de place et de flexibilit pour l'affichage d'informations au sujet du document entier ou de slections multiples. Vous pouvez crer et ajouter vos propres panneaux au menu Fentre. Pour plus d'informations sur l'ajout d'lments au systme de menus, voir Menus et commandes de menu la page 150. Le tableau ci-dessous rpertorie les fichiers utiliss pour crer un panneau flottant :
Chemin Configuration/Floaters/ Fichier nom_panneau.htm Description Spcifie le texte qui s'affiche dans la barre de titre du panneau flottant, dfinit ce dernier et contient les fonctions JavaScript requises. Ajoute une commande un menu.

Configuration/Menus/

menus.xml

Fonctionnement des fichiers de panneau flottant


Les fichiers de panneaux flottants personnaliss sont des fichiers HTML qui rsident dans le dossier Configuration/Floaters du dossier de l'application La section body d'un fichier de panneau flottant contient un formulaire HTML. Des gestionnaires d'vnements associs aux lments du formulaire peuvent appeler un code JavaScript pour effectuer des modifications arbitraires dans le document actif. Dreamweaver possde plusieurs panneaux flottants intgrs accessibles depuis le menu Fentre. Ces panneaux intgrs font partie du code principal de Dreamweaver ; vous ne trouverez donc pas de fichier de panneau flottant leur correspondant dans le dossier Configuration/Floaters. Les panneaux flottants personnaliss peuvent tre dplacs, redimensionns et leurs onglets combins, l'instar des panneaux flottants intgrs Dreamweaver. Les panneaux flottants personnaliss prsentent les diffrences suivantes par rapport aux panneaux flottants intgrs :

Les panneaux flottants personnaliss s'affichent en gris par dfaut. La dfinition de l'attribut bgcolor dans la balise
body n'a aucun effet.

Tous les panneaux flottants s'affichent au-dessus de la fentre de document ou flottent derrire elle quand ils sont
inactifs. L'endroit o les panneaux flottants sont affichs dpend du rglage de l'option Toutes autres palettes, dfini dans les Prfrences de panneaux. Les fichiers de panneau flottant diffrent galement des autres fichiers d'extension. Contrairement aux autres fichiers d'extension, Dreamweaver ne charge pas de fichiers de panneau flottant en mmoire au dmarrage, sauf si les panneaux flottants taient affichs la dernire fois que Dreamweaver a t ferm. Si les panneaux flottants ne sont pas visibles lorsque Dreamweaver est ferm, tablissez une rfrence partir d'une des fonctions suivantes pour charger les fichiers qui dfinissent les panneaux.

dreamweaver.getFloaterVisibility() dreamweaver.setFloaterVisibility()

EXTENSION DE DREAMWEAVER CS4 235


Panneaux flottants

dreamweaver.toggleFloater()

Pour plus d'informations sur ces fonctions, voir le Guide des API de Dreamweaver. Lorsque l'un des fichiers du dossier Configuration appelle les fonctions dw.getFloaterVisibility(floaterName), dw.setFloaterVisibility(floaterName) ou dw.toggleFloater(floaterName), les vnements suivants se produisent :
1 Si l'argument ne correspond pas l'un des noms de panneau flottant rservs, Dreamweaver recherche dans le

dossier Configuration/Floaters un fichier nomm floaterName.htm. Pour obtenir une liste complte des noms de panneau flottant rservs, voir la fonction dreamweaver.getFloaterVisibility() dans le Guide des API de Dreamweaver. Si floaterName.htm est introuvable, Dreamweaver recherche floaterName.html. Si aucun fichier de ce nom n'est trouv, aucun autre vnement ne se produit.
2 Lorsque le fichier de panneau flottant est charg pour la premire fois, la fonction initialPosition() est appele,

si elle a t dfinie, afin de dterminer la position par dfaut du panneau flottant sur l'cran. De mme, la fonction
initialTabs() est appele, si elle a t dfinie, afin de dterminer le regroupement par dfaut des onglets du

panneau flottant.
3 Les fonctions selectionChanged() et documentEdited() sont appeles, car il est suppos que des modifications

ont t apportes pendant que le panneau flottant tait masqu.


4 Lorsque le panneau flottant est visible, les vnements suivants se produisent :

Lorsqu'un lment diffrent est slectionn, la fonction selectionChanged() est appele, si elle est dfinie. Lorsque l'utilisateur modifie le document, la fonction documentEdited() est appele, si elle est dfinie. Les gestionnaires d'vnements associs aux champs dans l'interface de panneau flottant s'excutent au fur et
mesure que l'utilisateur les rencontre. Par exemple, un bouton associ un gestionnaire d'vnements onClick excutant dw.getDocumentDOM().body.innerHTML='' a pour effet, lorsque l'utilisateur clique dessus, de supprimer tous les lments situs entre les balises body de dbut et de fin dans le document. Les panneaux flottants grent deux vnements spciaux relatifs la balise body : onShow() et onHide().
5 Lorsque l'utilisateur quitte Dreamweaver, la visibilit, la position et le groupement d'onglets actuellement dfinis

pour le panneau flottant sont enregistrs. Au dmarrage suivant, l'application Dreamweaver charge les fichiers de panneau flottant correspondant tous les panneaux flottants qui taient affichs au moment de la dernire fermeture de l'application. Elle affiche les panneaux flottants au mme endroit et avec le mme groupement d'onglets.

Exemple de panneau flottant simple


Cet exemple implique la cration de l'extension Script Editor, qui gnre un panneau flottant pour afficher le code JavaScript inhrent un marqueur de script slectionn en mode Cration. L'diteur de script affiche le code JavaScript dans l'lment textarea d'un formulaire HTML, dfini dans un panneau flottant nomm scriptlayer. Si vous apportez des modifications au code slectionn dans le panneau flottant, l'extension appelle la fonction updateScript() pour enregistrer vos modifications. Si vous n'avez pas slectionn de marqueur de script lorsque vous invoquez l'diteur de script, l'extension affiche (no script selected) dans un panneau flottant nomm blanklayer. Pour crer cette extension, vous devez crer des panneaux flottants, rdiger du code JavaScript et crer un lment de menu.

EXTENSION DE DREAMWEAVER CS4 236


Panneaux flottants

Cration des panneaux flottants


Le dbut du fichier HTML de cette extension comporte les informations d'en-tte de document standard et une balise title qui inscrit les mots Script Editor dans la barre de titre des panneaux flottants. Cration de l'en-tte du fichier HTML 1 Crez un document vierge.
2 Entrez le code suivant :
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Script Editor</title> <script language="JavaScript">

L'extension dfinit deux panneaux flottants qui affichent soit le message (no script selected) si l'utilisateur n'a pas slectionn de marqueur de script ou le code JavaScript inhrent un marqueur de script slectionn. Le code suivant dfinit ces deux panneaux flottants, ou lment PA ( positionnement absolu), nomms blanklayer et scriptlayer : Cration des deux panneaux flottants 1 Ajoutez le code suivant aprs l'en-tte dans le fichier HTML :
<body> <div id="blanklayer" style="position:absolute; width:422px; height:181px; z-index:1; left: 8px; top: 11px; visibility: hidden"> <center> <br> <br> <br> <br> <br> (no script selected) </center> </div> <div id="scriptlayer" style="position:absolute; width:422px; height:181px; z-index:1; left: 8px; top: 11px; visibility: visible"> <form name="theForm"> <textarea name="scriptCode" cols="80" rows="20" wrap="VIRTUAL" onBlur="updateScript()"></textarea> </form> </div> </body> </html>

2 Enregistrez le fichier sous le nom scriptEditor.htm dans le dossier Configuration/Floaters.

EXTENSION DE DREAMWEAVER CS4 237


Panneaux flottants

Les deux balises div utilisent l'attribut style pour spcifier la position (absolute), la taille (width:422px et height:181px) et le paramtre visibility par dfaut (visible) des panneaux flottants. Le panneau blanklayer utilise l'attribut center ainsi qu'une srie de balises de saut de ligne (br) pour positionner le texte au centre du panneau. Le panneau scriptlayer cre un formulaire contenant une balise textarea unique pour afficher le code JavaScript slectionn. La balise textarea spcifie galement que, lorsque survient un vnement onBlur indiquant une modification du code slectionn, la fonction updateScript() est appele pour crire nouveau le texte modifi dans le document.

Ecriture du code JavaScript


Le code JavaScript pour l'diteur de script consiste en un panneau flottant appel par Dreamweaver, selectionchanged(), et une fonction dfinie par l'utilisateur, updateScript(). selectionChanged(): avez-vous slectionn un marqueur de script ? La fonction selectionChanged() dtermine si un marqueur de script a t slectionn en mode Cration. Un marqueur de script s'affiche en mode Cration si une routine JavaScript est prsente dans la section body d'un document et si Scripts est slectionn dans la section Elments invisibles de la bote de dialogue Prfrences. La figure suivante reprsente une icne de marqueur de script :

La fonction selectionChanged() commence par appeler la fonction dw.getDocumentDOM() pour obtenir le DOM (modle d'objet de document) du document de l'utilisateur. Elle appelle ensuite la fonction getSelectedNode() pour voir si le nud slectionn pour ce document est un lment, mais galement une balise SCRIPT. Si ces deux conditions sont runies, la fonction selectionChanged() rend visible le panneau flottant scripteditor et le charge avec le code JavaScript inhrent. Elle rgle galement la proprit visibility du panneau flottant blanklayer sur la valeur hidden. La figure suivante reprsente le panneau flottant scriptlayer avec le code JavaScript slectionn :

EXTENSION DE DREAMWEAVER CS4 238


Panneaux flottants

Si le nud slectionn n'est pas un lment ou qu'il ne s'agit pas d'une balise script, la fonction selectionChanged() rend visible le panneau flottant blanklayer et cache le panneau scriptlayer. Le panneau flottant blanklayer affiche le texte (no script selected), comme indiqu par la figure suivante :

Ajout de la fonction selectionChanged() 1 Ouvrez le fichier scriptEditor.htm dans le dossier Configuration/Floaters.


2 Entrez le code suivant dans la section en-tte du fichier.
function selectionChanged(){ /* get the selected node */ var theDOM = dw.getDocumentDOM(); var theNode = theDOM.getSelectedNode(); /* check to see if the node is a script marker */ if (theNode.nodeType == Node.ELEMENT_NODE && theNode.tagName == "SCRIPT"){ document.layers['scriptlayer'].visibility = 'visible'; document.layers['scriptlayer'].document.theForm. scriptCode.value = theNode.innerHTML; document.layers['blanklayer'].visibility = 'hidden'; }else{ document.layers['scriptlayer'].visibility = 'hidden'; document.layers['blanklayer'].visibility = 'visible'; } }

3 Enregistrez le fichier.

updateScript(): criture des modifications La fonction updateScript() crit nouveau le script slectionn lorsqu'un vnement onBlur survient dans la zone textarea du panneau scriptlayer. L'lment de formulaire textarea contient le code JavaScript et l'vnement onBlur se produit lorsque textarea n'est plus la zone slectionne.
1 Ouvrez le fichier scriptEditor.htm dans le dossier Configuration/Floaters. 2 Entrez le code suivant dans la section en-tte du fichier.

EXTENSION DE DREAMWEAVER CS4 239


Panneaux flottants

/* update the document with any changes made by the user in the textarea */ function updateScript(){ var theDOM = dw.getDocumentDOM(); var theNode = theDOM.getSelectedNode(); theNode.innerHTML = document.layers['scriptlayer'].document. theForm.scriptCode.value; } </script> </head>

3 Enregistrez le fichier.

Cration d'un lment de menu


Il ne suffit pas d'enregistrer le code d'diteur de script dans le dossier Configuration/Floaters. Vous devez galement appeler la fonction dw.setFloaterVisibility('scriptEditor',true) ou la fonction dw.toggleFloater('scriptEditor') pour charger et rendre visible le panneau flottant. L'emplacement le plus logique pour invoquer l'diteur de script est le menu Fentre, dfini dans le fichier menus.xml. Vous devez crer la balise menuitem, qui gnre une entre pour l'extension d'diteur de script dans le menu Fentre, comme indiqu dans la figure suivante :

Si vous slectionnez un marqueur de script en mode Cration pour le document en cours, puis que vous slectionnez l'lment de menu d'diteur de script, le panneau flottant d'diteur de script est appel et le code JavaScript inhrent au marqueur de script s'affiche. Si vous slectionnez l'lment de menu lorsque aucun marqueur de script n'a t slectionn, le panneau blanklayer contenant le texte (no script selected) s'affiche.
1 Ouvrez le fichier menus.xml, qui rside dans le dossier Configuration/Menus. 2 Localisez la balise dbutant par <menuitem name="Tile _Vertically" et placez le point d'insertion aprs le

symbole /> de fermeture de la balise.


3 Insrez le code suivant sur une nouvelle ligne :
<menuitem name="Script Editor" enabled="true" command="dw.toggleFloater('scriptEditor')" checked="dw.getFloaterVisibility('scriptEditor')" />

4 Enregistrez le fichier.

Fonctions de l'API du panneau flottant


Toutes les fonctions personnalises de l'API de panneau flottant sont facultatives.

EXTENSION DE DREAMWEAVER CS4 240


Panneaux flottants

Certaines fonctions de cette section ne fonctionnent que sous Windows. Leur description indique si tel est le cas.

displayHelp()
Description Si cette fonction est dfinie, un bouton Aide s'affiche sous les boutons OK et Annuler dans la bote de dialogue. Cette fonction est appele lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple
// the following instance of displayHelp() opens // in a browser a file that explains how to use // the extension. function displayHelp(){ var myHelpFile = dw.getConfigurationPath() + '/ExtensionsHelp/superDuperHelp.htm'; dw.browseDocument(myHelpFile); }

documentEdited()
Description Cette fonction est appele lorsque le panneau flottant s'affiche et une fois que la srie de modifications en cours est termine, ce qui signifie que plusieurs modifications peuvent tre effectues avant que cette fonction ne soit appele. Cette fonction ne doit tre dfinie que si le panneau flottant doit assurer le suivi des modifications apportes au document. Remarque : Ne dfinissez la fonction documentEdited() que si vous en avez besoin, car elle a un impact sur les performances. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple Dans l'exemple suivant, la fonction documentEdited() recherche des lments PA dans le document et met jour un champ de texte affichant le nombre d'lments PA du document :

EXTENSION DE DREAMWEAVER CS4 241


Panneaux flottants

function documentEdited(){ /* create a list of all the AP elements in the document */ var theDOM = dw.getDocumentDOM(); var layersInDoc = theDOM.getElementsByTagName("layer"); var layerCount = layersInDoc.length; /* update the numOfLayers field with the new layercount */ document.theForm.numOfLayers.value = layerCount; }

getDockingSide()
Disponibilit Dreamweaver MX. Description Indique o vous pouvez ancrer les panneaux flottants. Cette fonction renvoie une chane contenant une combinaison des mots left, right, top et bottom ( savoir, gauche, droite, en haut et en bas). Vous pouvez ancrer le panneau flottant sur le ct indiqu dans la chane. Si aucune indication n'apparat, vous ne pouvez pas ancrer de panneau flottant. Cette fonction vous permet d'interdire l'ancrage de certains panneaux sur un ct spcifique de l'espace de travail de Dreamweaver ou sur un autre panneau. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une chane contenant les mots left, right, top ou bottom, ou une combinaison de ces mots indiquant o il peut ancrer le panneau flottant. Exemple
getDockingSide() { return dock_side = "left top"; }

initialPosition()
Description Dtermine la position initiale du panneau flottant lorsqu'il est appel pour la premire fois. Si cette fonction n'est pas dfinie, la position par dfaut est le centre de l'cran. Arguments platform

L'argument platform a la valeur "Mac" ou "Win", selon la plate-forme de l'utilisateur.


Valeurs renvoyes Dreamweaver attend une chane au format "leftPosInPixels,topPosInPixels".

EXTENSION DE DREAMWEAVER CS4 242


Panneaux flottants

Exemple Dans l'exemple suivant, la fonction initialPosition() spcifie que lorsque le panneau flottant s'affiche pour la premire fois, il doit se trouver 420 pixels du ct gauche de l'cran et 20 pixels du haut de l'cran sous Windows ou 390 pixels du ct gauche et 20 pixels du haut de l'cran sur Macintosh :
function initialPosition(platform){ var initPos = "420,20"; if (platform == "macintosh"){ initPos = "390,20"; } return initPos; }

initialTabs()
Description Dtermine les autres panneaux flottants dont les onglets sont combins ceux de ce panneau, lorsqu'il s'affiche pour la premire fois. Si l'un des panneaux flottants rpertoris s'est affich prcdemment, il n'est pas inclus dans le groupement d'onglets. Pour que les onglets de deux panneaux flottants personnaliss soient combins, chacun d'eux doit rfrencer l'autre dans sa fonction initialTabs(). Arguments Aucun. Valeurs renvoyes Dreamweaver attend une chane au format "floaterName1,floaterName2,...floaterNameN". Exemple Dans l'exemple suivant, la fonction initialTabs() spcifie que lorsque le panneau flottant s'affiche pour la premire fois, ses onglets doivent tre combins ceux du panneau flottant scriptEditor :
function initialTabs(){ return "scriptEditor"; }

isATarget()
Disponibilit Dreamweaver MX (sous Windows uniquement) Description Dtermine si d'autres panneaux peuvent s'ancrer ce panneau flottant. Si la fonction isATarget() n'est pas spcifie, Dreamweaver empche les autres panneaux de s'ancrer celui-ci. Dreamweaver appelle cette fonction lorsque l'utilisateur essaie de combiner ce panneau avec d'autres. Arguments Aucun.

EXTENSION DE DREAMWEAVER CS4 243


Panneaux flottants

Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si d'autres panneaux flottants peuvent s'accrocher celui-ci et false dans le cas contraire. Exemple
isATarget() { return true; }

isAvailableInCodeView()
Description Dtermine si le panneau flottant doit tre activ lorsque le mode Code est slectionn. Si cette fonction n'est pas dfinie, le panneau flottant est dsactiv en mode Code. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si le panneau flottant doit tre activ en mode Code, false dans le cas contraire.

isResizable()
Disponibilit Dreamweaver 4. Description Dtermine si l'utilisateur peut redimensionner le panneau flottant. Si cette fonction n'est pas dfinie, ou si elle renvoie la valeur true, l'utilisateur peut redimensionner le panneau flottant. Si la fonction renvoie la valeur false, l'utilisateur ne peut pas redimensionner le panneau flottant. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si l'utilisateur peut redimensionner le panneau flottant et false dans le cas contraire. Exemple Dans l'exemple suivant, l'utilisateur ne peut pas redimensionner le panneau flottant :
function isResizable() { return false; }

EXTENSION DE DREAMWEAVER CS4 244


Panneaux flottants

selectionChanged()
Description Appele lorsque le panneau flottant s'affiche et chaque changement de slection (lorsqu'un nouveau document devient actif ou lorsque le point d'insertion passe un nouvel emplacement dans le document actif). Cette fonction ne doit tre dfinie que si le panneau flottant doit assurer le suivi de la slection. Remarque : Ne dfinissez la fonction selectionChanged() que si vous en avez absolument besoin, car elle a un impact sur les performances. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple Dans l'exemple suivant, la fonction selectionChanged() affiche un lment PA diffrent dans le panneau flottant selon que la slection est un marqueur de script. Si la slection est un marqueur de script, Dreamweaver rend l'lment PA de scriptlayer visible. Sinon, Dreamweaver rend l'lment PA de blanklayer visible.
function selectionChanged(){ /* get the selected node */ var theDOM = dw.getDocumentDOM(); var theNode = theDOM.getSelectedNode(); /* check to see if the node is a script marker */ if (theNode.nodeType == Node.ELEMENT_NODE && theNode.tagName == "SCRIPT"){ document.layers['blanklayer'].visibility = 'hidden'; document.layers['scriptlayer'].visibility = 'visible';} else{ document.layers['scriptlayer'].visibility = 'hidden'; document.layers['blanklayer'].visibility = 'visible'; } }

A propos des performances


La dclaration des fonctions selectionChanged() ou documentEdited() dans vos panneaux flottants personnaliss risque d'avoir des rpercussions ngatives sur les performances de Dreamweaver. Cela est d au fait que les fonctions documentEdited() et selectionChanged() sont appeles aprs chaque frappe d'une touche et chaque clic de la souris si Dreamweaver est rest inactif plus d'un dixime de seconde. Il est important de tester votre panneau flottant avec divers scnarios, en utilisant des documents volumineux (100 Ko ou plus de code HTML) autant que possible. Afin d'viter les pnalits de performances, utilisez la fonction setTimeout(). Comme dans les navigateurs, la fonction setTimeout() emploie deux arguments : le code JavaScript devant tre appel et le dlai d'attente avant cet appel en millisecondes. La mthode setTimeout() vous permet d'introduire dans votre traitement des pauses au cours desquelles l'utilisateur peut poursuivre son interaction avec l'application. Vous devez incorporer ces pauses de faon explicite tant donn que l'cran se fige pendant le traitement des scripts et, par consquent, vous empche d'effectuer d'autres modifications (et de mettre jour l'interface ou le panneau flottant).

EXTENSION DE DREAMWEAVER CS4 245


Panneaux flottants

L'exemple suivant correspond un panneau flottant qui affiche des informations sur chacun des lments PA du document. Il utilise la mthode setTimeout() pour faire une pause d'une demi-seconde aprs le traitement de chaque lment AP.
/* create a flag that specifies whether an edit is being processed, and set it to false.*/ document.running = false; /* this function called when document is edited */ function documentEdited(){ /* create a list of all the AP elements to be processed */ var dom = dw.getDocumentDOM(); document.layers = dom.getElementsByTagName("layer"); document.numLayers = document.layers.length; document.numProcessed = 0; /* set a timer to call processLayer(); if we didn't get * to finish processing the previous edit, then the timer * is already set. */ if (document.running = false){ setTimeout("processLayer()", 500); } /* set the processing flag to true */ document.running = true; } /* process one AP element*/ function processLayer(){ /* display information for the next unprocessed AP element. displayLayer() is a function you would write to perform the "magic".0*/ displayLayer(document.layers[document.numProcessed]); /* if there's more work to do, set a timeout to process * the next layer.0.If we're finished, set the document.running * flag to false. */ document.numProcessed = document.numProcessed + 1; if (document.numProcessed < document.numLayers){ setTimeout("processLayer()", 500); }else{ document.running = false; } }

246

Chapitre 16 : Comportements
Le terme comportement dsigne la combinaison d'un vnement et d'une action. Par exemple, onClick, onLoad et onSubmit sont des vnements. Vrifier le plug-in, Atteindre l'URL et Permuter une image sont pour leur part des actions. Le navigateur dtermine quels lments HTML acceptent quels vnements. Les fichiers rpertoriant les vnements que chaque navigateur prend en charge sont stocks dans le dossier Configuration/Behaviors/Events du dossier de l'application Adobe Dreamweaver La section body d'un fichier Action contient gnralement un formulaire HTML. Ce formulaire accepte les paramtres de l'action (par exemple, des paramtres qui indiquent quels lments positionnement absolu doivent tre affichs ou masqus). La section head d'un fichier Action contient des fonctions JavaScript qui traitent l'entre de formulaire depuis le contenu de la section body. Elles contrlent galement les fonctions, arguments et gestionnaires d'vnement qui sont insrs dans le document d'un utilisateur. Vous pouvez rdiger des actions de comportement pour partager des fonctions avec d'autres utilisateurs ou insrer plusieurs reprises une mme fonction JavaScript. Veillez modifier les paramtres chaque fois. Remarque : Vous ne pouvez pas utiliser les comportements pour insrer directement des fonctions VBScript. Vous pouvez toutefois ajouter indirectement une fonction VBScript en modifiant le modle d'objet de document (DOM) dans la fonction applyBehavior(). Le tableau ci-dessous numre les fichiers utiliss pour crer des actions de comportement :
Chemin Configuration/Behaviors/Actions/ Fichier Description

action_comportemen La section body du fichier contient un formulaire t.htm HTML destin aux paramtres de l'action. La section head du fichier contient les fonctions JavaScript.

Remarque : Pour plus d'informations sur les comportements de serveur qui offrent une fonctionnalit d'application Web, consultez la section Comportements de serveur la page 259.

Fonctionnement des comportements


Lorsqu'un utilisateur slectionne un lment HTML dans un document Dreamweaver et clique sur le bouton Plus (+) dans le panneau Comportements, les vnements suivants se produisent :
1 Dreamweaver appelle la fonction canAcceptBehavior() dans chaque fichier d'action pour vrifier si l'action est

adapte au document ou l'lment slectionn. Si cette fonction renvoie la valeur false, Dreamweaver estompe l'action dans le menu droulant des actions. Par exemple, l'action Contrler Shockwave ou Flash est estompe lorsque le document de l'utilisateur ne contient pas de fichiers SWF. Si la valeur renvoye est une liste d'vnements, Dreamweaver les compare un un aux vnements valides de l'lment HTML actuellement slectionn et du navigateur cible jusqu' ce qu'une correspondance soit trouve. Dreamweaver ajoute au menu droulant Evnements l'vnement correspondant, extrait de la fonction canAcceptBehavior() en tte de liste. Si aucune correspondance n'est tablie, l'vnement associ par dfaut l'lment HTML (marqu d'un astrisque [*]) dans le fichier d'vnements) est plac en tte de liste. Les autres vnements du menu sont assembls partir du fichier d'vnements.
2 L'utilisateur slectionne une action dans le menu droulant des actions.

EXTENSION DE DREAMWEAVER CS4 247


Comportements

3 Dreamweaver appelle la fonction windowDimensions() pour dterminer la taille de la bote de dialogue des

paramtres. Si la fonction windowDimensions() n'est pas dfinie, la taille est dtermine automatiquement. Une bote de dialogue s'affiche toujours, les boutons OK et Annuler figurant sur le ct droit, quel que soit le contenu de l'lment body.
4 Dreamweaver affiche une bote de dialogue contenant les lments BODY du fichier d'action. Si la balise body du

fichier d'action contient un gestionnaire onLoad, Dreamweaver l'excute.


5 L'utilisateur entre les paramtres de l'action. Dreamweaver excute les gestionnaires d'vnements associs aux

champs du formulaire au fur et mesure que l'utilisateur les rencontre.


6 L'utilisateur clique sur OK. 7 Dreamweaver appelle les fonctions behaviorFunction() et applyBehavior() dans le fichier d'action

slectionn. Ces fonctions renvoient des chanes qui sont insres dans le document de l'utilisateur.
8 Si l'utilisateur double-clique sur l'action dans la colonne Actions, Dreamweaver rouvre la bote de dialogue des

paramtres et excute le gestionnaire onLoad. Dreamweaver appelle alors la fonction inspectBehavior() dans le fichier d'action slectionn, ce qui a pour effet de renseigner les champs l'aide des donnes que l'utilisateur a entres prcdemment.

Insertion de fonctions multiples dans le fichier de l'utilisateur


Les actions peuvent insrer plusieurs fonctions (la fonction de comportement principale et un nombre illimit de fonctions d'assistance) dans la section head. Plusieurs comportements peuvent mme partager des fonctions d'assistance, condition que les fonctions soient dfinies exactement de la mme faon dans chaque fichier d'action. Une faon de garantir que les fonctions partages sont identiques consiste stocker chaque fonction d'assistance dans un fichier JavaScript externe et insrer ce dernier dans les fichiers d'action appropris l'aide de <SCRIPT SRC="externalFile.js">. Lorsque l'utilisateur supprime un comportement, Dreamweaver tente de supprimer toutes les fonctions d'assistance inutilises associes ce comportement. Si d'autres comportements utilisent une fonction d'assistance, celle-ci n'est pas supprime. En raison de l'extrme prudence de l'algorithme de suppression des fonctions d'assistance, Dreamweaver peut occasionnellement laisser une fonction inutilise dans le document de l'utilisateur.

Traitement des actions exigeant une valeur en retour


Il peut arriver qu'un gestionnaire d'vnements exige une valeur renvoye (par exemple, onMouseOver="window.status='This is a link'; return true"). Toutefois, si Dreamweaver insre l'action "return behaviorName(args)" dans le gestionnaire d'vnements, les comportements figurant plus loin dans la liste sont ignors. Pour contourner cette limitation, affectez la valeur de retour souhaite la variable document.MM_returnValue, dans la chane renvoye par la fonction behaviorFunction(). Ce paramtrage entrane l'insertion par Dreamweaver de return document.MM_returnValue la fin de la liste des actions du gestionnaire d'vnements. Pour consulter un exemple d'utilisation de la variable MM_returnValue, voir le fichier Validate Form.js, qui rside dans le dossier Configuration/Behaviors/Actions au sein du dossier de l'application Dreamweaver.

EXTENSION DE DREAMWEAVER CS4 248


Comportements

Exemple de comportement simple


Pour mieux comprendre le fonctionnement des comportements et la faon de le crer, il peut tre utile d'examiner un exemple. Le dossier Configuration/Behaviors/Actions, qui rside au sein du dossier de l'application Dreamweaver, contient des exemples. La plupart d'entre eux sont cependant trs complexes. Cet exemple est plus simple, vous permettant ainsi de vous familiariser avec la cration de comportements. Le fichier d'action le plus simple pour commencer est Call JavaScript.htm (avec son homologue, Call JavaScript.js, qui contient toutes les fonctions JavaScript). Pour crer le comportement, crez une extension, crez les fichiers HTML consulter, puis testez le comportement.

Cration de l'extension de comportement


Le code suivant prsente un exemple relativement simple. Le code vrifie la marque du navigateur. Le code ouvre une page si le navigateur est Netscape Navigator et une autre s'il s'agit de Microsoft Internet Explorer. Ce code peut facilement tre tendu pour vrifier d'autres types de navigateurs (tels qu'Opera et WebTV) et modifi pour excuter d'autres actions que l'action d'atteindre des URL.
1 Crez un document vierge. 2 Insrez le code suivant dans le fichier :
<!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//dialog"> <html> <head> <title>behavior "Check Browser Brand"</title> <meta http-equiv="Content-Type" content="text/html"> <script language="JavaScript"> // The function that will be inserted into the // HEAD of the user's document function checkBrowserBrand(netscapeURL,explorerURL) { if (navigator.appName == "Netscape") { if (netscapeURL) location.href = netscapeURL; }else if (navigator.appName == "Microsoft Internet Explorer") { if (explorerURL) location.href = explorerURL; } } //******************* API ********************** function canAcceptBehavior(){ return true; } // Return the name of the function to be inserted into // the HEAD of the user's document function behaviorFunction(){ return "checkBrowserBrand"; } // Create the function call that will be inserted // with the event handler function applyBehavior() { var nsURL = escape(document.theForm.nsURL.value); var ieURL = escape(document.theForm.ieURL.value);

EXTENSION DE DREAMWEAVER CS4 249


Comportements

if (nsURL && ieURL) { return "checkBrowserBrand(\'" + nsURL + "\',\'" + ieURL + "\')"; }else{ return "Please enter URLs in both fields." } } // Extract the arguments from the function call // in the event handler and repopulate the // parameters form function inspectBehavior(fnCall){ var argArray = getTokens(fnCall, "()',"); var nsURL = unescape(argArray[1]); var ieURL = unescape(argArray[2]); document.theForm.nsURL.value = nsURL; document.theForm.ieURL.value = ieURL; } //***************** LOCAL FUNCTIONS ****************** // Put the pointer in the first text field // and select the contents, if any function initializeUI(){ document.theForm.nsURL.focus(); document.theForm.nsURL.select(); } // Let the user browse to the Navigator and // IE URLs function browseForURLs(whichButton){ var theURL = dreamweaver.browseForFileURL(); if (whichButton == "nsURL"){ document.theForm.nsURL.value = theURL; }else{ document.theForm.ieURL.value = theURL; } } //*************** END OF JAVASCRIPT ***************** </script> </head> <body>

EXTENSION DE DREAMWEAVER CS4 250


Comportements

<form method="post" action="" name="theForm"> <table border="0" cellpadding="8"> <tr> <td nowrap="nowrap">&nbsp;&nbsp;Go to this URL if the browser is Netscape Navigator:<br> <input type="text" name="nsURL" size="50" value=""> &nbsp; <input type="button" name="nsBrowse" value="Browse..." onClick="browseForURLs('nsURL')"></td> </tr> <tr> <td nowrap="nowrap">&nbsp;&nbsp;Go to this URL is the browser is Microsoft Internet Explorer:<br> <input type="text" name="ieURL" size="50" value=""> &nbsp; <input type="button" name="ieBrowse" value="Browse..." onClick="browseForURLs('ieURL')"></td> </tr> </table> </form> </body> </html>

3 Enregistrez le fichier sous le nom Configuration/Behaviors/Actions/BrowserDependentURL.htm.

Cration des fichiers HTML consulter (supprim)


Crez les fichiers HTML consulter, selon que votre navigateur correspond Internet Explorer ou Netscape Navigator.
1 Crez un fichier possdant le contenu suivant :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Internet Explorer Only</title> </head> <body> This is the page to go to if you are using Internet Explorer. </body> </html>

2 Enregistrez le fichier sous le nom iecontent.htm sur votre ordinateur. 3 Crez un autre fichier possdant le contenu suivant :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Netscape Navigator content</title> </head> <body> This is the page to go to if you are using Netscape Navigator. </body> </html>

EXTENSION DE DREAMWEAVER CS4 251


Comportements

4 Enregistrez le fichier sous le nom netscapecontent.htm dans le mme dossier que le fichier iecontent.htm. 5 Redmarrez Dreamweaver. 6 Crez un fichier HTML possdant le contenu suivant :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Which browser</title> </head> <body> </body> </html>

7 Enregistrez le fichier sous le nom whichbrowser.htm dans le mme dossier que le fichier iecontent.htm. 8 Cliquez sur le bouton Plus (+) du panneau Comportements et slectionnez le comportement Check Browser Band

(Vrifier type de navigateur).


9 Cliquez sur le bouton Parcourir ct de l'option Aller l'URL, puis slectionnez le fichier netscapecontent.htm si

le navigateur est Netscape Navigator. Si le navigateur est Internet Explorer, slectionnez le fichier iecontent.htm.
10 Cliquez sur OK.

Dreamweaver ajoute le code JavaScript spcifi au fichier whichbrowser.htm. Ce dernier se prsente alors comme suit :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Which browser</title> <script language="JavaScript" type="text/JavaScript"> <!-function checkBrowserBrand(netscapeURL,explorerURL) { if (navigator.appName == "Netscape") { if (netscapeURL) location.href = netscapeURL; }else if (navigator.appName == "Microsoft Internet Explorer") { if (explorerURL) location.href = explorerURL; } } //--> </script> </head> <body onLoad="checkBrowserBrand('netscaptecontent.htm','iecontent.htm')"> </body> </html>

Test du comportement
1 Affichez le fichier whichbrowser.htm dans votre navigateur. 2 Le fichier qui s'affiche (iecontent.htm ou netscapecontent.htm) varie selon le navigateur utilis.

EXTENSION DE DREAMWEAVER CS4 252


Comportements

Fonction de l'API des comportements


Deux fonctions d'API de comportements sont obligatoires : applyBehavior() et behaviorFunction(); les autres sont facultatives.

applyBehavior()
Description Cette fonction insre, dans le document de l'utilisateur, un gestionnaire d'vnements qui appelle la fonction insre par la fonction behaviorFunction(). La fonction applyBehavior() peut galement excuter d'autres modifications dans le document de l'utilisateur, mais elle ne doit pas supprimer l'objet auquel le comportement est appliqu ou qui reoit l'action. Lorsque vous crivez la fonction applyBehavior(), vous devez dterminer comment modifier le document de l'utilisateur. Par exemple, vous pouvez dcider d'insrer du code entre les balises de script dans le corps du document. Pour ce faire, utilisez les API de modification de DOM. Arguments uniqueName Cet argument est un identifiant unique parmi toutes les instances de tous les comportements du document de l'utilisateur. Son format est functionNameInteger, o functionName correspond au nom de la fonction insre par behaviorFunction(). Cet argument peut tre utile si vous insrez une balise dans le document de l'utilisateur et souhaitez affecter une valeur unique son attribut NAME. Valeurs renvoyes Dreamweaver attend une chane contenant l'appel de fonction qui doit tre insr dans le document de l'utilisateur, gnralement aprs acceptation des paramtres entrs par l'utilisateur. Si la fonction applyBehavior() dtermine que l'utilisateur a effectu une entre non valide, la fonction peut renvoyer une chane d'erreur au lieu de l'appel de fonction. Dreamweaver ne signale aucune erreur si la chane est vide (return "";), mais si la chane n'est pas vide et qu'elle n'est pas non plus un appel de fonction, Dreamweaver affiche une bote de dialogue contenant le texte : Invalid Input supplied for this behavior: et la chane renvoye depuis appplyBehavior(). Si la valeur renvoye est null (return;), Dreamweaver indique qu'une erreur s'est produite mais sans fournir plus de dtails. Remarque : Les guillemets ("") contenus dans la chane renvoye doivent tre prcds d'une barre oblique inverse (\) afin d'viter que l'interprteur JavaScript ne signale des erreurs. Exemple Dans l'exemple suivant, la fonction applyBehavior() renvoie un appel la fonction MM_openBrWindow() et transmet les paramtres fournis par l'utilisateur (hauteur et largeur de la fentre; affichage des barres de dfilement, une barre d'outils, une barre d'emplacement et d'autres fonctions; URL devant s'ouvrir dans la fentre) :

EXTENSION DE DREAMWEAVER CS4 253


Comportements

function applyBehavior() { var i,theURL,theName,arrayIndex = 0; var argArray = new Array(); //use array to produce correct number of commas w/o spaces var checkBoxNames = new Array("toolbar","location", "status","menubar","scrollbars","resizable"); for (i=0; i<checkBoxNames.length; i++) { theCheckBox = eval("document.theForm." + checkBoxNames[i]); if (theCheckBox.checked) argArray[arrayIndex++] = (checkBoxNames[i] + "=yes"); } if (document.theForm.width.value) argArray[arrayIndex++] = ("width=" + document.theForm.width.value); if (document.theForm.height.value) argArray[arrayIndex++] = ("height=" + document.theForm.height.value); theURL = escape(document.theForm.URL.value); theName = document.theForm.winName.value; return "MM_openBrWindow('"+theURL+"','"+theName+"','"+argArray.join()+"')"; }

behaviorFunction()
Description Cette fonction insre une ou plusieurs fonctions (places entre les balises suivantes, si elles n'existent pas encore) dans la section head du document utilisateur :
<SCRIPT LANGUAGE="JavaScript"></SCRIPT>

Arguments Aucun. Valeurs renvoyes Dreamweaver attend soit une chane contenant les fonctions JavaScript, soit une chane contenant les noms des fonctions insrer dans le document de l'utilisateur. Cette valeur doit tre chaque fois identique (elle ne peut pas dpendre des donnes entres par l'utilisateur). Les fonctions sont insres une seule fois, quel que soit le nombre de fois que l'action est applique aux lments du document. Remarque : Les guillemets ("") contenus dans la chane renvoye doivent tre prcds d'une barre oblique inverse (\) afin d'viter que l'interprteur JavaScript ne signale des erreurs. Exemple L'instance suivante de la fonction behaviorFunction() renvoie la fonction MM_popupMsg() :
function behaviorFunction(){ return ""+ "function MM_popupMsg(theMsg) { //v1.0\n"+ "alert(theMsg);\n"+ "}"; }

Le code suivant est quivalent la dclaration de fonction behaviorFunction() prcdente et correspond la mthode utilise pour dclarer la fonction behaviorFunction() dans tous les comportements intgrs Dreamweaver :

EXTENSION DE DREAMWEAVER CS4 254


Comportements

function MM_popupMsg(theMsg){ //v1.0 alert(theMsg); } function behaviorFunction(){ return "MM_popupMsg"; }

canAcceptBehavior()
Description Cette fonction indique si l'action est autorise pour l'lment HTML slectionn et dfinit l'vnement par dfaut qui doit la dclencher. Elle peut galement rechercher la prsence de certains objets (tels que des fichiers SWF) dans le document de l'utilisateur et interdire l'action si ces objets sont absents. Arguments HTMLElement L'argument est l'lment HTML slectionn. Valeurs renvoyes Dreamweaver renvoie l'une des valeurs suivantes :

La valeur true si l'action est autorise mais n'est associe aucun vnement prfr. Une liste des vnements prfrs (par ordre dcroissant de prfrence) de cette action. La dfinition d'vnements
prfrs remplace l'vnement par dfaut (signal par un astrisque [*] dans le fichier d'vnements) de l'objet slectionn. Reportez-vous l'tape 1 de la section Fonctionnement des comportements la page 246.

La valeur false si l'action n'est pas autorise.


Si la fonction canAcceptBehavior() renvoie la valeur false, l'action est estompe dans le menu contextuel Actions du panneau Comportements. Exemple Dans l'exemple suivant, la fonction canAcceptBehavior() renvoie une liste des vnements prfrs pour le comportement si le document contient des images nommes :
function canAcceptBehavior(){ var theDOM = dreamweaver.getDocumentDOM(); // Get an array of all images in the document var allImages = theDOM.getElementsByTagName('IMG'); if (allImages.length > 0){ return "onMouseOver, onClick, onMouseDown"; }else{ return false; } }

EXTENSION DE DREAMWEAVER CS4 255


Comportements

displayHelp()
Description Si cette fonction est dfinie, un bouton Aide apparat sous les boutons OK et Annuler dans la bote de dialogue des paramtres. Cette fonction est appele lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple
// the following instance of displayHelp() opens // in a browser a file that explains how to use // the extension. function displayHelp(){ var myHelpFile = dw.getConfigurationPath() + '/ExtensionsHelp/superDuperHelp.htm'; dw.browseDocument(myHelpFile); }

deleteBehavior()
Description Cette fonction annule toute modification effectue par la fonction applyBehavior(). Remarque : Dreamweaver supprime automatiquement la dclaration de fonction et le gestionnaire d'vnements associs un comportement lorsque l'utilisateur supprime ce comportement dans le panneau Comportements. Vous ne devez dfinir la fonction deleteBehavior() que si la fonction applyBehavior() a effectu des modifications supplmentaires dans le document de l'utilisateur (telle une insertion debalise). Arguments applyBehaviorString Cet argument correspond la chane renvoye par la fonction applyBehavior(). Valeurs renvoyes Dreamweaver ne renvoie rien.

identifyBehaviorArguments()
Description Cette fonction associe les arguments d'un appel de fonction de comportement des liens de navigation, fichiers dpendants, URL, rfrences de style Netscape 4.0 ou noms d'objet, de sorte que les URL utilises dans les comportements puissent tre mises jour si l'utilisateur enregistre le document un autre emplacement et pour que les fichiers rfrencs puissent s'afficher dans la carte du site et tre considrs comme des fichiers dpendants afin de pouvoir tre tlchargs vers et depuis un serveur.

EXTENSION DE DREAMWEAVER CS4 256


Comportements

Arguments theFunctionCall Cet argument correspond la chane renvoye par la fonction applyBehavior(). Valeurs renvoyes Dreamweaver renvoie une chane contenant une liste des types d'arguments de l'appel de fonction spars par des virgules. La longueur de la liste doit tre gale au nombre d'arguments transmis lors de l'appel de fonction. Les types d'argument doivent correspondre l'un des types suivants :

Le type d'argument nav indique que l'argument est une URL de navigation et qu'il doit donc tre affich dans la
carte du site.

Le type d'argument dep indique que l'argument est une URL de fichier dpendant et qu'il doit donc tre inclus avec
tous les autres fichiers dpendants lorsqu'un document contenant ce comportement est tlcharg depuis ou vers un serveur.

Le type d'argument URL indique que l'argument est la fois une URL de navigation et une URL dpendante (ou une
URL de type inconnu), et qu'il doit donc tre affich dans la carte du site et considr comme un fichier dpendant lors du tlchargement depuis ou vers un serveur.

Le type d'argument NS4.0ref indique que l'argument est une rfrence un objet de style Netscape Navigator 4.0. Le type d'argument IE4.0ref indique que l'argument est une rfrence un objet de style DOM 4.0 d'Internet
Explorer.

Le type d'argument objName indique que l'argument est un nom d'objet simple, tel qu'il est spcifi dans l'attribut
NAME de l'objet. Ce type a t ajout Dreamweaver 3.

Le type d'argument other indique que l'argument n'appartient aucun des types ci-dessus.
Exemple Cet exemple simple de fonction identifyBehaviorArguments() fonctionne avec l'action de comportement Ouvrir une fentre du navigateur qui renvoie une fonction comportant toujours trois arguments (l'URL ouvrir, le nom de la nouvelle fentre et la liste des proprits de la fentre) :
function identifyBehaviorArguments(fnCallStr) { return "URL,other,other"; }

Une version plus complexe de la fonction identifyBehaviorArguments() est ncessaire pour les fonctions de comportement qui grent un nombre variable d'arguments (telles qu'Afficher-Masquer les calques). Pour cet exemple de version de la fonction identifyBehaviorArguments(), il existe un nombre minimum d'arguments et les arguments supplmentaires se prsentent toujours en groupes dont la taille est un multiple de ce nombre minimum. En d'autres termes, une fonction dont le nombre d'arguments minimum est 4 peut avoir 4, 8 ou 12 arguments, mais elle n'en aura jamais 10 :

EXTENSION DE DREAMWEAVER CS4 257


Comportements

function identifyBehaviorArguments(fnCallStr) { var listOfArgTypes; var itemArray = dreamweaver.getTokens(fnCallStr, '(),'); // The array of items returned by getTokens() includes the // function name, so the number of *arguments* in the array // is the length of the array minus one. Divide by 4 to get the // number of groups of arguments. var numArgGroups = ((itemArray.length - 1)/4); // For each group of arguments for (i=0; i < numArgGroups; i++){ // Add a comma and "NS4.0ref,IE4.0ref,other,dep" (because this // hypothetical behavior function has a minimum of four // arguments the Netscape object reference, the IE object // reference, a dependent URL, and perhaps a property value // such as "show" or "hide") to the existing list of argument // types, or if no list yet exists, add only // "NS4.0ref,IE4.0ref,other,dep" var listOfArgTypes += ((listOfArgTypes)?",":"") + "NS4.0ref,IE4.0ref,other,dep"; } }

inspectBehavior()
Description Cette fonction recherche dans l'appel de fonction un comportement dj appliqu au document de l'utilisateur et dfinit les valeurs des options de la bote de dialogue des paramtres en consquence. Si la fonction inspectBehavior() n'est pas dfinie, les valeurs par dfaut des options s'affichent. Remarque : La fonction inspectBehavior() doit uniquement utiliser les informations qui lui sont transmises via l'argument applyBehaviorString. N'essayez pas d'obtenir d'autres informations sur le document de l'utilisateur (par exemple, en utilisant la fonction dreamweaver.getDocumentDOM()) dans cette fonction. Arguments applyBehaviorString Cet argument correspond la chane renvoye par la fonction applyBehavior(). Remarque : Si l'lment HTML contient du code similaire 'onClick="someBehavior(); return
document.MM_returnValue;"' et que vous ajoutez un nouveau comportement extrait du menu des comportements,

Dreamweaver appelle inspectBehavior() ds que l'interface utilisateur du nouveau comportement apparat et transmet le paramtre sous forme de chane vide. De ce fait, vrifiez le paramtre applyBehaviorString, illustr dans l'exemple ci-dessous :
function inspectBehavior(enteredStr){ if(enteredStr){ //do your work here } }

Valeurs renvoyes Dreamweaver ne renvoie rien.

EXTENSION DE DREAMWEAVER CS4 258


Comportements

Exemple L'exemple suivant de fonction inspectBehavior(), extrait du fichier Display Status Message.htm, renseigne le champ Message de la bote de dialogue des paramtres avec le message que l'utilisateur a slectionn lors de la premire application du comportement :
function inspectBehavior(msgStr){ var startStr = msgStr.indexOf("'") + 1; var endStr = msgStr.lastIndexOf("'"); if (startStr > 0 && endStr > startStr) { document.theForm.message.value = unescQuotes(msgStr.substring(startStr,endStr)); } }

Remarque : Pour plus d'informations sur la fonction unescQuotes(), voir le fichier dwscripts.js du dossier Configuration/Shared/Common/Scripts/CMN.

windowDimensions()
Description Cette fonction dfinit les dimensions de la bote de dialogue des paramtres. Si cette fonction n'est pas dfinie, les dimensions de la fentre sont calcules automatiquement. Remarque : Ne dfinissez cette fonction que si vous souhaitez utiliser une bote de dialogue de paramtres ayant des dimensions suprieures 640x 480 pixels. Arguments
platform

La valeur de l'argument platform est soit macintosh, soit windows, selon la plate-forme utilise par l'utilisateur. Valeurs renvoyes Dreamweaver attend une chane au format widthInPixels,heightInPixels. Les dimensions renvoyes sont infrieures la taille totale de la bote de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyes ne permettent pas de faire apparatre toutes les options, des barres de dfilement s'affichent. Exemple Dans l'exemple suivant, la fonction windowDimensions() dfinit les dimensions de la bote de dialogue des paramtres 648x 520pixels :
function windowDimensions(){ return "648,520"; }

259

Chapitre 17 : Comportements de serveur


Adobe Dreamweaver permet aux utilisateurs d'ajouter des comportements de serveur leurs documents afin d'excuter des tches ct serveur, par exemple :

Filtrer des enregistrements en fonction de critres utilisateur Parcourir des enregistrements Lier des listes de rsultats des pages d'informations dtailles Insrer des enregistrements dans un jeu de rsultats
Lorsque vous utilisez Dreamweaver, il arrive que vous deviez insrer le mme code d'excution plusieurs reprises dans les documents. Dans de tels cas, vous pouvez crer une extension afin d'automatiser la procdure de mise jour du document l'aide des blocs de code frquemment utiliss. Consultez la section Ajout de comportements de serveur personnaliss du guide Bien dmarrer avec Dreamweaver pour plus de dtails sur l'utilisation de l'interface de l'outil Crateur de comportements de serveur pour crer des comportements de serveur personnaliss. Lisez ensuite le chapitre relatif aux comportements de serveur pour des dtails sur l'utilisation de fichiers prenant en charge les comportements de serveur et les fonctions interagissant avec les comportements de serveur existants. Pour plus d'informations sur chaque fonction, voir Fonctions relatives aux comportements de serveur et Fonctions d'Extension Data Manager dans le Guide des API de Dreamweaver. Dreamweaver prend actuellement en charge les extensions de comportement de serveur qui ajoutent du code d'excution pour les modles de serveurs suivants : ASP/JavaScript, ASP/VBScript, ColdFusion et PHP/MySQL.

Terminologie des comportements de serveur


Les termes suivants sont souvent utiliss en association avec les comportements de serveur :
Extension de comportements de serveur L'extension de comportements de serveur est l'interface entre le code ct serveur et Dreamweaver. Une extension de comportements de serveur est compose d'un code JavaScript, d'un code HTML et d'un code EDML (Extension Data Markup Language) qui est du code XML cr spcifiquement pour les donnes d'extension. Des fichiers d'exemple, organiss en fonction du type de serveur utilis, sont localiss dans le dossier Configuration/ServerBehaviors, l'intrieur de votre dossier d'installation. Lorsque vous rdigez un script destin une extension, vous devez utiliser la fonction dwscripts.applySB() pour demander Dreamweaver de lire les fichiers EDML, d'extraire les composants de votre extension et d'insrer les blocs de code requis dans le document de l'utilisateur. Instance de comportement de serveur L'ajout par Dreamweaver de blocs de code au document utilisateur constitue

une instance de comportement de serveur. La plupart des comportements de serveur pouvant tre appliqus plusieurs fois, les instances peuvent tre multiples. Chaque instance de comportement de serveur est rpertorie dans le panneau Comportements de serveur de l'interface Dreamweaver.
Code d'excution Ensemble des blocs de code ajouts un document lorsqu'un comportement de serveur est

appliqu. Ces blocs de code sont d'ordinaire un code ct serveur, par exemple, un script ASP compris entre des balises
<% ... %>.

Participants L'extension de comportements de serveur insre des blocs de code dans le document utilisateur. Un bloc

de code est un bloc de script unique et continu, tel qu'une balise ct serveur, une balise HTML, voire un attribut qui ajoute une fonctionnalit ct serveur une page Web. Un fichier EDML dsigne chaque bloc de code par le terme de participant . Tous les participants relatifs un comportement de serveur donn forment un groupe de participants.

EXTENSION DE DREAMWEAVER CS4 260


Comportements de serveur

Remarque : Pour plus d'informations sur les fichiers Participant et Groupe, ainsi que sur la faon dont les fichiers EDML de Dreamweaver sont structurs, voir Extension Data Markup Language (EDML) la page 260.

Architecture de Dreamweaver
Lorsque vous utilisez l'outil Crateur de comportements de serveur pour crer une extension spcifique Dreamweaver, Dreamweaver gnre plusieurs fichiers (fichiers de script EDML et HTML) qui prennent en charge l'insertion du code de comportement de serveur dans un document Dreamweaver (certains comportements rfrencent galement les fichiers JavaScript pour une fonctionnalit optimale). L'architecture simplifie votre implmentation de l'API et spare votre code d'excution de la mthode d'application de Dreamweaver. Cette rubrique explique comment modifier ces fichiers.

Dossiers et fichiers de comportements de serveur


L'interface utilisateur pour chaque comportement de serveur rside dans le dossier Configuration/ServerBehaviors/ServerModelName, o ServerModelName correspond l'un des types de serveur suivants : ASP_Js (JavaScript), ASP_Vbs (VBScript), ColdFusion, PHP_MySQL ou Shared (implmentations intermodles de serveur).

Extension Data Markup Language (EDML)


Dreamweaver gnre deux fichiers EDML lorsque vous utilisez l'outil Crateur de comportements de serveur : un fichier Groupe EDML et un fichier Participant EDML correspondant aux noms indiqus dans le Crateur de comportements de serveur. Le fichier Groupe dfinit les participants appropris, qui reprsentent des blocs de code, et les groupes dfinissent les participants devant tre combins pour former un comportement de serveur individuel.

Fichiers Groupe
En gnral, les fichiers Groupe contiennent une liste de participants et les fichiers Participant comportent toutes les donnes sur le code spcifiques au modle de serveur. Les fichiers Participant peuvent tre utiliss par plusieurs extensions pour permettre plusieurs fichiers Groupe de rfrencer le mme fichier Participant. L'exemple suivant prsente une vue de haut niveau du fichier EDML du groupe de comportements de serveur. Vous trouverez une liste complte des lments et attributs dans la section Balises de fichiers EDML Groupe la page 273.
<group serverBehavior="Go To Detail Page.htm" dataSource="Recordset.htm"> <groupParticipants selectParticipant="goToDetailPage_attr"> <groupParticipant name="moveTo_declareParam"0partType="member"/> <groupParticipant name="moveTo_keepParams"0partType="member"/> <groupParticipant name="goToDetailPage_attr" partType="identifier" /> </groupParticipants> </group>

Dans la balise de bloc groupParticipants, chaque balise groupParticipant indique le fichier Participant EDML contenant le bloc de code utiliser. La valeur de l'attribut name est le nom du fichier Participant moins l'extension .edml (par exemple, l'attribut moveTo_declareParam).

EXTENSION DE DREAMWEAVER CS4 261


Comportements de serveur

Fichiers Participant
Un participant reprsente un bloc de code unique sur la page, tel une balise de serveur, une balise HTML ou un attribut. Pour pouvoir tre utilis par un auteur Dreamweaver, le fichier Participant doit figurer dans le fichier Groupe. Plusieurs groupes de fichiers peuvent utiliser un seul fichier Participant. Par exemple, le fichier moveTo_declareParam.edml contient le code suivant :
<participant> <quickSearch><![CDATA[MM_paramName]]></quickSearch> <insertText location="aboveHTML+80"> <![CDATA[ <% var MM_paramName = ""; %> ]]> </insertText> <searchPatterns whereToSearch="directive"> <searchPattern><![CDATA[/var\s*MM_paramName/]]></searchPattern> </searchPatterns> </participant>

Pour ajouter un comportement de serveur un document, Dreamweaver a besoin d'informations dtailles, notamment l'endroit o insrer le code, l'aspect du code et les paramtres remplacs par l'auteur ou par les donnes l'excution. C'est ce que chaque fichier EDML Participant dcrit pour chaque bloc de code. Plus particulirement, le fichier Participant dcrit les donnes suivantes :

Ce code et l'emplacement de l'instance unique sont dfinis par les paramtres de la balise insertText, comme
illustr dans l'exemple suivant :
<insertText location="aboveHTML+80">

Comment reconnatre les instances dj sur la page qui sont dfinies par la balise searchPatterns, comme illustr
dans l'exemple suivant :
<searchPatterns whereToSearch="directive"> <searchPattern><![CDATA[/var\s*MM_paramName/]]></searchPattern> </searchPatterns>

Dans la balise du bloc searchPatterns, chaque balise searchPattern contient un modle utilis pour rechercher des instances de code d'excution et pour extraire des paramtres spcifiques. Pour plus d'informations, voir Techniques de comportements de serveur la page 297.

Fichier Script
Chaque comportement de serveur dispose galement d'un fichier HTML contenant les fonctions et les liens relatifs aux scripts qui grent l'intgration du code de comportement de serveur l'interface Dreamweaver. Les fonctions pouvant tre modifies sont traites dans la section Fonctions d'implmentation des comportements de serveur la page 269.

Exemple de comportement de serveur simple


L'exemple suivant illustre le processus de cration d'un nouveau comportement de serveur et vous permet de voir et de grer les fichiers gnrs par Dreamweaver. Pour plus d'informations sur l'utilisation de l'interface du Crateur de comportements de serveur, voir Ajout de comportements de serveur personnaliss dans Bien dmarrer avec Dreamweaver. L'exemple affiche Hello World depuis le serveur ASP. Le comportement Hello World contient un seul participant (une simple balise ASP) et rien n'est modifi, ni ajout sur la page.

EXTENSION DE DREAMWEAVER CS4 262


Comportements de serveur

Pour crer le comportement, vous devez crer le document de page dynamique, dfinir le nouveau comportement de serveur puis dfinir le code insrer.

Cration du document contenant des pages dynamiques


1 Dans Dreamweaver, choisissez Fichier > Nouveau. 2 Dans la bote de dialogue Nouveau document, choisissez Catgorie : Page dynamique puis Page dynamique : ASP

JavaScript.
3 Cliquez sur Crer.

Dfinition du nouveau comportement de serveur


Remarque : Si le panneau Comportements de serveur n'est ni ouvert, ni visible, choisissez Fentre > Comportements de serveur.
1 Dans le panneau Comportements de serveur, slectionnez le bouton Plus (+) et l'option Nouveau comportement

de serveur.
2 Dans la bote de dialogue Nouveau comportement de serveur, choisissez Type de document : ASP JavaScript et

entre Hello World comme nom. Ne cochez pas la case Copier un comportement de serveur existant .
3 Cliquez sur OK.

Dfinition du code insrer


1 Slectionnez le bouton Plus (+) pour l'option Blocs de code insrer. 2 Dans la bote de dialogue Crer un nouveau bloc de code, entrez Hello_World_block1 (Dreamweaver entre cette

information automatiquement dans certains cas).


3 Cliquez sur OK. 4 Dans le champ de texte Bloc de code, entrez <% Response.Write(Hello World) %>. 5 Dans le menu droulant Insrer code, slectionnez Relatif la slection pour permettre l'utilisateur de contrler

l'emplacement du code dans le document.


6 Dans le menu droulant Position relative, slectionnez Aprs la slection. 7 Cliquez sur OK.

Dans le panneau Comportements de serveur, vous constatez que le menu Plus (+) contient le nouveau comportement de serveur dans la liste droulante. Dans le dossier d'installation de vos fichiers Dreamweaver, le dossier Configuration/ServerBehaviors/ASP_Js contient dsormais les trois fichiers suivants :

Le fichier Groupe : Hello World.edml Le fichier Participant : Hello World_block1.edml Un fichier de script : Hello World.htm
Remarque : Si vous travaillez dans un environnement multi-utilisateur, ces fichiers s'affichent dans votre dossier Application Data.

EXTENSION DE DREAMWEAVER CS4 263


Comportements de serveur

Scnarios dans lesquels les fonctions de l'API de comportement de serveur sont appeles
Les fonctions de l'API de comportement de serveur sont appeles dans les situations suivantes :

La fonction findServerBehaviors() est appele l'ouverture du document et chaque fois qu'un participant est
modifi. Elle recherche des instances du comportement de serveur dans le document utilisateur. Pour chaque instance trouve, la fonction findServerBehaviors() cre un objet JavaScript et lui associe des informations d'tat l'aide de proprits JavaScript.

Lorsqu'elle est mise en uvre, Dreamweaver appelle la fonction analyzeServerBehavior() pour chaque
comportement trouv dans le document utilisateur aprs que toutes les fonctions findServerBehaviors() ont t appeles. Lorsque la fonction findServerBehaviors() cre un objet de comportement, elle dfinit normalement les quatre proprits (incomplete, participants, selectedNode et title). Cependant, il est parfois plus facile de retarder la configuration de certaines des proprits jusqu' ce que tous les autres comportements de serveur aient trouv des instances d'eux-mmes. Par exemple, le comportement Dplacer vers l'enregistrement suivant possde deux participants : un objet link et un objet recordset. Plutt que de rechercher l'objet du jeu d'enregistrements dans sa fonction findServerBehaviors(), attendez que la fonction findServerBehaviors() du comportement du jeu d'enregistrements soit excute, car le jeu d'enregistrements recherche toutes ses propres instances. Lorsque la fonction analyzeServerBehavior() du comportement Dplacer vers l'enregistrement suivant est appele, un tableau lui est transmis, contenant tous les objets de comportement de serveur du document. La fonction peut rechercher l'objet de jeu d'enregistrements dans le tableau. En cours d'analyse, il arrive que plusieurs comportements identifient une seule balise dans le document utilisateur comme tant une instance de ce comportement. Supposons, par exemple, que la fonction findServerBehaviors() pour le comportement Attribut dynamique dtecte une instance du comportement Attribut dynamique associe une balise input dans le document utilisateur. Simultanment, la fonction findServerBehaviors() pour le comportement Champ de texte dynamique peut analyser la mme balise input et dtecter une instance du comportement Champ de texte dynamique. Le panneau Comportements de serveur affiche alors le bloc Attribut dynamique et le comportement Champ de texte dynamique. Pour corriger ce problme, utilisez les fonctions analyzeServerBehavior() pour supprimer tous les comportements de serveur redondants sauf un. Pour supprimer un comportement de serveur, une fonction analyzeServerBehavior() peut dfinir la proprit deleted dudit comportement sur la valeur true. Si la proprit deleted a toujours la valeur true lorsque Dreamweaver finit d'appeler les fonctions analyzeServerBehavior(), le comportement disparat de la liste.

Lorsque l'utilisateur clique sur le bouton Plus (+) du panneau Comportements de serveur, le menu contextuel
s'affiche. Pour dterminer le contenu du menu, Dreamweaver recherche d'abord un fichier ServerBehaviors.xml dans le mme rpertoire que celui des comportements. ServerBehaviors.xml fait rfrence aux fichiers HTML devant apparatre dans le menu. Si le fichier HTML rfrenc contient une balise de titre (title), le contenu de cette balise s'affiche dans le menu. Par exemple, si le fichier ServerBehaviors/ASP_Js/GetRecords.htm contient la balise <title>Get More Records</title>, le texte Get More Records s'affiche dans le menu. Si le fichier ne contient pas de balise de titre, c'est le nom du fichier qui apparat dans le menu. Par exemple, si GetRecords.htm ne contient pas de balise de titre, la mention GetRecords s'affiche dans le menu.

EXTENSION DE DREAMWEAVER CS4 264


Comportements de serveur

S'il n'y a pas de fichier ServerBehaviors.xml ou si le rpertoire contient un ou plusieurs fichiers HTML non mentionns dans ServerBehaviors.xml, Dreamweaver recherche une balise title dans chaque fichier et fait figurer dans le menu le nom de cette balise ou celui du fichier. Si vous ne voulez pas qu'un fichier du rpertoire ServerBehaviors s'affiche dans le menu, ajoutez l'instruction suivante sur la premire ligne du fichier HTML :
<!-- MENU-LOCATION=NONE -->

La fonction canApplyServerBehavior() est appele lorsque l'utilisateur slectionne un lment dans le menu. Si
cette fonction renvoie une valeur true, une bote de dialogue s'affiche. Lorsque l'utilisateur clique sur OK, la fonction applyServerBehavior() est appele.

Si l'utilisateur double-clique sur un comportement de serveur existant pour le modifier, Dreamweaver affiche la
bote de dialogue, excute le gestionnaire onLoad sur la balise body (si elle existe), puis appelle la fonction inspectServerBehavior(). La fonction inspectServerBehavior() renseigne les lments du formulaire avec les valeurs de l'argument actuel. Lorsque l'utilisateur clique sur OK, Dreamweaver appelle nouveau la fonction applyServerBehavior().

Si l'utilisateur clique sur le bouton moins (-), la fonction deleteServerBehavior() est appele. La fonction
deleteServerBehavior() supprime les comportements correspondants du document.

Lorsque l'utilisateur slectionne un comportement de serveur et utilise les commandes Couper ou Copier,
Dreamweaver transmet l'objet reprsentant le comportement de serveur sa fonction copyServerBehavior(). La fonction copyServerBehavior() ajoute l'objet de comportement les autres proprits ncessaires son collage ultrieur. Une fois la fonction copyServerBehavior() renvoye, Dreamweaver convertit l'objet de comportement en un formulaire qui peut tre plac dans le Presse-papiers. Pendant la conversion de l'objet, Dreamweaver supprime toutes les proprits faisant rfrence des objets ; toute proprit de l'objet autre qu'un nombre, un oprateur boolen ou une chane est perdue. Lorsque l'utilisateur appuie sur la commande Coller, Dreamweaver dcompresse le contenu du Presse-papiers et gnre un nouvel objet de comportement de serveur. Ce nouvel objet est identique l'original, sauf qu'il ne contient aucune proprit faisant rfrence des objets. Dreamweaver transmet le nouvel objet de comportement la fonction pasteServerBehavior(). La fonction pasteServerBehavior() ajoute le comportement au document utilisateur. Une fois la fonction pasteServerBehavior() renvoye, Dreamweaver appelle les fonctions findServerBehaviors() pour obtenir la nouvelle liste des comportements de serveur prsents dans le document utilisateur. Les utilisateurs peuvent copier et coller des comportements d'un document un autre. Pour changer des informations, les fonctions copyServerBehavior() et pasteServerBehavior() doivent se baser uniquement sur les proprits de l'objet de comportement.

API de comportement de serveur


Les fonctions suivantes sont les API que vous pouvez utiliser pour grer des comportements de serveur.

analyzeServerBehavior()
Disponibilit Dreamweaver UltraDev 1.

EXTENSION DE DREAMWEAVER CS4 265


Comportements de serveur

Description Cette fonction permet aux comportements de serveur de dfinir les proprits incomplete et deleted. Une fois la fonction findServerBehaviors() appele pour tous les comportements de serveur sur la page, un tableau de tous les comportements s'affiche dans le document utilisateur. Pour chaque objet JavaScript prsent dans le tableau, la fonction analyzeServerBehavior() est appele. Par exemple, pour le comportement Texte dynamique, Dreamweaver appelle la fonction analyzeServerBehavior() dans le fichier DynamicText.htm (ou DynamicText.js). La fonction analyzeServerBehavior() a notamment pour but de terminer la dfinition de toutes les proprits (incomplete, participants, selectedNode et title) sur l'objet de comportement. Il est parfois plus facile d'excuter cette tche aprs que la fonction findServerBehaviors() a gnr une liste exhaustive des comportements de serveur prsents dans le document utilisateur. L'autre but de la fonction analyzeServerBehavior() est de rechercher si plusieurs comportements se rfrent la mme balise dans le document utilisateur. Dans ce cas, la proprit deleted est utilise pour supprimer du tableau tous les comportements sauf un. Supposons que les comportements de serveur Recordset1, DynamicText1 et DynamicText2 se trouvent sur une page. Les deux comportements de serveur DynamicText requirent Recordset1 pour exister sur la page. Une fois les comportements de serveur dtects par le biais de la fonction findServerBehaviors(), Dreamweaver appelle la fonction analyzeServerBehavior() pour les trois comportements de serveur. Lorsque la fonction analyzeServerBehavior() est appele pour DynamicText1, elle inspecte le tableau de tous les objets de comportement de serveur prsents sur la page, la recherche de celui qui appartient Recordset1. Si elle ne trouve pas l'objet de comportement de serveur qui appartient Recordset1, la proprit incomplete est affecte de la valeur true et un point d'exclamation est affich dans le panneau Comportements de serveur, indiquant l'utilisateur qu'il y a un problme. De mme, lorsque la fonction analyzeServerBehavior() est appele pour DynamicText2, elle recherche l'objet appartenant Recordset1. Comme Recordset1 ne dpend d'aucun autre comportement de serveur, il n'a pas besoin de dfinir la fonction analyzeServerBehavior() dans cet exemple. Arguments serverBehavior, {serverBehaviorArray}

L'argument serverBehavior est un objet JavaScript reprsentant le comportement analyser. L'argument {serverBehaviorArray} est un tableau d'objets JavaScript reprsentant l'ensemble des
comportements de serveur trouvs sur une page. Valeurs renvoyes Dreamweaver ne renvoie rien.

applyServerBehavior()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction consulte les valeurs des lments de formulaire dans la bote de dialogue et ajoute le comportement au document utilisateur. Dreamweaver appelle cette fonction lorsque l'utilisateur clique sur dans la bote de dialogue Comportements de serveur. Si la fonction est excute avec succs, la bote de dialogue Comportements de serveur est ferme. Si elle choue, la bote de dialogue Comportements de serveur reste ouverte et un message d'erreur s'affiche l'cran. Cette fonction peut modifier le document d'un utilisateur.

EXTENSION DE DREAMWEAVER CS4 266


Comportements de serveur

Pour plus dinformations, voir dwscripts.applySB() la page 270. Arguments serverBehavior serverBehavior est un objet JavaScript reprsentant le comportement de serveur ; il est ncessaire de modifier un comportement existant. S'il s'agit d'un nouveau comportement, l'argument est null. Valeurs renvoyes Dreamweaver attend une chane vide en cas de succs ou un message d'erreur en cas d'chec.

canApplyServerBehavior()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction dtermine si un comportement peut tre appliqu. Dreamweaver appelle cette fonction avant d'afficher la bote de dialogue Comportements de serveur. Si la fonction renvoie la valeur true, la bote de dialogue Comportements de serveur s'affiche. Si la fonction renvoie la valeur false, la bote de dialogue Comportements de serveur ne s'affiche pas et la tentative d'ajout d'un comportement de serveur est interrompue. Arguments serverBehavior serverBehavior est un objet JavaScript reprsentant le comportement ; il est ncessaire de modifier un comportement existant. S'il s'agit d'un nouveau comportement, l'argument est null. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si le comportement peut tre appliqu, false dans les autres cas.

copyServerBehavior()
Disponibilit Dreamweaver UltraDev 1. Description L'utilisation de la fonction copyServerBehavior() est facultative. Cette fonction permet aux utilisateurs de copier des instances du comportement de serveur spcifi. Dans l'exemple suivant, cette fonction est utilise pour les jeux d'enregistrements. Lorsqu'un utilisateur slectionne un jeu d'enregistrements dans les panneaux Comportements de serveur ou Liaisons de donnes, l'utilisation de la commande Copier copie le comportement dans le Presse-papiers, tandis que la commande Couper le supprime de ce dernier. Les commandes Copier et Couper n'ont aucun effet sur les comportements de serveur qui ne mettent pas en uvre cette fonction. Pour plus d'informations, voir Scnarios dans lesquels les fonctions de l'API de comportement de serveur sont appeles la page 263.

EXTENSION DE DREAMWEAVER CS4 267


Comportements de serveur

Pour changer des informations, les fonctions copyServerBehavior() et pasteServerBehavior() doivent uniquement se baser sur les proprits de l'objet de comportement capables d'tre converties en chanes. Le Pressepapiers ne contient que du texte brut ; il est, pour cette raison, ncessaire de rsoudre les nuds participant dans le document et d'enregistrer le texte brut qui en rsulte dans une proprit secondaire. Remarque : Il est galement important de mettre en uvre la fonction pasteServerBehavior() pour permettre l'utilisateur de coller le comportement dans un document Dreamweaver. Arguments serverBehavior

serverBehavior est un objet JavaScript reprsentant le comportement.


Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si le comportement est copi dans le Presse-papiers, false dans les autres cas.

deleteServerBehavior()
Disponibilit Dreamweaver UltraDev 1. Description Supprime le comportement du document de l'utilisateur. Elle est appele lorsque l'utilisateur clique sur le bouton moins (-) du panneau Comportements de serveur. Cette fonction peut modifier le document d'un utilisateur. Pour plus dinformations, voir dwscripts.deleteSB() la page 271. Arguments serverBehavior

serverBehavior est un objet JavaScript reprsentant le comportement.


Valeurs renvoyes Dreamweaver ne renvoie rien.

displayHelp()
Description Si cette fonction est dfinie, un bouton Aide s'affiche sous les boutons OK et Annuler dans la bote de dialogue. Cette fonction est appele lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien.

EXTENSION DE DREAMWEAVER CS4 268


Comportements de serveur

Exemple
// the following instance of displayHelp() opens // in a browser a file that explains how to use // the extension. function displayHelp(){ var myHelpFile = dw.getConfigurationPath() + '/ExtensionsHelp/superDuperHelp.htm'; dw.browseDocument(myHelpFile); }

findServerBehaviors()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction parcourt le document utilisateur la recherche d'instances d'elle-mme. Pour chaque instance trouve, la fonction findServerBehaviors() cre un objet JavaScript et lui associe des informations d'tat en tant que proprits JavaScript de l'objet. Les quatre proprits obligatoires sont incomplete, participants, title et selectedNode. Vous pouvez dfinir d'autres proprits en fonction de vos besoins. Pour plus d'informations, voir dwscripts.findSBs() la page 269 et dreamweaver.getParticipants() dans le Guide des API de Dreamweaver. Arguments Aucun. Valeurs renvoyes Dreamweaver attend un tableau d'objets JavaScript ; la longueur du tableau correspond au nombre d'instances du comportement trouves dans la page.

inspectServerBehavior()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction dtermine les paramtres de la bote de dialogue Comportements de serveur en fonction de l'objet de comportement spcifi. Dreamweaver appelle la fonction inspectServerBehavior() lorsqu'un utilisateur ouvre une bote de dialogue de comportement de serveur. Dreamweaver appelle cette fonction uniquement lorsque l'utilisateur modifie un comportement existant. Arguments serverBehavior L'argument serverBehavior est un objet JavaScript reprsentant le comportement de serveur. Il s'agit du mme objet que celui renvoy parfindServerBehaviors().

EXTENSION DE DREAMWEAVER CS4 269


Comportements de serveur

Valeurs renvoyes Dreamweaver ne renvoie rien.

pasteServerBehavior()
Disponibilit Dreamweaver UltraDev 1. Description Si cette fonction est implmente, les utilisateurs peuvent coller des instances du comportement de serveur spcifi l'aide de la fonction pasteServerBehavior(). Lorsque l'utilisateur colle le comportement de serveur, Dreamweaver organise le contenu du Presse-papiers et gnre un nouvel objet de comportement. Ce nouvel objet est identique l'original, sauf qu'il ne contient aucune proprit de pointeur. Dreamweaver transmet le nouvel objet de comportement la fonction pasteServerBehavior(). La fonction pasteServerBehavior() se base sur les proprits de l'objet de comportement pour dterminer ce qui doit tre ajout au document utilisateur. La fonction pasteServerBehavior() ajoute ensuite le comportement au document utilisateur. Une fois la fonction pasteServerBehavior() renvoye, Dreamweaver appelle la fonction findServerBehaviors() pour obtenir la nouvelle liste des comportements de serveur prsents dans le document utilisateur. L'utilisation de la fonction pasteServerBehavior() est facultative. Pour plus d'informations, voir Scnarios dans lesquels les fonctions de l'API de comportement de serveur sont appeles la page 263. Remarque : Si vous implmentez cette fonction, vous devez galement implmenter la fonction copyServerBehavior(). Arguments comportement L'objet JavaScript behavior reprsente le comportement. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si le comportement est coll depuis le Presse-papiers, false dans les autres cas.

Fonctions d'implmentation des comportements de serveur


Vous pouvez ajouter ou modifier ces fonctions dans les fichiers de script HTML, ou dans les fichiers JavaScript rpertoris dans le fichier de script HTML.

dwscripts.findSBs()
Disponibilit Dreamweaver MX (cette fonction remplace la fonction findSBs() des versions prcdentes de Dreamweaver).

EXTENSION DE DREAMWEAVER CS4 270


Comportements de serveur

Description Cette fonction recherche toutes les instances d'un comportement de serveur sur la page en cours, ainsi que tous les participants. Elle dfinit le titre, le type, les tableaux des participants, des poids et des types, la valeur selectedNode et l'indicateur incomplete . Elle cre galement un objet de paramtre contenant un tableau de proprits dfinissables par l'utilisateur (le jeu d'enregistrements, le nom et le nom d'une colonne, par exemple). Vous pouvez renvoyer ce tableau depuis la fonction findServerBehaviors(). Arguments serverBehaviorTitle L'argument serverBehaviorTitle est une chane de titre facultative utilise si aucun titre n'est spcifi dans le titre EDML, utile pour la localisation. Valeurs renvoyes Dreamweaver attend un tableau d'objets JavaScript, avec les proprits requises dfinies. Cette fonction renvoie un tableau vide si aucun comportement de serveur n'apparat sur la page. Exemple L'exemple suivant recherche dans le document utilisateur en cours toutes les instances d'un comportement de serveur particulier :
function findServerBehaviors() { allMySBs = dwscripts.findSBs(); return allMySBs; }

dwscripts.applySB()
Disponibilit Dreamweaver MX (cette fonction remplace la fonction applySB() des versions prcdentes de Dreamweaver). Description Cette fonction insre ou met jour le code d'excution du comportement de serveur. Si l'argument sbObj a une valeur null, la fonction insre un nouveau code d'excution ; dans le cas contraire, elle met jour le code d'excution existant indiqu par l'objet sbObj. Dfinissez les paramtres utilisateur sous la forme de proprits sur un objet JavaScript, puis transmettez-les en tant que paramObj. Ils doivent correspondre tous les arguments dclars sous la forme @@paramName@@ dans le texte d'insertion XML. Arguments paramObj, sbObj

L'argument paramObj est l'objet contenant les paramtres utilisateur. L'argument sbObj est l'objet du comportement de serveur prcdent si vous mettez jour un comportement de
serveur existant, sinon null. Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si le comportement est ajout au document de l'utilisateur, false dans les autres cas.

EXTENSION DE DREAMWEAVER CS4 271


Comportements de serveur

Exemple Dans l'exemple suivant, insrez dans l'objet paramObj les entres utilisateur et appelez la fonction dwscripts.applySB() en transmettant les donnes et votre comportement de serveur, sbObj :
function applyServerBehaviors(sbObj) { // get all UI values here... paramObj = new Object(); paramObj.rs= rsName.value; paramObj.col = colName.value; paramObj.url = urlPath.value; paramObj.form__tag = formObj; dwscripts.applySB(paramObj, sbObj); }

dwscripts.deleteSB()
Disponibilit Dreamweaver MX (cette fonction remplace la fonction deleteSB() des versions prcdentes de Dreamweaver). Description Cette fonction supprime tous les participants de l'instance du comportement de serveur sbObj. Le participant dans son ensemble est supprim, moins que le fichier EDML n'indique des instructions de suppression spciales l'aide de la balise delete. Les participants appartenant plusieurs instances de comportement de serveur (comptage de rfrence > 1) ne sont pas supprims. Arguments sbObj

L'argument sbObj est l'instance de l'objet du comportement de serveur supprimer du document utilisateur.
Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple L'exemple suivant illustre la suppression de tous les participants du comportement de serveur sbObj, hormis ceux qui sont protgs par la balise delete du fichier EDML.
function deleteServerBehavior(sbObj) { dwscripts.deleteSB(sbObj); }

Fichiers EDML
Vous devez respecter les conventions de codage Dreamweaver lorsque vous modifiez un fichier. Faites trs attention la dpendance d'un lment par rapport un autre. Par exemple, si vous mettez jour les balises que vous insrez, il est possible que vous deviez galement mettre jour les modles de recherche. Remarque : Les fichiers EDML ont t ajouts avec Dreamweaver MX. Si vous travaillez avec des comportements de serveur existants, voir les versions prcdentes des manuels Extension de Dreamweaver.

EXTENSION DE DREAMWEAVER CS4 272


Comportements de serveur

Expressions rgulires
Vous devez connatre les expressions rgulires implmentes dans JavaScript 1.5. Vous devez galement savoir quel moment il convient de les utiliser dans les fichiers EDML de comportements de serveur. Par exemple, les expressions rgulires ne peuvent pas tre utilises dans les valeurs quickSearch. En revanche, elles sont employes dans le contenu de la balise searchPattern pour la recherche et l'extraction de donnes. Les expressions rgulires dcrivent des chanes de texte en utilisant des caractres qui ont une signification spciale (mtacaractres) pour reprsenter le texte, le dcomposer et le traiter selon des rgles prdfinies. Les expressions rgulires sont des outils d'analyse et de traitement puissants car elles fournissent une mthode gnrique de reprsentation d'un modle. Tout bon manuel de rfrence sur JavaScript 1.5 comporte une section ou un chapitre consacr aux expressions rgulires. Dans cette section, nous examinons la faon dont les fichiers EDML de comportements de serveur Dreamweaver utilisent les expressions rgulires pour rechercher des arguments dans votre code d'excution et pour extraire leurs valeurs. Chaque fois qu'un utilisateur modifie un comportement de serveur, les valeurs des arguments doivent tre extraites des instances du code d'excution. Utilisez des expressions rgulires pour la procdure d'extraction. Vous devez connatre quelques mtacaractres et mtasquences (regroupements de caractres spciaux) utiles dans les fichiers EDML de comportements de serveur, comme ceux dcrits dans le tableau suivant :
Expression rgulire \ Description Arrter le mode caractres spciaux. Par exemple: \. rtablit le mtacaractre un point littral, \/ rtablit la barre oblique son sens littral et \) rtablit la parenthse son sens littral. Ne pas tenir compte de la casse lors de la recherche d'une mtasquence. Crer une sous-expression entre parenthses dans la mtasquence. Rechercher des espaces blancs.

/ ... /i ( ...) \s*

La balise EDML <searchPatterns whereToSearch="directive"> indique qu'une recherche doit tre effectue dans le code d'excution. Chaque sous-balise <searchPattern>...</searchPattern> dfinit un modle dans le code d'excution devant tre identifi. L'exemple Redirect If Empty contient deux modles. Dans l'exemple suivant, pour extraire des valeurs d'arguments de <% if (@@rs@@.EOF)
Response.Redirect("@@new__url@@"); %>, rdigez une expression rgulire qui identifie les chanes rs et new__url : <searchPattern paramNames="rs,new__url"> /if d ((\w+)\.EOF\) Response\.Redirect\("([^\r\n]*)"\)/i </searchPattern>

Ce processus effectue une recherche dans le document de l'utilisateur et, si une correspondance est trouve, les valeurs d'argument sont extraites. La premire sous-expression entre parenthses (\w+) extrait la valeur de rs. La deuxime sous-expression ([^\r\n]*) extrait la valeur de new_url. Remarque : La squence de caractres "[^\r\n]*" correspond tout caractre sauf un saut de ligne, sur les plates-formes Macintosh et Windows.

EXTENSION DE DREAMWEAVER CS4 273


Comportements de serveur

Structure EDML
Vous devez utiliser un nom de fichier unique pour identifier votre groupe de comportements de serveur. Si un fichier Participant associ n'est utilis que par un fichier Groupe, vous devez donner votre fichier Participant un nom correspondant celui du groupe. Cette convention permet au fichier Groupe de comportements de serveur updateRecord.edml de fonctionner avec le fichier Participant updateRecord_init.edml. Lorsque les fichiers Participant sont destins au partage entre plusieurs groupes de comportements de serveur, vous devez leur donner un nom descriptif et unique. Remarque : L'espace de nom EDML tant partag indpendamment de la structure de dossier, assurez-vous d'utiliser des noms de fichiers uniques. Les noms de fichiers ne doivent pas comporter plus de 31 caractres (y compris l'extension .edml) en raison des limitations Macintosh. Le code d'excution de votre comportement de serveur rside l'intrieur de fichiers EDML. Le programme d'analyse EDML ne doit confondre aucun de vos codes d'excution avec les balises EDML. C'est pourquoi la balise CDATA doit envelopper votre code d'excution. La balise CDATA reprsente des donnes de caractre et correspond tout texte autre qu'une balise EDML. Lorsque vous utilisez la balise CDATA, le programme d'analyse EDML n'essaie pas de l'interprter en tant que balise, mais l'assimile plutt un bloc de texte brut. Les blocs marqus par la balise CDATA commencent par <![CDATA[ et se terminent par ]]>. Si vous insrez le texte Hello, World, vous pouvez spcifier aisment votre EDML comme suit :
<insertText>Hello, World</insertText>

Cependant, si vous insrez un texte comportant des balises, tel <img src='foo.gif'>, cela peut tre source de confusion pour le programme d'analyse EDML. Dans ce cas, incorporez votre texte dans la construction CDATA comme indiqu dans l'exemple suivant :
<insertText><![CDATA[<img src='foo.gif'>]]></insertText>

Le code d'excution ASP est envelopp par la balise CDATA tag, comme illustr dans l'exemple suivant :
<![CDATA[ <% if (@@rs@@.EOF) Response.Redirect("@@new__url@@"); %> ]]

En raison de la balise CDATA, les balises <%= %>, ainsi que tout contenu interne, ne sont pas traites. Au lieu de cela, le gestionnaire de donnes d'extension (EDM) reoit le texte non interprt, comme indiqu dans l'exemple suivant :
<% if (Recordset1.EOF) Response.Redirect("http://www.Adobe.com"); %>

Dans les dfinitions EDML suivantes, les emplacements o la balise CDATA est recommande sont indiqus dans les exemples.

Balises de fichiers EDML Groupe


Ces balises et attributs sont valides dans les fichiers Groupe EDML.

<group>
Description Cette balise contient toutes les spcifications relatives un groupe de participants.

EXTENSION DE DREAMWEAVER CS4 274


Comportements de serveur

Parent Aucun. Type Balise de bloc. Obligatoire Oui.

Attributs de <group>
Les lments suivants sont des attributs valides de la balise group.

version
Description Cet attribut dfinit le traitement de comportement de serveur de Dreamweaver cible du comportement de serveur actif. Pour Dreamweaver CS3, le numro de version est 9. Si aucune version n'est prcise, Dreamweaver suppose qu'il s'agit de la version 7. Pour cette version de Dreamweaver, l'attribut de version est rgl sur 9,0 pour tous les groupes et participants gnrs par le Crateur de comportements de serveur. La version de groupe de cet attribut est sans effet pour l'instant. Parent
group

Type Attribut. Obligatoire Non.

serverBehavior
Description L'attribut serverBehavior indique le comportement de serveur qui peut utiliser le groupe. Lorsque l'une des chanes quickSearch du participant du groupe est trouve dans le document, le comportement de serveur indiqu par l'attribut serverBehavior demande Dreamweaver d'appeler la fonction findServerBehaviors(). Dans certains cas, si plusieurs groupes sont associs un seul et mme comportement de serveur, ce dernier doit dterminer le groupe qu'il veut utiliser. Parent
group

Type Attribut.

EXTENSION DE DREAMWEAVER CS4 275


Comportements de serveur

Obligatoire Non. Valeur La valeur est le nom exact (sans chemin) d'un fichier HTML de comportement de serveur dans un dossier Configuration/ServerBehaviors, comme indiqu dans l'exemple suivant :
<group serverBehavior="redirectIfEmpty.htm">

dataSource
Description Cette fonction avance prend en charge les nouvelles sources de donnes qui peuvent tre ajoutes Dreamweaver. Les versions d'un comportement de serveur peuvent diffrer, selon la source de donnes utilise. Par exemple, le comportement de serveur Rgion rpte est conu pour la source de donnes Recordset.htm standard. Si Dreamweaver est dvelopp afin de prendre en charge un nouveau type de source de donnes (un objet COM, par exemple), vous pouvez configurer dataSource="COM.htm" dans un fichier Groupe avec une implmentation diffrente de Rgion rpte. Le comportement de serveur Rgion rpte applique alors la nouvelle implmentation de Rgion rpte si la nouvelle source de donnes est slectionne. Parent
group

Type Attribut. Obligatoire Non. Valeur Le nom exact d'un fichier source de donnes d'un dossier Configuration/DataSources, comme indiqu dans l'exemple suivant :
<group serverBehavior="Repeat Region.htm" dataSource="myCOMdataSource.htm">

Ce groupe dfinit une nouvelle implmentation du comportement de serveur Rgion rpte utiliser si la source de donnes COM est utilise. Dans la fonction applyServerBehaviors(), vous pouvez indiquer que ce groupe doit tre appliqu en dfinissant la proprit MM_dataSource sur l'objet de paramtre, comme indiqu dans l'exemple suivant :
function applyServerBehavior(ssRec) { var paramObj = new Object(); paramObj.rs = getComObjectName(); paramObj.MM_dataSource = "myCOMdataSource.htm"; dwscripts.applySB(paramObj, sbObj); }

subType
Description Cette fonction avance prend en charge plusieurs implmentations d'un comportement de serveur.

EXTENSION DE DREAMWEAVER CS4 276


Comportements de serveur

Les versions d'un comportement de serveur peuvent diffrer, selon la slection de l'utilisateur. Lorsqu'un comportement de serveur est appliqu mais que plusieurs fichiers Groupe sont appropris, le fichier Groupe correct peut tre slectionn par transmission d'une valeur subType. Le groupe ayant cette valeur subType spcifique est appliqu. Parent
group

Type Attribut. Obligatoire Non. Valeur La valeur est une chane unique dterminant le groupe appliquer, comme indiqu dans l'exemple suivant :
<group serverBehavior="myServerBehavior.htm" subType="longVersion">

Cet attribut de groupe dfinit la version longue du sous-type myServerBehavior. Il existe galement une version avec l'attribut subType="shortVersion". Dans la fonction applyServerBehaviors(), vous pouvez indiquer quel groupe doit tre appliqu en dfinissant la proprit MM_subType sur l'objet de paramtre, comme indiqu dans l'exemple suivant :
function applyServerBehavior(ssRec) { var paramObj = new Object(); if (longVersionChecked) { paramObj.MM_subType = "longVersion"; } else { paramObj.MM_subType = "shortVersion"; } dwscripts.applySB(paramObj, sbObj); }

<title>
Description Cette chane s'affiche dans le panneau Comportements de serveur pour chaque instance de comportement de serveur trouve dans le document actif. Parent
group

Type Balise de bloc. Obligatoire Non.

EXTENSION DE DREAMWEAVER CS4 277


Comportements de serveur

Valeur La valeur est une chane de texte brut pouvant comporter des noms d'argument pour rendre chaque instance unique, comme indiqu dans l'exemple suivant :
<title>Redirect If Empty (@@recordsetName@@)</title>

<groupParticipants>
Description Cette balise contient un tableau de dclarations groupParticipant. Parent
group

Type Balise de bloc. Obligatoire Oui.

Attributs de <groupParticipants>
Les lments suivants sont des attributs valides de la balise groupParticipants.

selectParticipant
Description Indique quel participant doit tre slectionn et mis en surbrillance dans le document lorsqu'une instance est slectionne dans le panneau Comportements de serveur. Les instances de comportements de serveur numres dans ce panneau tant classes en fonction du participant slectionn, vous devez dfinir l'attribut selectParticipant mme si le participant n'est pas visible. Parent
groupParticipants

Type Attribut. Obligatoire Non. Valeur La valeur participantName est le nom exact (moins l'extension .edml) d'un seul fichier Participant rfrenc comme un participant Groupe, comme indiqu dans l'exemple suivant. Pour plus dinformations, voir name la page 278.
<groupParticipants selectParticipant="redirectIfEmpty_link">

EXTENSION DE DREAMWEAVER CS4 278


Comportements de serveur

<groupParticipant>
Description Cette balise reprsente l'inclusion d'un participant unique dans le groupe. Parent
groupParticipants

Type Balise. Obligatoire Oui (au moins un).

Attributs de <groupParticipant>
Les lments suivants sont des attributs valides de la balise groupParticipant.

name
Description Cet attribut dsigne un participant particulier inclure dans le groupe. L'attribut name figurant dans la balise groupParticipant doit tre le mme que le nom de fichier du participant (sans l'extension .edml). Parent
groupParticipant

Type Attribut. Obligatoire Oui. Valeur La valeur est le nom exact (sans l'extension .edml) d'un fichier Participant quelconque, comme indiqu dans l'exemple suivant :
<groupParticipant name="redirectIfEmpty_init">

Cet exemple fait rfrence au fichier redirectIfEmpty_init.edml.

partType
Description Cet attribut indique le type de participant. Parent
groupParticipant

EXTENSION DE DREAMWEAVER CS4 279


Comportements de serveur

Type Attribut. Obligatoire Non. Valeurs identifier, member, option, multiple, data

La valeur identifier est un participant qui identifie le groupe entier. Si ce participant est trouv dans le document,
le groupe est considr comme existant. Il s'agit de la valeur par dfaut si l'attribut partType n'est pas spcifi.

La valeur member est un membre normal d'un groupe. Si trouv seul, il n'identifie pas un groupe. S'il n'est pas
trouv dans un groupe, le groupe est jug incomplet.

La valeur option indique que le participant est facultatif. S'il n'est pas trouv, le groupe est quand mme jug complet
et aucun indicateur incomplete n'est affich dans le panneau Comportements de serveur.

La valeur multiple indique que le participant est facultatif et que plusieurs de ses copies peuvent tre associes au
comportement de serveur. Aucun des arguments uniques ce participant ne sera utilis lors du regroupement de participants car ils peuvent avoir des valeurs diffrentes.

La valeur data est un participant non standard utilis par les programmeurs en tant que rfrentiel des donnes de
groupe supplmentaires. Elle n'est prise en compte par rien d'autre.

Fichiers EDML Participant


Ces balises et attributs sont valides dans les fichiers EDML Participant.

<participant>
Description Cette balise contient toutes les spcifications d'un participant unique. Parent Aucun. Type Balise de bloc. Obligatoire Oui.

Attributs de <participant>
Les lments suivants sont des attributs valides de la balise participant.

EXTENSION DE DREAMWEAVER CS4 280


Comportements de serveur

version
Description Cet attribut dfinit le traitement de comportement de serveur de Dreamweaver cible du comportement de serveur actif. Pour Dreamweaver CS3, le numro de version est 9. Si aucune version n'est prcise, Dreamweaver suppose qu'il s'agit de la version 7. Pour cette version de Dreamweaver, l'attribut de version est rgl sur 0,0 pour tous les groupes et participants gnrs par le Crateur de comportements de serveur. Remarque : L'attribut de version participant annule l'attribut de version groupe si ceux-ci sont diffrents. Nanmoins, le fichier participant utilisera uniquement l'attribut de version groupe si le participant n'en spcifie aucun. Pour les fichiers Participant, cet attribut dtermine s'il faut effectuer la fusion de blocs de code. Pour les participants qui ne disposent pas de cet attribut (ou si l'attribut est dfini sur la version 4 ou prcdente), les blocs de code insrs ne sont pas fusionns avec les autres blocs de code sur la page. Les participants dont l'attribut est dfini sur version 5 ou plus, sont fusionns avec les autres blocs de code sur la page, lorsque possible. Notez que la fusion de blocs de code s'effectue uniquement pour les participants au-dessus et en dessous de la balise HTML. Parent
participant

Type Attribut. Obligatoire Non.

<quickSearch>
Description Cette balise est une simple chane de recherche utilise pour amliorer les performances. Il ne peut pas s'agir d'une expression rgulire. Si la chane est trouve dans le document actif, les autres modles de recherche sont appels pour rechercher des instances spcifiques. La chane peut tre vide pour toujours utiliser le modle de recherche. Parent
participant

Type Balise de bloc. Obligatoire Non. Valeur La valeur searchString, chane littrale qui existe sur la page si le participant existe. La chane doit tre la plus unique possible afin d'amliorer les performances, mais elle ne doit pas ncessairement tre unique. Bien que cette chane ne soit pas sensible la casse, prenez garde aux espaces non essentiels qui peuvent tre modifis par l'utilisateur, comme indiqu dans l'exemple suivant :
<quickSearch>Response.Redirect</quickSearch>

EXTENSION DE DREAMWEAVER CS4 281


Comportements de serveur

Si la balise quickSearch est vide, elle est considre comme correspondante et des recherches plus prcises utilisent les expressions rgulires dfinies dans les balises searchPattern. Cela peut tre utile lorsqu'une simple chane ne peut pas tre utilise pour exprimer un modle de recherche fiable et que des expressions rgulires sont obligatoires.

<insertText>
Description Cette balise donne des indications sur ce qui doit tre insr dans le document et quel endroit. Elle contient le texte insrer. Les parties du texte qui sont personnalises doivent tre indiques l'aide du format @@parameterName@@. Dans certains cas, par exemple pour un participant traducteur uniquement, vous n'avez probablement pas besoin de cette balise. Parent
implementation

Type Balise de bloc. Obligatoire Non. Valeur La valeur est le texte insrer dans le document. Si des parties du texte doivent tre personnalises, elles peuvent tre transmises ultrieurement en tant que paramtres. Les arguments doivent tre incorpors entre deux signes (@@). Ce texte pouvant interfrer avec la structure EDML, il doit utiliser la construction CDATA, comme indiqu dans l'exemple suivant :
<insertText location="aboveHTML"> <![CDATA[<%= @@recordset@@).cursorType %>]]> </insertText>

Lorsque le texte est insr, l'argument @@recordset@@ est remplac par un nom de jeu d'enregistrements fourni par l'utilisateur. Pour plus d'informations sur les blocs de code conditionnels et rptitifs, consultez le chapitre Ajout de comportements de serveur personnaliss dans Prise en main de Dreamweaver.

Attributs de <insertText>
Les lments suivants sont des attributs valides de la balise insertText.

location
Description Cet attribut indique o le texte participant doit tre insr. L'emplacement d'insertion tant relatif l'attribut whereToSearch de la balise searchPatterns, veillez dfinir ces deux paramtres soigneusement (voir whereToSearch la page 284). Parent
insertText

EXTENSION DE DREAMWEAVER CS4 282


Comportements de serveur

Type Attribut. Obligatoire Oui. Valeurs aboveHTML[+weight], belowHTML[+weight], beforeSelection, replaceSelection, wrapSelection, afterSelection, beforeNode, replaceNode, afterNode, firstChildOfNode, lastChildOfNode, nodeAttribute[+attribute]

La valeur aboveHTML[+] insre le texte au-dessus de la balise HTML (approprie pour le code serveur uniquement).
Le poids peut tre un nombre entier compris entre 1 et 99 et est utilis pour prserver l'ordre relatif entre les diffrents participants. Par convention, les jeux d'enregistrements ont un poids de 50. Si un participant fait rfrence des variables de jeu d'enregistrements, il doit par consquent tre affect d'un poids plus lev (par exemple, 60) de faon ce que le code soit insr au-dessous du jeu d'enregistrements, comme indiqu dans l'exemple suivant :
<insert location="aboveHTML+60">

Si aucun poids n'est indiqu, un poids de 100 est attribu en interne et ajout au-dessous de tous les participants de poids spcifique, comme indiqu dans l'exemple suivant :
<insert location="aboveHTML">

La valeur belowHTML[+weight] est similaire l'emplacement aboveHTML, si ce n'est que les participants sont
ajouts au-dessous de la balise /HTML de fermeture.

La valeur beforeSelection insre le texte avant le point d'insertion ou la slection actuelle. S'il n'y a pas de slection,
il est insr la fin de la balise body.

La valeur replaceSelection remplace la slection actuelle par le texte. S'il n'y a pas de slection, il est insr la fin de
la balise body.

La valeur wrapSelection quilibre la slection actuelle, insre une balise de bloc avant la slection et ajoute la balise
de fin approprie aprs la slection.

La valeur afterSelection insre le texte aprs la slection actuelle ou le point d'insertion. S'il n'y a pas de slection, il
est insr la fin de la balise body.

La valeur beforeNode insre le texte avant un nud (emplacement spcifique dans le DOM). Lorsqu'une fonction
telle que dwscripts.applySB() est appele pour effectuer l'insertion, le pointeur de nud doit tre transmis en tant que paramtre de paramObj. Le nom de ce paramtre dfinissable par l'utilisateur doit tre spcifi par l'attribut nodeParamName (voir la section nodeParamName la page 283). En rsum, si votre emplacement comporte le mot node, veillez dclarer la balise nodeParamName.

La valeur replaceNode remplace un nud par le texte. La valeur afterNode insre le texte aprs un nud. La valeur firstChildOfNode insre le texte en tant que premier enfant d'une balise de bloc. Par exemple, pour insrer
un lment au dbut d'une balise FORM.

firstChildOfNode insre le texte en tant que dernier enfant d'une balise de bloc. Par exemple, si vous souhaitez
insrer du code la fin d'une balise FORM, (utile pour l'ajout de champs de formulaire masqus).

nodeAttribute[+attribute] dfinit un attribut d'un nud de balise. Si l'attribut n'existe pas dj, cette valeur le cre.

EXTENSION DE DREAMWEAVER CS4 283


Comportements de serveur

Par exemple, utilisez <insert location="nodeAttribute+ACTION" nodeParamName="form"> pour dfinir l'attribut ACTION d'un formulaire. Cette variante convertit la balise FORM de l'utilisateur de <form> en <form action="myText">. Si vous ne spcifiez pas d'attribut, l'emplacement nodeAttribute provoque l'ajout direct du texte la balise ouverte. Par exemple, utilisez insert location="nodeAttribute" pour ajouter un attribut facultatif une balise. Vous pouvez procder ainsi pour convertir la balise INPUT d'un utilisateur de <input type="checkbox"> en <input type="checkbox" <%if(foo)Reponse.Write("CHECKED")%>> . Remarque : Pour la valeur d'attribut location="nodeAttribute", le dernier modle de recherche dtermine les points de dbut et de fin de l'attribut. Veillez ce que le dernier modle trouve l'instruction entire.

nodeParamName
Description Cet attribut est uniquement utilis pour les emplacements d'insertion relatifs un nud. Il indique le nom du paramtre utilis pour transmettre le nud au moment de l'insertion. Parent
insertText

Type Attribut. Obligatoire Cet attribut est uniquement requis si l'emplacement d'insertion contient le mot node. Valeur La valeur tagtype_Tag est un nom spcifi par l'utilisateur pour le paramtre de nud qui est transmis avec l'objet de paramtre la fonction dwscripts.applySB(). Par exemple, si vous insrez du texte dans un formulaire, vous pouvez utiliser un paramtre form_tag. Dans votre fonction applyServerBehavior() de comportement de serveur, vous pouvez utiliser le paramtre form_tag pour indiquer le formulaire prcis mettre jour, comme indiqu dans l'exemple suivant :
function applyServerBehavior(ssRec) { var paramObj = new Object(); paramObj.rs = getRecordsetName(); paramObj.form_tag = getFormNode(); dwscripts.applySB(paramObj, sbObj); }

Dans votre fichier EDML, vous pouvez spcifier le paramtre de nud form_tag, comme indiqu dans l'exemple suivant :
<insertText location="lastChildOfNode" nodeParamName="form_tag"> <![CDATA[<input type="hidden" name="MY_DATA">]]> </insertText>

Le texte est insr en tant que valeur lastChildOfNode et le nud spcifique est transmis l'aide de la proprit form_tag de l'objet de paramtre.

EXTENSION DE DREAMWEAVER CS4 284


Comportements de serveur

<searchPatterns>
Description Cette balise donne des indications sur la faon de rechercher le texte du participant dans le document et contient une liste de modles utiliss lors de la recherche d'un participant. Si plusieurs modles de recherche sont dfinis, ils doivent tous tre trouvs dans le texte analys (les modles de recherche ont une relation AND logique), moins qu'ils ne soient marqus comme facultatifs l'aide de l'indicateur isOptional. Parent
implementation

Type Balise de bloc. Obligatoire Non.

Attributs de <searchPatterns>
Les lments suivants sont des attributs valides de la balise searchPatterns.

whereToSearch
Description Cet attribut indique o rechercher le texte du participant. Il est relatif l'emplacement d'insertion, veillez donc dfinir ces deux paramtres soigneusement (voir location la page 281). Parent
searchPatterns

Type Attribut. Obligatoire Oui. Valeurs


directive, tag+tagName, tag+*, comment, text

La valeur directive recherche toutes les directives de serveur (balises spcifiques au serveur). Pour ASP et JSP, cela
signifie une recherche dans tous les blocs de script <% ... %>. Remarque : La recherche n'est pas effectue dans les attributs de balise, mme s'ils contiennent des directives.

La valeur tag+tagName effectue une recherche dans le contenu de la balise donne, comme indiqu dans l'exemple
suivant :
<searchPatterns whereToSearch="tag+FORM">

EXTENSION DE DREAMWEAVER CS4 285


Comportements de serveur

Cet exemple n'effectue de recherche que dans les balises de formulaire. Par dfaut, la recherche est effectue dans tout le nud outerHTML. Pour les balises INPUT, indiquez le type aprs une barre oblique (/). Dans l'exemple suivant, utilisez ce code pour effectuer une recherche dans tous les boutons d'envoi :
<searchPatterns whereToSearch="tag+INPUT/SUBMIT">.

La valeur tag+* effectue une recherche dans le contenu de n'importe quelle balise, comme indiqu dans l'exemple
suivant :
<searchPatterns whereToSearch="tag+*">

Cet exemple effectue une recherche dans toutes les balises.

La valeur comment limite la recherche aux commentaires HTML <!


<searchPatterns whereToSearch="comment">

...>, comme indiqu dans l'exemple suivant :

Cet exemple recherche des balises telles que <!-- mes commentaires ici -->.

La valeur text limite la recherche aux sections de texte brut, comme indiqu dans l'exemple suivant :
<searchPatterns whereToSearch="text"> <searchPattern>XYZ</searchPattern> </searchPatterns>

Cet exemple recherche un nud de texte contenant le texte XYZ.

<searchPattern>
Description Cette balise est un modle qui identifie le texte participant et en extrait chaque valeur de paramtre. Chaque sousexpression de paramtre doit tre mise entre parenthses (). Vous pouvez avoir des modles sans paramtres (utiliss pour identifier le texte participant), des modles avec un paramtre ou des modles avec plusieurs paramtres. Tous les modles obligatoires doivent tre trouvs et chaque paramtre doit tre nomm et trouv exactement une fois. Pour plus d'informations sur l'utilisation de la balise searchPattern, voir Recherche des comportements de serveur la page 297. Parent
searchPatterns

Type Balise de bloc. Obligatoire Oui. Valeurs searchString, /regularExpression/, <empty>

La valeur searchString est une simple chane de recherche, sensible la casse. Elle ne peut pas tre utilise pour
l'extraction de paramtres.

La valeur /regularExpression/ est un modle de recherche d'expression rgulire.

EXTENSION DE DREAMWEAVER CS4 286


Comportements de serveur

La valeur <empty> est utilise si aucun modle n'est spcifi. Dans ce cas, il est toujours considr qu'il y a
correspondance et la valeur entire est affecte au premier paramtre. Dans l'exemple suivant, pour identifier le texte participant <%=RS1.Field.Items("author_id")%>, vous pouvez dfinir un modle simple, suivi d'un modle prcis extrayant galement les deux valeurs de paramtre :
<searchPattern>Field.Items</searchPattern> <searchPattern paramNames="rs,col"> <![CDATA[ /<%=\s*(\w+)\.Field\.Items\("(\w+)"\)/ ]]> </searchPattern>

Dans cet exemple, une correspondance prcise est tablie avec le modle. La valeur de la premire sous-expression (\w+) est affecte au paramtre "rs" et celle de la deuxime sous-expression (\w+) au paramtre "col". Remarque : Les expressions rgulires doivent imprativement commencer et se terminer par une barre oblique (/). Sinon, elles sont utilises en tant que recherches de chane littrale. Les expressions rgulires peuvent tre suivies du modificateur d'expression rgulire i pour indiquer la non-sensibilit la casse (comme dans /pattern/i). Par exemple, VBScript n'est pas sensible la casse et doit donc utiliser /pattern/i. JavaScript est sensible la casse et doit utiliser /pattern/. Si vous dsirez affecter le contenu entier de l'emplacement de recherche limite un paramtre, n'indiquez aucun modle, comme indiqu dans l'exemple suivant :
<searchPatterns whereToSearch="tag+OPTION"> <searchPattern>MY_OPTION_NAME</searchPattern> <searchPattern paramNames="optionLabel" limitSearch="innerOnly"> </searchPattern> </searchPatterns>

Cet exemple rgle le paramtre optionLabel sur le contenu complet de innerHTML d'une balise OPTION.

Attributs de <searchPattern>
Les lments suivants sont des attributs valides de la balise searchPattern.

paramNames
Description Cet attribut est une liste spare l'aide de virgules des noms de paramtre dont les valeurs sont extraites. Ces paramtres sont affects dans l'ordre de la sous-expression. Vous pouvez affecter des paramtres uniques ou utiliser une liste spare par virgule pour affecter plusieurs paramtres. Si d'autres expressions entre parenthses sont utilises mais n'indiquent pas de paramtres, des virgules supplmentaires peuvent tre utilises en tant qu'espaces rservs dans la liste des noms de paramtres. Les noms de paramtres doivent correspondre ceux spcifis dans le texte d'insertion et dans les paramtres de mise jour. Parent
searchPattern

Type Attribut.

EXTENSION DE DREAMWEAVER CS4 287


Comportements de serveur

Obligatoire Oui. Valeurs paramName1, paramName2, ... Chaque nom de paramtre doit tre le nom exact d'un paramtre utilis dans le texte d'insertion. Par exemple, si le texte d'insertion contient @@p1@@, vous devez dfinir exactement un paramtre avec ce nom :
<searchPattern paramNames="p1">patterns</searchPattern>

Pour extraire plusieurs paramtres utilisant un seul modle, utilisez une liste de noms de paramtre spars par des virgules, dans l'ordre dans lequel les sous-expressions apparaissent dans le modle. Supposons que l'exemple suivant indique votre modle de recherche :
<searchPattern paramName="p1,,p2">/(\w+)_(BIG|SMALL)_(\w+)/</searchPattern>

Il y a deux paramtres (spars par du texte) extraire. Dans le texte <%=a_BIG_b %>, la premire sous-expression du modle de recherche correspond a, donc p1="a". La deuxime sous-expression est ignore (remarquez le ,, dans la valeur paramName). La troisime sous-expression correspond b, donc p2="b".

limitSearch
Description Cet attribut limite la recherche une partie de la balise whereToSearch. Parent
searchPattern

Type Attribut. Obligatoire Non. Valeurs all, attribute+attribName, tagOnly, innerOnly

La valeur all (valeur par dfaut) effectue une recherche dans la balise entire qui est spcifie dans l'attribut
whereToSearch.

La valeur attribute+attribName effectue la recherche dans la seule valeur de l'attribut spcifi, comme indiqu dans
l'exemple suivant :
<searchPatterns whereToSearch="tag+FORM"> <searchPattern limitSearch="attribute+ACTION"> /MY_PATTERN/ </searchPattern> </searchPatterns>

Cet exemple indique que la recherche doit se limiter la seule valeur de l'attribut ACTION des balises FORM. Si cet attribut n'est pas dfini, la balise est ignore.

La valeur tagOnly effectue la recherche dans la seule balise extrieure et ignore la balise innerHTML. Cette valeur est
valide uniquement lorsque whereToSearch est une balise.

EXTENSION DE DREAMWEAVER CS4 288


Comportements de serveur

La valeur innerOnly effectue la recherche dans la seule balise innerHTML et ignore la balise extrieure. Cette valeur
est valide uniquement lorsque whereToSearch est une balise.

isOptional
Description Cet attribut est un indicateur signifiant que le modle de recherche n'est pas obligatoire pour trouver le participant. Cela est utile pour les participants plus complexes pouvant avoir des paramtres non essentiels extraire. Vous pouvez crer des modles servant identifier de faon distincte un participant et avoir des modles facultatifs pour l'extraction de paramtres non essentiels. Parent
searchPattern

Type Attribut. Obligatoire Non. Valeurs true, false

La valeur est true si le searchPattern n'est pas indispensable l'identification du participant. La valeur est false (valeur par dfaut) si la balise searchPattern est requise.
Considrez par exemple la chane de jeux d'enregistrements simple suivante :
<% var Recordset1 = Server.CreateObject("ADODB.Recordset"); Recordset1.ActiveConnection = "dsn=andescoffee;"; Recordset1.Source = "SELECT * FROM PressReleases"; Recordset1.CursorType = 3; Recordset1.Open(); %>

Les modles de recherche doivent identifier le participant et extraire plusieurs paramtres. Cependant, si un paramtre tel que cursorType n'est pas trouv, il doit toujours tre considr comme un jeu d'enregistrements. Le paramtre cursor est facultatif. Dans l'EDML, les modles de recherche peuvent ressembler l'exemple suivant :
<searchPattern paramNames="rs">/var (\w+) = Server.CreateObject/ </searchPattern> <searchPattern paramNames="src">/ActiveConnection = "([^\r\n]*)"/</searchPattern> <searchPattern paramNames="conn">/Source = "([^\r\n]*)"/</searchPattern> <searchPattern paramNames="cursor" isOptional="true">/CursorType = (\d+)/ </searchPattern>

Les trois premiers modles sont obligatoires pour identifier le jeu d'enregistrements. Si le dernier paramtre n'est pas trouv, le jeu d'enregistrements est quand mme identifi.

EXTENSION DE DREAMWEAVER CS4 289


Comportements de serveur

<updatePatterns>
Description Cette fonction facultative avance permet des mises jour prcises du participant. Sans cette balise, le participant est automatiquement mis jour par remplacement du texte participant entier chaque fois. Si vous spcifiez une balise updatePatterns, elle doit contenir des modles prcis pour trouver et remplacer chaque paramtre du participant. Cette balise peut s'avrer utile si l'utilisateur apporte des modifications au texte. Seules les parties du texte qui ont besoin d'tre modifies seront mises jour avec prcision. Parent
implementation

Type Balise de bloc. Obligatoire Non.

<updatePattern>
Description Cette balise est un type d'expression rgulire spcifique permettant des mises jour prcises du texte du participant. Il doit y avoir au moins une dfinition de modle de mise jour pour chaque paramtre unique dclar dans le texte d'insertion (de la forme @@paramName@@). Parent
updatePatterns

Type Balise de bloc. Obligatoire Oui (au moins une, si vous dclarez la balise updatePatterns). Valeurs La valeur est une expression rgulire trouvant un paramtre plac entre deux sous-expressions entre parenthses, dans le formulaire /(pre-pattern)parameter-pattern(post-pattern)/. Vous devez dfinir au moins un modle de mise jour pour chaque @@paramName@@ unique dans votre texte d'insertion. L'exemple suivant indique quoi peut ressembler votre texte d'insertion :
<insertText location="afterSelection"> <![CDATA[<%= @@rs@@.Field.Items("@@col@@") %>]]> </insertText>

Une instance particulire du texte d'insertion sur une page peut ressembler l'exemple suivant :
<%= RS1.Field.Items("author_id") %>

EXTENSION DE DREAMWEAVER CS4 290


Comportements de serveur

Il y a deux paramtres, rs et col. Pour mettre jour ce texte une fois qu'il est insr sur la page, vous avez besoin de deux dfinitions de modle de mise jour :
<updatePattern paramName="rs" > /(\b)\w+(\.Field\.Items)/ </updatePattern> <updatePattern paramName="col"> /(\bItems\(")\w+("\))/ </updatePattern>

Les parenthses littrales, ainsi que d'autres caractres d'expressions rgulires spciaux, n'ont pas t pris en compte en raison de la barre oblique inverse les prcdant (\). L'expression du milieu, dfinie comme \w+, est mise jour avec la dernire valeur transmise pour les paramtres rs et col, respectivement. Les valeurs RS1 et author_id peuvent tre mises jour avec de nouvelles valeurs de faon prcise. Plusieurs instances du mme modle peuvent tre mises jour en mme temps en utilisant l'indicateur global d'expression rgulire g aprs la barre oblique de fermeture (par exemple, dans /pattern/g). Si le texte du participant est long et complexe, vous devrez utiliser plusieurs modles pour mettre jour un seul paramtre, comme indiqu dans l'exemple suivant :
<% ... Recordset1.CursorType = 0; Recordset1.CursorLocation = 2; Recordset1.LockType = 3; %>

Pour mettre jour le nom du jeu d'enregistrements dans les trois positions, vous devez disposer de trois modles de mise jour pour un seul paramtre, comme indiqu dans l'exemple suivant :
<updatePattern paramName="rs"> /(\b)\w+(\.CursorType)/ </updatePattern> <updatePattern paramName="rs"> /(\b)\w+(\.CursorLocation)/ </updatePattern> <updatePattern paramName="rs"> /(\b)\w+(\.LockType)/ </updatePattern>

Vous pouvez maintenant transmettre une nouvelle valeur pour le jeu d'enregistrements, qui est mis jour avec prcision trois emplacements.

Attributs de <updatePattern>
Les lments suivants sont des attributs valides de la balise updatePattern.

paramName
Description Cet attribut indique le nom du paramtre dont la valeur est utilise pour mettre jour le participant. Ce paramtre doit correspondre ceux spcifis dans le texte d'insertion et dans les paramtres de recherche. Parent
updatePattern

EXTENSION DE DREAMWEAVER CS4 291


Comportements de serveur

Type Attribut. Obligatoire Oui. Valeurs La valeur est le nom exact d'un paramtre utilis dans le texte d'insertion. Dans l'exemple suivant, si le texte d'insertion contient une valeur @@rs@@, vous devez avoir un paramtre du nom :
<updatePattern paramName="rs">pattern</updatePattern>

<delete>
Description Cette balise est une fonction facultative avance qui vous permet de contrler comment un participant est supprim. Sans cette balise, vous devez effacer le participant entirement pour le supprimer, mais seulement si aucun comportement de serveur n'y fait rfrence. En dfinissant une balise delete, vous pouvez spcifier qu'il ne doit jamais tre supprim ou que seules certaines parties doivent l'tre. Parent
implementation

Type Balise. Obligatoire Non.

Attributs de <delete>
Les lments suivants sont des attributs valides de la balise delete.

deleteType
Description Cet attribut indique le type de suppression effectuer. Il possde diffrentes significations, selon que le participant est une directive, une balise ou un attribut. Par dfaut, le participant entier est supprim. Parent
delete

Type Attribut. Obligatoire Non.

EXTENSION DE DREAMWEAVER CS4 292


Comportements de serveur

Valeurs all, none, tagOnly, innerOnly, attribute+attribName, attribute+*

La valeur all (valeur par dfaut) supprime la directive ou la balise entire. Pour les attributs, elle supprime la
dfinition entire.

La valeur none n'est jamais automatiquement supprime. La valeur tagOnly supprime uniquement la balise extrieure mais laisse le contenu de la balise innerHTML intact.
Pour les attributs, elle supprime galement la balise extrieure s'il s'agit d'une balise de bloc. Sans signification pour les directives.

La valeur innerOnly supprime uniquement le contenu (la balise innerHTML) lorsqu'elle est applique des balises.
Pour les attributs, elle supprime uniquement la valeur. Sans signification pour les directives.

La valeur attribute+attribName supprime uniquement l'attribut spcifi lorsqu'elle est applique des balises. Sans
signification pour les directives et les attributs.

La valeur attribute+* supprime tous les attributs des balises. Sans signification pour les directives et les attributs.
Si votre comportement de serveur convertit le texte slectionn en lien, vous pouvez supprimer le lien en supprimant la balise extrieure uniquement, comme indiqu dans l'exemple suivant :
<delete deleteType="tagOnly"/>

Cet exemple convertit un participant de lien de <A HREF="...">HELLO</A> en HELLO.

<translator>
Description Cette balise donne des informations pour la traduction d'un participant de faon ce qu'elle puisse tre rendue diffremment et puisse avoir un inspecteur Proprits personnalis. Parent
implementation

Type Balise de bloc. Obligatoire Non.

<searchPatterns>
Description Cette balise permet Dreamweaver de trouver les instances spcifies dans un document. Si plusieurs modles de recherche sont dfinis, ils doivent tous tre trouvs dans le texte analys (les modles de recherche ont une relation AND logique), moins qu'ils ne soient marqus comme facultatifs l'aide de l'indicateur isOptional. Parent
translator

EXTENSION DE DREAMWEAVER CS4 293


Comportements de serveur

Type Balise de bloc. Obligatoire Oui.

<translations>
Description Cette balise contient une liste d'instructions de traduction, chacune indiquant o rechercher le participant et ce qu'il convient d'en faire. Parent
translator

Type Balise de bloc. Obligatoire Non.

<translation>
Description Cette balise contient une instruction de traduction unique indiquant l'emplacement du participant, quel type de traduction effectuer et par quoi remplacer le texte du participant. Parent
translations

Type Balise de bloc. Obligatoire Non.

Attributs de <translation>
Les lments suivants sont des attributs valides de la balise translation.

whereToSearch
Description Cet attribut indique o rechercher le texte, par rapport l'emplacement d'insertion. Veillez donc dfinir soigneusement chaque emplacement (voir location la page 281).

EXTENSION DE DREAMWEAVER CS4 294


Comportements de serveur

Parent
translation

Type Attribut. Obligatoire Oui.

limitSearch
Description Cet attribut limite la recherche une partie de la balise whereToSearch. Parent
translation

Type Attribut. Obligatoire Non.

translationType
Description Cet attribut indique le type de traduction raliser. Ces types sont prdfinis et donnent la traduction une fonctionnalit prcise. Par exemple, si vous spcifiez dynamic data, toute donne traduite doit se comporter comme une donne dynamique Dreamweaver ; c'est--dire ressembler un espace rserv de donnes dynamiques dans le mode de mise en page (notation entre accolades, { }, avec couleur d'arrire-plan dynamique) et figurer dans le panneau Comportements de serveur. Parent
translation

Type Attribut. Obligatoire Oui. Valeurs dynamic data, dynamic image, dynamic source, tabbed region start, tabbed region end, custom

Cette valeur dynamic data indique que les directives traduites ressemblent des donnes dynamiques
Dreamweaver et se comportent de la mme faon, comme indiqu dans l'exemple suivant :

EXTENSION DE DREAMWEAVER CS4 295


Comportements de serveur

<translation whereToSearch="tag+IMAGE" limitSearch="attribute+SRC" translationType="dynamic data">

La valeur dynamic image indique que les attributs traduits doivent ressembler des images dynamiques
Dreamweaver et se comporter de la mme faon, comme indiqu dans l'exemple suivant :
<translation whereToSearch="IMAGE+SRC" translationType="dynamic image">

La valeur dynamic source indique que les directives traduites doivent se comporter comme des sources dynamiques
Dreamweaver, comme indiqu dans l'exemple suivant :
<translation whereToSearch="directive" translationType="dynamic source">

La valeur tabbed

region start indique que les balises CFLOOP traduites dfinissent le dbut d'un contour tabul,

comme indiqu dans l'exemple suivant :


<translation whereToSearch="CFLOOP" translationType="tabbed region start">

La valeur tabbed

region start indique que les balises /CFLOOP traduites dfinissent le dbut d'un contour tabul, comme indiqu dans l'exemple suivant : <translation whereToSearch="CFLOOP" translationType="tabbed region end">

La valeur custom est le cas par dfaut, dans lequel aucune fonctionnalit Dreamweaver interne n'est ajoute la
traduction. Il est courant de l'utiliser lors de la spcification d'une balise insrer pour un inspecteur Proprits personnalis, comme indiqu dans l'exemple suivant :
<translation whereToSearch="directive" translationType="custom">

<openTag>
Description Cette balise facultative peut tre insre au dbut de la section de traduction. Cette balise permet d'autres extensions, par exemple les inspecteurs Proprits personnaliss, de trouver la traduction. Parent
translation

Type Balise de bloc. Obligatoire Non. Valeurs La valeur tagName est un nom de balise valide. Il doit tre unique pour empcher les conflits avec les types de balise connus. Par exemple, si vous spcifiez <openTag>MM_DYNAMIC_CONTENT</openTag> les donnes dynamiques sont traduites dans la balise MM_DYNAMIC_CONTENT.

EXTENSION DE DREAMWEAVER CS4 296


Comportements de serveur

<attributes>
Description Cette balise contient une liste d'attributs ajouter la balise traduite spcifie dans openTag. Sinon, si la balise openTag n'est pas dfinie et que la balise searchPattern spcifie tag, cette balise contient une liste d'attributs traduits ajouter la balise trouve. Parent
translation

Type Balise de bloc. Obligatoire Non.

<attribute>
Description Cette balise spcifie un attribut unique (ou un attribut traduit) ajouter la balise traduite. Parent
attributes

Type Balise de bloc. Obligatoire Oui (au moins un). Valeurs La spcification attributeName="attributeValue" dfinit un attribut sur une valeur. Le nom d'attribut est gnralement fixe et la valeur contient des rfrences de paramtres extraites par les modles de paramtres, comme indiqu dans l'exemple suivant :
<attribute>SOURCE="@@rs@@"</attribute> <attribute>BINDING="@@col@@"</attribute>

ou
<attribute> mmTranslatedValueDynValue="VALUE={@@rs@@.@@col@@}" </attribute>

<display>
Description Cette balise est une chane d'affichage facultative devant tre insre dans la traduction.

EXTENSION DE DREAMWEAVER CS4 297


Comportements de serveur

Parent
translation

Type Balise de bloc. Obligatoire Non. Valeurs Cette valeur displayString se rfre toute chane contenant du texte et du HTML. Peut comporter des rfrences de paramtres extraites par les modles de paramtres. Par exemple, <display>{@@rs@@.@@col@@}</display> entrane le rendu de la traduction sous la forme {myRecordset.myCol}.

<closeTag>
Description Cette balise facultative doit tre insre la fin de la section traduite. Cette balise permet certaines autres extensions, par exemple les inspecteurs Proprits personnaliss, de trouver la traduction. Parent
translation

Type Balise de bloc. Obligatoire Non. Valeurs La valeur tagName est un nom de balise valide ; elle doit correspondre une balise de traduction openTag. Exemple Si vous spcifiez la valeur <closeTag>MM_DYNAMIC_CONTENT</closeTag>, les donnes dynamiques sont traduites pour terminer avec la balise /MM_DYNAMIC_CONTENT.

Techniques de comportements de serveur


Cette section explique les techniques courantes et avances qui sont utilises pour crer et modifier les comportements de serveur. La plupart des suggestions requirent des paramtres spcifiques dans les fichiers EDML.

Recherche des comportements de serveur


Vous pouvez trouver des comportements de serveur l'aide des fonctions suivantes :

Ecriture de modles de recherche

EXTENSION DE DREAMWEAVER CS4 298


Comportements de serveur

Utilisation de modles de recherche facultatifs


Ecriture de modles de recherche Pour mettre jour ou supprimer des comportements de serveur, vous devez fournir Dreamweaver les moyens de trouver chaque instance dans un document. Pour cela, une balise quickSearch et au moins une balise searchPattern, contenue dans la balise searchPatterns, sont requises. La balise quickSearch doit tre une chane et non une expression rgulire, indiquant l'existence du comportement de serveur sur la page. Elle ne respecte pas la casse. Elle doit tre courte et unique et doit viter les espaces et d'autres sections que l'utilisateur peut modifier. L'exemple suivant montre un participant compos de la simple balise ASP JavaScript :
<% if (Recordset1.EOF) Response.Redirect("some_url_here") %>

Dans l'exemple suivant, la chane quickSearch vrifie la prsence de la balise suivante :


<quickSearch>Response.Redirect</quickSearch>

Pour des raisons de performances, le processus de recherche des instances de comportement de serveur commence par le modle quickSearch. Si cette chane figure dans le document et que le participant identifie un comportement de serveur (dans le fichier groupe, partType="identifier" pour ce participant), les fichiers associs sont alors chargs et la fonction findServerBehaviors() est appele. A dfaut de chanes fiables rechercher dans le participant (ou pour des raisons de dbogage), vous pouvez laisser la chane quickSearch vide, comme indiqu dans l'exemple suivant :
<quickSearch></quickSearch>

Dans cet exemple, le comportement de serveur est toujours charg et la recherche du document excute. La balise searchPattern est ensuite utilise pour analyser le document plus minutieusement que la balise quickSearch et pour extraire des valeurs de paramtre du code du participant. Les modles de recherche spcifient l'emplacement de la recherche (l'attribut whereToSearch) et exploitent une srie de balises searchPattern contenant des modles spcifiques. Ces modles peuvent utiliser de simples chanes ou des expressions rgulires. Le code de l'exemple prcdent est une directive ASP, savoir la spcification whereToSearch="directive" et une expression rgulire identifie la directive et extrait les paramtres, comme indiqu dans l'exemple suivant :
<quickSearch>Response.Write</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="rs,new__url"> /if\s*\((\w+)\.EOF\)\s*Response\.Redirect\("([^\r\n]*)"\)/i </searchPattern> </searchPatterns>

La chane de recherche est dfinie sous la forme d'une expression rgulire en la faisant dbuter et se terminer par une barre oblique (/). Un i suit la barre oblique, ce qui indique qu'elle n'est pas sensible la casse. Dans l'expression rgulire, les caractres spciaux, tels que les parenthses (), points (.), etc. sont spcifis en les faisant prcder d'une barre oblique inverse (\). Les deux paramtres rs et new_url sont extraits de la chane l'aide de sous-expressions entre parenthses (les paramtres doivent tre entre parenthses). Dans cet exemple, ils sont indiqus par (\w+) et ([^\r\n]*). Ces valeurs correspondent aux valeurs d'expression rgulire que $1 et $2 renvoient normalement. Modles de recherche facultatifs Il peut parfois tre ncessaire d'identifier un participant, mme si certains paramtres sont introuvables. Le participant stocke quelques informations facultatives telles qu'un numro de tlphone. Pour cet exemple, vous pouvez utiliser le code ASP suivant :

EXTENSION DE DREAMWEAVER CS4 299


Comportements de serveur

<% //address block LNAME = "joe"; FNAME = "smith"; PHONE = "123-4567"; %>

Vous pouvez utiliser les modles de recherche suivants :


<quickSearch>address</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="lname">/LNAME\s*=\s*"([^\r\n]*)"/i</searchPattern> <searchPattern paramNames="fname">/FNAME\s*=\s*"([^\r\n]*)"/i</searchPattern> <searchPattern paramNames="phone">/PHONE\s*=\s*"([^\r\n]*)"/i</searchPattern> </searchPatterns>

Dans l'exemple prcdent, le numro de tlphone doit tre spcifi. Cependant, vous pouvez rendre le numro de tlphone facultatif en ajoutant l'attribut isOptional, comme indiqu dans l'exemple suivant :
<quickSearch>address</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="lname">/LNAME\s*=\s*"([^\r\n]*)"/i</searchPattern> <searchPattern paramNames="fname">/FNAME\s*=\s*"([^\r\n]*)"/i</searchPattern> <searchPattern paramNames="phone" isOptional="true">/PHONE\s*=\s*"([^\r\n]*)"/i </searchPattern> </searchPatterns>

Le participant est maintenant reconnu, mme si le numro de tlphone n'est pas trouv. Mthode de mise en correspondances des participants Si un comportement de serveur comporte plusieurs participants, ils doivent tre identifis dans le document utilisateur et mis en correspondance. Si l'utilisateur applique plusieurs instances du comportement de serveur un document, chaque groupe de participants doit tre mis en correspondance en consquence. Pour que la mise en correspondance des participants s'effectue correctement, modifiez ou ajoutez des paramtres, puis crez des participants qui soient identifiables de faon unique. La mise en correspondance ncessite quelques rgles : les participants sont mis en correspondance si l'ensemble des paramtres portant le mme nom ont la mme valeur. Au-dessus et en dessous de la balise html ne peut figurer qu'une seule instance d'un participant, avec un jeu donn de valeurs de paramtre. Entre les balises html.../html, Dreamweaver met les participants en correspondance en fonction de leur position par rapport la slection ou aux nuds communs utiliss pour l'insertion. Les participants sans paramtres sont automatiquement retenus, comme le montre cet exemple d'un comportement de serveur avec un fichier groupe :
<group serverBehavior="test.htm"> <title>Test</title> <groupParticipants> <groupParticipant name="test_p1" partType="identifier" /> <groupParticipant name="test_p2" partType="identifier" /> </groupParticipants> </group>

L'exemple suivant insre deux participants simples au-dessus de la balise html :


<% //test_p1 %> <% //test_p2 %> <html>

EXTENSION DE DREAMWEAVER CS4 300


Comportements de serveur

Ces participants sont localiss et mis en correspondance, et le mot Test s'affiche une fois dans le panneau Comportements de serveur. Si vous ajoutez de nouveau ce comportement de serveur, rien n'est ajout tant donn que les participants existent dj. Si les paramtres des participants sont uniques, de multiples instances peuvent tre insres au-dessus de la balise html. Par exemple, en ajoutant un paramtre de nom au participant, un utilisateur peut saisir un nom unique dans la bote de dialogue du comportement de serveur Test. Si l'utilisateur saisit le nom aaa, les participants suivants sont insrs : Si vous ajoutez de nouveau le comportement de serveur et saisissez un autre nom, soit bbb, le document se prsente comme suit :
<% //test_p1 name="aaa" %> <% //test_p2 name="aaa" %> <html>

Deux instances du mot Test sont rpertories dans le panneau Comportements de serveur. Si l'utilisateur tente d'ajouter une troisime instance la page et qu'il la nomme aaa, rien n'est ajout tant donn qu'elle existe dj. Dans la balise html, le processus de mise en correspondance peut galement avoir recours des informations de position. Dans l'exemple suivant, vous avez deux participants, l'un ajout avant la slection et l'autre aprs, comme suit :
<% if (expression) { //mySBName %>

Slection alatoire HTML ici :


<% } //end mySBName %>

Ces deux participants ne sont pourvus d'aucun paramtre et sont donc regroups. Il est toutefois possible d'ajouter une autre instance de ce comportement de serveur ailleurs dans le code HTML, comme indiqu dans l'exemple suivant :
<% if (expression) { //mySBName %>

Slection alatoire HTML ici :


<% } //end mySBName %>

Autre code HTML ici :


<% if (expression) { //mySBName %>

Autre slection HTML ici :


<% } //end mySBName %>

A prsent, les deux instances de chaque participant sont identiques, ce qui est permis dans le code HTML, et Dreamweaver les met en correspondance selon l'ordre dans lequel elles apparaissent dans le document. Voici un exemple type d'un problme de mise en correspondance et des solutions possibles pour l'viter. Vous pouvez crer un participant capable de calculer la taxe de certaines donnes dynamiques et d'afficher le rsultat la slection.
<% total = Recordset1.Fields.Item("itemPrice").Value * 1.0825 %> <html> <body> The total (with taxes) is $<%=total%> </body> </html>

Les deux participants sont mis en correspondance car ils n'ont aucun paramtre en commun. Toutefois, si vous ajoutez une deuxime instance de ce comportement de serveur, vous devez avoir le code suivant :

EXTENSION DE DREAMWEAVER CS4 301


Comportements de serveur

<% total = Recordset1.Fields.Item("itemPrice").Value * 1.0825 %> <% total = Recordset1.Fields.Item("salePrice").Value * 1.0825 %> <html> <body> The total0(with taxes) is $<%=total%> Sale price (with taxes) is $<%=total%> </body> </html>

Ce comportement de serveur ne fonctionne plus correctement, car un seul paramtre est nomm total. Pour rsoudre le problme, vrifiez qu'il existe bien un paramtre dont la valeur est unique et qui peut tre utilis pour mettre en correspondance les participants. Dans l'exemple suivant, vous pouvez faire en sorte que le nom de la variable total soit unique en utilisant le nom de la colonne :
<% itemPrice_total = Recordset1.Fields.Item("itemPrice").Value * 1.0825 %> <% salePrice_total = Recordset1.Fields.Item("salePrice").Value * 1.0825 %> <html> <body> The total0(with taxes) is $<%=itemPrice_total%> Sale price (with taxes) is $<%=salePrice_total%> </body> </html>

A prsent, les modles de recherche peuvent identifier de faon unique les participants et les mettre en correspondance.

Rsolution du modle de recherche


Dreamweaver prend en charge les actions suivantes en utilisant la fonctionnalit searchPatterns du participant :

dpendance du transfert de fichier, mise jour des chemins de fichier pour toutes les rfrences de fichier (tels que les chemins des fichiers inclus).
Lors de la cration de modles de serveur, Dreamweaver gnre des listes de modles en recherchant les attributs paramNames spciaux dans tous les participants. Pour rechercher des URL servant vrifier la dpendance de fichiers et corriger le nom de chemin, Dreamweaver utilise les balises searchPattern qui contiennent des attributs paramNames avec l'extension _url. Vous pouvez spcifier plusieurs URL dans une mme balise searchPattern. Pour chaque balise searchPattern de traducteur comportant une valeur d'attribut paramNames avec l'extension
_includeUrl, Dreamweaver MX utilise cette balise searchPattern pour traduire les instructions de fichier inclus de

la page. Dreamweaver utilise un suffixe diffrent pour identifier les URL de fichier inclus, car toutes les rfrences URL ne sont pas traduites. De mme, une seule URL peut tre traduite comme fichier inclus. Pour rsoudre une balise searchPatterns, Dreamweaver utilise l'algorithme suivant :
1 Recherche de l'attribut whereToSearch dans la balise searchPatterns. 2 Si la valeur de l'attribut commence par tag+, le reste de la chane est considr comme le nom de la balise (les

espaces ne sont pas accepts dans les noms de balise).


3 Recherche de l'attribut limitSearch dans la balise searchPattern. 4 Si la valeur de l'attribut commence par attribute+, le reste de la chane est considr comme le nom de l'attribut

(les espaces ne sont pas accepts dans les noms d'attribut).

EXTENSION DE DREAMWEAVER CS4 302


Comportements de serveur

Si ces quatre tapes se droulent sans anomalie, Dreamweaver suppose qu'il s'agit d'une combinaison balise/attribut. Sinon, Dreamweaver recherche les balises searchPattern contenant un attribut paramName qui comporte un suffixe _url et une expression rgulire dfinie. Pour plus d'informations sur les expressions rgulires, consultez la section Expressions rgulires la page 272. L'exemple suivant de balise searchPatterns ne contient pas de modle de recherche car il combine une balise (cfinclude) avec un attribut (template) pour isoler l'URL et vrifier la dpendance de fichier, la correction de chemin, etc. :
<searchPatterns whereToSearch="tag+cfinclude"> <searchPattern paramNames="include_url" limitSearch="attribute+template" /> </searchPatterns>

La combinaison balise/attribut (voir l'exemple prcdent) ne s'applique pas la traduction, car Dreamweaver traduit directement en texte dans le calque JavaScript. La vrification de dpendance de fichier, la correction de chemin, etc. s'effectuent dans le calque C. Dans le calque C, Dreamweaver partage le document en interne en directives (texte direct) et en balises (structures en une arborescence efficace).

Mise jour des comportements de serveur


Vous pouvez mettre jour les comportements de serveur l'aide des fonctions suivantes :

Mise jour par remplacement Mise jour de prcision


Mise jour par remplacement Par dfaut, aucune balise <updatePatterns> ne figure dans les fichiers EDML participants et les instances du participant sont mises jour dans le document par un remplacement complet. Lorsqu'un utilisateur modifie un comportement de serveur existant et clique sur OK, tout participant contenant un paramtre dont la valeur a chang est supprim. Le participant est ensuite rinsr avec la mme valeur au mme endroit. Si l'utilisateur personnalise le code du participant dans le document, le participant peut ne plus tre reconnu si les modles de recherche recherchent l'ancien code. Les modles de recherche plus courts permettent l'utilisateur de personnaliser le code de participant dans son document. Toutefois, la mise jour de l'instance de comportement de serveur peut entraner le remplacement du participant, qui perd les modifications personnalises. Mise jour de prcision Dans certains cas, il peut tre prfrable de laisser l'utilisateur personnaliser le code du participant aprs insertion dans le document. Pour ce faire, il suffit de limiter les modles de recherche et de fournir des modles de mise jour dans le fichier EDML. Aprs avoir ajout le participant la page, le comportement de serveur n'en modifie que certaines parties. L'exemple suivant indique un simple participant dot de deux paramtres :
<% if (Recordset1.EOF) Response.Redirect("some_url_here") %>

Dans cet exemple, les modles de recherche peuvent se prsenter comme suit :
<quickSearch>Response.Write</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="rs,new__url"> /if\s*\((\w+)\.EOF\)\s*Response\.Redirect\("([^\r\n]*)"\)/i </searchPattern> </searchPatterns>

Le cas chant, l'utilisateur peut ajouter un autre test une instance particulire de ce code, comme indiqu dans l'exemple suivant :

EXTENSION DE DREAMWEAVER CS4 303


Comportements de serveur

<% if (Recordset1.EOF || x > 2) Response.Redirect("some_url_here") %>

Les modles de recherche chouent, car ils recherchent une parenthse aprs le paramtre EOF. Pour rendre les modles de recherche plus flexibles, vous pouvez les raccourcir en les partageant, comme indiqu dans l'exemple suivant :
<quickSearch>Response.Write</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="rs">/(\w+)\.EOF/</searchPattern> <searchPattern paramNames="new__url"> /if\s*\([^\r\n]*\)\s*Response\.Redirect\("([^\r\n]*)"/i </searchPattern> </searchPatterns>

Ces modles de recherche raccourcis tant souples, l'utilisateur peut effectuer des ajouts au code. Toutefois, si le comportement de serveur modifie l'URL, lorsque l'utilisateur clique sur OK, le participant est remplac et les personnalisations sont perdues. Pour une mise jour plus prcise, ajoutez une balise updatePatterns contenant un modle pour la mise jour de chaque paramtre :
<updatePatterns> <updatePattern paramNames="rs">/(\b)\w+(\.EOF)/\</updatePattern> <updatePattern paramNames="new__url"> /(Response\.Redirect\(")[^\r\n]*(")/i </updatePattern> </updatePatterns>

Dans les modles de mise jour, les parenthses sont inverses et places autour du texte avant et aprs le paramtre. Pour les modles de recherche, utilisez le paramtre textBeforeParam(param)textAfterParam. Pour les modles de mise jour, utilisez le paramtre (textBeforeParam)param(textAfterParam). Tout le texte qui se trouve entre les deux sous-expressions entre parenthses sera remplac par la nouvelle valeur du paramtre.

Suppression de comportements de serveur


Vous pouvez supprimer des comportements de serveur l'aide des fonctions suivantes :

Suppression par dfaut et comptes de dpendance Utilisation d'indicateurs pour limiter la suppression des participants
Suppression par dfaut et comptes de dpendance L'utilisateur peut supprimer une instance qu'il a slectionne dans le panneau Comportements de serveur en cliquant sur le bouton moins (-) ou en appuyant sur Suppr. Tous les participants sont limins, hormis ceux qui sont partags par d'autres comportements de serveur. En particulier, si plusieurs comportements de serveur ont un pointeur de participant reli au mme nud, le nud n'est pas supprim. Par dfaut, vous supprimez les participants en liminant une balise entire. Si l'emplacement d'insertion correspond "wrapSelection", seule la balise extrieure est supprime. La dclaration d'attribut dans son ensemble est supprime. L'exemple suivant suppose un participant sur l'attribut ACTION d'une balise form :
<form action="<% my_participant %>">

Aprs suppression de l'attribut, seul form demeure. Utilisation d'indicateurs pour limiter la suppression des participants Pour limiter le mode de slection des participants, ajoutez une balise delete au fichier EDML. L'exemple suivant montre un participant correspondant l'attribut href d'un lien :

EXTENSION DE DREAMWEAVER CS4 304


Comportements de serveur

<a href="<%=MY_URL%>">Link Text</a>

Lorsque ce participant d'attribut est supprim, la balise devient <a>Link Text</a>, qui n'apparat plus sous forme de lien dans Dreamweaver. Il est prfrable de ne supprimer que la valeur d'attribut. La suppression s'effectue en ajoutant la balise suivante au fichier EDML du participant :
<delete deleteType="innerOnly"/>

Une autre approche consiste supprimer la balise entire en tapant <delete deleteType="tagOnly"/> pour supprimer l'attribut. Le texte rsultant est Link Text.

Fichiers JavaScript externes Share-in-memory


Si plusieurs fichiers HTML font rfrence un fichier JavaScript particulier, Dreamweaver charge JavaScript dans un emplacement central partir duquel les fichiers HTML peuvent partager la mme source JavaScript. Ces fichiers contiennent la directive suivante :
//SHARE-IN-MEMORY=true

Si un fichier JavaScript contient la directive SHARE-IN-MEMORY et qu'un fichier HTML y fait rfrence ( l'aide de la balise SCRIPT avec l'attribut SRC), Dreamweaver le charge dans un emplacement centralis afin que le code soit, par la suite, implicitement inclus dans tous les fichiers HTML. Remarque : Les fichiers JavaScript chargs cet emplacement centralis partageant la mmoire, ils ne peuvent dupliquer aucune dclaration. Un conflit de noms risque de se produire s'il y a dfinition simultane d'une mme variable ou fonction la fois dans votre fichier charg dans la mmoire commune et dans un autre fichier JavaScript. Par consquent, prenez en compte ces fichiers et leur convention d'attribution de nom lorsque vous rdigez des fichiers JavaScript.

305

Chapitre 18 : Sources de donnes


Les fichiers de source de donnes sont stocks dans le dossier Configuration/DataSources/nom_modle_serveur. Dreamweaver prend actuellement en charge les modles de serveurs suivants : ASP.NET/C#, ASP.NET/VisualBasic, ASP/JavaScript, ASP/VBScript, Adobe ColdFusion, JSP et PHP/MySQL. Le sous-dossier de chaque modle contient des fichiers HTML et EDML associs aux sources de donnes de ce modle de serveur. Le tableau ci-dessous recense les fichiers utiliss pour crer une source de donnes.
Chemin Configuration/DataSources/Nom_modle_serveur Fichier Nom_source_donnes.ht m Description Indique le nom de la source de donnes et l'emplacement o rsident les fichiers JavaScript de prise en charge. Dfinit le code insr par Dreamweaver dans le document pour dsigner la valeur de la source de donnes. Contient les fonctions JavaScript requises pour ajouter, insrer et supprimer le code appropri dans un document.

Configuration/DataSources/Nom_modle_serveur

Nom_source_donnes.ed ml

Configuration/DataSources/Nom_modle_serveur

Nom_source_donnes.js

Fonctionnement des sources de donnes


Dans Dreamweaver, l'ajout de donnes dynamiques se fait partir du panneau Liaisons. Les objets de donnes dynamiques affichs dans le menu Plus (+) sont bass sur le modle de serveur spcifi pour la page. Par exemple, les utilisateurs peuvent insrer des jeux d'enregistrements, des commandes, des variables de demande, des variables de session et des variables d'application pour les applications ASP. Pour plus d'informations, voir la fonction dreamweaver.dbi.getDataSources() dans le Guide des API de Dreamweaver. Les tapes suivantes dcrivent les processus mis en jeu lors de l'ajout de donnes dynamiques :
1 Lorsque vous cliquez sur le menu Plus (+) du panneau Liaisons, un menu droulant s'affiche.

Pour dterminer le contenu du menu, Dreamweaver commence par rechercher un fichier DataSources.xml dans le mme dossier que les sources de donnes (Configuration/DataSources/ASP_Js/DataSources.xml, par exemple). Le fichier DataSources.xml dcrit le contenu du menu droulant ; il contient les rfrences des fichiers HTML devant figurer dans le menu droulant. Dreamweaver recherche une balise de titre dans chaque fichier HTML rfrenc. Si le fichier contient une balise de titre, le contenu de celle-ci est affich dans le menu. Si le fichier ne contient pas de balise de titre, c'est le nom du fichier qui apparat dans le menu. Lorsque Dreamweaver a termin la lecture du fichier DataSources.xml, il recherche, dans le reste du dossier, d'autres lments qui devraient figurer dans le menu. Il fait de mme si le fichier DataSources.xml n'existe pas. S'il s'avre que le dossier principal contient des fichiers qui ne figurent pas dans le menu, Dreamweaver les y ajoute. Si des sous-dossiers contiennent des fichiers qui ne figurent pas dans le menu, Dreamweaver cre un sous-menu et les y ajoute.

EXTENSION DE DREAMWEAVER CS4 306


Sources de donnes

2 Lorsque l'utilisateur slectionne un lment dans le menu Plus (+), Dreamweaver appelle la fonction
addDynamicSource(). La source des donnes est ainsi ajoute au document de l'utilisateur.

3 Dreamweaver passe en revue tous les fichiers du dossier spcifique au modle de serveur utilis, en appelant la

fonction findDynamicSources() dans chaque fichier. Pour chaque valeur du tableau retourn, Dreamweaver appelle la fonction generateDynamicSourceBindings() dans le mme fichier. Ce faisant, il obtient une nouvelle liste de tous les champs de chaque source de donnes pour le document de l'utilisateur. Ces champs sont prsents l'utilisateur sous la forme d'une commande d'arborescence dans la bote de dialogue Donnes dynamiques ou Texte dynamique, ou encore dans le panneau Liaisons. L'arborescence des sources de donnes d'un document ASP peut se prsenter comme dans l'exemple suivant :
Recordset (Recordset1) ColumnOneInRecordset ColumnTwoInRecordset Recordset (Recordset2) ColumnOfRecordset Request NameOfRequestVariable NameOfAnotherRequestVariable Session NameOfSessionVariable

4 Si l'utilisateur double-clique sur le nom d'une source de donnes dans le panneau Liaisons, Dreamweaver appelle

la fonction editDynamicSource() de faon traiter les modifications dans l'arborescence.


5 Si l'utilisateur clique sur le bouton Moins (-), Dreamweaver obtient la slection de nud actuel depuis

l'arborescence et la transfre la fonction deleteDynamicSource(). Cette fonction supprime le code ajout auparavant l'aide de la fonction addDynamicSource(). S'il n'est pas possible de supprimer la slection en cours, la fonction renvoie un message d'erreur. Aprs le retour de la fonction deleteDynamicSource(), Dreamweaver actualise l'arborescence des sources de donnes en appelant les fonctions findDynamicSources() et generateDynamicSourceBindings().
6 Si l'utilisateur slectionne une source de donnes puis clique sur OK dans la bote de dialogue Donnes dynamiques

ou Texte dynamique, Dreamweaver appelle la fonction generateDynamicDataRef(). Il fait de mme lorsque l'utilisateur clique sur Insrer ou Lier dans le panneau Liaisons. La valeur retourne est insre dans le document au niveau du point d'insertion.
7 Si l'utilisateur modifie un objet de donnes dynamiques l'aide de la bote de dialogue Donnes dynamiques, la

slection dans l'arborescence de source de donnes doit tre initialise en fonction de l'objet. Il en va de mme si l'utilisateur modifie un objet de donnes dynamiques l'aide de la bote de dialogue Texte dynamique. Pour initialiser le contrle d'arborescence, Dreamweaver examine chaque fichier dans le dossier de modle de serveur appropri, par exemple Configuration/DataSources/ASP_Js. Dreamweaver analyse chaque fichier en appelant l'implmentation de la fonction inspectDynamicDataRef(). Dreamweaver appelle la fonction inspectDynamicDataRef() pour que l'objet de donnes dynamiques soit reconverti, partir du code du document de l'utilisateur, en un lment de l'arborescence (cette procdure est en fait inverse par rapport celle produite lorsque la fonction generateDynamicDataRef() est appele). Si la fonction inspectDynamicDataRef() renvoie un tableau contenant deux lments, Dreamweaver fournit des repres visuels pour l'lment d'arborescence li la slection actuelle.
8 A chaque fois que l'utilisateur modifie la slection, Dreamweaver appelle la fonction inspectDynamicDataRef().

Dreamweaver tente ainsi de dterminer si la nouvelle slection est un texte dynamique ou une balise avec un attribut dynamique. S'il s'agit de texte dynamique, Dreamweaver affiche les liaisons de la slection en cours dans le panneau Liaisons.

EXTENSION DE DREAMWEAVER CS4 307


Sources de donnes

9 Il est possible de modifier le format de donnes d'un objet de texte dynamique ou d'un attribut dynamique que

l'utilisateur a dj ajout la page. Pour ce faire, utilisez la bote de dialogue Donnes dynamiques ou Texte dynamique, ou le panneau Liaisons. Lorsque le format change, Dreamweaver appelle la fonction generateDynamicDataRef() afin d'obtenir la chane insrer dans le document de l'utilisateur. Il transfre ensuite cette chane la fonction formatDynamicDataRef() (voir formatDynamicDataRef() la page 323). La chane renvoye par la fonction formatDynamicDataRef() est insre dans le document de l'utilisateur.

Exemple simple de source de donnes


Cette extension ajoute une source de donnes personnalise au panneau Liaisons pour les documents Adobe ColdFusion. Les utilisateurs peuvent spcifier la variable de leur choix pour la source de donnes. Cet exemple permet de crer une source de donnes intitule MyDatasource. Cette source de donnes comprend un fichier JavaScript MyDatasource.js, un fichier MyDatasource_DataRef.edml et les fichiers de commandes MyDatasource_Variable requis pour gnrer une bote de dialogue dans laquelle les utilisateurs entrent le nom d'une variable spcifique. L'exemple MyDatasource est bas sur l'implmentation des sources de donnes Cookie Variable et URL Variable. Les fichiers associs ces sources de donnes rsident dans le dossier Configuration/DataSources/ColdFusion. Pour crer cette source de donnes, crez un fichier de dfinition, un fichier EDML, un fichier JavaScript et les fichiers de commande de prise en charge, puis testez la nouvelle source de donnes.

Cration du fichier de dfinition de source de donnes


Ce fichier indique Dreamweaver le nom de la source de donnes tel qu'il s'affichera dans le menu Plus (+) du panneau Liaisons. Il indique galement Dreamweaver o se trouvent les fichiers JavaScript de prise en charge de l'implmentation de sources de donnes. Lorsqu'un utilisateur clique sur le menu Plus (+) du panneau Liaisons, Dreamweaver effectue des recherches dans le dossier DataSources associ au modle de serveur actuel pour regrouper l'ensemble des sources de donnes dfinies dans les fichiers HTML (HTM) du dossier. Pour rendre une nouvelle source de donnes accessible aux utilisateurs, vous devez crer un fichier de dfinition de source de donnes qui fournit le nom de la source de donnes l'aide de la balise title et l'emplacement des fichiers JavaScript de prise en charge l'aide de la balise script. En outre, plusieurs fichiers de prise en charge sont ncessaires pour l'implmentation de cette source de donnes. En gnral, il n'est pas ncessaire d'utiliser les fonctions de ces fichiers de prise en charge, mais ces dernires se rvlent souvent utiles (voire ncessaires dans cet exemple). Par exemple, le fichier dwscriptsServer.js contient la fonction dwscripts.stripCFOutputTags() utilise pour l'implmentation de cette source de donnes. A l'aide du fichier DataSourceClass.js, vous crez une instance de la classe DataSource utiliser comme valeur de retour pour la fonction findDynamicSources().
1 Crez un document vierge. 2 Entrez le code suivant :

EXTENSION DE DREAMWEAVER CS4 308


Sources de donnes

<HTML> <HEAD> <TITLE>MyDatasource</TITLE> <SCRIPT SRC="../../Shared/Common/Scripts/dwscripts.js"></SCRIPT> <SCRIPT SRC="../../Shared/Common/Scripts/dwscriptsServer.js"></SCRIPT> <SCRIPT SRC="../../Shared/Common/Scripts/DataSourceClass.js"></SCRIPT> <SCRIPT SRC="MyDatasource.js"></SCRIPT> </HEAD> <body></body> </HTML>

3 Enregistrez le fichier sous le nom MyDatasource.htm dans le dossier Configuration/DataSources/ColdFusion.

Cration du fichier EDML


Le fichier EDML dfinit le code insr par Dreamweaver dans le document pour dsigner la valeur de la source de donnes. Pour plus d'informations sur les fichiers EDML, voir Comportements de serveur la page 259. Lorsqu'un utilisateur ajoute une valeur particulire un document partir d'une source de donnes, Dreamweaver insre le code qui sera converti dans la valeur relle lors de l'excution. Le fichier EDML participant dfinit le code du document (pour plus d'informations, voir Fichiers EDML Participant la page 279). Pour la variable MyDatasource, Dreamweaver doit insrer le code ColdFusion <cfoutput>#MyXML.variable#</cfoutput>, o variable est la valeur que l'utilisateur attend de la source de donnes.
1 Crez un document vierge. 2 Entrez le code suivant :
<participant> <quickSearch><![CDATA[#]]></quickSearch> <insertText location="replaceSelection"><![CDATA[<cfoutput>#MyDatasource. @@bindingName@@#</cfoutput>]]></insertText> <searchPatterns whereToSearch="tag+cfoutput"> <searchPattern paramNames="sourceName,bindingName"><![CDATA[/#(?:\s*\w+\s*\()? (MyDatasource)\.(\w+)\b[^#]*#/i]]></searchPattern> </searchPatterns> </participant>

3 Enregistrez le fichier sous le nom MyDatasource_DataRef.edml dans le dossier

Configuration/DataSources/ColdFusion.

Cration du fichier JavaScript qui implmente les fonctions API de sources de donnes
Aprs avoir dfini le nom de la source de donnes, le nom des fichiers de script de prise en charge et le code du document de travail Dreamweaver, vous devez spcifier les fonctions JavaScript afin que Dreamweaver permette l'utilisateur d'ajouter, d'insrer et de supprimer le code ncessaire dans un document. En vous basant sur la construction de la source de donnes Cookie Variable, vous pouvez mettre en uvre la source de donnes MyXML, comme illustr dans l'exemple ci-dessous. La commande MyDatasource_Variable utilise dans la fonction addDynamicSource() est dfinie dans la section Cration des fichiers de commande de prise en charge pour les entres utilisateur la page 311.
1 Crez un document vierge. 2 Entrez le code suivant :

EXTENSION DE DREAMWEAVER CS4 309


Sources de donnes

//************** GLOBALS VARS ***************** var MyDatasource_FILENAME = "REQ_D.gif"; var DATASOURCELEAF_FILENAME = "DSL_D.gif"; //****************** API ********************** function addDynamicSource() { MM.retVal = ""; MM.MyDatasourceContents = ""; dw.popupCommand("MyDatasource_Variable"); if (MM.retVal == "OK") { var theResponse = MM.MyDatasourceContents; if (theResponse.length) { var siteURL = dw.getSiteRoot(); if (siteURL.length) { dwscripts.addListValueToNote(siteURL, "MyDatasource", theResponse); } else { alert(MM.MSG_DefineSite); } } else { alert(MM.MSG_DefineMyDatasource); } } } function findDynamicSources() { var retList = new Array(); var siteURL = dw.getSiteRoot() if (siteURL.length) { var bindingsArray = dwscripts.getListValuesFromNote(siteURL, "MyDatasource"); if (bindingsArray.length > 0) { // Here you create an instance of the DataSource class as defined in the // DataSourceClass.js file to store the return values. retList.push(new DataSource("MyDatasource", MyDatasource_FILENAME, false, "MyDatasource.htm")) } } return retList; }

EXTENSION DE DREAMWEAVER CS4 310


Sources de donnes

function generateDynamicSourceBindings(sourceName) { var retVal = new Array(); var siteURL = dw.getSiteRoot(); // For localized object name... if (sourceName != "MyDatasource") { sourceName = "MyDatasource"; } if (siteURL.length) { var bindingsArray = dwscripts.getListValuesFromNote(siteURL, sourceName); retVal = getDataSourceBindingList(bindingsArray, DATASOURCELEAF_FILENAME, true, "MyDatasource.htm"); } return retVal; } function generateDynamicDataRef(sourceName, bindingName, dropObject) { var paramObj = new Object(); paramObj.bindingName = bindingName; var retStr = extPart.getInsertString("", "MyDatasource_DataRef", paramObj); // We need to strip the cfoutput tags if we are inserting into a CFOUTPUT tag // or binding to the attributes of a ColdFusion tag. So, we use the // dwscripts.canStripCfOutputTags() function from dwscriptsServer.js if (dwscripts.canStripCfOutputTags(dropObject, true)) { retStr = dwscripts.stripCFOutputTags(retStr, true); } return retStr; } function inspectDynamicDataRef(expression) { var retArray = new Array(); if(expression.length) { var params = extPart.findInString("MyDatasource_DataRef", expression); if (params) { retArray[0] = params.sourceName; retArray[1] = params.bindingName;

EXTENSION DE DREAMWEAVER CS4 311


Sources de donnes

} } return retArray; } function deleteDynamicSource(sourceName, bindingName) { var siteURL = dw.getSiteRoot(); if (siteURL.length) { //For localized object name if (sourceName != "MyDatasource") { sourceName = "MyDatasource"; } dwscripts.deleteListValueFromNote(siteURL, sourceName, bindingName); } }

3 Enregistrez le fichier sous le nom MyDatasource.js dans le dossier Configuration/DataSources/ColdFusion.

Cration des fichiers de commande de prise en charge pour les entres utilisateur
La fonction addDynamicSource() contient la commande dw.popupCommand("MyDatasource_Variable"), qui ouvre une bote de dialogue dans laquelle l'utilisateur entre un nom spcifique de variable. Vous devez cependant crer la bote de dialogue pour la variable MyDatasource. Pour fournir une bote de dialogue pour l'utilisateur, crez un nouveau jeu de fichiers de commandes : un fichier de dfinition de commandes en HTML et un en JavaScript (pour plus d'informations sur les fichiers de commandes, voir Fonctionnement des commandes la page 139). Le fichier de dfinition de commande indique Dreamweaver l'emplacement des fichiers JavaScript de prise en charge du dploiement. Le fichier de dfinition indique galement le formulaire de la bote de dialogue que l'utilisateur voit. Le fichier JavaScript de prise en charge dtermine les boutons de la bote de dialogue et indique comment affecter les donnes saisies par l'utilisateur partir de la bote de dialogue. Cration du fichier de dfinition de commande 1 Crez un document vierge.
2 Entrez le code suivant :

EXTENSION DE DREAMWEAVER CS4 312


Sources de donnes

<!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//dialog"> <html> <head> <title>MyDatasource Variable</title> <script src="MyDatasource_Variable.js"></script> <SCRIPT SRC="../Shared/MM/Scripts/CMN/displayHelp.js"></SCRIPT> <SCRIPT SRC="../Shared/MM/Scripts/CMN/string.js"></SCRIPT> <link href="../fields.css" rel="stylesheet" type="text/css"> </head> <body> <form> <div ALIGN="center"> <table border="0" cellpadding="2" cellspacing="4"> <tr> <td align="right" valign="baseline" nowrap>Name:</td> <td valign="baseline" nowrap> <input name="theName" type="text" class="medTField"> </td> </tr> </table> </div> </form> </body> </html>

3 Enregistrez le fichier dans le dossier Configuration/Commands sous le nom MyDatasource_Variable.htm.

Remarque : Le fichier MyDatasource_Variable.js correspond au fichier de mise en uvre cr dans le cadre de la procdure suivante. Cration du fichier JavaScript de prise en charge 1 Crez un document vierge.
2 Entrez le code suivant :
//******************* API ********************** function commandButtons(){ return new Array(MM.BTN_OK,"okClicked()",MM.BTN_Cancel,"window.close()"); } //***************** LOCAL FUNCTIONS****************** function okClicked(){ var nameObj = document.forms[0].theName; if (nameObj.value) { if (IsValidVarName(nameObj.value)) { MM.MyDatasourceContents = nameObj.value; MM.retVal = "OK"; window.close(); } else { alert(nameObj.value + " " + MM.MSG_InvalidParamName); } } else { alert(MM.MSG_NoName); } }

EXTENSION DE DREAMWEAVER CS4 313


Sources de donnes

3 Enregistrez le fichier dans le dossier Configuration/Commands sous le nom MyDatasource_Variable.js.

Test de la nouvelle source de donnes


Vous pouvez maintenant ouvrir Dreamweaver (ou le redmarrer s'il est dj utilis) et ouvrir un fichier ColdFusion ou en crer un nouveau.
1 Placez le pointeur sur le document, cliquez sur le menu Plus (+) du panneau Liaisons pour afficher l'ensemble des

sources de donnes disponibles. MyDatasource doit s'afficher en fin de liste.


2 Cliquez sur l'option de source de donnes MyDatasource pour afficher la bote de dialogue MyDatasource_Variable

que vous avez cre :

3 Saisissez une valeur dans la bote de dialogue, puis appuyez sur OK.

Le panneau Liaisons affiche la source de donnes dans une arborescence comprenant la variable de la bote de dialogue sous le nom de la source de donnes :

4 Faites glisser la variable dans votre document ; Dreamweaver se charge d'insrer le code appropri partir du fichier

EDML :

EXTENSION DE DREAMWEAVER CS4 314


Sources de donnes

Fonctions de l'API des sources de donnes


Les fonctions de l'API de sources de donnes vous permettent de trouver, ajouter, modifier et supprimer des sources de donnes ainsi que de gnrer et inspecter des objets de donnes dynamiques.

addDynamicSource()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction ajoute une source de donnes dynamiques. Comme cette fonction est implmente dans chaque fichier de source de donnes, Dreamweaver appelle l'implmentation approprie de la fonction addDynamicSource() ds qu'une source de donnes est slectionne dans le menu Plus (+). Par exemple, pour les jeux d'enregistrements ou les commandes, Dreamweaver appelle la fonction dw.serverBehaviorInspector.popupServerBehavior(), qui insre un nouveau comportement de serveur dans le document. Pour les variables de demande, de session et d'application, Dreamweaver affiche une bote de dialogue HTML/JavaScript permettant de recueillir le nom de la variable ; le comportement stocke ce nom en vue d'une utilisation ultrieure. Une fois la fonction addDynamicSource() renvoye, Dreamweaver efface le contenu de l'arborescence de la source de donnes et appelle les fonctions findDynamicSources() et generateDynamicSourceBindings() pour remplir de nouveau l'arborescence. Valeurs renvoyes Dreamweaver ne renvoie rien.

deleteDynamicSource()
Disponibilit Dreamweaver UltraDev 1. Description Dreamweaver appelle cette fonction lorsqu'un utilisateur slectionne une source de donnes dans l'arborescence avant de cliquer sur le bouton Moins (-). Par exemple, dans Dreamweaver, si un jeu d'enregistrements ou une commande sont slectionns, la fonction deleteDynamicSource() appelle la fonction dw.serverBehaviorInspector.deleteServerBehavior(). Si la slection est une variable de requte, de session ou d'application, la fonction se souvient que la variable a t supprime et ne l'affiche plus. Une fois la fonction deleteDynamicSource() renvoye, Dreamweaver efface le contenu de l'arborescence des sources de donnes et appelle les fonctions findDynamicSources() et generateDynamicSourceBindings() pour obtenir une nouvelle liste de toutes les sources de donnes associes au document de l'utilisateur. Arguments sourceName, bindingName

L'argument sourceName est le nom du nud de niveau suprieur auquel le nud enfant est associ.

EXTENSION DE DREAMWEAVER CS4 315


Sources de donnes

L'argument bindingName est le nom du nud enfant.


Valeurs renvoyes Dreamweaver ne renvoie rien.

displayHelp()
Description Si cette fonction est dfinie, un bouton Aide s'affiche sous les boutons OK et Annuler dans la bote de dialogue. Cette fonction est appele lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple
// The following instance of displayHelp() opens // a file (in a browser) that explains how to use // the extension. function displayHelp(){ var myHelpFile = dw.getConfigurationPath() + '/ExtensionsHelp/superDuperHelp.htm'; dw.browseDocument(myHelpFile); }

editDynamicSource()
Disponibilit Dreamweaver MX. Description Cette fonction est appele lorsque l'utilisateur clique deux fois sur le nom d'une source de donnes dans le panneau Liaisons pour la modifier. Implmenter cette fonction vous permet de traiter les modifications utilisateur au sein de l'arborescence. Sinon, le comportement de serveur correspondant la source de donnes est automatiquement appel. Le dveloppeur d'extensions peut utiliser cette fonction pour remplacer l'implmentation par dfaut des comportements de serveur et crer un gestionnaire personnalis. Arguments sourceName, bindingName

L'argument sourceName est le nom du nud de niveau suprieur auquel le nud enfant est associ. L'argument bindingName est le nom du nud enfant.
Valeurs renvoyes Dreamweaver attend une valeur boolenne : true si la fonction a trait la modification et false dans le cas contraire.

EXTENSION DE DREAMWEAVER CS4 316


Sources de donnes

findDynamicSources()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction renvoie les nuds de niveau suprieur de l'arborescence des sources de donnes qui s'affichent dans la bote de dialogue Donnes dynamiques ou Texte dynamique, ou encore dans le panneau Liaisons. La fonction findDynamicSources() est implmente dans chaque fichier de source de donnes. En actualisant l'arborescence, Dreamweaver parcourt tous les fichiers du dossier DataSources et appelle la fonction findDynamicSources() dans chacun d'eux. Valeurs renvoyes Dreamweaver attend un tableau d'objets JavaScript dans lequel chaque objet peut comporter cinq proprits, dcrites dans la liste suivante :

La proprit title correspond au libell qui apparat droite de l'icne de chaque nud parent. La proprit
title est toujours obligatoire.

La proprit imageFile est le chemin d'un fichier contenant une icne (image GIF) reprsentant le nud parent
dans la commande d'arborescence affiche dans la bote de dialogue Donnes dynamiques ou Texte dynamique, ou encore dans le panneau Liaisons. Cette proprit est obligatoire.

La proprit allowDelete est facultative. Si cette proprit est rgle sur false, lorsque l'utilisateur clique sur ce
nud dans le panneau Liaisons, le bouton Moins (-) est dsactiv. Si elle est rgle sur true, le bouton Moins (-) est activ. Si la proprit n'est pas dfinie, elle prend par dfaut la valeur true.

La proprit dataSource est le nom du fichier dans lequel la fonction findDynamicSources() est dfinie. Par
exemple, la fonction findDynamicSources() dans le fichier Session.htm, situ dans le dossier Configuration/DataSources/ASP_Js, dfinit la proprit dataSource sur session.htm. Cette proprit est obligatoire.

La proprit name est le nom du comportement de serveur associ la source de donnes, s'il existe. Certaines
sources de donnes, telles que des jeux d'enregistrements, sont associes des comportements de serveur. Lorsque vous crez un jeu d'enregistrements et que vous lui attribuez le nom rsAuthors, l'attribut name doit avoir pour valeur rsAuthors. La proprit name est toujours dfinie, mais il peut s'agir d'une chane vide ("") si aucun comportement de serveur n'est associ la source de donnes (tel qu'une variable de session). Remarque : Une classe JavaScript dfinissant ces proprits existe dans le fichier DataSourceClass.js. Ce dernier se trouve dans le dossier Configuration/Shared/Common/Scripts.

generateDynamicDataRef()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction gnre l'objet de donnes dynamiques pour un nud enfant.

EXTENSION DE DREAMWEAVER CS4 317


Sources de donnes

Arguments sourceName, bindingName

L'argument sourceName est le nom du nud de niveau suprieur associ au nud enfant. L'argument bindingName est le nom du nud enfant partir duquel vous souhaitez gnrer un objet de donnes
dynamiques. Valeurs renvoyes Dreamweaver attend une chane qui peut tre transmise pour formatage la fonction formatDynamicDataRef() avant d'tre insre dans le document d'un utilisateur.

generateDynamicSourceBindings()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction renvoie le nud enfant d'un nud de niveau suprieur. Arguments sourceName

L'argument sourceName est le nom du nud de niveau suprieur dont vous voulez renvoyer les nuds enfants.
Valeurs renvoyes Dreamweaver attend un tableau d'objets JavaScript dans lequel chaque objet peut comporter quatre proprits, dcrites dans la liste suivante :

La proprit title correspond l'tiquette qui apparat droite de l'icne de chaque nud parent. Cette proprit
est obligatoire.

La proprit allowDelete est facultative. Si cette proprit est rgle sur la valeur false, lorsque l'utilisateur clique
sur ce nud dans le panneau Liaisons, le bouton Moins (-) apparat dsactiv. Si elle est rgle sur la valeur true, le bouton Moins (-) est activ. Si la proprit n'est pas dfinie, elle prend par dfaut la valeur true.

La proprit dataSource est le nom du fichier dans lequel la fonction findDynamicSources() est dfinie. Par
exemple, la fonction findDynamicSources() dans le fichier Session.htm, situ dans le dossier Configuration/DataSources/ASP_Js, dfinit la proprit dataSource sur session.htm. Cette proprit est obligatoire.

La proprit name est le nom du comportement de serveur associ la source de donnes, s'il existe. Cette proprit
est obligatoire. Certaines sources de donnes, telles que des jeux d'enregistrements, sont associes des comportements de serveur. Lorsque vous crez un jeu d'enregistrements et que vous lui attribuez le nom rsAuthors, la proprit name doit avoir pour valeur rsAuthors. D'autres sources de donnes, telles que les variables de session, ne sont pas associes un comportement de serveur. Leur proprit name doit correspondre une chane vide (""). Remarque : Une classe JavaScript dfinissant ces proprits existe dans le fichier DataSourceClass.js. Ce dernier se trouve dans le dossier Configuration/Shared/Common/Scripts.

EXTENSION DE DREAMWEAVER CS4 318


Sources de donnes

inspectDynamicDataRef()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction dtermine le nud correspondant dans l'arborescence de sources de donnes depuis un objet de donnes dynamiques. La fonction inspectDynamicDataRef() extrait la chane transmise par Dreamweaver et la compare celle renvoye par generateDynamicDataRef() pour chaque nud de l'arborescence. En cas de correspondance, la fonction inspectDynamicDataRef() indique quel nud de l'arborescence correspond la chane transmise. La fonction identifie le nud au moyen d'un tableau contenant deux lments. Le premier lment est le nom du nud parent et le second celui du nud enfant. Si aucune correspondance n'est trouve, la fonction inspectDynamicDataRef() renvoie un tableau vide. Chaque implmentation de la fonction inspectDynamicDataRef() ne recherche que les correspondances de son propre type d'objet. Par exemple, l'implmentation de la fonction inspectDynamicDataRef() pour les jeux d'enregistrements ne trouve une correspondance que si la chane transmise correspond un nud de jeu d'enregistrements dans l'arborescence. Arguments string

L'argument string est l'objet de donnes dynamiques.


Valeurs renvoyes Dreamweaver attend un tableau de deux lments (nom du parent et nom de l'enfant) pour le nud correspondant ; il renvoie la valeur null en l'absence de correspondance.

319

Chapitre 19 : Formats de serveur


La section Sources de donnes la page 305 explique comment Adobe Dreamweaver insre des donnes dynamiques dans le document de l'utilisateur en ajoutant une expression de serveur l'endroit appropri. Lorsqu'un visiteur demande le document de l'utilisateur partir du serveur Web, l'expression est convertie en une valeur de base de donnes, en contenu d'une variable de requte ou en toute autre valeur dynamique. Les formats de serveur de Dreamweaver permettent de formater la valeur dynamique pour la prsenter au visiteur.

Fonctionnement du formatage de donnes


Les utilisateurs de Dreamweaver peuvent mettre leurs donnes en forme l'aide de formats prdfinis. Ils peuvent aussi crer des formats partir de types prdfinis ou de types qu'ils ont crs eux-mmes. L'utilisateur peut formater les donnes dynamiques de plusieurs faons. Pour formater les donnes avant de les insrer dans un document HTML, utilisez le menu Format. Il se trouve dans la bote de dialogue Donnes dynamiques ou Texte dynamique, ou dans le panneau Liaisons. Pour crer un format, choisissez la commande Modifier la liste de formats dans le menu Format, puis choisissez un type de format dans le menu Plus (+). Le menu Plus (+) contient une liste de types de format. Les types de format sont des catgories de format de base (Devise, Date/Heure, Casse, etc.). Ils regroupent tous les paramtres communs une catgorie et facilitent la cration de formats. Vous pouvez par exemple les utiliser pour crer un format de devise. Le formatage des devises consiste convertir un nombre en une chane et insrer des virgules et un symbole de devise (le signe du dollar, $, par exemple). Le type de donnes de format Devise regroupe tous les paramtres communs et vous demande une valeur pour chacun d'eux. La rubrique API de format de serveur tudie l'API qui formate les donnes dynamiques que renvoient les fonctions dcrites dans la section Sources de donnes la page 305. Les donnes dynamiques sont formates l'aide d'une combinaison des fonctions dcrites dans les deux rubriques. Tous les fichiers de format rsident dans le dossier Configuration/ServerFormats/Modle_serveur_actuel. Chaque sous-dossier contient un fichier XML et plusieurs fichiers HTML. Le fichier Formats.xml dcrit tous les choix du menu Format. Dreamweaver ajoute automatiquement les options Modifier la liste de formats et Aucun. Le dossier contient galement un fichier HTML pour chaque type de format install, dont Casse d'alphabet, Devise, Date/Heure, Math, Nombre, Pourcentage, Simple et Rogner. Remarque : Le format Devise n'est pas disponible pour les modles de serveur PHP.

Fichier Formats.xml
Le fichier Formats.xml contient une balise format pour chaque lment du menu Format. Chaque balise format contient les attributs obligatoires suivants :

L'attribut file=fileName reprsente le fichier HTML du type de format concern, tel que L'attribut title=string reprsente la chane qui apparat dans le menu Format, telle que
dfaut .

Devise .

Devise- valeur par

EXTENSION DE DREAMWEAVER CS4 320


Formats de serveur

L'attribut expression=regexp reprsente une expression rgulire correspondant aux objets de donnes
dynamiques qui utilisent ce format. L'expression dtermine le format actuellement appliqu l'objet de donnes dynamiques. Par exemple, l'expression correspondant au format Devise - valeur par dfaut serait
"<%\s*=\s*FormatCurrency\(.*, -1, -2, -2,-2\)\s*%>|<%\s*=\s*DoCurrency\(.*, -1, -2, -2, 2\)\s*%>". La valeur de l'attribut expression doit tre unique parmi toutes les balises format du fichier. Elle doit

tre suffisamment prcise pour garantir que seules les instances de ce format correspondent l'expression.

L'attribut visibility=[hidden

| visible] indique si la valeur est affiche dans le menu Format. Si la valeur de l'attribut visibility est hidden (masqu), le format ne s'affiche pas dans le menu Format.

La balise format peut ventuellement contenir des attributs supplmentaires ayant un nom arbitraire. Certaines fonctions de formatage de donnes ncessitent un argument, format, qui est un objet JavaScript. Cet objet est le nud correspondant la balise format dans le fichier Formats.xml. L'objet a une proprit JavaScript pour chaque attribut de la balise format correspondante. L'exemple suivant illustre la balise format associe la chane Devise - valeur par dfaut :
<format file="Currency" title="Currency - default" expression="<%\s*=\s*FormatCurrency\(.*, -1, -2, -2, -2\)\s*%>| <%\s*=\s*DoCurrency\(.*, -1, -2, -2, -2\)\s*%>" NumDigitsAfterDecimal=-1 IncludeLeadingDigit=-2 UseParensForNegativeNumbers=-2 GroupDigits=-2/>

Le type de ce format correspond Currency. La chane Devise - valeur par dfaut s'affiche dans le menu Format. L'expression <%\s*=\s*FormatCurrency\(.*, -1, -2, -2,-2\)\s*%>|<%\s*=\s*DoCurrency\(.*, 1, -2, -2, -2\)\s*%> trouve des occurrences de ce format dans le document de l'utilisateur. Les paramtres NumDigitsAfterDecimal, IncludeLeadingDigit, UseParensForNegativeNumbers et GroupDigits concernent le format Devise et ne sont pas obligatoires. Ces paramtres s'affichent dans la bote de dialogue Paramtres du type de format Devise. Cette bote de dialogue apparat chaque fois qu'un utilisateur choisit le type de format Devise dans le menu Plus (+) de la bote de dialogue Modifier la liste de formats. Les valeurs indiques pour ces paramtres sont utilises pour dfinir le nouveau format.

Le menu Plus (+) de la bote de dialogue Modifier la liste de formats


Si vous ne voulez pas qu'un fichier du dossier ServerFormats apparaisse dans le menu Plus (+) de la bote de dialogue Modifier la liste de formats, ajoutez l'instruction suivante de manire ce qu'elle figure sur la premire ligne du fichier HTML :
<!-- MENU-LOCATION=NONE -->

Pour dterminer le contenu du menu, Dreamweaver commence par rechercher un fichier ServerFormats.xml dans le mme dossier que les formats de donnes (par exemple, Configuration/ServerFormats/ASP/). Le fichier ServerFormats.xml dcrit le contenu du menu Plus (+) de la bote de dialogue Modifier la liste de formats. Il contient des rfrences aux fichiers HTML rpertoris dans le menu. Dreamweaver recherche une balise title dans chaque fichier HTML rfrenc. Si le fichier contient une balise de titre, le contenu de celle-ci est affich dans le menu. Si le fichier ne contient pas de balise de titre, c'est le nom du fichier qui apparat dans le menu. Une fois qu'il a fini de rechercher le fichier ou si ce fichier n'existe pas, Dreamweaver analyse le reste du dossier pour vrifier s'il contient d'autres lments devant apparatre dans le menu. S'il s'avre que le dossier principal contient des fichiers qui ne figurent pas dans le menu, Dreamweaver les y ajoute. Si des sous-dossiers contiennent des fichiers qui ne figurent pas dj dans le menu, Dreamweaver cre un sous-menu et les y ajoute.

EXTENSION DE DREAMWEAVER CS4 321


Formats de serveur

Scnarios dans lesquels les fonctions de formatage des donnes sont appeles
Les fonctions de formatage de donnes sont appeles dans les cas suivants :

Dans la bote de dialogue Donnes dynamiques ou Texte dynamique, l'utilisateur choisit un nud dans
l'arborescence des sources de donnes et un format dans le menu Format. Une fois le format choisi, Dreamweaver appelle la fonction generateDynamicDataRef() et transmet la valeur de renvoi de la fonction generateDynamicDataRef() la fonction formatDynamicDataRef(). La valeur renvoye par la fonction formatDynamicDataRef() s'affiche dans le paramtre Code de la bote de dialogue. Lorsque l'utilisateur clique sur OK, la chane de code est insre dans le document de l'utilisateur. Dreamweaver appelle ensuite la fonction applyFormat() pour insrer une dclaration de fonction. Pour plus dinformations, voir generateDynamicDataRef() la page 316. Un processus similaire a lieu lorsque l'utilisateur utilise le panneau Liaisons.

L'utilisateur change le format ou efface l'lment de donnes dynamiques. La fonction deleteFormat() est alors
appele. Cette fonction deleteFormat() supprime les scripts correspondants du document.

Lorsque l'utilisateur clique sur le bouton Plus (+) de la bote de dialogue Modifier la liste de formats, Dreamweaver
affiche un menu contenant tous les types de format pour le modle de serveur utilis. Chaque type de format correspond un fichier du dossier Configuration\ServerFormats\Modle_serveur_actuel. Si l'utilisateur choisit, dans le menu Plus (+), un format qui ncessite un paramtre spcifi par l'utilisateur, Dreamweaver excute le gestionnaire onLoad sur la balise body, puis ouvre la bote de dialogue Paramtres, qui affiche les paramtres de ce type de format. Dans cette bote de dialogue, l'utilisateur choisit les paramtres du format et clique sur OK. Dreamweaver appelle alors la fonction applyFormatDefinition(). Si le format slectionn n'a pas besoin d'afficher de bote de dialogue Paramtres, Dreamweaver appelle la fonction applyFormatDefinition() lorsque l'utilisateur choisit le type de format dans le menu Plus (+).

Par la suite, si l'utilisateur modifie le format (en le slectionnant dans la bote de dialogue Modifier la liste de
formats et en cliquant sur le bouton Modifier), Dreamweaver appelle la fonction inspectFormatDefinition() avant d'afficher la bote de dialogue Paramtres, de faon ce que les commandes de formulaire puissent tre initialises sur les valeurs correctes.

Fonctions de l'API des formats de serveur


L'API de formats de serveur est compose des fonctions de formatage de donnes suivantes.

applyFormat()
Disponibilit Dreamweaver UltraDev 1.

EXTENSION DE DREAMWEAVER CS4 322


Formats de serveur

Description Cette fonction permet de modifier un document en lui ajoutant une dclaration de fonction de format. Lorsqu'un utilisateur choisit un format dans la zone Format de la bote de dialogue Donnes dynamique ou Texte dynamique, ou dans le panneau Liaisons, Dreamweaver apporte deux modifications au document de l'utilisateur. Il ajoute la fonction de format approprie devant la balise HTML (si elle ne s'y trouve pas dj) et il modifie l'objet de donnes dynamiques de faon appeler la fonction de format approprie. Dreamweaver ajoute la dclaration de fonction en appelant la fonction JavaScript applyFormat() dans le fichier de format des donnes. Il modifie l'objet de donnes dynamique en appelant la fonction formatDynamicDataRef(). La fonction applyFormat() doit utiliser le DOM (Document Object Model, Modle d'objet de document) pour ajouter des dclarations de fonction au dbut du document de l'utilisateur. Par exemple, si l'utilisateur slectionne Devise - Valeur par dfaut, la fonction ajoute la dclaration de fonction Currency. Arguments format

L'argument format est un objet JavaScript qui dcrit le format appliquer. Cet objet JavaScript constitue le nud
correspondant la balise format dans le fichier Formats.xml. L'objet a une proprit JavaScript pour chaque attribut de la balise format correspondante. Valeurs renvoyes Dreamweaver ne renvoie rien.

applyFormatDefinition()
Disponibilit Dreamweaver UltraDev 1. Description Applique les changements un format cr partir de la bote de dialogue Modifier le format. Les utilisateurs peuvent crer, modifier ou supprimer des formats partir de la bote de dialogue Modifier la liste de formats. Cette fonction est appele pour appliquer toutes les modifications apportes un format. Elle peut galement dfinir d'autres proprits, nommes arbitrairement, pour l'objet. Chaque proprit est stocke en tant qu'attribut de la balise format dans le fichier Formats.xml. Arguments format

L'argument format correspond l'objet format JavaScript. Cette fonction doit faire de la proprit expression de
l'objet JavaScript l'expression rgulire du format. Elle peut galement dfinir d'autres proprits, nommes arbitrairement, pour l'objet. Chaque proprit est stocke en tant qu'attribut de la balise format. Valeurs renvoyes Dreamweaver attend l'objet de format, si la fonction est correctement applique. En cas d'erreur, une chane d'erreur est renvoye. Si une chane vide est renvoye, le formulaire est ferm mais le nouveau format n'est pas cr, ce qui revient annuler l'opration.

EXTENSION DE DREAMWEAVER CS4 323


Formats de serveur

deleteFormat()
Disponibilit Dreamweaver UltraDev 1. Description Supprime la dclaration de fonction du format au dbut du document de l'utilisateur. Lorsque l'utilisateur modifie le format d'un objet de donnes dynamiques (dans les botes de dialogue Donnes dynamiques ou Texte dynamique ou dans le panneau Liaisons) ou supprime un objet de donnes dynamiques format, Dreamweaver supprime la dclaration de fonction au dbut du document, ainsi que l'appel de la fonction de l'objet de donnes dynamiques en appelant la fonction deleteFormat(). Utilisez le DOM avec la fonction deleteFormat() pour supprimer la dclaration de fonction au dbut du document ouvert. Arguments format L'argument format est un objet JavaScript qui dcrit le format supprimer. Cet objet JavaScript constitue le nud correspondant la balise format dans le fichier Formats.xml. Valeurs renvoyes Dreamweaver ne renvoie rien.

formatDynamicDataRef()
Disponibilit Dreamweaver UltraDev 1. Description Ajoute l'objet de donnes dynamiques l'appel de la fonction de format. Lorsqu'un utilisateur choisit un format dans la zone Format de la bote de dialogue Donnes dynamique ou Texte dynamique, ou dans le panneau Liaisons, Dreamweaver apporte deux modifications au document de l'utilisateur. Il ajoute la fonction de format approprie devant la balise HTML (si elle ne s'y trouve pas dj) et il modifie l'objet de donnes dynamiques de faon appeler la fonction de format approprie. Dreamweaver ajoute la dclaration de fonction en appelant la fonction JavaScript applyFormat() dans le fichier de format des donnes. Il modifie l'objet de donnes dynamique en appelant la fonction formatDynamicDataRef(). La fonction formatDynamicDataRef() est appele lorsque l'utilisateur slectionne un format du champ de texte Format de la bote de dialogue Donnes dynamiques ou Texte dynamique ou du panneau Liaisons. Elle ne modifie pas le document de l'utilisateur. Arguments dynamicDataObject, format

L'argument dynamicDataObject est une chane contenant l'objet de donnes dynamiques.

EXTENSION DE DREAMWEAVER CS4 324


Formats de serveur

L'argument format est un objet JavaScript qui dcrit le format appliquer. Cet objet JavaScript constitue le nud
correspondant la balise format dans le fichier Formats.xml. L'objet a une proprit JavaScript pour chaque attribut de la balise format correspondante. Valeurs renvoyes Dreamweaver attend la nouvelle valeur de l'objet de donnes dynamiques. Si une erreur a lieu, la fonction affiche un message d'avertissement dans certaines conditions. Si la fonction renvoie une chane vide, le champ Format prend la valeur Aucun.

inspectFormatDefinition()
Disponibilit Dreamweaver UltraDev 1. Description Initialise les commandes de formulaire lorsqu'un utilisateur modifie un format existant dans la bote de dialogue Modifier la liste de formats. Arguments format L'argument format est un objet JavaScript qui dcrit le format appliquer. Cet objet JavaScript constitue le nud correspondant la balise format dans le fichier Formats.xml. L'objet a une proprit JavaScript pour chaque attribut de la balise format correspondante. Valeurs renvoyes Dreamweaver ne renvoie rien.

325

Chapitre 20 : Composants
Adobe Dreamweaver gre la cration de la plupart des types de composants les plus populaires. Dreamweaver vous permet en outre de dvelopper les types de composants intgrs au panneau Composants.

A propos des notions de base des composants


Les programmeurs ont recours diffrentes stratgies pour encapsuler leurs travaux. L'encapsulation correspond la cration d'une entit dans une bote noire virtuelle. Pour l'utiliser, il n'est pas ncessaire de comprendre son fonctionnement. Il est par contre essentiel de savoir de quelles informations elle a besoin pour fonctionner et quelles informations elle produira la fin d'une tche. Un programmeur cre par exemple un programme destin extraire des informations d'une base de donnes d'employs. Toute personne, y compris d'autres programmes, peut alors utiliser ce programme pour interroger la base de donnes. Le programme est ainsi rutilisable. L'exprience prouve que les programmes bien organiss qui font appel l'encapsulation sont plus faciles grer, amliorer et rutiliser. Les diffrentes technologies offrent aux programmeurs diffrentes faons d'effectuer l'encapsulation, et ces stratgies portent diffrents noms : fonctions, modules, etc. Dreamweaver utilise le terme composant pour dsigner quelques-unes des stratgies d'encapsulation les plus populaires et les plus modernes, comme les composants Adobe ColdFusion (CFC). Lorsque les utilisateurs crent des applications Web dans Dreamweaver, le panneau Composants les aide utiliser les CFC. Les composants provenant de technologies rcentes (comme les services Web, JavaBeans ou les CFC) sont capables de s'autodcrire. En rgle gnrale, des informations relatives au composant sont imbriques dans les fichiers qui le constituent. La capacit d'un composant publier ou partager ces informations porte le nom d'introspection. Ainsi, un programme comme Dreamweaver peut demander un composant la liste des fonctions qu'il expose. Les fonctions exposes sont les fonctions qui peuvent tre charges partir d'un autre programme. En fonction de la technologie utilise, un composant peut rvler d'autres informations son sujet.

Extension du panneau Composants


Pour utiliser une stratgie de composants qui n'est pas reprsente dans le panneau Composants actuel, dveloppez la logique du panneau Composants. Le panneau pourra ainsi prendre en charge de nouveaux types de composants. Pour ajouter un nouveau composant au panneau Composants de Dreamweaver, recherchez les composants disponibles (dans l'environnement de l'utilisateur). Demandez ensuite des descriptions de chaque composant (ou filtrez-les si elles sont rdiges l'aide de fichiers ASCII). La faon prcise dont l'emplacement et les dtails des composants sont extraits dpend des technologies. Elle peut galement varier selon le modle de serveur (ASP.NET, JSP/J2EE, ColdFusion ou autre). Ainsi, le code JavaScript que vous rdigez pour dvelopper le panneau Composants dpend de la technologie du composant ajouter. Les fonctions dcrites dans cette section doivent vous aider obtenir les informations qui doivent figurer dans le panneau Composants. Vous devez par ailleurs rdiger par vos propres soins la majeure partie de la logique servant rechercher les composants et les analyser. Ces oprations comprennent l'interrogation de la structure interne du composant et la mise disposition de ses champs, mthodes et proprits par l'intermdiaire de Dreamweaver.

EXTENSION DE DREAMWEAVER CS4 326


Composants

Enfin, les modles de serveur comme ASP.NET, JSP/J2EE ou ColdFusion tendent prendre en charge certains types seulement de composants. Par exemple, ASP.NET prend en charge les services Web mais pas les JavaBeans. Adobe ColdFusion prend galement en charge les services Web et les CFC. Lorsque vous ajoutez un type de composant au panneau Composants, il doit tre spcifique au modle de serveur. Ainsi, si un utilisateur Dreamweaver travaille sur un site ColdFusion, les composants CF s'affichent dans le menu droulant du panneau Composants. Dans certains cas, pour pouvoir modifier des fichiers, il est ncessaire de rdiger du code JavaScript appelant certaines fonctions lies aux composants.

Personnalisation du panneau Composants


Le panneau Composants de Dreamweaver permet aux utilisateurs de charger et d'utiliser des composants. Il rpertorie tous les types de composants disponibles et compatibles avec chaque modle de serveur activ. Par exemple, les CFC ne peuvent fonctionner que sur une page Adobe ColdFusion et ne s'affichent que dans le modle de serveur Adobe ColdFusion du panneau Composants. Vous pouvez ajouter des types de composants au panneau Composants en crant une extension. Pour ajouter un nouveau type de composant au panneau Composants, vous devez excuter plusieurs tapes gnrales :
1 Ajoutez le composant la liste des types de composants disponibles associe aux modles de serveur appropris. 2 Ajoutez des instructions pour la configuration du composant dans le panneau Composants ou dans une bote de

dialogue (en fonction de l'extension pour laquelle ces oprations sont effectues). Les instructions sont galement baptises tapes de configuration et se prsentent sous la forme d'tapes numrotes interactives. Assurez-vous que chaque tape excute par l'utilisateur est coche.
3 Recensez les composants associs au type de composant dfini sur l'ordinateur de l'utilisateur ou sur le site actuel

uniquement.
4 Crez un composant lorsque l'utilisateur clique sur le bouton Plus (+) dans le panneau Composants.

En outre, vous pouvez permettre l'utilisateur de modifier un composant ou de le supprimer.

Personnalisation des fichiers du panneau Composants


Le dossier Configuration/Components contient un sous-dossier pour chaque modle de serveur implment. Les fichiers de composant sont stocks dans le dossier Configuration/Components/modle-serveur/TypeComposant. Vous pouvez ajouter d'autres modles de serveur et extensions de serveur compatibles (pour plus d'informations, voir Modles de serveur la page 338 et Comportements de serveur la page 259). Pour crer un composant personnalis fonctionnant dans le panneau Composants : 1 Crez un fichier HTML identifiant les emplacements des fichiers JavaScript et d'images de prise en charge.
2 Ecrivez le code JavaScript permettant d'activer le composant. 3 Crez ou identifiez des fichiers d'image GIF reprsentant le composant dans le panneau Composants.

Pour que le type de composant puisse s'afficher dans une vue de commande d'arborescence, crez les fichiers facultatifs associs et compltez la commande d'arborescence. Vous pouvez configurer le type de composant pour qu'il fonctionne trois niveaux : page Web seule, ensemble de pages Web ou site entier. Le code JavaScript doit inclure la logique de persistance du composant pour permettre son auto-enregistrement entre les sessions et son chargement chaque dbut de session.

EXTENSION DE DREAMWEAVER CS4 327


Composants

Ajout d'un nouveau composant de service LDAP (lightweight directory access protocol)
1 En prenant pour modle les fichiers de types de composants existants (par exemple, les fichiers du dossier

d'application Configuration/Components/Common/WebServices), crez tous les fichiers ncessaires ainsi que les fichiers facultatifs, pour afficher le nouveau type de composant dans le panneau Composants de Dreamweaver, comme indiqu dans le tableau suivant :
Nom de fichier *.htm Description Obligatoire ou facultatif Obligatoire

Fichier d'extension qui identifie les autres fichiers de prise en charge JavaScript et GIF. Fichier d'extension qui implmente le rappel de l'API des composants. Image qui apparat dans le menu droulant Composants. Lieu de stockage des mtadonnes qui dfinissent la structure du panneau Composants. Bien que le composant WebServices commun n'utilise pas ce fichier, vous pouvez prendre comme exemple le fichier WebServicesMenus.xml du dossier d'application Components/ColdFusion/WebServices. Images de barre d'outils, qui peuvent tre actives ou dsactives, comme le montre l'exemple suivant : ToolBarImageUp.gif
ToolBarImageDown.gif ToolBarImageDisabled.gif

*.js

Obligatoire

*.gif *Menus.xml

Obligatoire Facultatif

*.gif

Facultatif

Ou des images de nuds d'arborescence.

Remarque : Utilisez le mme prfixe pour tous les fichiers se rapportant au mme composant, afin que chaque fichier et son composant soient facilement identifiables.
2 Rdigez le code JavaScript destin implmenter le nouveau composant de serveur.

Le fichier d'extension (HTM) dfinit les emplacements du code JavaScript dans la balise SCRIPT. Ces fichiers JavaScript peuvent rsider dans le dossier Shared, dans le mme dossier que le fichier d'extension ou dans le dossier Common du code s'appliquant aux modles de serveurs multiples. Par exemple, le fichier WebServices.htm du dossier Configuration/Components/Common/WebServices/ contient la ligne :
<SCRIPT SRC="../../Common/WebServices/WebServicesCommon.js"></SCRIPT>

Pour plus d'informations sur les fonctions d'API du panneau Composants disponibles, voir Fonctions de l'API du panneau Composants la page 328. Lorsque vous ajoutez un service, vous pouvez utiliser le panneau Composants pour consulter les mta-informations existantes et vous en servir directement lorsque vous crez l'extension. Dreamweaver vous permet de consulter les composants ajouts et d'afficher les nuds dans l'arborescence des composants. Le panneau Composants prend en charge les fonctionnalits de glisser-dplacer et les raccourcis clavier en mode Code.

Proprits de la commande d'arborescence


Utilisez la proprit ComponentRec pour complter une commande d'arborescence du panneau Composants et faire en sorte qu'elle apparaisse l'emplacement appropri dans le panneau. Chaque nud d'une commande d'arborescence doit comporter les proprits suivantes :

EXTENSION DE DREAMWEAVER CS4 328


Composants

Nom de la proprit

Description

Obligatoire ou facultatif Obligatoire Facultatif

name image

Nom de l'lment de nud dans l'arborescence. Icne de l'lment de nud dans l'arborescence. Si elle n'est pas spcifie, une icne par dfaut est utilise. Rpond aux clics sur les boutons Plus (+) et Moins (-) du contrle d'arborescence en chargeant les enfants. Vous pouvez travailler dans une arborescence qui n'est pas remplie l'avance. Texte de l'infobulle associe l'lment de nud dans l'arborescence. Dtermine s'il est possible de glisser-dplacer l'lment vers le mode Code. Dtermine s'il est possible de glisser-dplacer l'lment vers le mode Cration.

hasChildren

Obligatoire

toolTipText

Facultatif

isCodeViewDraggable

Facultatif

isDesignViewDraggable

Facultatif

Par exemple, les enfants du nud WebServicesClass suivant sont des mthodes Web :
this.name = "TrafficLocatorWebService"; this.image = "Components/Common/WebServices/WebServices.gif"; this.hasChildren = true; this.toolTipText = "TrafficLocatorWebService"; this.isCodeViewDraggable = true; // the following allows of enabling/disabling of the button that appears // above the Component Tree this.allowDelete = true; this.isDesignViewDraggable = false;

Fonctions de l'API du panneau Composants


Cette section dcrit les fonctions API permettant de remplir le panneau Composants.

getComponentChildren()
Disponibilit Dreamweaver MX. Description Cette fonction renvoie une liste d'objets ComponentRec enfant pour l'objet ComponentRec parent actif. Pour charger les lments du niveau racine de l'arborescence, cette fonction doit lire ses mtadonnes dans son stock existant. Arguments
{parentComponentRec}

L'argument parentComponentRec est l'objet componentRec du parent. Si cet argument n'est pas dfini, Dreamweaver attend une liste d'objets ComponentRec pour le nud racine.

EXTENSION DE DREAMWEAVER CS4 329


Composants

Valeurs renvoyes Tableau d'objets ComponentRec. Exemple Voir la fonction getComponentChildren(componentRec) dans le fichier WebServices.js du dossier Configuration/Components/Common/WebServices.

getContextMenuId()
Disponibilit Dreamweaver MX. Description Renvoie l'ID du menu contextuel correspondant au type de composant. Chaque type de composant peut tre associ un menu contextuel. Les menus droulants du menu contextuel sont dfinis dans le fichier ComponentNameMenus.xml. Ils fonctionnent de la mme faon que le fichier menu.xml. Une chane de menu peut tre statique ou dynamique. Les raccourcis clavier (touches d'accs rapide) sont pris en charge. Arguments Aucun. Valeurs renvoyes Chane dfinissant l'ID du menu contextuel. Exemple L'exemple suivant dfinit le menu Options pour le panneau Composants des CFC associs au modle de serveur Adobe ColdFusion, ainsi que les raccourcis clavier du menu :
function getContextMenuId() { return "DWCFCsContext"; }

La section WWebServicesContext du menu est dfinie dans le fichier Configuration/Components/ColdFusion/CFCs/CFCsMenus.xml comme suit :

EXTENSION DE DREAMWEAVER CS4 330


Composants

<menubar xmlns:MMString="http://www.macromedia.com/schemes/dat/string/" name="" id="DWCFCsContext"> <menu MMString:name="Components/ColdFusion/CFCs/CFCsMenus_xml/DWContext_CFCs/menu/name" id="DWContext_CFCs"> <menuitem MMString:name="Components/ColdFusion/CFCs/CFCsMenus_xml/DWContext_CFCs_createNewCFC/menuitem /name" domRequired="false" enabled="true" command="createCFC()" id="DWContext_CFCs_createNewCFC" /> <menuitem MMString:name="Components/ColdFusion/CFCs/CFCsMenus_xml/DWContext_CFCs_editCode/menuitem/nam e" domRequired="false" enabled="canGetSelectedCFC()" command="editCFC();" id="DWContext_CFCs_editCode" /> <separator/> <menuitem MMString:name="Components/ColdFusion/CFCs/CFCsMenus_xml/DWContext_CFCs_getDetails/menuitem/n ame" domRequired="false" enabled="canGetDetails()" command="getDetails()" id="DWContext_CFCs_getDetails" /> <menuitem MMString:name="Components/ColdFusion/CFCs/CFCsMenus_xml/DWContext_CFCs_getDescription/menuit em/name" domRequired="false" enabled="canGetSelectedCFC()" command="getDescription()" id="DWContext_CFCs_getDescription" /> <separator/> <menuitem MMString:name="Components/ASP_NET_Csharp/Connections/ConnectionsMenus_xml/DWShortcuts_Server Component_Insert/menuitem/name" domRequired="false" enabled="insertCFCEnabled();" command="clickedInsertCFC();" id="DWShortcuts_ServerComponent_Insert" /> </menu> </menubar>

getCodeViewDropCode()
Disponibilit Dreamweaver MX. Description Cette fonction obtient le code qui est tir, coup ou copi dans le mode Code partir du panneau Composants. Arguments
componentRec

L'argument componentRec

est un objet.

Valeurs renvoyes Chane contenant le code de ce composant. Exemple L'exemple suivant identifie le code d'un composant Adobe ColdFusion (CFC) :

EXTENSION DE DREAMWEAVER CS4 331


Composants

function getCodeVi e wDropCode(compone nt {

Rec )

var codeToDrop=""; if (componentRec) { if (componentRec.objectType == "Connection") { v ar connPart = new Participant("d at asource_tag"); var paramObj = new Obje ct( ); paramObj.datasource = componentRec.name; codeToDrop = con nPart.getInsertString(paramObj, "aboveHTML");} el se if ((componentRec.objectType == "Column")| | (componentRec.objectType == "Paramete r ")) { c odeToDrop = componentRec.dropcode; } e ls e{ codeToDrop = co mponentRec.name; } } return codeToDrop; }

getSetupSteps()
Disponibilit Dreamweaver MX. Description Dreamweaver appelle cette fonction si setupStepsCompleted() renvoie zro ou un nombre entier positif. Cette fonction contrle les instructions de configuration ct serveur, qui peuvent tre implmentes l'aide d'extensions bases sur une bote de dialogue modale et sur des composants de serveur. Cette fonction renvoie un tableau des chanes que Dreamweaver affiche soit dans la bote de dialogue des tapes de configuration, soit dans le panneau Composants, selon le type d'extension. Arguments Aucun. Valeurs renvoyes Tableau de n+1 chanes, n correspondant au nombre d'tapes, comme dcrit dans la liste ci-dessous :

Le titre qui apparat au-dessus de la liste des tapes de configuration. Pour chaque tape, le texte des instructions, qui peut comprendre un balisage HTML, ds lors qu'il est valide au sein
d'une balise li. Vous pouvez inclure des liens (balises a) dans la liste des tapes en utilisant la syntaxe ci-dessous :
<a href="#" onMouseDown="handler">Blue Underlined Text</a>

La valeur "handler" peut tre remplace par l'une des chanes suivantes ou toute expression JavaScript telle que "dw.browseDocument('http://www.adobe.com')" :

"Event:SetCurSite" ouvre une bote de dialogue pour dfinir le site courant.

EXTENSION DE DREAMWEAVER CS4 332


Composants

"Event:CreateSite" ouvre une bote de dialogue pour crer un nouveau site. "Event:SetDocType" ouvre une bote de dialogue pour modifier le type de document de l'utilisateur.

Un gestionnaire "Event:CreateConnection" ouvre une bote de dialogue pour crer une nouvelle connexion
une base de donnes.

Un gestionnaire "Event:SetRDSPassword" ouvre une bote de dialogue pour dfinir le nom d'utilisateur et le mot
de passe du service RDS (Remote Development Service) (Adobe ColdFusion uniquement).

Un gestionnaire "Event:CreateCFDataSource" ouvre l'administrateur Adobe ColdFusion dans un navigateur.


Exemple L'exemple suivant dfinit quatre tapes pour les composants Adobe ColdFusion et fournit un lien hypertexte la quatrime tape pour que l'utilisateur puisse entrer son nom d'utilisateur et son mot de passe RDS :
function getSetupSteps() { var doSDK = false; dom = dw.getDocumentDOM(); if (dom && dom.serverModel) { var aServerModelName = dom.serverModel.getDisplayName(); } else { var aServerModelName = site.getServerDisplayNameForSite(); } if (aServerModelName.length) { if(aServerModelName != "ColdFusion") { if(needsSDKInstalled != null) { doSDK = needsSDKInstalled(); } } } var someSteps = new Array(); someSteps.push(MM.MSG_WebService_InstructionsTitle); someSteps.push(MM.MSG_Dynamic_InstructionsStep1); someSteps.push(MM.MSG_Dynamic_InstructionsStep2); if(doSDK == true) { someSteps.push(MM.MSG_WebService_InstructionsStep3); } someSteps.push(MM.MSG_WebService_InstructionsStep4); return someSteps; }

setupStepsCompleted()
Disponibilit Dreamweaver MX.

EXTENSION DE DREAMWEAVER CS4 333


Composants

Description Dreamweaver appelle cette fonction avant que l'onglet Composants ne devienne visible. Dreamweaver appelle ensuite la fonction getSetupSteps() si la fonction setupStepsCompleted() renvoie zro ou un entier positif. Arguments Aucun. Valeurs renvoyes Entier reprsentant le nombre d'tapes de configuration dj effectues par l'utilisateur, comme dcrit dans la liste suivante :

La valeur zro ou un nombre entier positif indique le nombre d'tapes dj effectues. La valeur -1 indique que toutes les tapes de configuration ncessaires ont t effectues ; la liste d'instructions n'est
donc pas affiche.

handleDesignViewDrop()
Disponibilit Dreamweaver MX. Description Gre l'opration de dplacement lorsque l'utilisateur fait glisser un tableau ou un mode du panneau Bases de donnes ou un composant du panneau Composants vers le mode Cration. Arguments componentRec

L'argument componentRec est un objet qui comporte les proprits suivantes : La proprit name correspond au nom de l'lment de nud dans l'arborescence. La proprit
image est une icne facultative pour l'lment de nud dans l'arborescence. Si cette icne est omise, Dreamweaver MX utilise une icne par dfaut.

La proprit hasChildren est une valeur boolenne qui indique si l'lment de nud d'arborescence peut tre
dvelopp : si elle a la valeur true, Dreamweaver MX affiche les boutons Plus (+) et Moins (-) pour cet lment ; si elle a la valeur false, l'lment ne peut pas tre dvelopp.

La proprit toolTipText est le texte facultatif de l'infobulle associe l'lment de nud dans l'arborescence. La proprit isCodeViewDraggable est une valeur boolenne qui indique s'il est possible de glisser-dplacer
l'lment de nud dans l'arborescence vers le mode Code.

La proprit isDesignViewDraggable est une valeur boolenne qui indique s'il est possible de glisser-dplacer
l'lment de nud dans l'arborescence vers le mode Cration. Valeurs renvoyes Valeur boolenne qui indique si l'opration de dplacement a russi : true en cas de russite et false en cas d'chec. Exemple L'exemple suivant dtermine si le composant est un tableau ou un mode et renvoie la valeur bHandled approprie :

EXTENSION DE DREAMWEAVER CS4 334


Composants

function handleDesignViewDrop(componentRec) { var bHandled = false; if (componentRec) { if ((componentRec.objectType == "Table")|| (componentRec.objectType == "View")) { alert("popup Recordset Server Behavior"); bHandled = true; } } return bHandled; }

handleDoubleClick()
Disponibilit Dreamweaver MX. Description Lorsque l'utilisateur double-clique sur un nud de l'arborescence, le gestionnaire d'vnements est appel pour que l'utilisateur puisse apporter des modifications. Cette fonction est facultative. Elle peut renvoyer la valeur false, ce qui indique que le gestionnaire d'vnements n'est pas dfini. Dans ce cas, le fait de double-cliquer dclenche le comportement par dfaut, savoir le dveloppement ou la rduction des nuds de l'arborescence. Arguments componentRec

L'argument componentRec est un objet qui comporte les proprits suivantes : La proprit La proprit
name est le nom de l'lment de nud dans l'arborescence. image est une icne facultative pour l'lment de nud dans l'arborescence. Si cette icne est omise, Dreamweaver utilise une icne par dfaut.

La proprit hasChildren est une valeur boolenne qui indique si l'lment de nud d'arborescence peut tre
dvelopp : si elle a la valeur true, Dreamweaver affiche les boutons Plus (+) et Moins (-) pour cet lment ; si elle a la valeur false, l'lment ne peut pas tre dvelopp.

La proprit toolTipText est un texte d'infobulle facultatif pour l'lment de nud dans l'arborescence. La proprit isCodeViewDraggable est une valeur boolenne qui indique s'il est possible de glisser-dplacer
l'lment de nud dans l'arborescence vers le mode Code.

La proprit isDesignViewDraggable est une valeur boolenne qui indique s'il est possible de glisser-dplacer
l'lment de nud dans l'arborescence vers le mode Cration. Valeurs renvoyes Aucune. Exemple Dans l'exemple suivant, l'extension est mme de grer un double-clic sur l'lment de nud dans l'arborescence ; si la valeur false est renvoye, le comportement par dfaut consiste dvelopper/rduire les nuds.

EXTENSION DE DREAMWEAVER CS4 335


Composants

function handleDoubleClick(componentRec) { var selectedObj = dw.serverComponentsPalette.getSelectedNode(); if(dwscripts.IS_WIN) { if (selectedObj && selectedObj.wsRec && selectedObj.wsRec[ProxyGeneratorNamePropName]) { if (selectedObj.objectType == "Root") { editWebService(); return true; } else if (selectedObj.objectType == "MissingProxyGen") { displayMissingProxyGenMessage(componentRec); editWebService(); return true; } } } return false; }

toolbarControls()
Disponibilit Dreamweaver MX. Description Chaque type de composant renvoie une liste d'objets toolBarButtonRec reprsentant les icnes de la barre d'outils, de gauche droite. Chaque objet toolBarButtonRec contient les proprits suivantes :
Nom de la proprit
image disabledImage pressedImage toolTipText toolStyle

Description Chemin d'accs au fichier d'image. (Facultatif) Recherche de chemin d'accs l'image dsactive correspondant au bouton de la barre d'outils. (Facultatif) Recherche de chemin d'accs l'image correspondant au bouton enfonc dans la barre d'outils. Infobulle du bouton dans la barre d'outils. Gauche ou droite.

EXTENSION DE DREAMWEAVER CS4 336


Composants

Nom de la proprit
enabled

Description Code JavaScript qui renvoie une valeur boolenne (true ou false). Les activateurs sont appels si les conditions suivantes sont remplies :


command

La fonction dreamweaver.serverComponents.refresh() est appele. La slection dans l'arborescence change. Le modle de serveur change.

Code JavaScript excuter. Le gestionnaire de commande peut utiliser la fonction dreamweaver. serverComponents.refresh() pour actualiser les composants. ID de menu unique du bouton du menu droulant lorsque l'utilisateur clique sur le bouton. Lorsque cet ID est dfini, il remplace le gestionnaire de commande. En d'autres termes, le bouton peut tre soit associ une commande, soit un bouton ayant un menu droulant associ, mais pas aux deux la fois.

menuId

Arguments Aucun. Valeurs renvoyes Tableau des boutons de barre d'outils, de gauche droite. Exemple Dans l'exemple suivant, des proprits sont attribues aux boutons de la barre d'outils :
function toolbarControls() { var toolBarBtnArray = new Array(); dom = dw.getDocumentDOM(); var plusButton = new ToolbarControlRec(); var aServerModelName = null; if (dom && dom.serverModel) { aServerModelName = dom.serverModel.getDisplayName(); } else { //look in the site for potential server model aServerModelName = site.getServerDisplayNameForSite(); } if (aServerModelName.length) { if(aServerModelName == "ColdFusion") { plusButton.image = PLUS_BUTTON_UP; plusButton.pressedImage = PLUS_BUTTON_DOWN; plusButton.disabledImage = PLUS_BUTTON_UP; plusButton.toolStyle = "left"; plusButton.toolTipText = MM.MSG_WebServicesAddToolTipText; plusButton.enabled = "dwscripts.IS_WIN"; plusButton.command = "invokeWebService()"; } else { plusButton.image = PLUSDROPBUTTONUP;

EXTENSION DE DREAMWEAVER CS4 337


Composants

plusButton.pressedImage plusButton.disabledImage plusButton.toolStyle plusButton.toolTipText plusButton.enabled plusButton.menuId

= = = = = =

PLUSDROPBUTTONDOWN; PLUSDROPBUTTONUP; "left"; MM.MSG_WebServicesAddToolTipText; "dwscripts.IS_WIN"; "DWWebServicesChoosersContext";

} toolBarBtnArray.push(plusButton); var minusButton = new ToolbarControlRec(); minusButton.image = MINUSBUTTONUP; minusButton.pressedImage = MINUSBUTTONDOWN; minusButton.disabledImage = MINUSBUTTONDISABLED; minusButton.toolStyle = "left"; minusButton.toolTipText = MM.MSG_WebServicesDeleteToolTipText; minusButton.command = "clickedDelete()"; minusButton.enabled = "(dw.serverComponentsPalette.getSelectedNode() != null && dw.serverComponentsPalette.getSelectedNode() && ((dw.serverComponentsPalette.getSelectedNode().objectType=='Root') || (dw.serverComponentsPalette.getSelectedNode().objectType == 'Error') || (dw.serverComponentsPalette.getSelectedNode().objectType == 'MissingProxyGen')))"; toolBarBtnArray.push(minusButton); if(aServerModelName != null && aServerModelName.indexOf(".NET") >= 0) { var deployWServiceButton = new ToolbarControlRec(); deployWServiceButton.image = DEPLOYSUPPORTBUTTONUP; deployWServiceButton.pressedImage = DEPLOYSUPPORTBUTTONDOWN; deployWServiceButton.disabledImage = DEPLOYSUPPORTBUTTONUP; deployWServiceButton.toolStyle = "right"; deployWServiceButton.toolTipText = MM.MSG_WebServicesDeployToolTipText; deployWServiceButton.command = "site.showTestingServerBinDeployDialog()"; deployWServiceButton.enabled = true; toolBarBtnArray.push(deployWServiceButton); } //add the rebuild proxy button for windows only. //bug 45552: if(navigator.platform.charAt(0) !="M") { var proxyButton = new ToolbarControlRec(); proxyButton.image = PROXYBUTTONUP; proxyButton.pressedImage = PROXYBUTTONDOWN; proxyButton.disabledImage = PROXYBUTTONDISABLED; proxyButton.toolStyle = "right"; proxyButton.toolTipText = MM.MSG_WebServicesRegenToolTipText; proxyButton.command = "reGenerateProxy()"; proxyButton.enabled = "enableRegenerateProxyButton()"; toolBarBtnArray.push(proxyButton); } } return toolBarBtnArray; }

338

Chapitre 21 : Modles de serveur


Les modles de serveur sont les technologies qui permettent d'excuter des scripts sur un serveur. Lorsqu'ils dfinissent un nouveau site, les utilisateurs peuvent indiquer le modle de serveur qu'ils souhaitent utiliser au niveau du site et au niveau du document. Ce modle de serveur gre tous les lments dynamiques que l'utilisateur ajoute au document. Les fichiers de configuration des modles de serveur sont stocks dans le dossier Configuration/ServerModels. Chaque modle de serveur dispose, au sein de ce dossier, d'un fichier HTML particulier qui implmente l'ensemble des fonctions requises.

Personnalisation des modles de serveur


Vous pouvez personnaliser certaines des fonctionnalits d'un modle de serveur en utilisant les fonctions disponibles dans l'API des modles de serveur. Lorsqu'ils dmarrent Adobe Dreamweaver pour la premire fois, les nouveaux utilisateurs sont invits indiquer les modles de serveur qu'ils souhaitent utiliser. Pour les cas o l'utilisateur n'indique aucun modle de serveur, vous pouvez crer une bote de dialogue dynamique l'invitant suivre les tapes ncessaires. Cette bote de dialogue apparatra lorsque l'utilisateur essaiera d'insrer un objet de serveur. Pour plus d'informations sur la cration de cette bote de dialogue, voir les fonctions getSetupSteps() la page 331 et setupStepsCompleted() la page 332. Vous pouvez dcider de crer un modle de serveur spcialis. Adobe vous conseille de crer un modle de serveur entirement nouveau plutt que de modifier l'un de ceux fournis avec Dreamweaver. Pour plus d'informations sur la cration de nouveaux types de documents pris en charge par un modle de serveur, voir Types de documents extensibles dans Dreamweaver la page 14. Lorsque vous crez un modle de serveur, vous devez implmenter la fonction canRecognizeDocument() dans votre fichier de modle de serveur. Cette fonction indique Dreamweaver le niveau de priorit qu'il doit attribuer au modle de serveur en matire de gestion des extensions de fichier lorsque plusieurs modles de serveur revendiquent une extension prcise.

Fonctions de l'API des modles de serveur


Cette section dcrit les fonctions qui permettent de configurer les modles de serveur pour Dreamweaver.

canRecognizeDocument()
Disponibilit Dreamweaver MX. Description Lors de l'ouverture d'un document (et lorsque plusieurs modles de serveur revendiquent une extension de fichier), Dreamweaver appelle cette fonction pour chacun des modles de serveur associs l'extension afin de voir si l'une des fonctions peut tablir que le document lui appartient. Si plusieurs modles de serveur revendiquent l'extension de fichier, Dreamweaver accorde la priorit celui renvoyant le nombre entier le plus lev.

EXTENSION DE DREAMWEAVER CS4 339


Modles de serveur

Remarque : Dans la mesure o tous les modles de serveur de Dreamweaver renvoient la valeur 1, les modles de serveur tiers peuvent avoir la priorit au niveau d'une extension de fichier. Arguments dom L'argument dom correspond l'objet de document Adobe, renvoy par la fonction
dreamweaver.getDocumentDOM().

Valeurs renvoyes Dreamweaver attend un nombre entier indiquant la priorit que vous accordez au modle de serveur pour l'extension de fichier. Cette fonction doit renvoyer la valeur -1 si le modle de serveur ne revendique pas l'extension de fichier; dans les autres cas de figure, elle doit renvoyer une valeur suprieure zro. Exemple Dans l'exemple suivant, si l'utilisateur ouvre un document JavaScript pour le modle de serveur en cours, le code renvoie la valeur 2. Cette valeur permet au modle de serveur courant d'tre prioritaire sur le modle de serveur par dfaut de Dreamweaver.
var retVal = -1; var langRE = /@\s*language\s*=\s*(\"|\')?javascript(\"|\')?/i; // Search for the string language="javascript" var oHTML = dom.documentElement.outerHTML; if (oHTML.search(langRE) > -1) retVal = 2; return retVal;

getFileExtensions()
Disponibilit Dreamweaver UltraDev 1, dconseille dans Dreamweaver MX. Description Renvoie les extensions de fichier compatibles avec un modle de serveur. Par exemple, le modle de serveur ASP prend en charge les extensions de fichier.asp et.htm. Cette fonction renvoie un tableau de chanes ; Dreamweaver utilise ces chanes pour complter la liste Extension de page par dfaut figurant dans la catgorie Serveur d'application de la bote de dialogue Dfinition du site. Remarque : La liste Extension de page par dfaut n'existe que dans Dreamweaver version 4 ou antrieure. Dans Dreamweaver MX et les versions ultrieures, la bote de dialogue Dfinition du site ne rpertorie pas les paramtres relatifs aux extensions de fichier. Au lieu de cela, Dreamweaver lit le fichier Extensions.txt et analyse l'lment dans le fichier mmDocumentTypes.xml. Pour plus d'informations sur ces deux fichiers et l'lment documenttype, voir Types de documents extensibles dans Dreamweaver la page 14. Arguments Aucun. Valeurs renvoyes Dreamweaver attend un tableau de chanes reprsentant les extensions de fichier autorises.

EXTENSION DE DREAMWEAVER CS4 340


Modles de serveur

getLanguageSignatures()
Disponibilit Dreamweaver MX. Description Cette fonction renvoie un objet qui dcrit la mthode et les signatures de tableau utilises par le langage de script. La fonction getLanguageSignatures() permet d'associer des mappages de signatures gnriques des mappages spcifiques au langage pour les lments suivants :

Fonction Constructeurs Code de dpt (valeurs renvoyes) Tableaux Exceptions Mappages des types de donnes pour les types de donnes primitifs
La fonction getLanguageSignatures() renvoie une table de mappage des dclarations de signature. Les dveloppeurs d'extensions peuvent se servir de cette table de mappage pour produire des blocs de code spcifiques au langage que Dreamweaver place dans la page (en se basant sur le modle de serveur adapt la page) lorsqu'un utilisateur effectue un glisser-dplacer sur une mthode relative des services Web, par exemple. Pour obtenir des exemples de rdaction de cette fonction, voir les fichiers d'implmentation HTML des modles de serveur JSP et ASP.Net. Les fichiers d'implmentation des modles de serveur se trouvent dans le dossier Configuration/ServerModels. Arguments Aucun. Valeurs renvoyes Dreamweaver attend un objet dfinissant les signatures du langage de script. Cet objet doit mapper les signatures gnriques celles spcifiques au langage.

getServerExtension()
Disponibilit Dreamweaver UltraDev 4, dconseille dans Dreamweaver MX. Description Cette fonction renvoie l'extension par dfaut des fichiers exploitant le modle de serveur en cours. L'objet serverModel est dfini sur le modle de serveur du site slectionn si aucun document utilisateur n'est slectionn. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une chane reprsentant les extensions de fichier prises en charge.

EXTENSION DE DREAMWEAVER CS4 341


Modles de serveur

getServerInfo()
Disponibilit Dreamweaver MX. Description Cette fonction renvoie un objet JavaScript accessible depuis le code JavaScript, par appel de la fonction dom.serverModel.getServerInfo(). Par ailleurs, serverName, serverLanguage et serverVersion sont des proprits spcifiques, galement accessibles au moyen des fonctions JavaScript suivantes :
dom.serverModel.getServerName() dom.serverModel.getServerLanguage() dom.serverModel.getServerVersion()

Arguments Aucun. Valeurs renvoyes Dreamweaver attend un objet contenant les proprits du modle de serveur. Exemple
var obj = new Object(); obj.serverName = "ASP"; obj.serverLanguage = "JavaScript"; obj.serverVersion = "2.0"; ... return obj;

getServerLanguages()
Disponibilit Dreamweaver UltraDev 1, dconseille dans Dreamweaver MX. Description Cette fonction renvoie les langages de script pris en charge d'un modle de serveur avec un tableau de chanes. Dreamweaver utilise ces chanes pour complter la liste Langage de script par dfaut figurant dans la catgorie Serveur d'application de la bote de dialogue Dfinition du site. Remarque : La liste Langage de script par dfaut existe uniquement dans Dreamweaver 4 et les antrieures. Dans Dreamweaver MX et les versions ultrieures, la bote de dialogue Dfinition du site ne rpertorie pas les langages de script pris en charge et la fonction getServerLanguages() n'est pas utilise. La raison pour laquelle la version MX de Dreamweaver n'utilise pas cette fonction est que chaque modle de serveur ne dispose dans cette version du programme que d'un seul langage de serveur. Dans les versions antrieures de Dreamweaver, un modle de serveur pouvait prendre en charge plusieurs langages de script ; le modle de serveur ASP, par exemple, prend en charge JavaScript et VBScript. Si vous souhaitez qu'un fichier du dossier ServerFormats s'applique uniquement un langage de script spcifique, ajoutez l'instruction suivante de manire ce qu'elle figure sur la premire ligne du fichier HTML :
<!-- SCRIPTING-LANGUAGE=XXX -->

EXTENSION DE DREAMWEAVER CS4 342


Modles de serveur

Dans cet exemple, XXX reprsente le langage de script. Cette instruction gnre l'apparition du comportement de serveur dans le menu Plus (+) du panneau Comportements de serveur uniquement lorsque le langage de script slectionn est XXX. Arguments Aucun. Valeurs renvoyes Dreamweaver attend un tableau de chanes reprsentant les langages de script pris en charge.

getServerModelExtDataNameUD4()
Disponibilit Dreamweaver MX. Description Cette fonction renvoie le nom de l'implmentation du modle de serveur que Dreamweaver doit utiliser lorsqu'il accde des fichiers de donnes d'extension UltraDev4, qui rsident dans le dossier Configurations/ExtensionData. Arguments Aucun. Valeurs renvoyes Dreamweaver attend une chane, telle que "ASP/JavaScript".

getServerModelDelimiters()
Disponibilit Dreamweaver MX. Description Cette fonction renvoie les dlimiteurs de scripts que le serveur d'application utilise et indique si chaque dlimiteur peut participer la fusion des blocs de code. Vous pouvez accder la valeur renvoye depuis le code JavaScript, en appelant la fonction dom.serverModel.getDelimiters(). Arguments Aucun. Valeurs renvoyes Dreamweaver attend un tableau d'objets dans lequel chaque objet comporte les trois proprits suivantes :

La proprit startPattern est une expression rgulire qui correspond au dlimiteur d'ouverture du script (tel que <%). La proprit endPattern est une expression rgulire qui correspond au dlimiteur de fermeture du script (tel que %>). La proprit participateInMerge est une valeur boolenne qui indique si le contenu entour des dlimiteurs utiliss
doit (true) ou non (false) prendre part la fusion de blocs.

EXTENSION DE DREAMWEAVER CS4 343


Modles de serveur

getServerModelDisplayName()
Disponibilit Dreamweaver MX. Description Cette fonction renvoie le nom qui doit s'afficher dans l'interface utilisateur pour le modle de serveur. Vous pouvez accder cette valeur depuis le code JavaScript, en appelant la fonction dom.serverModel.getDisplayName(). Arguments Aucun. Valeurs renvoyes Dreamweaver attend une chane, telle que "ASP JavaScript".

getServerModelFolderName()
Disponibilit Dreamweaver MX. Description Cette fonction renvoie le nom du dossier utiliser pour le modle de serveur dans le dossier Configuration. Vous pouvez accder cette valeur depuis le code JavaScript, en appelant la fonction dom.serverModel.getFolderName(). Arguments Aucun. Valeurs renvoyes Dreamweaver attend une chane, telle que "ASP_JS".

getServerSupportsCharset()
Disponibilit Dreamweaver MX. Description Cette fonction renvoie une valeur true si le serveur en cours prend en charge le jeu de caractres spcifi. Dans JavaScript, vous pouvez dterminer si le modle de serveur prend en charge un jeu de caractres donn en appelant la fonction dom.serverModel.getServerSupportsCharset(). Arguments metaCharSetString L'argument metaCharSetString est une chane qui stocke la valeur de l'attribut "charset=" des documents.

EXTENSION DE DREAMWEAVER CS4 344


Modles de serveur

Valeurs renvoyes Dreamweaver attend une valeur boolenne.

getVersionArray()
Disponibilit Dreamweaver UltraDev 1, dconseille dans Dreamweaver MX. Description Cette fonction extrait le mappage de technologies de serveur et de numros de version. Cette fonction est appele par dom.serverModel.getServerVersion(). Arguments Aucun. Valeurs renvoyes Dreamweaver attend un tableau d'objets de version, chacun tant dot d'un nom et d'une valeur, comme indiqu dans les exemples suivants :

ASP version 2.0 ADODB version 2.1

345

Chapitre 22 : Traducteurs de donnes


Les traducteurs de donnes traduisent les marques spcialises en code qu'Adobe Dreamweaver peut lire et afficher. Parmi les marques spcialises, citons les inclusions ct serveur, les instructions JavaScript conditionnelles ou d'autres codes comme PHP3, JSP, CFML ou ASP. Dans Dreamweaver, vous pouvez traduire des attributs au sein de balises ainsi que des balises entires ou des blocs de code. Tous les traducteurs de donnes (blocs/balises ou attributs) sont des fichiers HTML. Il peut arriver que la traduction de donnes implique des oprations complexes qui ne peuvent pas tre excutes l'aide de JavaScript ou qui peuvent l'tre de manire plus efficace en C. C'est notamment le cas des balises ou des blocs de code entiers. Si vous connaissez bien C ou C++, consultez galement le guide Extensions C la page 364. Le tableau ci-dessous recense les fichiers utiliss pour crer un traducteur de donnes.
Chemin Configuration/ThirdPartyTags/ Fichier langage.xml Description Contient des informations sur les balises dans le langage de marquage. Icnes des balises dans le langage. Contient des fonctions JavaScript associes au traducteur de donnes.

Configuration/ThirdPartyTags/ Configuration/Translators/

langage.gif langage.htm

Fonctionnement des traducteurs de donnes


Dreamweaver traite tous les fichiers de traducteur de la mme faon, qu'ils convertissent des balises entires ou uniquement des attributs. Au dmarrage, Dreamweaver lit tous les fichiers du dossier Configuration/Translators et appelle la fonction getTranslatorInfo() afin d'obtenir des informations au sujet du traducteur. Dreamweaver ignore tous les fichiers dans lesquels la fonction getTranslatorInfo() est absente ou qui contiennent une erreur empchant de la dfinir. Remarque : Pour viter que des erreurs JavaScript n'affectent le dmarrage, les erreurs dtectes dans un fichier de traducteur ne sont signales qu'aprs le chargement de tous les traducteurs. Pour plus d'informations sur le dbogage de traducteurs, voir Recherche de bogues dans le traducteur la page 352. Dreamweaver appelle galement la fonction translateMarkup() dans tous les fichiers de traducteur appropris (comme indiqu dans les prfrences de traduction) chaque fois que l'utilisateur ajoute un nouveau contenu ou modifie un contenu existant qui requiert une traduction. Dreamweaver appelle la fonction translateMarkup() lorsque l'utilisateur effectue l'une des oprations suivantes :

Ouverture d'un fichier dans Dreamweaver Retour au mode Cration aprs avoir effectu des modifications dans le panneau HTML ou le mode Code Modification des proprits d'un objet dans le document actif Insertion d'un objet ( l'aide de la barre ou du menu Insertion) Actualisation du document actif aprs sa modification dans une autre application Application d'un modle au document Collage ou dplacement d'un contenu vers ou l'intrieur de la fentre de document

EXTENSION DE DREAMWEAVER CS4 346


Traducteurs de donnes

Enregistrement des modifications dans un fichier dpendant Appel d'une commande, d'un comportement, d'un comportement de serveur, d'un inspecteur Proprits ou de
toute autre extension qui dfinit la proprit innerHTML ou outerHTML d'un objet de balise ou la proprit data d'un objet de commentaire

Slection de Fichier > Convertir > Format compatible avec les navigateurs 3.0 Slection de Modifier > Convertir > Conversion des tableaux en divs PA Slection de Modifier > Convertir > Convertir les divs PA en tableaux Modification d'une balise ou d'un attribut dans Quick Tag Editor, suivie de l'activation de la touche de tabulation
ou Entre

Dtermination du type de traducteur utiliser


Tous les traducteurs doivent contenir les fonctions getTranslatorInfo() et translateMarkup() et doivent rsider dans le dossier Configuration/Translators. Ils se distinguent toutefois par le type de code qu'ils insrent dans le document de l'utilisateur et par la faon dont ce code doit tre contrl, comme indiqu dans la liste suivante :

Pour traduire de petites parties de balises serveur qui dterminent des valeurs d'attribut ou ajoutent
conditionnellement des attributs une balise HTML standard, vous devez crire un traducteur d'attributs. Les balises HTML standard contenant des attributs traduits peuvent tre contrles l'aide des inspecteurs Proprits intgrs Dreamweaver. Il n'est pas ncessaire d'crire un inspecteur Proprits personnalis (voir Ajout d'un attribut traduit une balise la page 346).

Pour traduire une balise entire (une inclusion ct serveur, par exemple) ou un bloc de code (JavaScript,
ColdFusion, PHP ou tout autre script), vous devez crire un traducteur de blocs/balises. Le code gnr par un traducteur de blocs/balises ne peut pas tre contrl l'aide des inspecteurs Proprits intgrs Dreamweaver. Vous devez rdiger un inspecteur personnalis pour le contenu traduit si vous souhaitez que les utilisateurs puissent modifier les proprits du code d'origine (voir Verrouillage des balises ou des blocs de code traduits la page 348).

Ajout d'un attribut traduit une balise


La traduction des attributs est lie la capacit de l'analyseur Dreamweaver ignorer le balisage de serveur. Par dfaut, Dreamweaver ignore dj les types de balisage de serveur les plus courants (tels que ASP, CFML et PHP) ; si vous utilisez un balisage de serveur dont les marqueurs de dbut et de fin sont diffrents, vous devez modifier la base de donnes de balises tierces pour assurer le bon fonctionnement de votre traducteur. Pour plus d'informations sur la faon de modifier la base de donnes de balises propritaires, voir Personnalisation de Dreamweaver dans Utilisation de Dreamweaver. Lorsque Dreamweaver gre la conservation du balisage de serveur d'origine, le traducteur gnre une valeur d'attribut valide qui s'affiche dans la fentre de document. Si vous utilisez un balisage de serveur uniquement pour des attributs qui n'ont pas d'effet visible pour l'utilisateur, vous n'avez pas besoin de traducteur. Le traducteur cre une valeur d'attribut ayant un effet visible dans la fentre de document en ajoutant un attribut spcial, mmTranslatedValue, la balise qui contient le balisage de serveur. L'attribut mmTranslatedValue et sa valeur ne sont ni visibles dans le panneau HTML ou en mode Code, ni enregistrs avec le document.

EXTENSION DE DREAMWEAVER CS4 347


Traducteurs de donnes

L'attribut mmTranslatedValue doit tre unique l'intrieur de la balise. S'il est probable que le traducteur devra traduire plusieurs attributs dans une mme balise, ajoutez-lui une routine qui ajoute des numros l'attribut mmTranslatedValue (par exemple, mmTranslatedValue1, mmTranslatedValue2, etc.). La valeur de l'attribut mmTranslatedValue doit tre une chane code en URL contenant au moins une paire attribut/valeur valide. Cela signifie que mmTranslatedValue="src=%22open.jpg%22" est une traduction valide pour src="<? if (dayType == weekday) then open.jpg else closed.jpg" ?> et <? if (dayType == weekday) then src="open.jpg" else src="closed.jpg" ?>. Comme mmTranslatedValue="%22open.jpg%22" ne contient que la valeur, et pas l'attribut, il n'est valide pour aucun des exemples. Traduction de plusieurs attributs la fois L'attribut mmTranslatedValue peut contenir plusieurs paires attribut/valeur valides. Examinez le code non traduit suivant :
<img <? if (dayType==weekday) then src="open.jpg" width="320" height="100" else src="closed.jpg" width="100" height="320" ?> alt="We're open 24 hours a day from 12:01am Monday until 11:59pm Friday">

L'exemple suivant indique comment se prsente le balisage aprs traduction :


<img <? if (dayType==weekday) then src="open.jpg" width="320" height="100" else src="closed.jpg" width="100" height="320" ?> mmTranslatedValue="src=%22open.jpg%22 width=%22320%22 height=%22100%22" alt="We're open 24 hours a day from 12:01am Monday until 11:59pm Friday">

Les espaces entre les paires attribut/valeur dans l'attribut mmTranslatedValue ne sont pas cods. Etant donn que Dreamweaver recherche ces espaces lorsqu'il essaie de restituer la valeur traduite, chaque paire attribut/valeur de l'attribut mmTranslatedValue doit tre code sparment, puis toutes les paires doivent tre de nouveau regroupes pour former l'ensemble de l'attribut mmTranslatedValue. Vous trouverez un exemple de ce processus dans la section Exemple de traducteur d'attributs simple la page 353.

Inspection des attributs traduits


Les attributs traduits ne ncessitent pas de verrou, ce qui facilite l'inspection des balises qui les contiennent. Lorsqu'un balisage de serveur stipule un attribut unique qui est reprsent dans un inspecteur Proprits, Dreamweaver l'affiche dans l'inspecteur Proprits. Le balisage s'affiche, qu'il soit associ ou non un traducteur. Le traducteur s'excute chaque fois que l'utilisateur modifie le balisage de serveur indiqu dans l'inspecteur Proprits. Lorsque le balisage de serveur contrle plusieurs attributs dans une balise, il n'apparat pas dans l'inspecteur Proprits. Toutefois, l'clair indique qu'il existe un balisage traduit pour l'lment slectionn. Remarque : L'icne en forme d'clair n'apparat pas lorsque du texte ou des cellules, des lignes ou des colonnes de tableau sont slectionns. La traduction continue si l'utilisateur modifie le balisage de serveur dans le panneau et s'il existe un traducteur qui traite ce type de balisage. Les zones de texte de l'inspecteur Proprits sont modifiables. Les utilisateurs peuvent entrer des valeurs pour les attributs contrls par le balisage de serveur. Il en rsulte des attributs en double. Si une valeur traduite et une valeur ordinaire sont toutes deux dfinies pour un attribut prcis, Dreamweaver affiche la valeur traduite dans la fentre Document, dcide si votre traducteur recherche les attributs en double et les supprime.

EXTENSION DE DREAMWEAVER CS4 348


Traducteurs de donnes

Verrouillage des balises ou des blocs de code traduits


En rgle gnrale, vous attendez d'un traducteur qu'il modifie le balisage de faon ce que Dreamweaver puisse l'afficher, mais vous souhaitez sauvegarder celui d'origine, et non les modifications. Dans un tel cas, Dreamweaver fournit des balises XML spciales pour envelopper le contenu traduit et se reporter au code d'origine. Lorsque vous utilisez ces balises XML, le contenu des attributs d'origine est reproduit en mode Code. Si vous enregistrez le fichier, le balisage d'origine non traduit est crit dans le fichier. Le contenu non traduit est ce qui apparat en mode Code. La syntaxe des balises XML est indique dans l'exemple suivant :
<MM:BeginLock translatorClass="translatorClass" type="tagNameOrType" depFiles="dependentFilesList" orig="encodedOriginalMarkup"> Translated content <MM:EndLock>

Dans cet exemple, les valeurs ont la signification suivante :

La valeur translatorClass correspond l'identificateur unique pour le traducteur. C'est la premire chane du
tableau que renvoie la fonction getTranslatorInfo().

La valeur tagNameOrType est une chane qui identifie le type de balisage (ou le nom de balise associ) du contenu
verrouill. Cette chane ne peut contenir que des caractres alphanumriques, des traits d'union (-) ou des caractres de soulignement (_). Vous pouvez vrifier cette valeur dans la fonction canInspectSelection() d'un inspecteur Proprits personnalis pour dterminer si cet inspecteur est adapt au contenu. Pour plus d'informations, voir Cration d'inspecteurs Proprits pour du contenu verrouill la page 349. Un contenu verrouill ne peut pas tre contrl par les inspecteurs Proprits intgrs de Dreamweaver. Par exemple, la spcification de type="IMG" n'entrane pas l'affichage de l'inspecteur d'images.

La valeur dependentFilesList est une chane qui contient une liste de fichiers spars par des virgules dont dpend
le balisage verrouill. Les fichiers sont rfrencs sous la forme d'URL relatives au document de l'utilisateur. Si l'utilisateur met jour l'un des fichiers de la liste dependentFilesList, Dreamweaver retraduit automatiquement le contenu dans le document comportant cette liste.

La valeur encodedOriginalMarkup est une chane qui contient le balisage d'origine non traduit et cod l'aide d'un
extrait de code URL (utilisez %22 pour ", %3C pour <, %3E pour > et %25 pour %). La faon la plus rapide de coder une chane en URL consiste utiliser la mthode escape(). Par exemple, si myString est gal '<img src="foo.gif">', escape(myString) renvoie %3Cimg%20src=%22foo.gif%22%3E. L'exemple suivant montre la partie de code verrouille pouvant tre gnre partir de la traduction de l'inclusion ct serveur <!--#include virtual="/footer.html" --> :

EXTENSION DE DREAMWEAVER CS4 349


Traducteurs de donnes

<MM:BeginLock translatorClass="MM_SSI" type="ssi" depFiles="C:\sites\webdev\footer.html" orig="%3C!--#include virtual=%22/footer.html%22%20--%3E"> <!-- begin footer --> <CENTER> <HR SIZE=1 NOSHADE WIDTH=100%> <BR> [<A TARGET="_top" HREF="/">home</A>] [<A TARGET="_top" HREF="/products/">products</A>] [<A TARGET="_top" HREF="/services/">services</A>] [<A TARGET="_top" HREF="/support/">support</A>] [<A TARGET="_top" HREF="/company/">about us</A>] [<A TARGET="_top" HREF="/help/">help</A>] </CENTER> <!-- end footer --> <MM:EndLock>

La cration d'un traducteur qui verrouille du code dans une balise script risque de provoquer un chec. Par exemple, considrons le code suivant :
<script language="javascript"> <!-function foo() { alert('<bean:message key="show.message"/>'); } // --> </script>

Crez ensuite un traducteur pour la balise bean:message. Dans ce cas, le traducteur choue, car vous crez une section MM:BeginLock au sein d'une autre section MM:BeginLock. Une solution de contournement consiste crer une enveloppe JSP autour de la balise bean:message qui utilise plusieurs balises JSP standard, telles que <%= My_lookup.lookup("show.message") %>. Dans ce cas, le traducteur ignore ce code et la traduction aboutit.

Cration d'inspecteurs Proprits pour du contenu verrouill


Une fois que vous avez cr un traducteur, vous devez crer un inspecteur Proprits pour le contenu afin de permettre l'utilisateur d'en modifier les proprits (le fichier inclure ou l'une des conditions d'une instruction conditionnelle, par exemple). Le contrle d'un contenu traduit pose un problme particulier pour les raisons suivantes :

L'utilisateur peut dcider de modifier les proprits du contenu traduit. Dans ce cas, ces modifications doivent tre
rpercutes dans le contenu non traduit.

Le DOM (modle d'objet de document) contient le contenu traduit (ce qui signifie que les balises lock et les balises
qu'elles englobent sont des nuds du DOM), mais la proprit outerHTML de l'objet documentElement ainsi que les fonctions dreamweaver.getSelection() et dreamweaver.nodeToOffsets() agissent sur la source non traduite.

Les balises que vous contrlez sont diffrentes avant et aprs la traduction.
Un commentaire de l'inspecteur Proprits pour la balise HAPPY non traduite peut ressembler, par exemple, au code suivant :

EXTENSION DE DREAMWEAVER CS4 350


Traducteurs de donnes

<!-- tag:HAPPY,priority:5,selection:exact,hline,vline, attrName:xxx, attrValue:yyy -->

Par contre, un commentaire de ce mme inspecteur Proprits pour la balise HAPPY traduite ressemblerait au code suivant :
<!-- tag:*LOCKED*,priority:5,selection:within,hline,vline -->

La fonction canInspectSelection() de l'inspecteur Proprits HAPPY non traduit est simple. Le type selection correspondant exact, elle peut renvoyer la valeur true sans autre analyse. Pour l'inspecteur Proprits de la balise HAPPY traduite, cette fonction est plus complexe. Le mot cl *LOCKED* indique que l'inspecteur est appropri lorsque la slection se trouve l'intrieur d'une rgion verrouille, mais comme un document peut comporter plusieurs rgions verrouilles, des vrifications supplmentaires sont ncessaires pour dterminer si l'inspecteur correspond cette rgion prcise. Le contrle d'un contenu traduit prsente un problme supplmentaire. Lorsque vous appelez la fonction dom.getSelection(), les valeurs renvoyes par dfaut sont des dcalages dans la source non traduite. Pour tendre la slection de faon slectionner uniquement la rgion verrouille, utilisez la mthode suivante :
var currentDOM = dw.getDocumentDOM(); var offsets = currentDOM.getSelection(); var theSelection = currentDOM.offsetsToNode(offsets[0],offsets[0]+1);

L'utilisation de offsets[0]+1 comme deuxime argument permet de vous assurer que vous restez dans les limites de la balise de verrouillage de dbut lorsque vous traduisez les dcalages d'octets en nud. Si vous utilisez offsets[1] comme deuxime argument, vous risquez de slectionner le nud situ au-dessus du verrou. Une fois la slection effectue et aprs vous tre assur que nodeType est rgl sur node.ELEMENT_NODE), vous pouvez contrler l'attribut type pour vrifier que la rgion verrouille correspond cet inspecteur Proprits, comme indiqu dans l'exemple suivant :
if (theSelection.nodeType == node.ELEMENT_NODE && theSelection.getAttribute('type') == 'happy'){ return true; }else{ return false }

Pour renseigner les zones de texte de l'inspecteur Proprits pour la balise traduite, vous devez analyser la valeur de l'attribut orig. Par exemple, si le code non traduit est <HAPPY TIME="22"> et que l'inspecteur Proprits contient une zone de texte Time, vous devez extraire la valeur de l'attribut TIME de la chane orig :

EXTENSION DE DREAMWEAVER CS4 351


Traducteurs de donnes

function inspectSelection() { var currentDOM = dw.getDocumentDOM(); var currSelection = currentDOM.getSelection(); var theObj = currentDOM.offsetsToNode(curSelection[0],curSelection[0]+1); if (theObj.nodeType != Node.ELEMENT_NODE) { return; } // To convert the encoded characters back to their // original values, use the unescape() method. var origAtt = unescape(theObj.getAttribute("ORIG")); // Convert the string to lowercase for processing var origAttLC = origAtt.toLowerCase(); var timeStart = origAttLC.indexOf('time="'); var timeEnd = origAttLC.indexOf('"',timeStart+6); var timeValue = origAtt.substring(timeStart+6,timeEnd); document.layers['timelayer'].document.timeForm.timefield.value = timeValue; }

Aprs avoir analys l'attribut orig en vue de renseigner les zones de texte de l'inspecteur Proprits pour la balise traduite, vous devrez probablement dfinir la valeur de l'attribut orig si l'utilisateur modifie la valeur de l'une des zones. Il existe certaines restrictions quant aux modifications que vous pouvez effectuer dans une rgion verrouille. Vous pouvez contourner ce problme en modifiant le balisage d'origine puis en procdant une nouvelle traduction. L'inspecteur Proprits des SSI traduites (fichier ssi_translated.js du dossier Configuration/Inspectors) dmontre cette technique avec sa fonction setComment(). Au lieu de rcrire l'attribut orig, l'inspecteur assemble un nouveau commentaire de SSI. Il insre ce commentaire dans le document, remplaant l'ancien en rcrivant le contenu du document, ce qui gnre un nouvel attribut orig. Le code suivant rsume cette technique :
// Assemble the new include comment. radioStr and URL are // variables defined earlier in the code. newInc = "<!--#include " + radioStr + "=" + '"' + URL + '"' + " -->"; // Get the contents of the document. var entireDocObj = dreamweaver.getDocumentDOM(); var docSrc = entireDocObj.documentElement.outerHTML; // Store everything up to the SSI comment and everything after // the SSI comment in the beforeSelStr and afterSelStr variables. var beforeSelStr = docSrc.substring(0, curSelection[0] ); var afterSelStr= docSrc.substring(curSelection[1]); // Assemble the new contents of the document. docSrc = beforeSelStr + newInc + afterSelStr; // Set the outerHTML of the HTML tag (represented by // the documentElement object) to the new contents, // and then set the selection back to the locked region // surrounding the SSI comment. entireDocObj.documentElement.outerHTML = docSrc; entireDocObj.setSelection(curSelection[0], curSelection[0]+1);

EXTENSION DE DREAMWEAVER CS4 352


Traducteurs de donnes

Recherche de bogues dans le traducteur


Si la fonction translateMarkup() contient certains types d'erreur, le traducteur se charge correctement, mais il choue sans afficher de message d'erreur si vous essayer de l'appeler. Bien que cette panne discrte empche Dreamweaver de devenir instable, elle peut ralentir le dveloppement, surtout lorsque vous devez rechercher une erreur de syntaxe mineure dans plusieurs lignes de code. Si l'excution du traducteur choue, une mthode de dbogage efficace consiste convertir le traducteur en commande, en procdant comme suit :
1 Copiez tout le contenu du fichier du traducteur dans un nouveau document, puis enregistrez-le dans le sous-dossier

Configuration/Commands du dossier de l'application Dreamweaver.


2 Au dbut du document, entre les balises SCRIPT, ajoutez la fonction suivante :
function commandButtons(){ return new Array( "OK","translateMarkup(dreamweaver. getDocumentPath('document'), dreamweaver.getSiteRoot(), dreamweaver.getDocumentDOM().documentElement.outerHTML); window.close()", "Cancel", "window.close()"); }

3 A la fin de la fonction translateMarkup(), appliquez un commentaire la ligne


returnsuivieParUneValeurQuelconque et remplacez-la par dreamweaver.getDocumentDOM().documentElement.outerHTML = suivieParUneValeurQuelconque,

comme indiqu dans l'exemple suivant :


// return theCode; dreamweaver.getDocumentDOM().documentElement.outerHTML = theCode; } /* end of translateMarkup() */

4 Dans la balise body du document, ajoutez un formulaire sans zones de texte :


<body> <form> Hello. </form> </body>

5 Redmarrez Dreamweaver, puis slectionnez la commande relative votre traducteur dans le menu Commandes.

Lorsque vous cliquez sur OK, la fonction translateMarkup() est appele et simule une traduction. Si aucun message d'erreur ne s'affiche et que la traduction continue d'chouer, il est probable que votre code contienne une erreur de logique.
6 Ajoutez des instructions alert() des points stratgiques de la fonction translateMarkup() de faon vous

assurer que vous touchez les ramifications appropries et vrifier les valeurs des variables et des proprits des points diffrents :
for (var i=0; i< foo.length; i++){ alert("we're at the top of foo.length array, and the value of i is " + i); /* rest of loop */ }

7 Une fois les instructions alert() ajoutes, choisissez votre commande dans le menu Commandes, cliquez sur

Annuler, puis choisissez-la de nouveau. Cette opration recharge le fichier de commandes en intgrant vos modifications.

EXTENSION DE DREAMWEAVER CS4 353


Traducteurs de donnes

Exemple de traducteur d'attributs simple


Pour mieux comprendre le principe de la traduction d'attributs, il peut tre utile d'examiner un exemple. Le traducteur suivant est un balisage Poco (Pound Conditional), une syntaxe quelque peu similaire ASP ou PHP. Pour crer le traducteur d'attribut, crez une balise tagspec, une icne et un traducteur d'attribut.

Cration de la balise tagspec


La premire tape pour assurer le bon fonctionnement de ce traducteur consiste crer une balise tagspec pour le balisage Poco afin d'viter que Dreamweaver n'analyse les instructions Poco non traduites.
1 Crez un document vierge. 2 Entrez le code suivant :
<tagspec tag_name="poco" start_string="<#" end_string="#>" detect_in_attribute="true" icon="poco.gif" icon_width="17" icon_height="15"></tagspec>

3 Enregistrez le fichier sous le nom poco.xml dans le dossier Configuration/ThirdPartyTags.

Pour obtenir un exemple de cration de la balise tagspec, consultez le fichier Tags.xml dans le dossier Configuration/ThirdPartyTags.

Cration de l'icne
Crez ensuite l'icne associe aux balises Poco.
1 Crez un fichier d'image de 18 x 18 pixels pour l'icne des balises Poco. 2 Enregistrez le fichier sous le nom poco.gif dans le dossier Configuration/ThirdPartyTags.

Cration du traducteur d'attributs


Crez un fichier HTML contenant les fonctions requises pour le traducteur d'attributs.
1 Crez un document vierge. 2 Entrez le code suivant :

EXTENSION DE DREAMWEAVER CS4 354


Traducteurs de donnes

<html> <head> <title>Conditional Translator</title> <meta http-equiv="Content-Type" content="text/html; charset="> <script language="JavaScript"> /************************************************************* * This translator handles the following statement syntaxes: * * <# if (condition) then foo else bar #> * * <# if (condition) then att="foo" else att="bar" #> * * <# if (condition) then att1="foo" att2="jinkies" * * att3="jeepers" else att1="bar" att2="zoinks" #> * * * * It does not handle statements with no else clause. * *************************************************************/ var count = 1; function translateMarkup(docNameStr, siteRootStr, inStr){ var count = 1; // Counter to ensure unique mmTranslatedValues var outStr = inStr; // String that will be manipulated var spacer = ""; // String to manage space between encoded attributes var start = inStr.indexOf('<# if'); // 1st instance of Pound Conditional code // Declared but not initalized // var attAndValue; // Boolean indicating whether the attribute is part of // the conditional statement var trueStart; // The beginning of the true case var falseStart; // The beginning of the false case var trueValue; // The HTML that would render in the true case var attName; // The name of the attribute that is being // set conditionally. var equalSign; // The position of the equal sign just to the // left of the <#, if there is one var transAtt; // The entire translated attribute var transValue; // The value that must be URL-encoded var back3FromStart; // Three characters back from the start position // (used to find equal sign to the left of <# var tokens; // An array of all the attributes set in the true case var end; // The end of the current conditional statement. // As long as there's still a <# conditional that hasn't been // translated. while (start != -1){ back3FromStart = start-3;

EXTENSION DE DREAMWEAVER CS4 355


Traducteurs de donnes

end = outStr.indexOf(' #>',start); equalSign = outStr.indexOf('="<# if',back3FromStart); attAndValue = (equalSign != -1)?false:true; trueStart = outStr.indexOf('then', start); falseStart = outStr.indexOf(' else', start); trueValue = outStr.substring(trueStart+5, falseStart); tokens = dreamweaver.getTokens(trueValue,' '); // // // // if If attAndValue is false, find out what attribute you're translating by backing up from the equal sign to the first space. The substring between the space and the equal sign is the attribute. (!attAndValue){ for (var i=equalSign; i > 0; i--){ if (outStr.charAt(i) == " "){ attName = outStr.substring(i+1,equalSign); break; } } transValue = attName + '="' + trueValue + '"'; transAtt = ' mmTranslatedValue' + count + '="' + escape(transValue) + '"'; outStr = outStr.substring(0,end+4) + transAtt + outStr.substring(end+4); // If attAndValue is true, and tokens is greater than // 1, then trueValue is a series of attribute/value // pairs, not just one. In that case, each attribute/value // pair must be encoded separately and then added back // together to make the translated value. }else if (tokens.length > 1){ transAtt = ' mmTranslatedValue' + count + '="' for (var j=0; j < tokens.length; j++){ tokens[j] = escape(tokens[j]); if (j>0){ spacer=" "; } transAtt += spacer + tokens[j]; } transAtt += '"'; outStr = outStr.substring(0,end+3) + transAtt + outStr.substring(end+3) // If attAndValue is true and tokens is not greater // than 1, then trueValue is a single attribute/value pair. // This is the simplest case, where all that is necessary is // to encode trueValue. }else{ transValue = trueValue; transAtt = ' mmTranslatedValue' + count + '="' + escape(transValue) + '"'; outStr = outStr.substring(0,end+3) + transAtt + outStr.substring(end+3); } // Increment the counter so that the next instance // of mmTranslatedValue will have a unique name, and // then find the next <# conditional in the code. count++;

EXTENSION DE DREAMWEAVER CS4 356


Traducteurs de donnes

start = outStr.indexOf('<# if',end); } // Return the translated string. return outStr } function getTranslatorInfo(){ returnArray = new Array(7); returnArray[0] = "Pound_Conditional"; returnArray[1] = "Pound Conditional Translator"; returnArray[2] = "2"; returnArray[3] = "html"; returnArray[4] = "htm"; returnArray[5] = "1"; returnArray[6] = "<#"; returnArray[7] = "byString"; returnArray[8] = "50"; return returnArray } </script> </head> <body> </body> </html> // // // // // // // // The The The The The The The // translatorClass title number of extensions first extension second extension number of expressions first expression

3 Enregistrez le fichier sous le nom poco.htm dans le dossier Configuration/Translators.

Exemple de traducteur de blocs/balises simple


Pour vous aider comprendre la traduction, examinez un traducteur entirement crit en JavaScript, qui n'utilise de bibliothque C pour aucune fonctionnalit. Le traducteur suivant serait plus efficace s'il tait crit en C, mais sa version JavaScript est plus simple et constitue de ce fait un exemple idal pour illustrer le fonctionnement des traducteurs. Comme la plupart des traducteurs, celui-ci est conu pour muler le comportement d'un serveur. Supposons que votre serveur Web soit configur pour remplacer la balise KENT par la photo d'un technicien diffrent selon le jour de la semaine, l'heure de la journe ou la plate-forme de l'utilisateur. Le traducteur excute la mme opration, mais uniquement localement. Cration du traducteur de blocs/balises
1 Crez un document vierge. 2 Entrez le code suivant :

EXTENSION DE DREAMWEAVER CS4 357


Traducteurs de donnes

<html> <head> <title>Kent Tag Translator</title> <meta http-equiv="Content-Type" content="text/html; charset="> <script language="JavaScript"> /********************************************************** * The getTranslatorInfo() function provides information * * about the translator, including its class and name, * * the types of documents that are likely to contain the * * markup to be translated, the regular expressions that * * a document containing the markup to be translated * * would match (whether the translator should run on all * * files, no files, in files with the specified * * extensions, or in files matching the specified * * expressions). * **********************************************************/ function getTranslatorInfo(){ //Create a new array with 6 slots in it returnArray = new Array(6); returnArray[0] = "DREAMWEAVER_TEAM"; returnArray[1] = "Kent Tags"; returnArray[2] = "0"; returnArray[3] = "1"; returnArray[4] = "<kent"; returnArray[5] = "byExpression"; return returnArray; } /************************************************************************** * The translateMarkup() function performs the actual translation. * * In this translator, the translateMarkup() function is written * * entirely in JavaScript (that is, it does not rely on a C library) -* * and it's also extremely inefficient. It's a simple example, however, * * which is good for learning. * ***************************************************************************/ function translateMarkup(docNameStr, siteRootStr, inStr){ var outStr = ""; // The string to be returned after translation var start = inStr.indexOf('<kent>'); // The first position of the KENT tag // in the document. var replCode = replaceKentTag(); // Calls the replaceKentTag() function // to get the code that will replace KENT. var outStr = ""; // The string to be returned after translation //If the document does not contain any content, terminate the translation. if ( inStr.length <= 0 ){ return ""; } // As long as start, which is equal to the location in inStr of the // KENT tag, is not equal to -1 (that is, as long as there is another // KENT tag in the document) while (start != -1){ // Copy everything up to the start of the KENT tag. // This is very important, as translators should never change // anything other than the markup that is to be translated. outStr = inStr.substring(0, start); // Replace the KENT tag with the translated HTML, wrapped in special // // // // // // The translatorClass The title The number of extensions The number of expressions Expression run if the file contains "<kent"

EXTENSION DE DREAMWEAVER CS4 358


Traducteurs de donnes

// locking tags. For more information on the repacement operation, see // the comments in the replaceKentTag() function. outStr = outStr + replCode; // Copy everything after the KENT tag. outStr = outStr + inStr.substring(start+6); // Use the string you just created for the next trip through // the document. This is the most inefficient part of all. inStr = outStr; start = inStr.indexOf('<kent>'); } // When there are no more KENT tags in the document, return outStr. return outStr; } /************************************************************** * The replaceKentTag() function assembles the HTML that will * * replace the KENT tag and the special locking tags that will * * surround the HTML. It calls the getImage() function to * * determine the SRC of the IMG tag. * **************************************************************/ function replaceKentTag(){ // The image to display. var image = getImage(); // The location of the image on the local disk. var depFiles = dreamweaver.getSiteRoot() + image; // The IMG tag that will be inserted between the lock tags. var imgTag = '<IMG SRC="/' + image + '" WIDTH="320" HEIGHT="240" ALT="Kent">\n'; // 1st part of the opening lock tag. The remainder of the tag is assembled below. var start = '<MM:BeginLock translatorClass="DREAMWEAVER_TEAM" type="kent"'; // The closing lock tag. var end = '<MM:EndLock>'; //Assemble the lock tags and the replacement HTML. var replCode = start + ' depFiles="' + depFiles + '"'; replCode = replCode + ' orig="%3Ckent%3E">\n'; replCode = replCode + imgTag; replCode = replCode + end; return replCode; } /****************************************************************** * The getImage() function determines which image to display * * based on the day of the week, the time of day and the * * user's platform. The day and time are figured based on UTC * * time (Greenwich Mean Time) minus 8 hours, which gives * * Pacific Standard Time (PST). No allowance is made for Daylight * * Savings Time in this routine. * ******************************************************************/ function getImage(){ var today = new Date(); // Today's date & time. var day = today.getUTCDay(); // Day of the week in the GMT time zone. // 0=Sunday, 1=Monday, and so on.

EXTENSION DE DREAMWEAVER CS4 359


Traducteurs de donnes

// The current hour in GMT, based on the // 24-hour clock. var SFhour = hour - 8; // The time in San Francisco, based on the // 24-hour clock. var platform = navigator.platform; // User's platform. All Windows computers // are identified by Dreamweaver as "Win32", // all Macs as "MacPPC". var imageRef; // The image reference to be returned. // If SFhour is negative, you have two adjustments to make. // First, subtract one from the day count because it is already the wee // hours of the next day in GMT. Second, add SFhour to 24 to // give a valid hour in the 24-hour clock. if (SFhour < 0){ day = day - 1; // The day count back one would make it negative, and it's Saturday, // so set the count to 6. if (day < 0){ day = 6; } SFhour = SFhour + 24; } // Now determine which photo to show based on whether it's a work day or a // weekend; what time it is; and, if it's a time and day when Kent is // working, what platform the user is on. //If it's not Sunday if (day != 0){ //And it's between 10am and noon, inclusive if (SFhour >= 10 && SFhour <= 12){ imageRef = "images/kent_tiredAndIrritated.jpg"; //Or else it's between 1pm and 3pm, inclusive }else if (SFhour >= 13 && SFhour <= 15){ imageRef ="images/kent_hungry.jpg"; //Or else it's between 4pm and 5pm, inclusive }else if (SFhour >= 16 && SFhour <= 17){ //If user is on Mac, show Kent working on Mac if (platform == "MacPPC"){ imageRef = "images/kent_gettingStartedOnMac.jpg"; //If user is on Win, show Kent working on Win }else{ imageRef = "images/kent_gettingStartedOnWin.jpg"; } //Or else it's after 6pm but before the stroke of midnight }else if (SFhour >= 18){ //If it's Saturday if (day == 6){ imageRef = "images/kent_dancing.jpg"; //If it's not Saturday, check the user's platform }else if (platform == "MacPPC"){ imageRef = "images/kent_hardAtWorkOnMac.jpg";

var hour = today.getUTCHours();

EXTENSION DE DREAMWEAVER CS4 360


Traducteurs de donnes

}else{ imageRef = "images/kent_hardAtWorkOnWin.jpg"; } }else{ imageRef = "images/kent_sleeping.jpg"; } //If it's after midnight and before 10am, or anytime on Sunday }else{ imageRef = "images/kent_sleeping.jpg"; } return imageRef; } </script> </head> <body> </body> </html>

3 Enregistrez le fichier sous le nom kent.htm dans le dossier Configuration/Translators.

Fonctions de l'API du traducteur de donnes


Cette section dcrit les fonctions utilises pour dfinir les traducteurs de Dreamweaver.

getTranslatorInfo()
Description Cette fonction affiche des informations sur le traducteur et sur les fichiers qu'il peut affecter. Arguments Aucun. Valeurs renvoyes Tableau de chanes. Les lments du tableau doivent apparatre dans l'ordre suivant :
1 La chane translatorClass identifie le traducteur de faon unique. Cette chane doit commencer par une lettre et

contenir uniquement des caractres alphanumriques, des traits d'union (-) et des caractres de soulignement (_).
2 La chane title dcrit le traducteur en 40 caractres maximum. 3 La chane nExtensions indique le nombre d'extensions de fichier qui suivent. Si nExtensions est gal zro, le

traducteur peut s'excuter sur n'importe quel fichier. Si nExtensions est gal zro, nRegExps est l'lment suivant dans le tableau.
4 La chane extension indique une extension de fichier ("htm" ou "SHTML", par exemple) compatible avec ce

traducteur. Cette chane ne distingue pas les majuscules des minuscules et ne doit pas commencer par un point. Le tableau doit contenir le mme nombre d'lments extension que celui spcifi dans nExtensions.
5 La chane nRegExps indique le nombre d'expressions rgulires qui suivent. Si nRegExps est gal zro, runDefault

est l'lment suivant dans le tableau.

EXTENSION DE DREAMWEAVER CS4 361


Traducteurs de donnes

6 La chane regExps indique une expression rgulire que vous pouvez vrifier. Le tableau doit contenir le mme

nombre d'lments regExps que celui spcifi dans nRegExps, et au moins l'un des lments regExps doit correspondre une partie du code source du document pour que le traducteur puisse traiter un fichier.
7 La chane runDefault indique le moment d'excution du traducteur. La liste suivante indique les valeurs de chane

possibles :
Chane "allFiles" "noFiles" "byExtension" "byExpression" Dfinition Le traducteur s'excute systmatiquement. Le traducteur ne s'excute jamais. Le traducteur s'excute lorsque les fichiers sont dots de l'une des extensions spcifies. Le traducteur s'excute lorsque le document contient une correspondance pour l'une des expressions rgulires spcifies. Le traducteur s'excute lorsque le document contient une correspondance pour l'une des chanes spcifies.

"bystring"

Remarque : Si vous dfinissez runDefault sur "byExtension" sans spcifier d'extension (voir l'tape 4), l'effet produit est le mme que celui obtenu avec la valeur "allFiles". Si vous dfinissez runDefault sur "byExpression" sans spcifier d'expression (voir l'tape 6), l'effet produit est le mme que celui obtenu avec la valeur "noFiles".
8 La chane priority indique la priorit par dfaut pour l'excution de ce traducteur. Cette priorit est un nombre

compris entre 0 et 100. Si vous ne dfinissez pas de priorit, sa valeur par dfaut est 100. La priorit maximale est 0 et la priorit minimale, 100. Lorsque plusieurs traducteurs s'appliquent un document, ce paramtre dtermine l'ordre dans lequel ils sont appliqus. La priorit la plus haute est applique en premier. Lorsque plusieurs traducteurs ont la mme priorit, ils sont appliqus dans l'ordre alphabtique par translatorClass. Exemple Dans l'exemple suivant, la fonction getTranslatorInfo() fournit des informations relatives un traducteur pour les inclusions ct serveur :
function getTranslatorInfo(){ var transArray = new Array(11); transArray[0] = "SSI"; transArray[1] = "Server-Side Includes"; transArray[2] = "4"; transArray[3] = "htm"; transArray[4] = "stm"; transArray[5] = "html"; transArray[6] = "shtml"; transArray[7] = "2"; transArray[8] = "<!--#include file"; transArray[9] = "<!--#include virtual"; transArray[10] = "byExtension"; transArray[11] = "50"; return transArray; }

EXTENSION DE DREAMWEAVER CS4 362


Traducteurs de donnes

translateDOM()
Disponibilit Dreamweaver CS3. Description Dreamweaver effectue deux passes de traduction. La premire porte sur tous les traducteurs et appelle les fonctions translateMarkup(). Une fois ces fonctions appeles, la deuxime passe appelle les fonctions translateDOM(). La valeur dom qui est transmise correspond la valeur dom traduire. Les seules modifications qui sont autorises pendant la deuxime passe sont celles qui portent sur les attributs traduits. Arguments dom, sourceStr

Argument dom. L'argument sourceStr est identique la chane transmise par translateMarkup. Elle est fournie pour rfrence,
mais l'opration de traduction doit se faire intgralement sur l'argument dom et non pas sourceStr. Valeurs renvoyes Dreamweaver ne renvoie rien. Exemple
translateDOM( dom, sourceStr ); // Ne renvoie rien

L'occurrence suivante de la fonction translateDOM() masque la balise avec l'ID div1 dans le document.
function translateDOM(dom, sourceStr){ var div1 = dom.getAttributeById("div1"); if (div1){ div1.style.display = "none"; } }

translateMarkup()
Description Cette fonction effectue la traduction. Arguments docName, siteRoot, docContent

L'argument docName est une chane qui contient l'URL de type file:// du document traduire. L'argument siteRoot est une chane qui contient l'URL de type file:// de la racine du site o se trouve le document
traduire. Si le document se trouve en dehors d'un site, cette chane peut tre vide.

L'argument docContent est une chane qui indique le contenu du document.


Valeurs renvoyes Soit une chane qui contient le document traduit, soit une chane vide si rien n'est traduit.

EXTENSION DE DREAMWEAVER CS4 363


Traducteurs de donnes

Exemple L'instance suivante de la fonction translateMarkup() appelle la fonction C translateASP() contenue dans une DLL (Windows) ou dans une bibliothque de code (Macintosh) appele ASPTrans :
function translateMarkup(docName, siteRoot, docContent){ var translatedString = ""; if (docContent.length > 0){ translatedString = ASPTrans.translateASP(docName, siteRoot, docContent); } return translatedString; }

Pour consulter un exemple intgralement en JavaScript, voir Exemple de traducteur d'attributs simple la page 353 ou Exemple de traducteur de blocs/balises simple la page 356.

liveDataTranslateMarkup()
Disponibilit Dreamweaver UltraDev 1. Description Cette fonction traduit les documents lorsque l'utilisateur utilise la fentre Live Data. Lorsque l'utilisateur slectionne la commande Affichage > Live Data ou clique sur le bouton Actualiser, Dreamweaver appelle la fonction liveDataTranslateMarkup() au lieu de la fonction translateMarkup(). Arguments docName, siteRoot, docContent

L'argument docName est une chane qui contient l'URL de type file:// du document traduire. L'argument siteRoot est une chane qui contient l'URL de type file:// de la racine du site o se trouve le document
traduire. Si le document se trouve en dehors d'un site, cette chane peut tre vide.

L'argument docContent est une chane qui indique le contenu du document.


Valeurs renvoyes Soit une chane qui contient le document traduit, soit une chane vide si rien n'est traduit. Exemple L'instance suivante de la fonction liveDataTranslateMarkup() appelle la fonction C translateASP() contenue dans une DLL (Windows) ou dans une bibliothque de code (Macintosh) appele ASPTrans :
function liveDataTranslateMarkup(docName, siteRoot, docContent){ var translatedString = ""; if (docContent.length > 0){ translatedString = ASPTrans.translateASP(docName, siteRoot, docContent); } return translatedString; }

364

Chapitre 23 : Extensions C
Les extensions C vous permettent d'implmenter des fichiers d'extension Adobe Dreamweaver en combinant du code JavaScript et votre propre code C. Crez des fonctions en langage C, intgrez-les une DLL ou une bibliothque partage, enregistrez la bibliothque dans le sous-dossier Configuration/JSExtensions du dossier de l'application Dreamweaver, puis appelez ces fonctions partir de JavaScript l'aide de l'interprteur JavaScript intgr Dreamweaver. Supposons, par exemple, que vous souhaitiez dfinir un objet Dreamweaver permettant d'insrer dans le document actif le contenu d'un fichier spcifi par l'utilisateur. Etant donn que le code JavaScript ct client ne prend pas en charge les E/S de fichier, vous devez crer une fonction en C pour fournir cette fonctionnalit.

Intgration des fonctions C


Vous pouvez utiliser le codeHTML et JavaScript ci-dessous pour crer un objet simple d'insertion du texte d'un fichier. La fonction objectTag() appelle la fonction C readContentsOfFile(), stocke dans une bibliothque appele maBibliothque.
<HTML> <HEAD> <SCRIPT> function objectTag() { fileName = document.forms[0].myFile.value; return myLibrary.readContentsOfFile(fileName); } </SCRIPT> </HEAD> <BODY> <FORM> Enter the name of the file to be inserted: <INPUT TYPE="file" NAME="myFile"> </FORM> </BODY> </HTML>

La fonction readContentsOfFile() accepte une liste d'arguments de l'utilisateur, extrait l'argument de nom de fichier, lit le contenu du fichier et le renvoie. Pour plus d'informations sur les structures de donnes JavaScript et les fonctions figurant dans la fonction readContentsOfFile(), consultez la section Extensions C et interprteur JavaScript la page 366.

EXTENSION DE DREAMWEAVER CS4 365


Extensions C

JSBool readContentsOfFile(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) { char *fileName, *fileContents; JSBool success; unsigned int length; /* Make sure caller passed in exactly one argument. If not, * then tell the interpreter to abort script execution.*/ if (argc != 1){ JS_ReportError(cx, "Wrong number of arguments", 0); return JS_FALSE; } /* Convert the argument to a string */ fileName = JS_ValueToString(cx, argv[0], &length); if (fileName == NULL){ JS_ReportError(cx, "The argument must be a string", 0); return JS_FALSE; } /* Use the string (the file name) to open and read a file */ fileContents = exerciseLeftToTheReader(fileName); /* Store file contents in rval, which is the return value passed * back to the caller */ success = JS_StringToValue(cx, fileContents, 0, *rval); free(fileContents); /* Return true to continue or false to abort the script */ return success; }

Pour vous assurer que la fonction readContentsOfFile() s'excute correctement et ne provoque pas d'erreur JavaScript, vous devez enregistrer la fonction avec l'interprteur JavaScript en ajoutant une fonction MM_Init() votre bibliothque. Lorsque Dreamweaver charge la bibliothque au dmarrage, il appelle la fonction MM_Init() pour obtenir les trois informations suivantes :

le nom JavaScript de la fonction ; un pointeur vers la fonction ; le nombre d'arguments attendus par la fonction.
L'exemple suivant illustre la fonction MM_Init() associe la bibliothque maBibliothque:
void MM_Init() { JS_DefineFunction("readContentsOfFile", readContentsOfFile, 1); }

Votre bibliothque doit inclure exactement une instance de la macro suivante :


/* MM_STATE is a macro that expands to some definitions that are * needed to interact with Dreamweaver. This macro must * be defined exactly once in your library. */ MM_STATE

EXTENSION DE DREAMWEAVER CS4 366


Extensions C

Remarque : La bibliothque peut tre implmente en C ou en C++, mais le fichier qui contient la fonction MM_Init() et la macro MM_STATE doivent tre implments en C. En effet, le compilateur C++ modifie les noms de fonction, ce qui rend impossible la dtection de la fonction MM_Init() par Dreamweaver.

Extensions C et interprteur JavaScript


Dans votre bibliothque, le code C doit interagir avec l'interprteur JavaScript de Dreamweaver trois moments distincts :

Au dmarrage, pour enregistrer les fonctions de la bibliothque Lorsque la fonction est appele, pour analyser les arguments que JavaScript transmet C Avant le retour de la fonction, pour compresser la valeur renvoye
Pour accomplir ces tches, l'interprteur dfinit plusieurs types de donnes et affiche une API. Les dfinitions des types de donnes et des fonctions rpertories dans cette section apparaissent dans le fichier mm_jsapi.h. Pour que votre bibliothque fonctionne correctement, vous devez inclure le fichier mm_jsapi.h et la ligne suivante au dbut de tous les fichiers de votre bibliothque :
#include "mm_jsapi.h"

L'inclusion du fichier mm_jsapi.h a pour effet d'inclure, son tour, le fichier mm_jsapi_environment.h, qui dfinit la structure MM_Environment.

Types de donnes
L'interprteur JavaScript dfinit les types de donnes suivants. typedef struct JSContext JSContext Un pointeur sur ce type de donnes opaque est transmis la fonction de niveau C. Certaines des fonctions de l'API utilisent ce pointeur comme argument. typedef struct JSObject JSObject Un pointeur sur ce type de donnes opaque est transmis la fonction de niveau C. Ce type de donnes reprsente un objet pouvant correspondre un objet de tableau ou tout autre type d'objet. typedef struct JSVal JSVal Une structure de donnes opaque pouvant contenir un nombre entier ou un pointeur vers un nombre virgule flottante, une chane ou un objet. Certaines des fonctions de l'API permettent de lire les valeurs des arguments de fonction partir du contenu d'une structure JSVal et d'autres permettent d'crire la valeur renvoye par la fonction en rdigeant une structure JSVal. typedef enum { JS_FALSE = 0, JS_TRUE = 1 } JSBool Type de donnes simple qui stocke une valeur boolenne.

EXTENSION DE DREAMWEAVER CS4 367


Extensions C

API d'extension C
L'API d'extension C se compose des fonctions suivantes :

typedef JSBool (*JSNative)(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval)
Description Cette signature de fonction dcrit les implmentations C des fonctions JavaScript dans les situations suivantes :

cx est un pointeur vers une structure JSContext opaque qui doit tre transmis certaines fonctions de l'API
JavaScript. Cette variable contient le contexte dexcution de linterprteur.

obj est un pointeur vers l'objet dans le contexte duquel le script s'excute. Pendant l'excution du script, le mot cl
this dsigne cet objet.

argc correspond au nombre d'arguments transmis la fonction. Le pointeur argv pointe sur un tableau de structures jsval. La longueur du tableau correspond au nombre
dlments dfini par argc.

Le pointeur rval pointe sur une structure jsval. La valeur renvoye par la fonction doit tre crite dans *rval.
La fonction renvoie la valeur JS_TRUE si elle sexcute correctement, et JS_FALSE dans le cas contraire. Si la fonction renvoie la valeur JS_FALSE, l'excution du script en cours s'arrte et un message d'erreur apparat.

JSBool JS_DefineFunction()
Description Cette fonction enregistre une fonction C avec l'interprteur JavaScript dans Dreamweaver. Une fois que la fonction JS_DefineFunction() a enregistr la fonction C spcifie dans l'argument call, vous pouvez l'appeler dans un script JavaScript en utilisant le nom spcifi dans l'argument name. L'argument name fait la distinction entre majuscules et minuscules. En rgle gnrale, cette fonction est appele depuis la fonction MM_Init(), que Dreamweaver appelle au dmarrage. Arguments
char *name, JSNativecall, unsigned int nargs

name est le nom de la fonction tel qu'il apparat dans JavaScript. call est un pointeur vers une fonction C. La fonction doit accepter les mmes arguments que readContentsOfFile
et renvoyer une valeur JSBool qui indique si son excution a russi ou pas.

nargs est le nombre d'arguments que la fonction doit recevoir.


Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

EXTENSION DE DREAMWEAVER CS4 368


Extensions C

char *JS_ValueToString()
Description Cette fonction extrait un argument de fonction partir d'une structure JSVal, le convertit en chane (si possible) et renvoie la valeur convertie l'appelant. Remarque : Ne modifiez pas le pointeur de tampon renvoy. Il pourrait endommager les structures de donnes de l'interprteur JavaScript. Pour modifier la chane, copiez ses caractres dans un autre tampon et crez une nouvelle chane JavaScript. Arguments JSContext *cx, JSVal v, unsigned integer *pLength

Largument *cx est le pointeur opaque sur JSContext qui est transmis la fonction JavaScript. L'argument v est la structure JSVal partir de laquelle Dreamweaver extrait la chane. Largument *pLength est un pointeur vers un entier non sign. Cette fonction dfinit *plength sur la longueur de
la chane (en octets). Valeurs renvoyes Un pointeur vers une chane termine par un octet nul en cas de succs, ou la valeur null en cas dchec. La routine d'appel ne doit pas librer cette chane lorsqu'elle a termin.

JSBool JS_ValueToInteger()
Description Cette fonction extrait un argument de fonction partir d'une structure JSVal, le convertit en nombre entier (si possible) et renvoie la valeur convertie l'appelant. Arguments
JSContext *cx, JSVal v, long *lp

cx est le pointeur JSContext opaque transmis la fonction JavaScript. Largument v est la structure JSVal dont lentier doit tre extrait. lp est un pointeur vers un nombre entier de 4 octets. Cette fonction stocke la valeur convertie dans *lp.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

JSBool JS_ValueToDouble()
Description Cette fonction extrait un argument de fonction partir d'une structure JSVal, le convertit en un double (si possible) et renvoie la valeur convertie l'appelant.

EXTENSION DE DREAMWEAVER CS4 369


Extensions C

Arguments
JSContext *cx, JSVal v, double *dp

cx est le pointeur JSContext opaque transmis la fonction JavaScript. Largument v est la structure JSValdont le double doit tre extrait. dp est un pointeur vers un rel double de 8 octets. Cette fonction stocke la valeur convertie dans *dp.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

JSBool JS_ValueToBoolean()
Description Cette fonction extrait un argument de fonction partir d'une structure JSVal, le convertit en valeur boolenne (si possible) et renvoie la valeur convertie l'appelant. Arguments
JSContext *cx, JSVal v, JSBool *bp

cx est le pointeur JSContext opaque transmis la fonction JavaScript. Largument v est la structure JSVal dont la valeur boolenne doit tre extraite. bp est un pointeur vers une valeur boolenne JSBool. Cette fonction stocke la valeur convertie dans *bp.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

JSBool JS_ValueToObject()
Description Cette fonction extrait un argument de fonction partir d'une structure JSVal, le convertit en objet (si possible) et renvoie la valeur convertie l'appelant. Si l'objet correspond un tableau, utilisez JS_GetArrayLength() et JS_GetElement() pour lire son contenu. Arguments
JSContext *cx, JSVal v, JSObject **op

cx est le pointeur JSContext opaque transmis la fonction JavaScript. Largument v est la structure JSValdont lobjet doit tre extrait. op est un pointeur vers un pointeur JSObject. Cette fonction stocke la valeur convertie dans *op.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

EXTENSION DE DREAMWEAVER CS4 370


Extensions C

JS_ValueToUCString()
Description Cette fonction extrait un argument de fonction partir d'une structure JSVal, le convertit en chane (si possible) et renvoie la valeur convertie l'appelant. Remarque : Ne modifiez pas le pointeur de tampon renvoy. Il pourrait endommager les structures de donnes de l'interprteur JavaScript. Pour modifier la chane, copiez ses caractres dans un autre tampon et crez une nouvelle chane JavaScript. Arguments JSContext *cx, JSVal v, unsigned int *pLength

Largument *cx est le pointeur opaque sur JSContext qui est transmis la fonction JavaScript. L'argument v est la structure JSVal partir de laquelle Dreamweaver extrait la chane. Largument *pLength est un pointeur vers un entier non sign. Cette fonction dfinit *plength sur la longueur de
la chane (en octets). Valeurs renvoyes Un pointeur vers une chane UTF-8 termine par un octet nul en cas de succs, ou la valeur null en cas dchec. La routine d'appel ne doit pas librer cette chane lorsqu'elle a termin.

JSBool JS_StringToValue()
Description Cette fonction stocke la valeur renvoye d'une chane dans une structure JSVal. Elle alloue un nouvel objet de chane JavaScript. Arguments JSContext *cx, JSVal *bytes, size_t sz, JSVal*vp

Largument *cx est le pointeur opaque sur JSContext qui est transmis la fonction JavaScript. Largument bytes est la chane stocker dans la structure JSVal. La chane tant copie, l'appelant doit la librer
lorsqu'elle n'est plus ncessaire. Si la taille de la chane nest pas spcifie (voir largument sz), la chane doit
se terminer par un octet de valeur nulle.

sz indique la taille de la chane en octets. Si la valeur de sz est 0, la longueur de la chane termine par un octet de valeur nulle est calcule automatiquement.

Largument *vp est un pointeur sur la structure JSVal dans laquelle le contenu de la chane doit tre copi.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

EXTENSION DE DREAMWEAVER CS4 371


Extensions C

JSBool JS_UCStringToValue()
Description Cette fonction stocke la valeur renvoye d'une chane dans une structure JSVal. Elle alloue un nouvel objet de chane JavaScript. Arguments JSContext *cx , JSVal *bytes, size_tsz, JSVal *vp

Largument *cx est le pointeur opaque sur JSContext qui est transmis la fonction JavaScript. Largument *bytes est la chane stocker dans la structure JSVal. La chane tant copie, l'appelant doit la librer
lorsqu'elle n'est plus ncessaire. Si la taille de la chane nest pas spcifie (voir largument sz), la chane doit
se terminer par un octet de valeur nulle.

sz indique la taille de la chane en octets. Si la valeur de sz est 0, la longueur de la chane termine par un octet de valeur nulle est calcule automatiquement.

Largument *vp est un pointeur sur la structure JSVal dans laquelle le contenu de la chane doit tre copi.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec Remarque : La mthode JS_UCStringToValue() est tous gards identique JSBool JS_StringToValue(), ceci prs qu'elle renvoie une chane UTF-8.

JSBool JS_DoubleToValue()
Description Cette fonction stocke la valeur renvoye d'un nombre virgule flottante dans une structure JSVal. Arguments
JSContext *cx, double dv, JSVal *vp

cx est le pointeur JSContext opaque transmis la fonction JavaScript. dv est un nombre virgule flottante de 8 octets. Largument vp est un pointeur vers la structure JSVal dans laquelle le contenu du double doit tre copi.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

JSVal JS_BooleanToValue()
Description Cette fonction stocke dans une structure JSVal la valeur boolenne renvoye. Arguments
JSBool bv

L'argument bv est une valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

EXTENSION DE DREAMWEAVER CS4 372


Extensions C

Valeurs renvoyes Structure JSVal qui contient la valeur boolenne que vous avez transmise la fonction en tant qu'argument.

JSVal JS_IntegerToValue()
Description Cette fonction convertit une valeur d'entier long en structure JSVal. Arguments lv L'argument lv est un entier long que vous souhaitez convertir en structure JSVal. Valeurs renvoyes Structure JSVal qui contient le nombre entier que vous avez transmis la fonction en tant qu'argument.

JSVal JS_ObjectToValue()
Description Cette fonction stocke la valeur renvoye d'un objet dans une structure JSVal. Utilise la fonction JS_ NewArrayObject() pour crer un objet de tableau et utilise JS_SetElement() pour en dfinir le contenu. Arguments
JSObject *obj

obj est un pointeur vers l'objet JSObject que vous voulez convertir en structure JSVal. Valeurs renvoyes Structure JSVal qui contient l'objet que vous avez transmis la fonction en tant qu'argument.

char *JS_ObjectType()
Description A partir d'une rfrence d'objet, la fonction JS_ObjectType() renvoie le nom de la classe de l'objet. Ainsi, s'il s'agit d'un objet DOM, la fonction renvoie "Document". S'il s'agit d'un nud dans le document, elle renvoie "Element". Pour un objet tableau, la fonction renvoie "Array". Remarque : Ne modifiez pas le pointeur tampon renvoy, car cela pourrait endommager les structures des donnes de l'interprteur JavaScript. Arguments
JSObject *obj

En principe, cet argument est transmis et converti l'aide de JS_ValueToObject(). Valeurs renvoyes Un pointeur sur une chane termine par un octet nul. L'appelant ne doit pas librer cette chane une fois l'opration effectue.

EXTENSION DE DREAMWEAVER CS4 373


Extensions C

JSObject *JS_NewArrayObject()
Description Cette fonction cre un nouvel objet contenant un tableau d'arguments JSVal. Arguments
JSContext *cx, unsigned int length, JSVal *v

cx est le pointeur JSContext opaque transmis la fonction JavaScript. length correspond au nombre d'lments que le tableau peut contenir. Largument v est un pointeur facultatif vers les structures jsval stocker dans le tableau. Si la valeur renvoye est
diffrente de null, v correspond un tableau contenant des lments length. Si la valeur renvoye est null, le contenu initial de lobjet tableau est non dfini (undefined). Il peut tre dfini laide de la fonction JS_SetElement(). Valeurs renvoyes Un pointeur vers un nouvel objet de tableau (array) ou la valeur null en cas d'chec de l'excution de la fonction.

long JS_GetArrayLength()
Description A partir d'un pointeur vers un objet de tableau, extrait le nombre d'lments contenus dans le tableau. Arguments
JSContext *cx, JSObject*obj

cx est le pointeur JSContext opaque transmis la fonction JavaScript. obj est un pointeur vers un objet de tableau.
Valeurs renvoyes Le nombre dlments du tableau, ou -1 en cas dchec.

JSBool JS_GetElement()
Description Cette fonction lit un seul lment d'un objet de tableau. Arguments
JSContext *cx, JSObject *obj, unsigned int index, JSVal *v

cx est le pointeur JSContext opaque transmis la fonction JavaScript. obj est un pointeur vers un objet de tableau. index est un index des nombres entiers du tableau. Le premier lment est l'index 0, le dernier lment est l'index
(length - 1).

v est un pointeur vers une structure jsval dans laquelle sera copi le contenu de la structure JSVal figurant dans
le tableau.

EXTENSION DE DREAMWEAVER CS4 374


Extensions C

Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

JSBool JS_SetElement()
Description Cette fonction crit un seul lment d'un objet de tableau. Arguments JSContext *cx, JSObject *obj, unsigned int index, JSVal *v

cx est le pointeur JSContext opaque transmis la fonction JavaScript. obj est un pointeur vers un objet de tableau. index est un index des nombres entiers du tableau. Le premier lment est l'index 0, le dernier lment est l'index
(length - 1).

v est un pointeur vers une structure JSVal dont le contenu doit tre copi dans la structure JSVal du tableau.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

JSBool JS_ExecuteScript()
Description Cette fonction compile et excute une chane JavaScript. Si le script renvoie une valeur, celle-ci apparat dans *rval. Arguments
JSContext *cx, JSObject *obj, char *script, unsigned intsz, JSVal *rval

cx est le pointeur JSContext opaque transmis la fonction JavaScript. obj est un pointeur vers l'objet dans le contexte duquel le script s'excute. Pendant l'excution du script, le mot cl
this dsigne cet objet. En gnral, il s'agit du pointeur JSObject qui a t transmis la fonction JavaScript.

script est une chane qui contient le code JavaScript. Si la taille de la chane n'est pas spcifie (voir l'argument sz),
la chane doit se terminer par un 0.

sz indique la taille de la chane en octets. Si sz a pour valeur 0, la longueur de la chane se terminant par 0 est calcule
automatiquement.

rval est un pointeur vers une seule structure JSVal. La valeur renvoye pour la fonction est stocke dans *rval.
Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

JSBool JS_ReportError()
Description Cette fonction dcrit la cause d'une erreur de script. Appelez cette fonction avant de renvoyer la valeur JS_FALSE pour une erreur de script, pour donner utilisateur la raison de l'chec du script (par exemple wrong number of arguments).

EXTENSION DE DREAMWEAVER CS4 375


Extensions C

Arguments
JSContext *cx, char *error, size_t sz

cx est le pointeur JSContext opaque transmis la fonction JavaScript. error est une chane qui contient le message d'erreur. La chane est copie de faon ce que l'appelant puisse la
librer lorsqu'elle ne sera plus ncessaire. Si la taille de la chane n'est pas spcifie (voir l'argument sz), la chane doit se terminer par un 0.

sz indique la taille de la chane en octets. Si la valeur de sz est 0, la longueur de la chane termine par un octet de
valeur nulle est automatiquement calcule. Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec.

API de configuration multi-utilisateur et d'accs aux fichiers


Adobe recommande de toujours utiliser l'API de configuration multi-utilisateur et d'accs aux fichiers pour accder au systme de fichiers par l'intermdiaire d'extensions C. Pour les fichiers autres que les fichiers de configuration, les fonctions accdent directement au fichier ou dossier spcifi. Dreamweaver prend en charge les configurations multi-utilisateur pour les systmes Windows XP, Windows 2000 et Mac OS X. Dreamweaver est gnralement install dans un dossier accs restreint, tel que C:\Program Folders sous Windows. De ce fait, seuls les utilisateurs disposant de droits d'accs de type administrateur peuvent modifier le dossier Configuration de Dreamweaver. Pour permettre aux utilisateurs travaillant dans des environnements multi-utilisateur de crer et de grer des configurations distinctes, Dreamweaver cre un dossier de configuration spar pour chacun d'entre eux. Chaque fois que Dreamweaver ou une extension JavaScript crit dans le dossier Configuration de Dreamweaver, Dreamweaver crit automatiquement dans le dossier Configuration de l'utilisateur la place. Ainsi, Dreamweaver permet chaque utilisateur de personnaliser les paramtres de configuration respectifs, sans aucune incidence sur les configurations personnalises des autres utilisateurs. Dreamweaver cre le dossier Configuration de l'utilisateur un emplacement dans lequel l'utilisateur dispose de tous les droits d'accs en lecture/criture. L'emplacement du dossier Configuration varie selon la plate-forme utilisateur. Sous Windows 2000 et Windows XP :
<drive>:\Documents and Settings\<username>\Application Data\Adobe\\ Dreamweaver CS4\Configuration

Remarque : Sous Windows XP, il se peut que ce dossier se trouve dans un dossier cach. Sous MacOS X :
<drive>:Users:<username>:Library:Application Support:Adobe:Dreamweaver CS4:Configuration

EXTENSION DE DREAMWEAVER CS4 376


Extensions C

Il est frquent que les extensions JavaScript soient amenes ouvrir des fichiers et crire dans le dossier Configuration. Elles peuvent accder au systme de fichiers en utilisant DWFile ou MMNotes, ou en transmettant une URL la fonction dreamweaver.getDocumentDOM(). En gnral, lorsqu'une extension accde au systme de fichiers dans un dossier de configuration, elle utilise la fonction dw.getConfigurationPath() et ajoute le nom du fichier, ou elle obtient le chemin d'accs en se reportant l'lment dom.URL d'un document ouvert et en ajoutant le nom du fichier. Une extension peut galement obtenir le chemin d'accs en se reportant l'lment dom.URL et en extrayant le nom du fichier. La fonction dw.getConfigurationPath() et l'lment dom.URL renvoient toujours une URL du dossier Configuration de Dreamweaver, mme si le document se trouve dans le dossier Configuration de l'utilisateur. Chaque fois qu'une extension JavaScript ouvre un fichier dans le dossier Configuration de Dreamweaver, ce dernier interrompt l'accs et vrifie d'abord le dossier Configuration de l'utilisateur. Si une extension JavaScript enregistre des donnes sur disque dans le dossier Configuration de Dreamweaver via DWFile ou MMNotes, Dreamweaver intercepte l'appel. Il le renvoie ensuite vers le dossier Configuration de l'utilisateur. Par exemple, sous Windows 2000 ou Windows XP, si l'utilisateur demande file:///C|/Program Files/Adobe/Adobe Dreamweaver CS4/Configuration/Objects/Common/Table.htm, Dreamweaver recherche le fichier Table.htm file dans le dossier C:\Documents and Settings\nom d'utilisateur\adobe\Dreamweaver CS4\Configuration\Objects\Common et, si ce fichier existe, c'est celui-ci qu'il emploie. Les extensions C, ou les bibliothques partages, doivent utiliser l'API de configuration multi-utilisateur et d'accs aux fichiers pour lire et crire dans le dossier Configuration de Dreamweaver. L'utilisation de l'API d'accs aux fichiers et de configuration multi-utilisateur permet Dreamweaver de lire et d'crire dans le dossier Configuration de l'utilisateur. Elle vite en outre que les oprations sur les fichiers n'chouent en raison d'autorisations d'accs insuffisantes. Si les fichiers dans le dossier Configuration de Dreamweaver auquel accde votre extension C sont crs dans JavaScript avec des manipulations DWFile, MMNotes ou DOM, utilisez l'API de configuration multiutilisateur et d'accs aux fichiers. Il se peut que ces fichiers se trouvent dans le dossier Configuration de l'utilisateur. Remarque : La plupart des extensions JavaScript ne requirent aucune modification pour pouvoir crire dans le dossier Configuration de l'utilisateur. Seules les bibliothques C partages qui crivent dans le dossier Configuration doivent tre mises jour afin d'utiliser les fonctions de l'API de configuration multi-utilisateur et d'accs aux fichiers. Lorsque vous supprimez un fichier du dossier Configuration de Dreamweaver, Dreamweaver ajoute une entre vers un fichier de masque. Cette entre est ajoute afin d'indiquer quels fichiers du dossier Configuration ne doivent pas tre visibles dans l'interface utilisateur. Un fichier ou dossier masqu n'existera pas pour Dreamweaver, mme s'il peut exister physiquement dans le dossier. Supposons par exemple que vous ayez utilis la corbeille du panneau Fragments de code pour supprimer un dossier appel javascript et un fichier appel onepixelborder.csn. Dans ce cas, Dreamweaver crit un fichier nomm mm_deleted_files.xml dans le dossier Configuration de l'utilisateur, ressemblant ceci :
<?xml version = "1.0" encoding="utf-8" ?> <deleteditems> <item name="snippets/javascript/" /> <item name="snippets/html/onepixelborder.csn" /> </deleteditems>

Lorsque Dreamweaver remplit le panneau Fragments de code, il lit tous les fichiers qui se trouvent dans le dossier Configuration/Snippets de l'utilisateur. Il lit galement tous les fichiers du dossier Configuration/Snippets de Dreamweaver, l'exception du dossier Configuration/Snippets/javascript et du fichier Configuration/Snippets/html/onepixelborder.csn. La liste de fichiers ainsi trouvs est ajoute au panneau Fragments de code.

EXTENSION DE DREAMWEAVER CS4 377


Extensions C

Si une extension C appelle la fonction MM_ConfigFileExists() de l'URL file:///c|Program Files/Adobe /Adobe Dreamweaver CS4/Configuration/Snippets/javascript/onepixelborder.csn, cette dernire renvoie la valeur false. De mme, si une extension JavaScript essaie d'appeler la fonction dw.getDocumentDom
("file:///c|Program Files/Adobe/Adobe Dreamweaver CS4/Configuration/Snippets/javascript/onepixelborder.csn"), la valeur renvoye est null.

Modifiez le fichier mm_deleted_files.xml pour empcher d'afficher des fichiers dans l'interface utilisateur, tels que des objets ou un contenu prt l'emploi dans une nouvelle bote de dialogue. Vous pouvez appeler la fonction MM_DeleteConfigfile() pour ajouter des chemins de fichier au fichier mm_deleted_files.xml.

JS_Object MM_GetConfigFolderList()
Disponibilit Dreamweaver MX. Description Cette fonction extrait une liste rpertoriant les dossiers ou les fichiers (ou les deux la fois) du dossier spcifi. Si vous spcifiez un dossier Configuration, la fonction obtient la liste des dossiers qui existent dans le dossier Configuration de l'utilisateur ainsi que dans celui de Dreamweaver, aprs filtrage par mm_deleted_files.xml. Arguments char *fileURL, char *constraints

char *fileUrl est un pointeur vers une chane qui nomme le dossier dont vous souhaitez obtenir le contenu. La
chane doit se prsenter sous la forme d'une URL de fichier (file://). Cette chane peut comporter les caractres gnriques suivants : astrisques (*) et points d'interrogation (?). Utilisez les astrisques (*) pour reprsenter un ou plusieurs caractres indtermins et les points d'interrogation (?) pour reprsenter un seul caractre indtermin.

L'argument char *contstraints peut tre files ou directories ou encore une valeur null. Si vous prcisez null,
la fonction MM_GetConfigFolderList() renvoie des fichiers et des dossiers. Valeurs renvoyes JSObject est un tableau qui contient la liste des fichiers ou des dossiers figurant soit dans le dossier Configuration de l'utilisateur, soit dans le dossier Configuration de Dreamweaver, aprs filtrage par le fichier mm_deleted_files.xml. Exemples
JSObject *jsobj_array; jsobj_array = MM_GetConfigFolderList("file:/// c|/Program Files/Adobe/Adobe Dreamweaver CS3/Configuration", "directories" );

JSBool MM_ConfigFileExists()
Disponibilit Dreamweaver MX. Description Cette fonction vrifie si le fichier spcifi existe. S'il s'agit d'un fichier dans un dossier de configuration, la fonction recherche le fichier dans le dossier Configuration de l'utilisateur ou celui de Dreamweaver. Elle vrifie galement si le nom du fichier est rpertori dans le fichier mm_deleted_files.xml. Si tel est le cas, la fonction renvoie la valeur false.

EXTENSION DE DREAMWEAVER CS4 378


Extensions C

Arguments char *fileUrl char *fileUrl est un pointeur vers une chane qui nomme le fichier souhait, sous la forme d'une URL de type file://. Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec. Exemple
char *dwConfig = "file:///c|/Program Files/Adobe/Adobe Dreamweaver CS3/ Configuration/Extensions.txt"; int fileno = 0; if(MM_ConfigFileExists(dwConfig)) { fileno = MM_OpenConfigFile(dwConfig, "read"); }

int MM_OpenConfigFile()
Disponibilit Dreamweaver MX. Description Cette fonction ouvre le fichier et renvoie son identificateur dans le systme d'exploitation. Vous pouvez utiliser cet identificateur dans des appels des fonctions de fichiers systme. Vous devez fermer l'identificateur de fichier en appelant la fonction _close. S'il s'agit d'un fichier de configuration, la fonction le recherche soit dans le dossier Configuration de l'utilisateur, soit dans le dossier Configuration de Dreamweaver. Si vous ouvrez le fichier de configuration des fins d'criture, la fonction cre le fichier dans le dossier de configuration de l'utilisateur, mme s'il existe dans le dossier Configuration de Dreamweaver. Remarque : Si vous souhaitez commencer par lire le fichier, ouvrez-le en mode "read". Lorsque vous souhaitez crire dans le fichier, fermez l'identificateur de lecture et rouvrez le fichier en mode "write" ou "append". Arguments char *fileURL, char *mode

char *fileURL est un pointeur vers une chane qui nomme le fichier en cours d'ouverture, exprim sous la forme
d'une URL de fichier (file://). S'il indique un chemin d'accs dans le dossier Configuration de Dreamweaver, la fonction MM_OpenConfigFile() commence par dterminer le chemin d'accs avant d'ouvrir le fichier.

char *mode pointe vers une chane qui indique la faon dont vous souhaitez ouvrir le fichier. Vous avez le choix
entre null, "read", "write" et "append". Si vous spcifiez "write" et que le fichier n'existe pas, la fonction MM_OpenconfigFile() le cre. Si vous spcifiez "write", la fonction MM_OpenConfigFile() ouvre le fichier en mode de partage exclusif. Si vous spcifiez "read", MM_OpenConfigFile() ouvre le fichier en mode de partage non exclusif. Si vous ouvrez le fichier en mode "write", toutes les donnes existant dans le fichier sont tronques avant que les nouvelles donnes ne soient crites. Si vous ouvrez le fichier en mode "append", toutes les nouvelles donnes sont ajoutes la fin du fichier.

EXTENSION DE DREAMWEAVER CS4 379


Extensions C

Valeurs renvoyes Nombre entier reprsentant l'identificateur du fichier dans le systme d'exploitation. Renvoie la valeur -1 si le fichier est introuvable ou n'existe pas. Exemple
char *dwConfig = "file:///c|/Program Files/Adobe/Adobe Dreamweaver CS3/ Configuration/Extensions.txt"; int = fileno; if(MM_ConfigFileExists(dwConfig)) { fileno = MM_OpenConfigFile(dwConfig, "read"); }

JSBool MM_GetConfigFileAttributes()
Disponibilit Dreamweaver MX. Description Cette fonction trouve le fichier et en renvoie les attributs. Vous pouvez dfinir tous les arguments, sauf fileURL, sur null si vous n'avez pas besoin de leur valeur. Arguments char *fileURL, unsigned long *attrs, unsigned long *filesize, unsigned long *modtime, unsigned long *createtime

char *fileURL est un pointeur vers une chane qui nomme le fichier dont vous voulez les arguments. Vous devez
fournir cet argument sous forme de fichier (file:// URL). Si fileURL indique un chemin d'accs dans le dossier Configuration de Dreamweaver, la fonction MM_GetConfigFileAttributes() commence par dterminer le chemin d'accs utiliser avant d'ouvrir le fichier.

L'argument unsigned long *attrs reprsente l'adresse d'un nombre entier contenant les bits d'attribut renvoys (voir
JSBool MM_SetConfigFileAttributes() la page 380 pour la liste des attributs disponibles).

unsigned long *filesize est l'adresse d'un entier dans lequel la fonction renvoie la taille du fichier enoctets. unsigned long *modtime est l'adresse d'un entier dans lequel la fonction renvoie l'heure laquelle le fichier a t
modifi pour la dernire fois. Cette heure correspond la valeur horaire du systme d'exploitation. Pour plus d'informations sur la valeur horaire du systme d'exploitation, voir DWfile.getModificationDate() dans le Guide des API de Dreamweaver.

unsigned long *createtime est l'adresse d'un entier dans lequel la fonction renvoie l'heure laquelle le fichier a t
cr. Cette heure correspond la valeur horaire du systme d'exploitation. Pour plus d'informations sur la valeur horaire du systme d'exploitation, voir DWfile.getCreationDate() dans le Guide des API de Dreamweaver. Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec. Renvoie la valeur JS_FALSE si le fichier n'existe pas ou si une erreur se produit pendant l'obtention des attributs.

EXTENSION DE DREAMWEAVER CS4 380


Extensions C

Exemple
char dwConfig = "file:///c|/Program Files/Adobe/Adobe Dreamweaver CS3/ Configuration/Extensions.txt"; unsigned long attrs; unsigned long filesize; unsigned long modtime; unsigned long createtime; MM_GetConfigAttributes(dwConfig, &attrs, &filesize, &modtime, &createtime);

JSBool MM_SetConfigFileAttributes()
Disponibilit Dreamweaver MX. Description Cette fonction applique les attributs que vous spcifiez pour le fichier, s'ils diffrent des attributs actuels. Si l'URL de fichier spcifie dcrit un chemin d'accs au dossier Configuration de Dreamweaver, cette fonction commence par copier le fichier dans le dossier Configuration de l'utilisateur avant d'appliquer les attributs. Si les attributs sont identiques aux attributs actuels du fichier, ce dernier n'est pas copi. Arguments char *fileURL, unsigned long attrs

char *fileURL est un pointeur vers une chane qui nomme le fichier dont vous souhaitez dfinir les attributs,
exprim sous la forme d'une URL de fichier (file://).

unsigned long attrs spcifie les bits d'attribut appliquer au fichier. Vous pouvez utiliser l'oprateur logique OR dans
les constantes suivantes pour dfinir les attributs :
MM_FILEATTR_NORMAL MM_FILEATTR_RDONLY MM_FILEATTR_HIDDEN MM_FILEATTR_SYSTEM MM_FILEATTR_SUBDIR

Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec. Renvoie JS_FALSE si le fichier n'existe pas ou s'il va tre supprim. Exemple
char *dwConfig = "file:///c|/Program Files/Adobe/Adobe Dreamweaver CS3/ Configuration/Extensions.txt"; unsigned long attrs; attrs = (MM_FILEATTR_NORMAL | MM_FILEATTR_RDONLY); int fileno = 0; if(MM_SetConfigFileAttrs(dwConfig, attrs)) { fileno = MM_OpenConfigFile(dwConfig); }

EXTENSION DE DREAMWEAVER CS4 381


Extensions C

JSBool MM_CreateConfigFolder()
Disponibilit Dreamweaver MX. Description Cette fonction cre un dossier l'emplacement spcifi. Si l'argument fileURL indique un dossier dans le dossier Configuration de Dreamweaver, la fonction cre le dossier dans le dossier Configuration de l'utilisateur. Si fileURL n'indique pas un sous-dossier du dossier Configuration de Dreamweaver, la fonction cre le dossier ainsi que tous ses dossiers parents dans le chemin d'accs, si ceux-ci n'existent pas dj. Arguments char *fileURL

char *fileURL est un pointeur vers une chane qui nomme le dossier de configuration crer, exprim sous la forme
d'une URL de fichier (file://). Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec. Exemple
char *dwConfig = "file:///c|/Program Files/Adobe/Adobe Dreamweaver CS3 /Configuration/Extensions.txt"; MM_CreateConfigFolder(dwConfig);

JSBool MM_RemoveConfigFolder()
Disponibilit Dreamweaver MX. Description Cette fonction supprime le dossier, ainsi que ses fichiers et sous-dossiers. Si le sous-dossier rside dans le dossier Configuration de Dreamweaver, elle marque le dossier pour suppression dans le fichier mm_deleted_files.xml. Arguments char *fileURL

char *fileURL est un pointeur vers une chane qui nomme le dossier supprimer, exprim sous la forme d'une URL
de fichier (file://). Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec. Exemple
char *dwConfig = "file:///c|/Program Files/Adobe/Adobe Dreamweaver CS3 /Configuration/Objects"; MM_RemoveConfigFolder(dwConfig);

EXTENSION DE DREAMWEAVER CS4 382


Extensions C

JSBool MM_DeleteConfigFile()
Disponibilit Dreamweaver MX. Description Cette fonction supprime le fichier le cas chant. Si le fichier rside un niveau infrieur au dossier Configuration de Dreamweaver, la fonction marque le fichier pour suppression dans le fichier mm_deleted_files.xml. Si l'argument fileURL n'indique pas de dossier dans le dossier Configuration de Dreamweaver, la fonction supprime le fichier spcifi. Arguments char *fileURL

char *fileURL est un pointeur vers une chane qui nomme le dossier de configuration supprimer, exprim sous la
forme d'une URL de fichier (file://). Valeurs renvoyes Valeur boolenne : JS_TRUE indique le succs de l'opration ; JS_FALSE indique son chec. Exemple
char dwConfig = "file:///c:|Program Files/Adobe/Adobe Dreamweaver CS3 /Configuration/Objects/insertbar.xml"; MM_DeleteConfigFile(dwConfig);

Appel d'une fonction C partir de JavaScript


A prsent que vous savez comment fonctionnent les extensionsC dans Dreamweaver et que vous connaissez les fonctions et les types de donnes sur lesquels elles reposent, vous allez apprendre construire une bibliothque et appeler une fonction. L'exemple qui suit ncessite les cinq fichiers suivants situs dans le dossier de l'application Dreamweaver Tutorial_assets/Extending sous forme d'archives, pour les plates-formes Macintosh et Windows :

Le fichier d'en-tte mm_jsapi.h comprend des dfinitions des types de donnes et de fonctions qui sont dcrites
dans la section Extensions C et interprteur JavaScript la page 366.

Le fichier mm_jsapi_environment.h dfinit la structure MM_Environment.h. Le fichier MMInfo.h fournit un accs l'API de Design Notes. Le fichier d'exemple Sample.c dfinit la fonction computeSum(). Le fichier Make Sample.mak permet de crer le fichier Sample.c source dans une DLL avec Microsoft Visual C++.
Sample.mcp est un fichier quivalent destin crer un bundle Mach-O par le biais de Metrowerks CodeWarrior et Sample.xcode est un fichier quivalent pour Apple Xcode. Si vous utilisez un autre outil, vous pouvez crer votre propre fichier Make.

EXTENSION DE DREAMWEAVER CS4 383


Extensions C

Cration de la DLL sous Windows avec VS.Net 2003 1 Chosissez Fichier > Ouvrir, puis slectionnez Sample.mak en dfinissant le type de fichier sur Tous les fichiers (*.*). (VS.Net 2003 n'ouvre pas directement les fichiers MAK.) Vous tes invit confirmer que vous souhaitez convertir le projet au nouveau format.
2 Choisissez Gnrer > Gnrer la solution.

Une fois l'opration de gnration termine, le fichier Sample.dll apparat dans le dossier qui contient Sample.mak (ou dans l'un de ses sous-dossiers). Cration de la DLL sous Windows avec Microsoft Visual C++ 1 Dans Microsoft Visual C++, choisissez Fichier > Ouvrir un espace de travail, puis slectionnez Sample.mak.
2 Choisissez Gnrer > Tout reconstruire.

Une fois l'opration de gnration termine, le fichier Sample.dll apparat dans le dossier qui contient Sample.mak (ou dans l'un de ses sous-dossiers). Cration de la bibliothque partage sur Macintosh au moyen de Metrowerks CodeWarrior 9 ou ultrieur 1 Ouvrez Sample.mcp.
2 Compilez le projet (Project > Make) pour gnrer un bundle Mach-O.

Une fois la compilation termine, le fichier Sample.bundle apparat dans le dossier qui contient Sample.mcp. Remarque : Le bundle Mach-O qui est gnr doit tre utilis dans Dreamweaver 8 ou une version plus rcente. Les versions prcdentes de Dreamweaverne le reconnaissent pas. Cration de la bibliothque partage sur Macintosh au moyen de Apple Xcode 1.5 ou ultrieur 1 Ouvrez Sample.xcode.
2 Compilez le projet (Build > Build) pour gnrer un bundle Mach-O.

Une fois la compilation termine, le fichier Sample.bundle apparat dans le dossier de compilation en regard du fichier Sample.xcode. Remarque : Le bundle Mach-O qui est gnr doit tre utilis dans Dreamweaver 8 ou une version plus rcente. Les versions prcdentes de Dreamweaverne le reconnaissent pas. Appel de la fonction computeSum() partir de l'objet Insrer barre horizontale 1 Dans le dossier Configuration du dossier de l'application Dreamweaver, crez un dossier appel JSExtensions.
2 Copiez le fichier Sample.dll (Windows) ou Sample.bundle (Macintosh) dans le dossier JSExtensions. 3 Dans un diteur de texte, ouvrez le fichier HR.htm qui se trouve dans le dossier Configuration/Objects/Common. 4 Ajoutez la ligne alert(Sample.computeSum(2,2)); la fonction objectTag(), comme indiqu dans l'exemple

ci-dessous :
function objectTag() { // Return the html tag that should be inserted alert(Sample.computeSum(2,2)); return "<HR>"; }

5 Enregistrez le fichier et redmarrez Dreamweaver.

Pour excuter la fonction computeSum(), slectionnez Insertion > HTML > Barre horizontale. Une bote de dialogue contenant le chiffre 4 (rsultat de la somme de 2 plus 2) s'affiche.

384

Chapitre 24 : Dossier Shared


Le dossier Shared est le lieu de stockage central des fonctions utilitaires, des classes et des images utilises communment par toutes les extensions. Toutes les extensions peuvent rfrencer les fichiers dans les sous-dossiers du dossier Shared. Vous pouvez galement ajouter des utilitaires communs ceux dj fournis par Adobe Dreamweaver. Les dossiers Configuration multi-utilisateur installs pour les utilisateurs des plates-formes Windows XP, Windows 2000 et MacOs X contiennent galement un dossier Shared autorisant les personnalisations. Par exemple, lorsque vous installez une extension partir d'Adobe Exchange, vous remarquerez peut-tre que la nouvelle extension ajoute des donnes votre dossier Configuration/Shared utilisateur plutt qu'au dossier Configuration/Shared de l'application Dreamweaver. Pour plus d'informations sur les dossiers Configuration de Dreamweaver sur un ordinateur multi-utilisateur, voir Dossiers de configuration multi-utilisateur la page 83.

Contenu du dossier Shared


Le dossier Shared est divis en sous-dossiers qui contiennent des fichiers partags par plusieurs extensions, notamment des fonctions permettant entre autres de naviguer dans le systme de dossiers des utilisateurs, d'insrer une commande d'arborescence et de crer des grilles modifiables. Remarque : Les fichiers JavaScript du dossier Shared contiennent des commentaires dans le code qui fournissent des dtails sur les fonctions qu'ils contiennent. Voir les fichiers JavaScript dans le dossier Shared, ainsi que les fichiers HTML du dossier Configuration qui contient ces fichiers JavaScript. Ils vous fourniront des explications sur l'utilisation de ces fichiers. En rgle gnrale, vous serez amen utiliser les fonctions et ressources des dossiers Common et MM ou ajouter des ressources dans le dossier Common pour les utiliser dans de nouvelles extensions. Commencez toujours par rechercher les utilitaires et les fonctions dans le dossier Shared/Common/Scripts. Ces fonctions et utilitaires sont les plus rcents et forment l'interface formelle avec le dossier Shared. Les fichiers des autres dossiers risquent quant eux de ne pas tre jour. Le dossier Shared contient plus spcifiquement les dossiers prsents ci-dessous.

Dossier Common
Le dossier Common contient des scripts et des classes partags utiliser dans les extensions de tiers.
Fichier CodeBehindMgr.js Description Contient les fonctions permettant de crer un document code-behind. Un document code-behind permet de crer des pages distinctes qui sparent le code relatif la logique de l'interface utilisateur (UI) du code relatif une conception d'interface utilisateur. Les mthodes de JSCodeBehindMgr dfinies dans ce fichier permettent de crer de nouveaux documents code-behind et de grer le lien vers les documents de conception. Contient des fonctions permettant d'associer les colonnes des bases de donnes des valeurs. Les mthodes de ColumnValueNode dfinies dans ce fichier permettent d'obtenir et de dfinir plusieurs valeurs et proprits d'une colonne de base de donnes. Dreamweaver utilise cette classe de stockage lorsqu'il applique et inspecte des objets d'oprations de modification (insertion et mise jour d'enregistrements) et lorsqu'il utilise la classe SQLStatement. Contient des fonctions pour une classe de base utilise par CompilerASPNetCSharp et CompilerASPNVBNet mais peut tre tendu de faon prendre en charge d'autres compilateurs.

ColumnValueNodeClass.js

CompilerClass.js

EXTENSION DE DREAMWEAVER CS4 385


Dossier Shared

Fichier DataSourceClass.js

Description Contient des fonctions qui dfinissent la structure de renvoi pour findDynamicSources() la page 316. Contient des fonctions qui crent une commande d'arborescence de base de donnes. Cette classe permet de crer et d'interagir avec une commande d'arborescence de base de donnes. Pour crer une commande d'arborescence de base de donnes comme celle des comportements de serveurs de jeux d'enregistrements avancs, crez une liste <select> spciale avec type="mmdatabasetree" dans votre fichier HTML. Joignez une classe CBTreeControl la commande HTML en transmettant le nom de la liste <select> l'laborateur de la classe. Utilisez ensuite les fonctions DBTreeControl pour manipuler la commande. Contient des fonctions permettant de faciliter l'utilisation des inspecteurs Proprits des objets et des comportements de serveur pour les contrles de formulaires ASP.NET qui sont traduits. Vous trouverez dans le fichier principal des fonctions utiles toutes les extensions Dreamweaver. Il comprend des fonctions permettant d'utiliser des chanes, des fichiers, des Design Notes, etc. Ce fichier est une extension du fichier dwscripts.js. Il facilite l'utilisation des comportements de serveur, en particulier avec les fichiers EDML de comportements de serveurs. Utilis trs largement dans l'implmentation des comportements de serveur dans Dreamweaver. Ce fichier est une extension du fichier dwscripts.js. Il contient des fonctions spcifiques aux modles de serveur. Un grand nombre de ces fonctions sont utilises pour travailler avec les comportements de serveur. Utilisez cette classe pour crer et manipuler une grille modifiable. Vous devez ajouter une liste de slection spciale votre page HTML et y joindre cette classe dans JavaScript pour manipuler la grille. Cette classe facilite le contrle de l'aspect du bouton: pression, survol de souris pendant pression, survol de souris et dsactiv pendant pression. Contient des fonctions permettant de grer une balise <select>. Egalement appel contrle de liste. Les mthodes de l'objet ListControl dans ce fichier permettent d'obtenir, de dfinir et de changer la valeur de la commande SELECT. Contient des fonctions qui dfinissent les proprits d'un document ASP.NET. Contient les fonctions permettant de dfinir et de grer un groupe de boutons radio. Les mthodes de l'objet RadioGroup de ce fichier permettent de dfinir et d'obtenir les valeurs et le comportement d'un groupe de boutons radio. Vous devez joindre cette classe aux boutons radio dans votre code HTML pour contrler leur comportement. Sous-classe de la classe ServerBehavior. Cette classe comprend des fonctionnalits spcifiques la cration d'appels de bases de donnes, par exemple l'appel d'une procdure stocke, l'utilisation de SQL pour renvoyer un jeu d'enregistrements, etc. Il s'agit d'une classe de base abstraite, ce qui signifie qu'elle ne peut pas tre cre et utilise seule. Pour l'utiliser, vous devez dfinir SBDatabaseCall() comme sous-classe et implmenter les fonctions d'espace rserv. Dreamweaver utilise cette classe pour implmenter ses comportements de serveur de jeux d'enregistrements et de procdures stockes. Contient des fonctions permettant de communiquer des informations concernant les comportements de serveur Dreamweaver. Vous pouvez dfinir cette classe en sous-classe lorsque vous implmentez vos comportements de serveur. Contient des fonctions permettant de stocker les proprits d'un serveur ASP.NET. Contient des fonctions permettant de crer et de modifier des instructions SQL telles que SELECT,
INSERT, UPDATE, DELETE et des instructions de procdures stockes.

DBTreeControlClass.js

dotNetUtils.js

dwscripts.js

dwscriptsExtData.js

dwscriptsServer.js

GridControlClass.js

ImageButtonClass.js

ListControlClass.js

PageSettingsASPNet.js RadioGroupClass.js

SBDatabaseCallClass.js

ServerBehaviorClass.js

ServerSettingsASPNet.js SQLStatementClass.js

tagDialogsCmn.js

Contient des fonctions visant vous aider dvelopper des botes de dialogue de balise personnalises. Les mthodes de l'objet tagDialog dfinies dans ce fichier modifient les attributs et les valeurs d'une balise particulire.

EXTENSION DE DREAMWEAVER CS4 386


Dossier Shared

Fichier TagEditClass.js

Description Contient des fonctions permettant de modifier des balises sans changer le DOM de la page en cours. Les mthodes de l'objet TagEdit dfinies dans ce fichier permettent d'obtenir et de dfinir la valeur, les attributs et les enfants d'une balise. Contient des fonctions permettant de grer une commande d'arborescence dans Dreamweaver. Les mthodes de l'objet TreeControl dfinies dans ce fichier permettent d'obtenir, de dfinir et d'organiser les valeurs dans une arborescence. Vous devez joindre cette classe une balise MM:TREECONTROL spciale dans votre page HTML pour grer la fonctionnalit de la commande d'arborescence. Contient des fonctions permettant de grer l'emplacement et les valeurs d'une fiche de proprits XML.

TreeControlClass.js

XMLPropSheetClass.js

Dossier MM
Le dossier MM contient les scripts, les images et les classes partags utiliss par les extensions fournies avec Dreamweaver, comme les scripts de cration d'une barre de navigation, de spcification des appels prchargs et de dfinition de raccourcis clavier.

Sous-dossier Scripts
Le sous-dossier Scripts contient les fonctions utilitaires suivantes :
Fichier CFCutilities.js Description Contient les fonctions utilitaires lies aux composants Adobe ColdFusion. Les fonctions permettent d'analyser les attributs depuis la balise d'ouverture d'un nud donn, d'analyser une arborescence CFC, d'obtenir le DOM d'URL en cours, d'obtenir le DOM de CFC, etc. Contient des fonctions permettant d'enregistrer les vnements, de notifier les parties des vnements partir du fichier menus.xml et d'ajouter des notificateurs d'vnement au fichier menus.xml. Contient des fonctions permettant de mettre jour un slecteur de couleur, de vrifier la couleur hexadcimale, de vrifier un lien absolu, d'ajouter une extension un nom de fichier, de gnrer des messages d'erreur, de dfinir des attributs Flash, de vrifier un lien vers un objet Flash, etc. Contient des fonctions permettant d'insrer du code HTML provenant d'Adobe Fireworks CS3 dans les documents Dreamweaver. Les fonctions permettent de vrifier si le document en cours est un document Fireworks, d'insrer du code HTML Fireworks au point d'insertion, de mettre jour le bloc de style Fireworks par rapport Dreamweaver, etc. Contient galement des fonctions utilitaires apparentes. Contient des fonctions utiliser avec l'objet menu de reroutage et le comportement menu de reroutage. Les fonctions permettent de complter les options de menus, de crer une tiquette d'option, d'ajouter une option, de supprimer une option, etc. Contient un tableau de codes de raccourcis clavier. Contient des classes et des fonctions permettant de travailler avec une barre de navigation et des lments de la barre de navigation. Comprend des fonctions permettant d'ajouter, de supprimer et de manipuler des lments de la barre de navigation. Contient des fonctions lies aux comportements des images de barre de navigation. Dfinit diffrents codes de langue. Contient des fonctions permettant d'ajouter et de supprimer des appels d'images pr charges dans le gestionnaire BODY/onLoad MM_preloadImages.

event.js

FlashObjects.js

insertFireworksHTML.js

jumpMenuUI.js

keyCodes.js navBar.js

NBInit.js pageEncodings.js preload.js

EXTENSION DE DREAMWEAVER CS4 387


Dossier Shared

Fichier RecordsetDialogClass.js

Description Contient la classe statique et les fonctions permettant d'afficher l'interface utilisateur des comportements de serveur de jeux d'enregistrements. Les fonctions dterminent l'interface afficher, simple ou avance. Hberge galement des fonctionnalits partages entre les implmentations de l'interface utilisateur et permet de passer d'une interface utilisateur une autre. Contient des fonctions partages utiliser dans les comportements de serveur Adobe. La classe dwscripts du dossier Configuration/Shared/Common/Scripts contient des utilitaires plus gnraux. Contient des fonctions permettant de quitter une chane d'expression, de revenir une chane d'expression et d'extraire une chane d'expression. Contient des fonctions permettant d'initialiser et de trier un tableau, ainsi que des fonctions permettant de trier un tableau, de dfinir le pointeur de la souris en icne de main ou en pointeur et de vrifier le type et la version du navigateur.

sbUtils.js

setText.js

sortTable.js

Le dossier Scripts contient galement deux sous-dossiers : Class et CMN.

Dossier Class
Le dossier Class contient les fonctions utilitaires suivantes :
Fichier classCheckbox.js FileClass.js Description Permet de manipuler un contrle de case cocher dans votre extension HTML. Contient une classe reprsentant un fichier dans le systme de fichiers. Les chemins sont reprsents par des URL pour garantir la compatibilit entre plates-formes. Les mthodes sont toString(), getName(), getSimpleName(), getExtension(), getPath(), setPath(), isAbsolute(), getAbsolutePath(), getParent(), getAbsoluteParent(), exists(), getAttributes(), canRead(), canWrite(), isFile(), isFolder(), listFolder(), createFolder(), getContents(), setContents(), copyTo() et remove(). Contient une classe permettant de grer MM:TREECONTROL. Version plus ancienne de GridControlClass dans le dossier Common. Voir le fichier GridControlClass.js du dossier Shared/Common/Scripts. Version plus ancienne de ImageButtonClass dans le dossier Common. Voir le fichier ImageButtonClass.js du dossier Shared/Common/Scripts. Version plus ancienne de ListControlClass dans le dossier Common. Voir le fichier Shared/Common/Scripts/ListControlClass.js. Cre et gre une liste de paires nom/valeur. Les noms peuvent comporter n'importe quels caractres. Les valeurs peuvent tre vides, mais elles ne peuvent pas tre dfinies sur null, qui reviendrait les supprimer. Exemple d'une classe de page utiliser avec la classe TabControl. Consultez la description de TabControlClass.js. Contient un objet et des mthodes contenant toutes les informations de prfrences d'une commande. Version plus ancienne de RadioGroupClass dans le dossier Common. Voir le fichier RadioGroupClass.js du dossier Shared/Common/Scripts. Aide crer une extension ayant plusieurs onglets, page.lastUnload().

GridClass.js GridControlClass.js

ImageButtonClass.js

ListControlClass.js

NameValuePairClass.js

PageControlClass.js

PreferencesClass.js

RadioGroupClass.js

TabControlClass.js

Dossier CMN
Le dossier CMN contient les fonctions utilitaires suivantes :

EXTENSION DE DREAMWEAVER CS4 388


Dossier Shared

Fichier dateID.js

Description Contient deux fonctions, createDateID() et decipherDateID(). Pour trois chanes donnes, "dayFormat", "dateFormat" et "timeFormat", createDateID() cre un ID pour chacune d'elles. Applique une plage de dates, la fonction decipherDateID() renvoie une plage contenant trois lments : dayFormat, dateFormat et timeFormat. Contient une fonction permettant d'afficher le document d'aide spcifi. Contient des fonctions qui fournissent des informations sur le document de l'utilisateur. Ces fonctions permettent d'effectuer des oprations telles que le renvoi d'un tableau de rfrences d'objets pour un type de navigateur et une balise spcifis, le renvoi de toutes les instances d'un nom de balise spcifi, la recherche d'une balise qui entoure la slection en cours, etc. Contient des fonctions d'aide gnrales pour utiliser le DOM Dreamweaver. Comprend des fonctions qui permettent d'obtenir le nud racine du document actif, de trouver la balise d'un nom donn, de crer une liste de nuds partir du nud de dpart spcifi, de vrifier si une balise donne est contenue dans une autre balise, d'effectuer diverses oprations sur les fonctions de comportement, etc. Contient une fonction, SetEnabled(), qui permet d'activer ou de dsactiver une commande en fonction des arguments qu'elle reoit. Il est possible d'activer une commande dj active ou de dsactiver une commande dj dsactive. Contient des fonctions de connexion pour accumuler la sortie de tracs dans un tableau de pages de connexion qui apparaissent dans une bote de dialogue. Contient des fonctions en rapport avec des oprations sur les fichiers. Ces fonctions permettent l'utilisateur de rechercher un nom de fichier local, de convertir le chemin relatif en chemin URL du fichier, de renvoyer le nom de fichier du document en cours, de dterminer si un document spcifi a t enregistr sur le site en cours et de renvoyer son chemin relatif, ou de dterminer si un fichier spcifi est ouvert. Contient des fonctions permettant d'ajouter un formulaire autour d'une chane de texte donne si un formulaire n'existe pas dj dans le document ou l'lment PA en cours. Comprend des fonctions permettant de dterminer si un objet est un lment PA et si le point d'insertion se trouve l'intrieur d'un formulaire. Contient des fonctions permettant d'obtenir une fonction pour un gestionnaire d'vnement, d'ajouter une fonction un gestionnaire d'vnement et de supprimer une fonction d'un gestionnaire d'vnement. Contient diverses fonctions utiles permettant de remplacer le codage, de rtablir les guillemets ("), de vrifier si un nud se trouve dans une plage de slection et de vrifier s'il existe des noms d'objets en double. Contient la fonction insertIntoDocument(), qui insre une chane de texte dans un document au point d'insertion. Contient galement les fonctions de prise en charge getHigherBlockTag() et arrContains(). La fonction getHigherBlockTag() permet d'obtenir le prochain blockTag le plus lev, comme dfini dans le tableau blockTag. La fonction arrContains() permet de localiser un lment spcifi dans un tableau. Variables rserves, non destines un usage gnral. Utilisez Startup/mminit.htm la place ou utilisez les chanes provenant des fichiers Dreamweaver Configuration/Strings/*.xml. Contient des fonctions qui ajoutent ou suppriment des valeurs d'un lment de menu. Contient des fonctions permettant de convertir un tableau de rfrences Object en un tableau de noms plus simples. Contient des fonctions permettant de regrouper des chanes de petite taille sans avoir allouer de la mmoire chaque fois.

displayHelp.js docInfo.js

DOM.js

enableControl.js

errmsg.js

file.js

form.js

handler.js

helper.js

insertion.js

localText.js

menuItem.js niceName.js

quickString.js

EXTENSION DE DREAMWEAVER CS4 389


Dossier Shared

Fichier string.js

Description Contient un ensemble gnrique de fonctions permettant de manipuler et d'analyser des chanes de texte. Les fonctions sont les suivantes : extractArgs(), escQuotes(), unescQuotes(), quoteMeta(), errMsg(), badChars(), getParam(), quote(), stripSpaces(), StripChars(), AllInRange(), reformat(), trim(), createDisplayString(), entityNameEncode(), entityNameDecode(), stripAccelerator() et SprintF(). Contient des fonctions utilitaires pour les modles Dreamweaver. Ces fonctions permettent d'insrer une rgion modifiable dans un document, d'insrer une rgion rpte dans un document, de rechercher une rgion modifiable spcifie dans un document, etc. Contient des fonctions gnriques qui contrlent l'interface utilisateur. Ces fonctions permettent de localiser un objet dsign dans le document en cours, de charger les options de liste de slection avec des chanes localises, de renvoyer la valeur de l'attribut d'une option slectionne et d'envelopper le message d'une alerte.

TemplateUtils.js

UI.js

Autres dossiers
La liste suivante dcrit les autres dossiers intressants du dossier Shared :
Dossier Controls Le dossier Controls contient les lments utiliss pour crer un comportement de serveur. Ces contrles comprennent des interfaces pour les menus de texte et de jeux d'enregistrements.

Remarque : Ces contrles sont utiliss par le Crateur de comportements de serveur de Dreamweaver et par de nombreux comportements de serveur de Dreamweaver, mais certains sont utiles pour grer un contrle dans votre extension.
Fireworks Le dossier Fireworks contient les fichiers de prise en charge pour l'intgration de Fireworks. UltraDev Dreamweaver conserve ce dossier principalement pour des raisons de compatibilit. Il ne doit pas tre utilis pour les nouvelles extensions. Utilisez le dossier Dreamweaver Configuration/Shared/Common, qui contient galement la majeure partie de cette fonctionnalit. Voir Dossier Common la page 384.

Utilisation du dossier Shared


Commencez par rechercher les codes d'extension dans le dossier Dreamweaver Configuration/Shared/Common. Ce dossier contient en effet les fonctionnalits les plus courantes et les plus rcentes. Les extensions peuvent utiliser les ressources du dossier Shared pour leur propre fonctionnalit. Un objet, une commande ou une autre extension peuvent spcifier l'un des fichiers JavaScript dans le dossier Shared comme fichier source dans une balise script, puis utiliser cette fonction dans le corps du fichier ou dans un autre fichier JavaScript inclus. Les objets et les commandes peuvent mme lier plusieurs fichiers JavaScript ensemble et ces fichiers JavaScript peuvent utiliser les ressources du dossier Shared. Par exemple, ouvrez le fichier d'objet Hypertext (Hyperlink.htm) dans le dossier d'application Configuration/Objects/Common.Remarquez que la balise head contient les lignes suivantes :
<script language="javascript" src="../../Shared/Common/Scripts/ListControlClass.js"></script> <script language="javascript" src="Hyperlink.js"></script>

Si vous ouvrez le fichier Hyperlink.js apparent, les lignes suivantes s'affichent :


LIST_LINKS = new ListControl('linkPath');

et
LIST_TARGETS = new ListControl('linkTarget');

EXTENSION DE DREAMWEAVER CS4 390


Dossier Shared

Avec les nouvelles dclarations new listControl, Hyperlink.js dfinit deux nouveaux objets ListControl. Le code du fichier Hyperlink.htm les joint ensuite aux commandes SELECT du formulaire, comme suit :
<td align="left"> <input name="linkText" type="text" class="basicTextField" value="">

et
<td align="left" nowrap><select name="linkPath" class="basicTextField" editable="true">

Le script Hyperlink.js peut maintenant appeler les mthodes ou obtenir les proprits des objets LIST_LINKS ou LIST_TARGETS pour qu'ils interagissent avec les commandes SELECT du formulaire.

391

Index
A action, balise 156 activate, balise 157 addDynamicSource() 314 Affichage en direct propos 77 aide, affichage 85 alert() 102 analyzeServerBehavior() 264 ancrage de barres d'outils 178 API d'extension, types 80 API de la fentre de rsultats 206 API de vrification des problmes 135 API de vrification des problmes de compatibilit du navigateur 133 API, types commande de barre d'outils 195 commandes 147 commandes de menu 171 comportement de serveur 264 comportements 252 diteur de balises 223 extensibilit de niveau C 367 fentre de rsultats 206 formatage des donnes 319 formats de serveur 321 inspecteur Proprits 231 modle de serveur 338 objets 128 panneau Composants 328 panneau flottant 240 problmes 135 rapports 209 sources de donnes 314 traducteur de donnes 345 application, balise 24 applyBehavior() 252 applyFormat() 321 applyFormatDefinition() 322 applySB() 270 applyServerBehavior() 265 applyTag() 224 appName, proprit 109 appVersion, proprit 109 arborescence, XML 102 Architecture de Dreamweaver 260 arguments receiveArguments() 174 transmis depuis la balise menuitem 162 arguments, attribut 195 arrt, commandes 83 aspect des botes de dialogue 5 assistance, fonctions dans les comportements 247 attribut blockStart description 62 valeur customText 63 valeur innerTag 63 valeur innerText 62 valeur nameTag 64 valeur nameTagScript 64 valeur outerTag 63 attribut Crosstag, indicateurs de code 37 attribut image 115, 191 attribute, balise 296 attributes, balise 296 attributs arguments 195 balises d'lments de barre d'outils 190 checked 116, 193 colorRect 192 command 117, 195 disabledImage 191 domRequired 193 enabled 116, 193 file 117, 193 id 115, 190 image 115, 191 label 192 menu_ID 192 overImage 191 showIf 190 tooltip 191 update 194 value 193 width 192 attributs traduits individuels 346 inspection 347 multiples 347 recherche dans les balises 107 attributs, proprit 107 B balise Slecteur de balises ajout 222 balise d'lment 13 balise Insertbar.xml hirarchie 112 balise property propos 46 validation du code 72 balise searchPattern 285, 286 balise tagspec 7 balise XML codehints 38 toolbar 181 balise, objet 107 balises enregistrement 220 balises de fichiers EDML attributes 296 closeTag 297 delete 291 display 296 group 273, 274 groupParticipant 278 groupParticipants 277 insertText 281 openTag 295 participant 279 quickSearch 280 searchPattern 285 searchPatterns 284, 292 title 276 translation 293 translations 293 translator 292 updatePattern 289, 290 updatePatterns 289 balises EDML searchPattern 286 balises propritaires modification de la couleur de surbrillance 10 personnalisation de l'interprtation 6 prvention de la correction 10 tagspec 7 balises traduites, inspection 349

EXTENSION DE DREAMWEAVER CS4 392


Index

balises, lments de barre d'outils 185 barre d'outils de codage personnalisation 28 barre d'outils, propos des extensions 80 barre Insertion ajout d'objets 119 fichier de dfinition 112 fichiers d'objet 111 modification 118 barres d'outils propos du comportement 177 propos du comportement des commandes 178 ancrage 178 API de commande 195 attributs des balises 181, 190 balises d'lments 185 button, balise 185 checkbutton, balise 186 colorpicker, balise 189 combobox, balise 188 contrles 177 cration 177 dfinition de fichier 181 dropdown, balise 188 editcontrol, balise 189 fichier de commande simple 179 include/, balise 183 itemref/, balise 184 itemtype/, balise 183 menubutton, balise 187 radiobutton, balise 186 separator, balise 184 toolbar, balise 181 toolbars.xml, fichier 177 beginReporting() 210 behaviorFunction() 253 bibliothques de balises 213 block, balise 260 blockEnd, balise, coloration du code 50 blockStart, balise coloration du code 51 blur() 102 body, proprit 105 bote de dialogue ajout 123 botes de dialogue, personnalisation de l'aspect 5 boolen, objet 102 bouton de couleur 96

bouton radio, objet 102 bouton, objet 102 brackets, balise coloration du code 51 button, balise 114, 185 C C, extensions 364 cadre applicatif Spry, indicateurs de code 32 calque, objet 102 canAcceptBehavior() 254 canAcceptCommand() 164, 167, 172, 179, 196 canApplyServerBehavior() 266 canDrag, attribut 115 canInsertObject() 128 canRecognizeDocument() 338 case cocher, objet 102 category, balise 113 chane, objet 102 chanes localises 16 chanes, localisables 87 charEnd, balise coloration du code 52 charEsc, balise coloration du code 52 charStart, balise coloration du code 52 checkbutton, balise 114, 186 checked, attribut 116, 193 childNodes, proprit des objets de balise 107 des objets de commentaire 108 des objets de document 105 des objets texte 108 Class, dossier 387 clearInterval() 102 clearTimeout() 102 close() 102 closeTag, balise 297 CMN, dossier 387 coloration des dlimiteurs de bloc de modle 62 coloration du code propos 47 balise blockEnd 50 balise blockStart 51 balise brackets 51 balise charEnd 52 balise charEsc 52

balise charStart 52 balise commentEnd 53 balise commentStart 52 balise cssImport 53 balise cssMedia 53 balise cssProperty 53 balise cssSelector 54 balise cssValue 54 balise defaultAttribute 55 balise defaultTag 55 balise defaultText 55 balise endOfLineComment 56 balise entity 56 balise functionKeyword 56 balise idChar1 56 balise idCharRest 57 balise ignoreCase 57 balise ignoreMMTParams 57 balise ignoreTags 58 balise isLocked 58 balise keyword 58 balise keywords 58 balise numbers 59 balise operators 59 balise regexp 60 balise sampleText 60 balise scheme 49 balise searchPattern 61 balise stringEnd 61 balise stringEsc 62 balise stringStart 61 balise tagGroup 62 exemple de texte CSS 70 exemple de texte JavaScript 71 exemples 69 fichier 48 JavaScript 70 modification de modles 68 style, fichier Colors.xml 48 traitement de modles 64 colorpicker, balise 189 colorRect, attribut 192 Colors.xml, fichier 48 combobox, balise 188 command, attribut 117, 195 commandButtons() 147, 172, 211 commande d'arborescence manipulation du contenu 96

EXTENSION DE DREAMWEAVER CS4 393


Index

commandes ajout aux menus 140 ajout de fichiers SWF Flash 97 barre d'outils 178 commandes de menu 150 exemple de code 140 exprience utilisateur 139 commandes d'arborescence propos 92 ajout 92 cration 93 commandes de base de donnes 92 commandes de grille de variables 93 commandes de menu propos 160 exemple de code 163 exprience utilisateur 162 extensions, propos 80 modification 159 commandes JavaScript personnalises 90 commentEnd, balise coloration du code 53 commentStart, balise coloration du code 52 compatibilit du navigateur, dtection 133 comportement de serveur exemple 261 extensions, propos 81 fichiers groupe 260 fichiers participant 261 rsolution du modle de recherche 301 comportements API 252 exemple de code 248 exprience utilisateur 246 fonctions d'assistance 247 fonctions obligatoires 252 insertion de plusieurs fonctions 247 comportements de serveur dossiers et fichiers 260 fonctions dwscripts 269 mise jour 302 recherche 297 suppression 303 techniques 297 vue d'ensemble 259 composant de service, ajout 327 conceptions de pages 4

configuration multi-utilisateur dossiers 83, 375 personnalisation 11 rinstallation et dsinstallation 13 suppression de fichiers de configuration 12 configureSettings() 211 confirm() 102 constantes de nud 102 contenu verrouill, inspection 349 Conventions, dans ce manuel 3 copyServerBehavior() 266 Cration d'une extension 2 cssImport, balise coloration du code 53 cssMedia, balise coloration du code 53 cssProperty, balise coloration du code 53 cssSelector, balise coloration du code 54 css-support, balise validation du code 72 cssValue, balise coloration du code 54 customText, valeur blockStart 63 D data, proprit des objets de commentaire 108 des objets texte 108 dataSource, attribut 275 date, objet 102 defaultAttribute, balise coloration du code 55 defaultTag, balise coloration du code 55 defaultText, balise coloration du code 55 delete, balise 291 deleteBehavior() 255 deleteditems, balise 12 deleteDynamicSource() 314 deleteFormat() 323 deleteSB() 271 deleteServerBehavior() 267 deleteType, attribut 291 dmarrage, commandes 83 description, balise 39

dsinstallation dans une configuration multi-utilisateur 13 dtection, compatibilit du navigateur 133 disabledImage, attribut 191 display, balise 296 displayHelp() dans l'API de comportement de serveur 267 dans l'API de l'inspecteur Proprits 232 dans l'API de panneau flottant 240 dans l'API de sources de donnes 315 dans l'API des objets 129 dans les API de comportement 255 dans les fichiers d'objet 129 DOCTYPE, instructions 89 Document Object Model spcification DOM de niveau 1 102 document, balise 25 document, ouverture 23 documentEdited() 240 documentElement, proprit 105 documents par dfaut, personnalisation 4 DOM de document utilisateur et d'extension distinction 102 DOM de Dreamweaver 102 propos 101 domRequired, attribut 193 Donnes dynamiques, bote de dialogue 305 dossier menu, enregistrement du fichier de commandes 165 dossier Shared contenu 384 contenu du dossier Common 384 dossiers supplmentaires 389 dossiers et fichiers, comportement de serveur 260 Dreamweaver CS4 nouvelles fonctionnalits 2 dreamweaver, objet 109 Dreamweaver, personnalisation 4 dropdown, balise 188 dwscripts functions applySB() 270 deleteSB() 271 findSBs() 269 E editcontrol, balise 189 editDynamicSource() 315

EXTENSION DE DREAMWEAVER CS4 394


Index

diteur de balise cration 219, 223 exemples 219 diteurs de balises 213 EDML, balises whereToSearch, attribut 284 EDML, fichiers propos 260 balises de fichiers Groupe 273 modification 271 structure EDML 273 lment de menu cration 239 enabled, attribut 116, 193 endOfLineComment, balise coloration du code 56 endReporting() 210 entity, balise coloration du code 56 envoyer, objet 102 escape() 102 espace de travail propos 178 prsentations, personnalisation 24 vnements dans les fichiers d'extension 102 rle dans les comportements 246 event, balise 47 exemple bote de dialogue Flash 97 extension de rapport autonome 207 mode En direct 78 exemples barre d'outils simple 179 diteur de balises 219 extension de comportement 248 extension du menu Commandes 140 menus dynamiques 166 panneau flottant 235 Problmes 133 rapport de site 205 traducteur d'attributs 353 expressions rgulires dans les fichiers EDML 272 extensibilit de niveau C, dans les traducteurs 345, 366 extension cration 2 localisation 86 Extension Data Markup Language (EDML) 260

Extension Manager instructions 88 utilisation 87 extension Script Editor code JavaScript 237 extensions propos de 1 affichage de l'aide 85 commande de bouton couleur 96 comment Dreamweaver traite JavaScript 85 contenu du dossier Shared 384 fonctionnalits 80 installation 1 extensions d'inspecteur, propos 81 extensions de bote de dialogue de balises, propos 80 extensions de commande, propos 80 extensions de comportement, propos 81 extensions de composant, propos 81 extensions de document 21 extensions de fragment de code, propos 82 extensions de panneau, propos 81 extensions de rapport, propos 80 extensions de source de donnes propos 81 documents ColdFusion 307 extensions de traducteur de donnes, propos 81 Extensions et dossiers de configuration 82 extensions, rechargement 84 Extensions.txt, fichier 21 F fentre, objet 102 fichier CodeHints.xml contenu 33, 34 description 32 fichier de dfinition de balise cration 220 fichier de dfinition de source de donnes cration 307 fichier de dfinition, type de document 14 fichier de script 261 comportement de serveur 261 fichier EDML cration 308 fichier EDML, balises attribute 296 dataSource, attribut 275 deleteType, attribut 291

isOptional, attribut 288 limitSearch, attribut 287, 294 location, attribut 281 name, attribut 278 nodeParamName, attribut 283 paramName, attribut 290 paramNames, attribut 286 partType, attribut 278 selectParticipant, attribut 277 serverBehavior, attribut 274 subType, attribut 275 translationType, attribut 294 version, attribut 280 whereToSearch, attribut 293 Fichier Formats.xml 319 fichier Groupe, balises 273 fichier insertbar.xml modification 122 fichier JavaScript cration 308 fichier menus.xml propos 150 action, balise 156 activate, balise 157 menu, balise 151 menubar, balise 151 menuitem, balise 152 modification 158 override, balise 157 separator, balise 154 shortcut, balise 155 shortcutlist, balise 154 tool, balise 156 fichier mm_deleted_files.xml propos 12 balise deleteditems 12 balise item 13 fichier mm_jsapi.h exemple 382 inclusion 366 fichiers chane XML 86 CodeHints.xml 33 insertbar.xml 119 menus.xml 150 mm_deleted_files.xml 12 MMDocumentTypes.xml 14 SpryCodeHints.xml 34 toolbars.xml 177 XML 102

EXTENSION DE DREAMWEAVER CS4 395


Index

fichiers apparents 75 propos 75 fichiers apparents, API 77 fichiers d'action 246 Fichiers d'inspecteur Proprits 226 fichiers de chane 86 fichiers de commande de prise en charge cration 311 fichiers de mappage, raccourcis clavier 29 Fichiers de source de donnes 305 fichiers EDML utilisation d'expressions rgulires 272 fichiers groupe comportement de serveur 260 fichiers JavaScript externes 85 fichiers XML propos 102 chane 86 CodeHints.xml 33 Formats.xml 319 insertbar.xml 119 menus.xml 150 MMDocumentTypes.xml 14 SpryCodeHints.xml 34 fichiers XMl toolbars.xml 177 file, attribut 117, 193 findDynamicSources() 316 findIssue() 135 findSBs() 269 findServerBehaviors() 268 Flash SWF, fichiers, affichage dans Dreamweaver 97 focus() 102 fonction, objet 102 fonctions C appel depuis JavaScript 382 dans le fichier mm_jsapi.h 366 fonctions d'API de comportement applyBehavior() 252 behaviorFunction() 253 canAcceptBehavior() 254 deleteBehavior() 255 displayHelp() 255 identifyBehaviorArguments() 255 inspectBehavior() 257 windowDimensions() 258 fonctions d'API des commandes canAcceptCommand() 147 commandButtons() 147

isDOMRequired() 148 receiveArguments() 149 windowDimensions() 149 fonctions d'API des commandes de menu canAcceptCommand() 172 commandButtons() 172 getDynamicContent() 172 isCommandChecked() 173 receiveArguments() 174 setMenuText() 175 windowDimensions() 175 fonctions d'API des rapports rapports autonomes 206 fonctions de l'API de commande de barre d'outils canAcceptCommand() 196 getCurrentValue() 196 getDynamicContent() 197 getMenuID() 198 getUpdateFrequency() 199 isCommandChecked() 200 isDOMRequired() 201 receiveArguments() 202 showIf() 202 fonctions de l'API de comportement de serveur analyzeServerBehavior() 264 applyServerBehavior() 265 canApplyServerBehavior() 266 copyServerBehavior() 266 deleteServerBehavior() 267 displayHelp() 267 findServerBehaviors() 268 inspectServerBehavior() 268 pasteServerBehavior() 269 fonctions de l'API de formats de serveur applyFormat() 321 applyFormatDefinition() 322 deleteFormat() 323 formatDynamicDataRef() 323 inspectFormatDefinition() 324 fonctions de l'API de l'diteur de balises applyTag() 224 inspectTag() 223 validateTag() 224 fonctions de l'API de l'inspecteur Proprits canInspectSelection() 231 displayHelp() 232 inspectSelection() 232

fonctions de l'API de panneau flottant displayHelp() 240 documentEdited() 240 getDockingSide() 241 initialPosition() 241 initialTabs() 242 isATarget() 242 isAvailableInCodeView() 243 isResizable() 243 selectionChanged() 237, 244 fonctions de l'API de rapports beginReporting() 210 commandButtons() 211 configureSettings() 211 endReporting() 210 processfile() 209 windowDimensions() 211 fonctions de l'API des extensions C JS_BooleanToValue() 371 JS_DefineFunction() 367 JS_DoubleToValue() 371 JS_ExecuteScript() 374 JS_GetArrayLength() 373 JS_GetElement() 373 JS_IntegerToValue() 372 JS_NewArrayObject() 373 JS_ObjectToValue() 372 JS_ObjectType() 372 JS_ReportError() 374 JS_SetElement() 374 JS_StringToValue() 370 JS_UCStringToValue() 371 JS_ValueToBoolean() 369 JS_ValueToDouble() 368 JS_ValueToInteger() 368 JS_ValueToObject() 369 JS_ValueToString() 368 JS_ValueToUCString() 370 JSNative 367 MM_ConfigFileExists() 377 MM_CreateConfigFolder() 381 MM_DeleteConfigFile() 382 MM_GetConfigFileAttributes() 379 MM_GetConfigFolderList() 377 MM_OpenConfigFile() 378 MM_RemoveConfigFolder() 381 MM_SetConfigFileAttributes() 380 fonctions de l'API des modles de serveur propos 338 canRecognizeDocument() 338

EXTENSION DE DREAMWEAVER CS4 396


Index

getFileExtensions() 339 getLanguageSignatures() 340 getServerExtension() 340 getServerInfo() 341 getServerLanguages() 341 getServerModelDelimiters() 342 getServerModelDisplayName() 343 getServerModelExtDataNameUD4() 342 getServerModelFolderName() 343 getServerSupportsCharset() 343 getVersionArray() 344 fonctions de l'API des objets canInsertObject() 128 displayHelp() 129 insertObject() 130 isDOMRequired() 129 objectTag() 131 windowDimensions() 131 fonctions de l'API des sources de donnes addDynamicSource() 314 deleteDynamicSource() 314 displayHelp() 315 editDynamicSource() 315 findDynamicSources() 316 generateDynamicDataRef() 316 generateDynamicSourceBindings() 317 inspectDynamicDataRef() 318 fonctions de l'API du panneau Composants getCodeViewDropCode() 330 getComponentChildren() 328 getContextMenuId() 329 getSetupSteps() 331 handleDesignViewDrop() 333 handleDoubleClick() 334 setupStepsCompleted() 332 toolbarControls() 335 fonctions de l'API du traducteur de donnes 360 getTranslatorInfo() 360 liveDataTranslateMarkup() 363 translateDOM() 362 translateMarkup() 362 fonctions JavaScript ajout 120 fonctions, dconseilles 3 formatage des donnes propos 319 appel des fonctions 321 formatDynamicDataRef() 323 formats 319

formats de serveur 319 formulaire (champ), objet 102 formulaire, objet 102 FTP, mappages modification 13 function, balise 42 functionKeyword, balise coloration du code 56 G generateDynamicDataRef() 316 generateDynamicSourceBindings() 317 gestionnaires d'vnement renvoi d'une valeur 247 gestionnaires d'vnements dans les botes de dialogue de comportement 246 dans les fichiers d'extension 85 getAffectedBrowserDisplayNames() 137 getAffectedBrowserProfiles() 136 getAttribute() 107 getCodeViewDropCode() 330 getComponentChildren() 328 getContextMenuId() 329 getCurrentValue() 180, 196 getDockingSide() 241 getDynamicContent() 172, 197 getElementsByAttributeName, proprit 106, 108 getElementsByTagName() pour les objets de balise 107 pour les objets de document 105 getFileExtensions() 339 getIssueDescription() 138 getIssueID() 137 getIssueName() 137 getLanguageSignatures() 340 getMenuID() 198 getServerExtension() 340 getServerInfo() 341 getServerLanguages() 341 getServerModelDelimiters() 342 getServerModelDisplayName() 343 getServerModelExtDataNameUD4() 342 getServerModelFolderName() 343 getServerSupportsCharset() 343 getSetupSteps() 331 getTranslatedAttribute() 107 getTranslatorInfo() 360 getUpdateFrequency() 199

getVersionArray() 344 groupParticipant, balise 278 groupParticipants, balise 277 H handleDesignViewDrop() 333 handleDoubleClick() 334 hasChildNodes() pour les objets de balise 107 pour les objets de commentaire 108 pour les objets de document 105 pour les objets texte 108 hasTranslatedAttributes() 107 havePreviewTarget() 168 hline 226 HTML mise en forme par dfaut, modification 74 proprits inner/outer 107 I Icne du marqueur de script 244 id, attribut 115, 190 idChar1, balise coloration du code 56 idCharRest, balise coloration du code 57 identifyBehaviorArguments() 255 ignoreCase, balise coloration du code 57 ignoreMMTParams, balise coloration du code 57 ignoreTags, balise coloration du code 58 image de la barre Insertion cration 122 image, objet 102 include/, balise 183 indicateurs de code propos 32, 82 balise codehints 38 balise description 39 balise function 42 balise menu 40 balise menugroup 39 balise menuitem 41 balise method 43 balise optionparammenu 45 balise parammenu 44 balise property 46 dclaration des classes 36

EXTENSION DE DREAMWEAVER CS4 397


Index

event 47 JavaScript 34 optionparammenuitem 46 parammenuitem 44 indicateurs de code JavaScript 34 informations sur la langue 109 initialPosition() 241 initialTabs() 242 innerHTML, proprit 107 innerTag, valeur blockStart 63 innerText, valeur, blockStart 62 insertbar, balise 113 insertbar.xml, fichier 111, 119 insertObject() 130 insertText, balise 281 inspectBehavior() 257 inspectDynamicDataRef() 318 inspecteur de liaison 305 inspecteurs Proprits attributs traduits 347 commentaires en tte de fichier 226 exemple de code 228 exprience utilisateur 227 icne clair 347 mot cl *LOCKED* 349 personnaliss 226 pour contenu verrouill 349 structure des fichiers 226 vue d'ensemble 226 inspectFormatDefinition() 324 inspectServerBehavior() 268 inspectTag() 223 installation d'une extension 1 Intgration de Photoshop 99 interface utilisateur d'extension 88 interface utilisateur de l'diteur de balises cration 221 interprteur JavaScript extensions C 366 types de donnes 366 isATarget() 242 isAvailableInCodeView() 243 isCommandChecked() 173, 200 isdomrequired, attribut 153 isDOMRequired() 129, 148, 201 isLocked, balise coloration du code 58 isOptional, attribut 288 isResizable() 243

item() 102 itemref/, balise 184 itemtype/, balise 183 J JavaScript commandes 90 fichiers externes 85 URL 85 JS_BooleanToValue() 371 JS_DefineFunction() 367 JS_DoubleToValue() 371 JS_ExecuteScript() 374 JS_GetArrayLength() 373 JS_GetElement() 373 JS_IntegerToValue() 372 JS_NewArrayObject() 373 JS_ObjectToValue() 372 JS_ObjectType() 372 JS_ReportError() 374 JS_SetElement() 374 JS_StringToValue() 370 JS_UCStringToValue() 371 JS_ValueToBoolean() 369 JS_ValueToDouble() 368 JS_ValueToInteger() 368 JS_ValueToObject() 369 JS_ValueToString() 368 JS_ValueToUCString() 370 JSBool, valeur boolenne 366 JSContext, type de donnes 366 JSNative 367 JSObject, type de donnes 366 jsval 366 K keyword, balise coloration du code 58 keywords, balise coloration du code 58 L label, attribut 192 limitSearch, attribut 287, 294 listes de slection modifiables 90 listes modifiables 90 liveDataTranslateMarkup() 363 localisation 86 location, attribut 281

M manipulation du contenu de commande d'arborescence 96 masqu (champ), objet 102 math, objet 102 menu modification 159 menu Commandes, modification 161 menu droulant de la barre Insertion construction 125 menu Insertion ajout d'objets 119 menu_ID, attribut 192 menu, balise 40, 151 menubar, balise 151 menubutton, balise 113, 187 menugroup, balise 39 menuitem, balise 41, 152 menus propos 82 commandes 161 modification 158 modification, droulants et contextuels 160 menus dynamiques exemple de code 166 exprience utilisateur 162 method, balise 43 MM_ConfigFileExists() 377 MM_CreateConfigFolder() 381 MM_DeleteConfigFile() 382 mm_deleted_files.xml, fichier syntaxe de la balise 12 MM_GetConfigFileAttributes() 379 MM_GetConfigFolderList() 377 MM_OpenConfigFile() 378 MM_RemoveConfigFolder() 381 MM_returnValue 247 MM_SetConfigFileAttributes() 380 MM, dossier 386 MM\ TREECOLUMN, balise 94 TREENODE, balise 94 MMDocumentTypes.xml, fichier 14 Mode Fractionnement vertical 75 modle d'objet de document propos 101 arborescence 101 Dreamweaver 102

EXTENSION DE DREAMWEAVER CS4 398


Index

modles de serveur propos 338 extensions, propos 81 modles dynamiques 20 modification lments de menu 158 modles, coloration du code 68 modification du type de fichier par dfaut 5 Modifier la liste de formats, menu contextuel Plus (+) 320 mot cl *LOCKED* 349 mot de passe (champ), objet 102 N name, attribut 117, 278 nameTag, valeur blockStart 64 nameTagScript, valeur blockStart 64 navigateur cible, validation du code 72 navigateur, objet 102 nextSibling, proprit 103, 106, 107, 108 Node.COMMENT_NODE 102 Node.DOCUMENT_NODE 102 Node.ELEMENT_NODE 102 Node.TEXT_NODE 102 nodelist, objet 102 nodeParamName, attribut 283 nodeType, proprit des objets de balise 107 des objets de commentaire 108 des objets de document 105 des objets texte 108 nombre, objet 102 nouvelle source de donnes test 313 nouvelles fonctionnalits de Dreamweaver CS4 2 nud d'lment 107 nud de document 105 nud de texte 108 nuds propos 102 arborescence DOM 101 commandes d'arborescence 102 numbers, balise coloration du code 59

O objectTag() 131 objet commentaire 108 objet de document proprits et mthodes du DOM de niveau 1 105 proprits et mthodes du DOM Netscape 102 objet de la barre Insertion copie 118 cration d'une nouvelle catgorie 119 dplacement 118 exemple 120 extensions, propos 80 modification de l'ordre 118 suppression 118 objet, objet 102 objets ajout la barre Insertion 119 ajout de fichiers SWF Flash 97 composants 111 cration 111 fonctionnement des fichiers 119 Objets dynamiques 99 objets dynamiques exemple 99 objets texte 108 onBlur, vnement 102 onChange, vnement 102 onClick, vnement 102 onFocus, vnement 102 onLoad, vnement 102 onMouseOver, vnement 102 onResize, vnement 102 openTag, attribut 295 operators, balise coloration du code 59 option, objet 102 optionparammenu, balise 45 optionparammenuitem, balise 46 outerHTML, proprit 107 outerTag, valeur blockStart 63 ouverture d'un document 23 overImage, attributs 191 override, balise 157 P panel, balise 27 panelcontainer, balise 26

panelframe, balise 25 panelset, balise 24 panneau Composants commande d'arborescence 327 extension 325 fichiers 326 panneaux flottants 234 exemple 235 exprience utilisateur 234 extensions, propos 81 performances 244 parammenu, balise 44 parammenuitem, balise 44 paramName, attribut 290 paramNames, attribut 286 parentNode, proprit des objets de balise 107 des objets de commentaire 108 des objets de document 105 des objets texte 108 parentWindow, proprit 105 participant, balise 279 Participant, fichiers 261 partType, attribut 278 pasteServerBehavior() 269 personnalisation aspect des botes de dialogue 5 conceptions de pages 4 dans un environnement multiutilisateur 11 documents par dfaut 4 Dreamweaver 1 interprtation de balises propritaires 6 panneau Composants 326 prsentations de l'espace de travail 24 plates-formes multi-utilisateur, dossier Configuration 21, 375 previousSibling, proprit 103, 106, 107, 108 processFile() 209 profils de navigateur balise css-support 72 balise property 72 balise value 73 Q quickSearch, balise 280, 298

EXTENSION DE DREAMWEAVER CS4 399


Index

R raccourcis clavier fichiers de mappage 29 modification 159 radiobutton, balise 186 rapports autonomes 207 site 204 rapports autonomes 206, 207 rapports de site propos 204 fonctionnement 204 receiveArguments() 149, 164, 170, 174, 180, 202 rechargement d'extensions 84 rechargement des extensions 84 regexp, balise coloration du code 60 regexp, objet 102 rinstallation, dans une configuration multiutilisateur 13 removeAttribute() 107 resizeTo() 102 rsolution du modle de recherche 301 rtablir, objet 102 S sampleText, balise coloration du code 60 scnarios, fonctions de l'API des comportements de serveur appel 263 scheme, balise coloration du code 49 Script Editor, extension panneau flottant 235 Scripts, sous-dossier 386 searchPattern, balise coloration du code 61 searchPatterns, balise 284, 292 select() 102 Slecteur de balises 217 slection, exact/within 226 slection, objet 102 selectionChanged() 237, 244 selectParticipant, attribut 277 separator, balise 115, 154, 184 serverBehavior, attribut 274 setAttribute() 107 setInterval() 102 setMenuText() 165, 175

setTimeout() 102, 244 setupStepsCompleted() 332 share-in-memory 304 shortcut, balise 155 shortcutlist, balise 154 showif, attribut 116, 190 showIf() 202 Shutdown, dossier 83 site, objet 110 site, objet, proprits de 109 Startup, dossier 83 stringEnd, balise coloration du code 61 stringEsc, balise coloration du code 62 stringStart, balise coloration du code 61 subType, attribut 275 systme d'exploitation, userxd5 s 109 systemScript, proprit 109 T tableau, objet 102 tag, attribut 117 tagGroup, balise coloration du code 62 tagName, proprit 107 Terminologie des fichiers apparents 76 textarea, objet 102 texte (champ), objet 102 Texte dynamique, bote de dialogue 305 title, balise 276 tool, balise 156 toolbar, balise 181 toolbarControls() 335 toolbars.xml, fichier 177, 181 tooltip, attribut 191 traducteurs attribut 346 bloc/balise 348 dbogage 352 traducteurs d'attributs propos 346 cration 346 dbogage 352 exemple de code 353 traducteurs de blocs/balises propos 346 dbogage 352 exemple de code 356

traducteurs de donnes dbogage 352 exprience utilisateur 345 pour attributs 346 pour balises ou blocs de code 348 types 346 traitement de modles caractres d'chappement 66 caractres gnriques 65 coloration du code 64 longueur maximale de chane 67 priorit 67 translateDOM() 362 translateMarkup() 362 translation, balise 293 translations, balise 293 translationType, attribut 294 translator, balise 292 TREECOLUMN, balise 94 TREENODE, balise 94 type de fichier, modification du type par dfaut 5 types de documents propos 81 balises dans le fichier de dfinition 16 extensibles 14 extensions 21 fichier de dfinition 14, 16 fichier de dfinition, rgles 23 localisation 16, 22 modles dynamiques 20 ouverture, procdure 23 types de documents extensibles 14 U unescape() 102 update, attribut 194 updatePattern, balise 289, 290 updatePatterns, balise 289 updateScript() 238 URL, proprit 105 utilisation du dossier Shared 389 V valeurs intgres, chanes localisables 87 validateTag() 224 validation de code 72 value, attribut 193 value, balise validation du code 73

EXTENSION DE DREAMWEAVER CS4 400


Index

VBScript 246 vrification de la compatibilit du navigateur 133 version, attribut 280 vline 226 W W3C 102 whereToSearch, attribut 284, 293 width, attribut 192 window.close() 102 windowDimensions() dans l'API des commandes 149 dans l'API des objets 131 dans l'API des rapports 211 dans les actions de comportement 258 dans les commandes de menu 175 X XML arborescence 102 structure 273

Вам также может понравиться