Extension de Dreamweaver et UltraDev
Transcription
Extension de Dreamweaver et UltraDev
Extension de Dreamweaver et UltraDev ™ macromedia ® Marques commerciales Afterburner, AppletAce, Attain, Attain Enterprise Learning System, Attain Essentials, Attain Objects for Dreamweaver, Authorware, Authorware Attain, Authorware Interactive Studio, Authorware Star, Authorware Synergy, Backstage, Backstage Designer, Backstage Desktop Studio, Backstage Enterprise Studio, Backstage Internet Studio, Design in Motion, Director, Director Multimedia Studio, Doc Around the Clock, Dreamweaver, Dreamweaver Attain, Drumbeat, Drumbeat 2000, Extreme 3D, Fireworks, Flash, Fontographer, FreeHand, FreeHand Graphics Studio, Generator, Generator Developer's Studio, Generator Dynamic Graphics Server, Knowledge Objects, Knowledge Stream, Knowledge Track, Lingo, Live Effects, Macromedia, Macromedia M Logo & Design, Macromedia Flash, Macromedia Xres, Macromind, Macromind Action, MAGIC, Mediamaker, Object Authoring, Power Applets, Priority Access, Roundtrip HTML, Scriptlets, SoundEdit, ShockRave, Shockmachine, Shockwave, Shockwave Remote, Shockwave Internet Studio, Showcase, Tools to Power Your Ideas, Universal Media, Virtuoso, Web Design 101, Whirlwind et Xtra sont des marques commerciales de Macromedia, Inc. et peuvent être déposées aux Etats-Unis ou dans d'autres juridictions ou pays. Les autres noms de produit, logos, concepts, titres, mots ou phrases mentionnés dans cette publication peuvent être des marques commerciales, des marques de service ou des noms commerciaux de Macromedia, Inc. ou d'autres entités et peuvent être déposés dans certaines juridictions ou certains pays. Ce manuel contient des liens vers des sites web tiers qui ne sont pas contrôlés par Macromedia et Macromedia ne peut en aucun cas être tenu responsable du contenu de ces sites. Si vous accédez à l’un de ces sites, vous le faites à vos propres risques. Macromedia propose ces liens dans un but pratique uniquement et ne peut en aucun cas endosser ou accepter la responsabilité du contenu de ces sites tiers. Dénégation de responsabilité d’Apple APPLE COMPUTER, INC. N’ASSUME AUCUNE GARANTIE, IMPLICITE OU EXPLICITE, SUR LE LOGICIEL INFORMATIQUE CI-INCLUS, SA COMMERCIABILITÉ OU SON ADÉQUATION À UN OBJECTIF PARTICULIER. L’EXCLUSION DES GARANTIES IMPLICITES N’ÉTANT PAS AUTORISÉE DANS CERTAINS ÉTATS, L’EXCLUSION CI-DESSUS PEUT DONC NE PAS S’APPLIQUER À VOTRE CAS. CETTE GARANTIE VOUS OFFRE DES DROITS JURIDIQUES SPÉCIFIQUES. VOUS POUVEZ DISPOSER DE CERTAINS AUTRES DROITS, QUI VARIENT SELON LES ÉTATS. Copyright © 2000 Macromedia, Inc. Tous droits réservés. Ce manuel ne peut pas être copié, photocopié, reproduit, traduit ou converti sous forme électronique ou informatique, en partie ou en totalité, sans l’autorisation écrite préalable de Macromedia, Inc. Numéro de pièce ZDW40M200F Remerciements Gestion de projet : Sheila McGinn Rédaction : JuLee Burdekin, David Jacowitz et Denise Lee Mise en forme : Susan Moxley Conception et production multimédia : Aaron Begley et Noah Zilberberg Production de l'impression : Chris Basmajian, Paul Benkman, Caroline Branch et Rebecca Godbois Mise en forme du site web : Jane Flint DeKoven et Jeff Harmon Responsable de la localisation : Kristin Conradi Remerciements spéciaux à Heidi Bauer, Winsha Chen, Chris Denend, Margaret Dumas, Peter Fenczik, Dave George, Valerie Green, Joel Huff, Lori Hylan, Narciso (nj) Jaramillo, Sho Kuwamoto, Jay London, Joe Marini, Charles McBrian, Jeff Schang, Ken Sundermeyer Scott Richards, Raymond Lim, Yoko Vogt, Luciano Arruda, Peter von dem Hagen, Vincent Truong, Florian de Joannes, Gwenhaël Jacq, Florent Pajani, Bonnie Loo, Karen Catlin, Jean Fitzgerald, Ken Karleskint, Chris Bank, Yoko Shindo, Masayo Noda, Tim Hussey et SDL International Première édition : novembre 2000 Macromedia, Inc. 600 Townsend St. San Francisco, CA 94103 2 Table des matières CHAPITRE 1 Extension de Dreamweaver – Présentation . . . . . . . 9 Personnalisation ou extension ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Consultation du manuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 L'architecture d'extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Installation d'une extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Errata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 Conventions utilisées dans ce manuel . . . . . . . . . . . . . . . . . . . . . . . . . .16 CHAPITRE 2 Modèle objet de document (DOM) et JavaScript . 19 Modèle objet de document dans Dreamweaver . . . . . . . . . . . . . . . . . . .19 Fonctionnement de JavaScript dans les fichiers d'extension . . . . . . . . . .28 Commandes JavaScript personnalisées. . . . . . . . . . . . . . . . . . . . . . . . . .29 CHAPITRE 3 Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Fonctionnement des fichiers d'objet . . . . . . . . . . . . . . . . . . . . . . . . . . .40 API d'objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 Ajout d'objets au panneau d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 Ajout d'objets au menu Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 CHAPITRE 4 Commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 Fonctionnement des commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46 API de commande. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Exemple de commande simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 Ajout de commandes au menu Commandes . . . . . . . . . . . . . . . . . . . . .52 3 CHAPITRE 5 Commandes de menu . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Fonctionnement des commandes de menu . . . . . . . . . . . . . . . . . . . . . .53 API de commande de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 Commande de menu simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 Menu dynamique simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 CHAPITRE 6 Rapports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Fonctionnement des rapports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Le rapport API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 CHAPITRE 7 Modules de débogage JavaScript. . . . . . . . . . . . . . . 67 CHAPITRE 8 Inspecteurs de propriétés . . . . . . . . . . . . . . . . . . . . . . . 75 Comment fonctionnent les fichiers d'inspecteur de propriétés. . . . . . . .76 API de l'inspecteur de propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Un exemple simple d'inspecteur de propriétés . . . . . . . . . . . . . . . . . . . .80 CHAPITRE 9 Panneaux flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Fonctionnement des fichiers de panneau flottant. . . . . . . . . . . . . . . . . .84 API du panneau flottant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85 A propos des performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89 Exemple de panneau flottant simple . . . . . . . . . . . . . . . . . . . . . . . . . . .91 CHAPITRE 10 Comportements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 Fonctionnement des comportements. . . . . . . . . . . . . . . . . . . . . . . . . . .94 API de comportement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 Exemple de comportement simple . . . . . . . . . . . . . . . . . . . . . . . . . . .104 CHAPITRE 11 Comportements de serveur . . . . . . . . . . . . . . . . . . . . 107 Architecture d'UltraDev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 Dossiers et fichiers de comportements de serveur . . . . . . . . . . . . . . . .110 Exemple : Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 4 Contents Exemple : Redirect If Empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 Techniques de comportements de serveur . . . . . . . . . . . . . . . . . . . . . .120 Simplification des comportements de serveur . . . . . . . . . . . . . . . . . . .131 Comment appeler les fonctions API de comportement de serveur . . . .135 API de comportement de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 CHAPITRE 12 Schéma XML de comportement de serveur. . . . . 145 eXtensible Markup Language (Langage de Marquage eXtensible) . . . .146 Schéma XML de comportement de serveur UltraDev . . . . . . . . . . . . .148 Modification de fichiers XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 Fichiers XML Groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 Fichiers XML Participant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 Utilisation du gestionnaire de données . . . . . . . . . . . . . . . . . . . . . . . .178 Utilisation du gestionnaire de traduction. . . . . . . . . . . . . . . . . . . . . . .183 CHAPITRE 13 Sources de données . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Fonctionnement des sources de données . . . . . . . . . . . . . . . . . . . . . . .187 API de source de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 CHAPITRE 14 Formatage des données . . . . . . . . . . . . . . . . . . . . . . . 195 Organisation du formatage de données . . . . . . . . . . . . . . . . . . . . . . . .196 Mise en service des fonctions de formatage de données . . . . . . . . . . . .198 API de formatage de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 CHAPITRE 15 Modèles de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Fonctions API des modèles de serveur . . . . . . . . . . . . . . . . . . . . . . . . .203 CHAPITRE 16 API d'intégration de Fireworks . . . . . . . . . . . . . . . . 207 API d'intégration de Fireworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207 Exemple simple d'intégration de Fireworks . . . . . . . . . . . . . . . . . . . . .213 CHAPITRE 17 API des objets Flash . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Contents 5 CHAPITRE 18 API de Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Fonctionnement de Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . .219 API JavaScript de Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220 API C de Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225 CHAPITRE 19 API d'E/S de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . 233 Vérification de l'installation de DWfile . . . . . . . . . . . . . . . . . . . . . . . .233 API d'E/S de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 CHAPITRE 20 API HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 API HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241 CHAPITRE 21 API de base de données . . . . . . . . . . . . . . . . . . . . . . 249 Fonctions de l'API de base de données . . . . . . . . . . . . . . . . . . . . . . . .250 CHAPITRE 22 API JavaBean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 CHAPITRE 23 API d'intégration de commande source . . . . . . . . 269 Fonctions obligatoires de l'API d'intégration de commande source . . .270 Fonctions facultatives de l'API d'intégration de commande source . . .276 Activateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285 CHAPITRE 24 Traducteurs de données . . . . . . . . . . . . . . . . . . . . . . 293 Définition d'un traducteur de données . . . . . . . . . . . . . . . . . . . . . . . .293 Fonctionnement des traducteurs de données . . . . . . . . . . . . . . . . . . . .294 API de traducteur de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295 Choix du type de traducteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299 Ajout d'un attribut traduit à une balise . . . . . . . . . . . . . . . . . . . . . . . .300 Verrouillage des balises ou des blocs de code traduits. . . . . . . . . . . . . .306 Recherche de bogues dans le traducteur. . . . . . . . . . . . . . . . . . . . . . . .316 6 Contents CHAPITRE 25 Extensions C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 API d'extension C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322 CHAPITRE 26 API JavaScript de Dreamweaver . . . . . . . . . . . . . . 333 Obtention de données de documents par l'intermédiaire du DOM. . .335 Fonctions du panneau Actifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .336 Fonctions de comportements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343 Fonctions relatives au Presse-papiers . . . . . . . . . . . . . . . . . . . . . . . . . .353 Fonctions relatives aux commandes . . . . . . . . . . . . . . . . . . . . . . . . . . .358 Fonctions relatives aux conversions . . . . . . . . . . . . . . . . . . . . . . . . . . .359 Fonctions relatives aux styles CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . .360 Fonctions relatives aux applications externes . . . . . . . . . . . . . . . . . . . .366 Fonctions relatives aux manipulations de fichiers. . . . . . . . . . . . . . . . .371 Fonctions relatives à la recherche et au remplacement . . . . . . . . . . . . .381 Fonctions relatives aux cadres et aux jeux de cadres . . . . . . . . . . . . . . .387 Fonctions de modifications générales. . . . . . . . . . . . . . . . . . . . . . . . . .389 Fonctions globales relatives aux applications . . . . . . . . . . . . . . . . . . . .406 Fonctions globales relatives aux documents . . . . . . . . . . . . . . . . . . . . .408 Fonctions relatives à l'historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . .410 Fonctions relatives aux styles HTML. . . . . . . . . . . . . . . . . . . . . . . . . .419 Fonctions relatives au débogueur JavaScript . . . . . . . . . . . . . . . . . . . .422 Fonctions relatives au clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .426 Fonctions relatives aux calques et aux cartes graphiques. . . . . . . . . . . .434 Fonctions relatives aux éléments de bibliothèque et aux modèles . . . . .437 Fonctions Live data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .443 Fonctions relatives aux menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .446 Fonctions relatives aux chemins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .448 Fonctions relatives à Quick Tag Editor . . . . . . . . . . . . . . . . . . . . . . . .450 Fonctions relatives aux rapports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .453 Fonctions de la fenêtre de résultats . . . . . . . . . . . . . . . . . . . . . . . . . . .454 Fonctions relatives à la sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457 Fonctions de comportement du serveur. . . . . . . . . . . . . . . . . . . . . . . .462 Fonctions relatives à la source de données . . . . . . . . . . . . . . . . . . . . . .464 Fonctions de modèle de serveur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465 Fonctions relatives aux sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .466 Fonctions du mode Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487 Fonctions de manipulation de chaînes. . . . . . . . . . . . . . . . . . . . . . . . .500 Contents 7 Fonctions de modification des tableaux . . . . . . . . . . . . . . . . . . . . . . . .504 Fonctions relatives aux scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511 Fonctions de bascule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .518 Fonctions relatives à la traduction (conversion) de données . . . . . . . . .538 Fonctions d'environnement de mise en forme . . . . . . . . . . . . . . . . . . .540 Fonctions relatives au mode Mise en forme . . . . . . . . . . . . . . . . . . . . .546 Fonctions relatives aux fenêtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .552 Fonctions déconseillées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .559 Activateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .569 INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 8 Contents 1 CHAPITRE 1 Extension de Dreamweaver – Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ce manuel couvre les fonctionnalités avancées auxquelles vous avez accès lorsque vous effectuez une extension de Dreamweaver UltraDev. Les extensions sont des objets, des commandes, des commandes de menus, des panneaux, des traducteurs de données, des inspecteurs de propriétés, des rapports, des comportements, des comportements de serveur, des modèles de serveur, des sources de données et des formats de données que vous créez à l'aide de l'API (interface de programme d'application) de Dreamweaver UltraDev. Ce manuel est destiné à vous aider à rédiger vos propres extensions en fournissant des informations sur la manière de programmer chaque type d'extension et en expliquant l'API de Dreamweaver UltraDev. Consultez ce chapitre pour connaître les éléments requis pour la rédaction d'extensions et pour obtenir une présentation des extensions. Personnalisation ou extension ? Avant de commencer à lire ce manuel, reportez-vous au chapitre « Personnalisation de Dreamweaver » du guide de l'utilisateur de Dreamweaver 4. Ce chapitre explique des procédures de modification des panneaux, menus, boîtes de dialogue et formats HTML dans Dreamweaver. Il présente également certaines notions de base de la fonctionnalité d'extension de Dreamweaver, notamment la façon de modifier les commandes Dreamweaver et la façon d'ajouter des balises propriétaires. Lisez ce manuel lorsque vous êtes prêt à effectuer l'extension de Dreamweaver UltraDev (afin de créer vos propres objets, commandes, commandes de menu, panneaux, inspecteurs de propriétés, rapports, traducteurs de données, comportements, comportements de serveur, modèles de serveur, sources de données et formats de données). 9 Remarque : avant de commencer à rédiger des extensions, reportez-vous au manuel « Utilisation de Dreamweaver UltraDev » pour plus d'informations sur l'installation de Dreamweaver UltraDev et la connexion aux bases de données. Consultation du manuel Ce manuel décrit l'API prise en charge par Dreamweaver UltraDev. Les extensions de Dreamweaver sont rédigées en JavaScript. Les scripts peuvent effectuer des modifications sur le document en utilisant un DOM (Modèle d'objet de document) et peuvent appeler un code C se trouvant dans une bibliothèque de liens dynamique (DLL). Pour certains types d'extensions, UltraDev fournit un jeu de fonctions utilitaires, qui fonctionne avec les données stockées dans des fichiers XML. Il est conseillé de posséder quelque expérience dans la création de pages web avec Dreamweaver ou UltraDev. Il est préférable d'être familiarisé avec les langages utilisés pour l'extension de Dreamweaver, que ce soit JavaScript ou C. Il est également préférable d'être familiarisé avec les langages de script côté serveur (ASP, ColdFusion ou JSP) que vous souhaitez ajouter au document d'un utilisateur. Les sections suivantes décrivent les chapitres suivant l'ordre dans lequel ils apparaissent dans ce manuel. Vue d'ensemble • Ce chapitre présente l'architecture d'extension de Dreamweaver UltraDev et la façon de débuter la création d'extensions. • « Le Modèle d'objet de document (DOM) et le code JavaScript des extensions » présente le Modèle d'objet de document (DOM) de Dreamweaver UltraDev et la façon d'accéder et d'afficher les données du document utilisateur, par le biais d'appels JavaScript, vers le DOM du document. Création d'extensions • « Objets » décrit les extensions, détaille l'API de l'objet, explique comment le fichier objet fonctionne et fournit des exemples. • « Commandes » explique comment fonctionnent les commandes et comment ajouter votre commande à un menu. Ce chapitre détaille également l'API des commandes et fournit des exemples. • « Commandes de menu » explique comment fonctionnent les commandes de menu et comment ajouter votre commande à un menu. Ce chapitre détaille également l'API des commandes de menu et fournit des exemples. • « Rapports » explique comment effectuer l'extension du jeu de rapports pré-rédigés livrés avec Dreamweaver. 10 Chapitre 1 • « Débogueur » explique comment effectuer l'extension du Débogueur JavaScript, créer une version déboguée du document utilisateur, parcourir le code JavaScript et renvoyer les erreurs. • « Inspecteurs de propriétés » décrit comment créer des inspecteurs personnalisés, donne des détails sur l'API de l'inspecteur de propriétés, explique le fonctionnement des inspecteurs et fournit des exemples. • « Panneaux flottants » décrit le fonctionnement des extensions de panneau flottant, donne des détails sur l'API des panneaux flottants et fournit des exemples. • « Comportements » explique comment rédiger un comportement, donne des détails sur l'API du comportement, explique le fonctionnement des comportements et fournit des exemples. Création d'extensions spécifiques à UltraDev • « Comportements de serveur » est le premier des deux chapitres consacrés à l'architecture permettant d'implémenter des comportements de serveur. Ce chapitre explique le fonctionnement des fonctions d'aide et la façon dont les fichiers de description XML correspondants simplifient la programmation des comportements de serveur. Il donne également des détails sur l'API du comportement de serveur et fournit des exemples. • « Schéma XML d'un comportement de serveur » est le second chapitre expliquant comment rédiger et modifier des comportements de serveur. Ce chapitre est consacré aux fichiers de description XML. Vous trouverez également dans ce chapitre des services avancés pour les données d'extension et les traducteurs résidant dans les fichiers XML. Remarque : reportez-vous également au manuel Utilisation de Dreamweaver UltraDev pour plus d'informations sur l'Editeur de comportements de serveur. Cet outil d'interface utilisateur simplifie réellement la création de comportements de serveur et leur ajout aux documents, mais se limite aux opérations les plus simples. Pour créer et modifier des comportements de serveur manuellement, reportez-vous à « Comportements de serveur », page 107 et « Schéma XML de comportement de serveur », page 145 de ce manuel. • « Sources de données » fournit les API pour la connectivité des sources de données. • « Mise en forme des données » explique comment mettre en forme des éléments de données dynamiques et placer correctement des éléments dans un document. • « Modèles de serveur » décrit les API servant à ajouter un nouveau modèle de serveur (également appelé « technologie serveur ») à Dreamweaver UltraDev. Extension de Dreamweaver – Présentation 11 Utilisation d'autres produits et utilitaires • « API d'intégration de Fireworks » explique comment lancer et exécuter des commandes dans Fireworks à partir de Dreamweaver. • « Objets Flash » explique comment créer et modifier les fichiers Objets Flash. • « API des Design Notes » décrit les fonctions JavaScript et C qui ajoutent des informations sur le fichier, telles que l'historique et l'association du document, aux Design Notes. • « API d'E/S de fichier » explique les méthodes de manipulation des fichiers courants disponibles avec l'objet DWfile. • « API HTTP » explique comment obtenir et envoyer des fichiers à un serveur HTTP à l'aide de l'objet DWHttp. • « API de base de données » donne des informations sur l'API permettant la connexion vers des bases de données SQL. • « API JavaBean » fournit des fonctions C récupérant des méthodes, des propriétés, des événements, des classes et des messages d'erreur dans votre JavaBean. • « API de commande source » explique comment intégrer une application de commande source avec Dreamweaver. • « Traducteurs de données » décrit le fonctionnement des traducteurs, donne des informations sur l'API de traducteur de données et sur la manière de créer un traducteur, des balises de verrouillage et des attributs. Le gestionnaire de traduction et les fichiers XML simplifient ce processus pour les programmeurs d'UltraDev. Reportez-vous aux Schémas XML. • « Extensions C » explique comment créer une interface entre vos bibliothèques C et l'API JavaScript de Dreamweaver. • « API JavaScript de Dreamweaver » est votre guide de référence pour l'API principale de Dreamweaver UltraDev. Il couvre l'API JavaScript d'un point de vue fonctionnel. L'architecture d'extension La nature ouverte de l'architecture de Dreamweaver UltraDev vous permet de modifier pratiquement tous les aspects de Dreamweaver UltraDev. Votre interaction avec le produit dépend du type d'extension que vous rédigez. Cette section explique les types d'extensions que vous pouvez créer. Pour plus d'informations sur l'architecture Dreamweaver, reportez-vous au « Modèle objet de document (DOM) et JavaScript », page 19, qui présente le DOM de Dreamweaver et le fonctionnement de JavaScript avec des extensions. 12 Chapitre 1 Types d'extensions L'ajout d'un bouton sur le panneau d'objet constitue une manière simple d'effectuer l'extension de Dreamweaver UltraDev. Ensuite, chaque fois que l'utilisateur fait glisser cet objet jusqu'au mode Création de la fenêtre de document, Dreamweaver UltraDev insère le code associé à l'objet dans le code HTML. Vous créez ce type de fonctionnalité « sélectionner pour insérer » en rédigeant un objet. Les modèles de serveur sont à l'autre extrémité du spectre. Ces extensions complexes définissent un jeu complet de balises qui décrivent un langage de marquage de serveur. Pour programmer cette fonction avancée, un programmeur doit être familiarisé avec Dreamweaver UltraDev, avec le jeu de balises spécifiques au serveur et avec le fonctionnement et l'architecture serveur. Vous trouverez ensuite différentes manières d'effectuer l'extension du produit, chacune avec ses propres procédures. La liste suivante représente les différentes manières d'effectuer l'extension de Dreamweaver UltraDev. Vous pouvez procéder de l'une des manières suivantes : en ajoutant des objets au panneau Objet, en ajoutant des commandes qui insèrent ou réorganisent les balises et les attributs HTML, en créant votre propre panneau flottant, en ajoutant des comportements JavaScript côté client ou en rédigeant des traducteurs qui convertissent le code spécialisé en code HTML standard. Dans UltraDev, vous pouvez créer de nouveaux comportements de serveur, de nouvelles sources de données pour le panneau Liaisons de données, de nouveaux formats de données ou même définir un nouveau type de modèle serveur. Les différents types d'extension peuvent être résumés comme suit. 1 Object : également connu sous le nom d'extension « insertion seule ». Vous rédigez ce type d'extension pour ajouter un nouvel objet au panneau Objet. Vous créez ce type d'extension en rédigeant un fichier HTML contenant le code à insérer dans le document. Il peut également contenir un formulaire qui regroupe les données fournies par les utilisateurs et un code JavaScript qui traite ces données. Vous placez le fichier HTML dans le dossier Configuration/ Objects/* (où * est un caractère générique représentant tout sous-dossier) avec une icône en format GIF et l'extension s'affiche dans le panneau d'objets. 2 Commande : une commande est un élément de menu qui appelle un script. Lorsque vous créez ce type d'extension, vous ajoutez un nouvel élément de menu à Dreamweaver. Pour créer une commande, vous créez un fichier qui implémente les fonctions dans l'API de commande (voir « Commandes », page 45). Si vous souhaitez que la commande s'affiche dans le menu « Commandes », il vous suffit d'installer le fichier dans le dossier Configuration/Commands. Pour que la commande s'affiche ailleurs dans le menu système, personnalisez le fichier menus.xml. Lorsqu'un utilisateur fait apparaître un menu, la commande peut préciser si son élément de menu s'affiche estompé ou non. Extension de Dreamweaver – Présentation 13 3 Panneau : Dreamweaver possède des panneaux qui fournissent des informations sur le document et la sélection en cours. Vous pouvez ajouter votre propre panneau flottant qui interagit avec la sélection, le document ou la tâche, ou qui affiche simplement des informations utiles. Les fichiers de panneau flottant sont des fichiers contenant du code HTML et JavaScript et résidant dans le dossier Configuration/Floaters. 4 Inspecteur : les inspecteurs sont indispensables pour définir, vérifier et modifier le nom, les dimensions, l'aspect et autres attributs de la sélection ; ils permettent également de lancer des éditeurs internes et externes pour l'élément sélectionné. Dreamweaver intègre plusieurs interfaces compatibles avec l'inspecteur de propriétés permettant de définir des propriétés pour de nombreuses balises HTML standard. A l'aide des fichiers d'inspecteur de propriétés personnalisés, vous pouvez ignorer ces interfaces intégrées ou en créer de nouvelles pour contrôler les balises personnalisées. 5 Comportement : vous pouvez ajouter de nouveaux comportements au menu Plus (+) du panneau Comportements. Un comportement est un événement utilisateur plus une action. Vous rédigez l'action. Pour créer un comportement, rédigez le code de comportement, créez une interface utilisateur en HTML pour obtenir une entrée, créez un gestionnaire pour l'événement auquel doit être associé votre comportement, déterminez si votre comportement s'applique à un document donné et appliquez le comportement à l'emplacement approprié. Le dossier Configuration/Behaviors/Actions contient de nombreux exemples de comportements. 6 Comportement de serveur : Dreamweaver UltraDev possède un panneau Comportements de serveur, que vous pouvez utiliser pour appliquer à votre document des blocs de script côté serveur fréquemment utilisés. Si vous possédez du script ASP, JSP ou ColdFusion que l'utilisateur utilise fréquemment, vous pouvez l'emballer en tant que Comportement de serveur. Une fois que vous avez créé un comportement de serveur, il s'affiche dans le menu Plus (+) du panneau Comportements de serveur. Dans UltraDev 4.0, vous pouvez utiliser une nouvelle bibliothèque de fonctions d'aide pour simplifier la tâche de rédaction d'un comportement de serveur, à condition que vous ayez stocké le code d'exécution du comportement dans un fichier XML. 7 Traducteur de données : un traducteur fournit une représentation visuelle d'un code non-HTML dans le mode Création de la fenêtre de document. Il convertit le code non-HTML en HTML et verrouille le code non-HTML pour éviter qu'il ne soit analysé par Dreamweaver. Vous créez des extensions de traducteur pour représenter un code dynamique ou non-HTML dans le mode Création de la fenêtre de document. Remarque : vous pouvez implémenter un traducteur en utilisant l'API de traducteur ou les services de Gestionnaire de traducteur d'UltraDev. Pour obtenir une description de l'API de traducteur, reportez-vous à « Traducteurs de données », page 293. 8 14 Chapitre 1 Source de données : les fonctions d'API de source de données vous permettent d'ajouter des options aux menu plus (+) du panneau Liaisons de données. 9 Modèle de serveur : cette fonction avancée vous permet de prendre en charge un nouveau modèle de serveur. UltraDev prend initialement en charge ASP, JSP et ColdFusion. Vous pouvez utiliser l'API de modèle de serveur pour prendre en charge un modèle de serveur supplémentaire. Dossiers d'extension En vous familiarisant avec les dossiers du dossier Configuration, vous pouvez découvrir l'API pour les zones que vous allez étendre et trouver des exemples pour chaque type d'extension. Conseil: le fichier Configuration_ReadMe.htm du dossier Configuration fournit des informations sur le contenu de chaque sous-dossier. Un dossier qui ne correspond pas à un type d'extension particulier se trouvera dans le dossier Shared. Le dossier Shared est un lieu de stockage central pour les fonctions utilitaires, les classes et les images couramment utilisées par toutes les extensions. Par exemple, les fichiers du dossier Shared/MM/scripts/CMN contiennent des fonctions qui, entre autres tâches utiles, recherchent tous les enfants d'un Nuds pour une balise spécifique, extraient les espaces d'une chaîne et génèrent la référence JavaScript correcte pour un objet en fonction de son nom. Dans le répertoire /Configuration/Shared/UltraDev/Scripts résident des fichiers contenant des fonctions utilitaires utiles lors de la création d'un comportement de serveur. Nombre de ces fichiers fournissant les utilitaires principaux utilisent la convention d'appellation ss*.js. Installation d'une extension Avant de programmer votre propre extension, téléchargez et installez une extension pré-existante à partir du site web Macromedia Exchange (http://macromedia.com/exchange/) (en anglais). Nous vous conseillons de prendre le temps de le faire, cela vous simplifiera l'accomplissement de certaines tâches. Vous pouvez vous faire une idée du nombre de programmeurs d'extension présents dans la communauté. Il est possible que vous ayez besoin d'une extension particulière existante ou étant suffisamment avancée (proche de la révision) pour répondre à vos besoins. Une fois que vous avez trouvé une extension qui vous intéresse sur les sites Exchange de Dreamweaver ou d'UltraDev, il est facile d'installer une extension. Pour installer une extension, observez les étapes suivantes : 1 Installez Extension Manager, si ce n'est pas déjà fait. Vous pouvez le télécharger à partir du site web Macromedia Exchange (http://www.macromedia.com/ software/downloads/). Extension de Dreamweaver – Présentation 15 2 Connectez-vous au site web Macromedia Exchange (http://www.macromedia.com/fr). 3 Sur ce site, sélectionnez une extension à ajouter. Choisissez une extension simple, qui ne risque pas d'altérer de manière importante votre environnement de développement Dreamweaver. Cliquez sur le lien de téléchargement dans la page d'informations détaillées de l'extension pour télécharger le paquet d'extension. 4 Enregistrez le paquet d'extension dans le dossier Downloaded Extensions de votre dossier Dreamweaver. 5 Dans le menu Fichier d’Extension Manager, sélectionnez Installer extension (Commandes > Gérer les extensions). L'extension est automatiquement installée dans Dreamweaver. Il est nécessaire de redémarrer Dreamweaver avant de pouvoir accéder à certaines extensions. Si Dreamweaver est en cours d'exécution lorsque vous installez l'extension, il vous sera peut-être demandé d'en sortir et de redémarrer l'application. Accédez à Extension Manager (Commandes > Gérer les extensions) dans Dreamweaver pour afficher les informations de base sur l'extension (par exemple, son emplacement dans Dreamweaver). Errata Le code dans Dreamweaver UltraDev n'était pas achevé lors de la rédaction de la présente documentation. Par conséquent, il est possible qu'il existe quelques différences entre l'implémentation finale de l'API JavaScript de Dreamweaver UltraDev et les explications fournies dans ce manuel. Vous trouverez une liste des problèmes connus dans la section Extensibility (Extension) du site de support technique de Dreamweaver (en anglais) à l'adresse suivante : http://www.macromedia.com/support/ultradev/extend.html. Conventions utilisées dans ce manuel Ce manuel utilise les conventions typographiques suivantes : • • indique des fragments de code et des constantes d'API, notamment des noms de classe, des noms de méthodes, des noms de fonctions, des noms de type, des scripts, des instructions SQL et des noms de balises et d'attributs HTML. Police de code Police de code en italique code. 16 Chapitre 1 indique les éléments remplaçables dans le • Le symbole de continuation (¬) indique qu'une longue ligne de code a été fractionnée sur deux lignes ou plus. En raison des limites de marge du format de ce manuel, une ligne de code continue doit ici être coupée. Lorsque vous voyez ce symbole de continuation dans le manuel, cela signifie que la ligne suivante fait partie de la première. Lorsque vous copiez les lignes de code, entrez-les comme une seule ligne. Conventions de noms utilisées dans ce guide : • Vous : le développeur responsable de la rédaction des extensions. • L'utilisateur : la personne utilisant Dreamweaver UltraDev. • Le visiteur : la personne qui visualise la page web créée par l'utilisateur. Extension de Dreamweaver – Présentation 17 18 Chapitre 1 2 CHAPITRE 2 Modèle objet de document (DOM) et JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les documents HTML sont constitués d'une arborescence de balises qui reflète leur structure. La racine de l'arborescence correspond à la balise HTML, les deux branches principales sont HEAD et BODY. Les ramifications de HEAD sont TITLE, STYLE, SCRIPT, ISINDEX, BASE, META et LINK. Les ramifications de BODY comprennent des en-têtes (H1, H2, etc.), des éléments de niveau bloc (P, DIV, FORM, etc.), des éléments de niveau texte (FONT, BR, IMG, etc.) et l'élément ADDRESS. Les éléments émergeant des ramifications correspondent à des attributs tels que WIDTH, HEIGHT, ALT et HREF. Un Modèle Objet de Document, ou DOM (Document Object Model), correspond également à une arborescence définissant la structure du document. Toutefois, le DOM définit cette structure en termes d'objets et de propriétés, et non en termes de balises et d'attributs. La racine de l'arborescence DOM est le document lui-même, l'objet HTML constitue le tronc et les autres objets du document se ramifient à partir de l'objet HTML, à l'instar des balises et des attributs HTML. Modèle objet de document dans Dreamweaver Le DOM d'un navigateur détermine le fonctionnement du code JavaScript d'un document HTML dans ce navigateur. De la même manière, le DOM de Dreamweaver détermine la façon dont le code JavaScript des extensions fonctionne dans Dreamweaver. 19 Le DOM de Dreamweaver associe un sous-ensemble du DOM de Netscape Navigator 4.0 à un sous-ensemble du DOM Niveau 1 du W3C (World Wide Web Consortium). Grâce à l'incorporation du DOM Niveau 1, toutes les parties d'une page HTML, y compris les balises (que le W3C appelle éléments), les commentaires et le texte, deviennent un objet. La répartition élémentaire de la hiérarchie du DOM est la suivante : Vous pouvez référencer les objets par leur index (document.forms[3].elements[1]) ou par leur nom (document.myForm.myButton). Les objets ayant le même nom forment un tableau. Vous pouvez accéder à un objet particulier du groupe à l'aide de son index (par exemple, la première case d'options dont le nom est myRadioGroup dans myForm serait référencée par document.myForm.myRadioGroup[0]). 20 Chapitre 2 Le tableau suivant donne une vue d'ensemble des propriétés, des méthodes et des événements pris en charge par chaque objet ; ces derniers sont décrits de façon plus détaillée dans des ouvrages tels que JavaScript: The Definitive Guide (O’Reilly). Des informations complémentaires sur les propriétés et les méthodes définies par le W3C, qui font l'objet d'une documentation tierce moins complète, figurent à la suite de ce tableau. Les propriétés en lecture seule sont marquées d'une puce (•). Objet Propriétés Méthodes window document • navigator • innerWidth • innerHeight • screenX • screenY • alert() onResize confirm() escape() unescape() close() setTimeout() clearTimeout() setInterval() clearInterval() resizeTo() navigator platform • Aucun Aucun document forms • (tableau getElementsBy onLoad d'objets de formulaire) TagName() images • (tableau hasChildNodes() d'objets image) layers • (un tableau d'objets LAYER, ILAYER et d'objets DIV et SPAN à positionnement absolu) Evénements child objects by name • nodeType • parentNode • childNodes • documentElement • body • URL • parentWindow • toutes les balises/ tous les éléments nodeType • parentNode • childNodes • tagName • attributes by name innerHTML outerHTML getAttribute() setAttribute() removeAttribute () getElementsByTa gName() hasChildNodes() Modèle objet de document (DOM) et JavaScript 21 Objet Propriétés Méthodes Evénements form En complément des propriétés disponibles pour toutes les balises : elements • (tableau d'objets button, checkbox, password, radio, reset, select, submit, text, file, hidden, image et textarea) Uniquement les méthodes disponibles pour toutes les balises. Aucun En complément des Uniquement les propriétés disponibles méthodes pour toutes les balises : disponibles pour toutes les balises. visibility Aucun mmcolorbutton child objects by name • layer left top width height zIndex image En complément des Uniquement les propriétés disponibles méthodes pour toutes les balises : disponibles pour toutes les balises. src onMouseOver onMouseOut onMouseDown onMouseUp button reset submit En complément des En complément des propriétés disponibles méthodes pour toutes les balises : disponibles pour toutes les balises : form • onClick En complément des En complément des propriétés disponibles méthodes pour toutes les balises : disponibles pour toutes les balises : checked onClick blur() focus() checkbox radio form • password text file hidden image (zone) textarea 22 Chapitre 2 blur() focus() En complément des En complément des propriétés disponibles méthodes pour toutes les balises : disponibles pour toutes les balises : form • value blur() focus() select() onBlur onFocus Objet Propriétés Méthodes Evénements select En complément des En complément des propriétés disponibles méthodes pour toutes les balises : disponibles pour toutes les balises : form • options • (tableau blur() (Windows uniquement) d'objets option) focus() (Windows selectedIndex uniquement) onBlur (Windows uniquement) option En complément des Uniquement les propriétés disponibles méthodes pour toutes les balises : disponibles pour toutes les balises. text Aucun mmcolorbutton En complément des Aucun propriétés disponibles pour toutes les balises : onChange onChange onFocus (Windows uniquement) name value array boolean date function math number object string regexp Correspond à Netscape 4 Correspond à Netscape 4 Aucun text nodeType • parentNode • childNodes • data hasChildNodes() Aucun comment nodeType • parentNode • childNodes • data hasChildNodes() Aucun NodeList length • item() Aucun NamedNodeMap length • item() Aucun L'objet dreamweaver et ses propriétés Outre les objets standard tels qu'ils sont définis par les navigateurs et le W3C, Dreamweaver implémente deux objets personnalisés : dreamweaver et site. L'objet dreamweaver possède deux propriétés en lecture seule qui lui sont associées : appName et appVersion. Modèle objet de document (DOM) et JavaScript 23 a la valeur « Dreamweaver » ou « Dreamweaver Ultradev » respectivement pour chaque application. appVersion prend une valeur ayant le format « versionNumber [languageCode] (platform) ». Par exemple, la valeur de la propriété appVersion pour la version Windows suédoise de Dreamweaver 4 serait « 4.0 [se] (Win32) » ; pour la version Macintosh anglaise, cette valeur serait « 4.0 [en] (MacPPC) ». appName Les propriétés appName et appVersion ont été implémentées dans Dreamweaver 3 et ne sont pas disponibles dans les versions antérieures de Dreamweaver. Pour déterminer si la version de Dreamweaver est 3 ou ultérieure, il suffit de vérifier l'existence de la propriété appVersion ou appName. Pour déterminer la version spécifique de Dreamweaver, vérifiez d'abord l'existence de la propriété appVersion, puis le numéro de version. Exemple : if (dreamweaver.appVersion && ¬ dreamweaver.appVersion.indexOf('3.01') != -1){ // execute code } L'objet site n'a aucune propriété. Pour plus d'informations sur les méthodes des objets dreamweaver et site, voir « API JavaScript de Dreamweaver », page 333. Informations sur le DOM Contrairement au DOM de Netscape, le DOM Niveau 1 n'a pas été documenté dans des centaines d'ouvrages et de sites web tiers. Aussi, vous trouverez dans le présent document une description assez détaillée des propriétés et des méthodes du DOM Niveau 1 ainsi que des valeurs qu'elles renvoient. Le DOM Niveau 1 présente quatre constantes (appelées nodes) qui décrivent les types d'objets constituant l'arborescence du document. Ces constantes, qui correspondent généralement aux valeurs renvoyées de la propriété nodeType, sont les suivantes : Node.DOCUMENT_NODE Node.ELEMENT_NODE Node.COMMENT_NODE Node.TEXT_NODE 24 Chapitre 2 Propriétés et méthodes de l'objet document Le tableau ci-dessous répertorie les nouvelles propriétés et méthodes de l'objet document dans Dreamweaver, ainsi que les valeurs renvoyées correspondantes (accompagnées d'explications, si nécessaire). Les propriétés en lecture seule sont marquées d'une puce (•). Propriété ou méthode Valeur renvoyée et explication nodeType • Node.DOCUMENT_NODE parentNode • null parentWindow • Objet JavaScript correspondant à la fenêtre parente du document (cette propriété n'est pas incluse dans le DOM Niveau 1, mais elle est prise en charge par Microsoft Internet Explorer (IE) 4.0). childNodes • Une NodeList (liste de Nudss) contenant tous les enfants immédiats de l'objet document. En règle générale, le document a un seul enfant : l'objet HTML. documentElement • Objet JavaScript correspondant à la balise HTML. Cette propriété est une forme courte permettant d'obtenir la valeur de document.childNodes et d'extraire la balise HTML de la NodeList. body • Objet JavaScript correspondant à la balise BODY. Cette propriété est une forme courte permettant d'appeler document.documentElement.childNode s et d'extraire la balise BODY de la NodeList. Pour les documents de jeu de cadres, cette propriété renvoie le Nuds correspondant au jeu de cadres situé le plus à l'extérieur. URL • L'URL de type file:// du document ou, si le fichier n'a pas été enregistré, une chaîne vide. getElementsByTagName(tagName) Une NodeList pouvant être utilisée pour parcourir les balises de type tagName (par exemple, IMG, DIV, etc.). Si l'argument tag est LAYER, la fonction renvoie toutes les balises LAYER et ILAYER et toutes les balises DIV et SPAN à positionnement absolu. Si l'argument tag est INPUT, la fonction renvoie tous les éléments du formulaire (pour que ce raccourci fonctionne correctement, tous les noms de champ du formulaire doivent commencer par une lettre). hasChildNodes() true Modèle objet de document (DOM) et JavaScript 25 Propriétés et méthodes des objets de balise HTML Chaque balise HTML est représentée par un objet JavaScript. Les balises sont organisées selon une hiérarchie arborescente dans laquelle la balise x est parente de la balise y si y est entièrement définie entre les balises de début et de fin de x (<x>le contenu de x englobant <y>le contenu de y</y></x>). Le tableau ci-dessous répertorie les propriétés et méthodes des objets de balise dans Dreamweaver, ainsi que leurs valeurs renvoyées (accompagnées d'explications, si nécessaire). Les propriétés en lecture seule sont marquées d'une puce (•). 26 Chapitre 2 Propriété ou méthode Valeur renvoyée et explication nodeType • Node.ELEMENT_NODE parentNode • Balise parente. S'il s'agit de la balise HTML, c'est l'objet document qui est renvoyé. childNodes • Une NodeList contenant tous les enfants immédiats de la balise. tagName • Nom HTML de la balise, tel que IMG, A ou BLINK. Cette valeur est toujours renvoyée en lettres majuscules. attrName Chaîne de caractères contenant la valeur de l'attribut de balise spécifié. tag.attrName ne peut pas être utilisé si attrName est un mot réservé du langage JavaScript (par exemple, class). Dans ce cas, utilisez plutôt getAttribute() et setAttribute(). innerHTML Code source HTML contenu entre la balise de début et la balise 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 propriété, l'arborescence DOM est immédiatement mise à jour de façon à refléter la nouvelle structure du document (cette propriété n'est pas incluse dans le DOM Niveau 1, mais elle est prise en charge par IE 4.0). outerHTML Code source HTML de cette balise, y compris la balise elle-même. Pour l'exemple de code ci-dessus, p.outerHTML renvoie <p><b>Hello</b>, World!</p>. Si vous écrivez dans cette propriété, l'arborescence DOM est immédiatement mise à jour de façon à refléter la nouvelle structure du document (cette propriété n'est pas incluse dans le DOM Niveau 1, mais elle est prise en charge par IE 4.0). getAttribute(attrName) Valeur de l'attribut spécifié, s'il est spécifié explicitement ; sinon, null. Propriété ou méthode Valeur renvoyée et explication getTranslatedAttribute(attrName) Valeur traduite de l'attribut spécifié, ou la même valeur que celle qui est renvoyée par getAttribute() si la valeur de l'attribut n'est pas traduite (cette propriété n'est pas incluse dans le DOM Niveau 1 ; elle a été ajoutée à Dreamweaver 3 pour prendre en charge la traduction d'attributs). setAttribute(attrName, attrValue) Pas de valeur renvoyée. Affecte la valeur spécifiée à l'attribut défini : par exemple, img.setAttribute("src", "image/roses.gif"). removeAttribute(attrName) Pas de valeur renvoyée. Supprime l'attribut défini et sa valeur du code HTML de la balise. getElementsByTagName(tagName) Une NodeList pouvant être utilisée pour parcourir les balises enfants de type tagName (par exemple, IMG, DIV, etc.). Si l'argument tag est LAYER, la fonction renvoie toutes les balises LAYER et ILAYER et toutes les balises DIV et SPAN à positionnement absolu. Si l'argument tag est INPUT, la fonction renvoie tous les éléments du formulaire (pour que ce raccourci fonctionne correctement, tous les noms de champ du formulaire doivent commencer par une lettre). hasChildNodes() Valeur booléenne indiquant si la balise a des enfants. hasTranslatedAttributes() Valeur booléenne indiquant si la balise a des attributs traduits (cette propriété n'est pas incluse dans le DOM Niveau 1 ; elle a été ajoutée à Dreamweaver 3 pour prendre en charge la traduction d'attributs). Propriétés et méthodes des objets texte Chaque bloc de texte contigu dans un document HTML (par exemple, le texte compris à l'intérieur d'une balise P) est représenté par un objet JavaScript. Les objets texte n'ont jamais d'enfants. Le tableau ci-dessous répertorie les nouvelles propriétés et méthodes des objets texte dans Dreamweaver, ainsi que les valeurs renvoyées correspondantes (accompagnées d'explications, si nécessaire). Les propriétés en lecture seule sont marquées d'une puce (•). Propriété ou méthode Valeur renvoyée et explication nodeType • Node.TEXT_NODE parentNode • Balise parente. Modèle objet de document (DOM) et JavaScript 27 Propriété ou méthode Valeur renvoyée et explication childNodes • Une NodeList vide. data La chaîne de texte réelle. Les entités du texte sont représentées par des caractères uniques (par exemple, le texte Joseph & I est renvoyé sous la forme Joseph & I). hasChildNodes() false Propriétés et méthodes des objets de commentaire Chaque commentaire HTML est représenté par un objet JavaScript. Le tableau ci-dessous répertorie les propriétés et méthodes des objets de commentaire dans Dreamweaver, ainsi que les valeurs renvoyées correspondantes (accompagnées d'explications, si nécessaire). Les propriétés en lecture seule sont marquées d'une puce (•). Propriété ou méthode Valeur renvoyée et explication nodeType • Node.COMMENT_NODE parentNode • Balise parente. childNodes • Une NodeList vide. data Chaîne de texte comprise entre les marqueurs de commentaires (<!-- et -->). hasChildNodes() false Fonctionnement de JavaScript dans les fichiers d'extension Lorsque Dreamweaver traite les fichiers d'extension, il compile tous les éléments compris entre les balises SCRIPT et exécute le code situé dans les balises SCRIPT ne faisant pas partie d'une déclaration de fonction (par exemple, l'initialisation des variables globales). En outre, Dreamweawer lit, compile et exécute des scripts situés dans des fichiers JavaScript externes spécifiés dans les attributs SRC des balises SCRIPT. Remarque : si le code JavaScript de vos fichiers d'extension contient la chaîne '</SCRIPT>', l'interpréteur JavaScript le lit comme une balise SCRIPT de fermeture et signale une erreur littérale de chaîne non terminée. Pour éviter ce problème, divisez la chaîne en plusieurs parties et concaténez-les de la façon suivante : '<' + '/SCRIPT>'. 28 Chapitre 2 Dans les fichiers de commande et de comportement, Dreamweaver exécute le code contenu dans le gestionnaire d'événements onLoad (s'il en existe un dans la balise BODY) lorsque l'utilisateur choisit la commande ou l'action dans un menu. Dans les fichiers d'objet, Dreamweaver exécute le code contenu dans le gestionnaire d'événements onLoad dans la balise BODY si le corps du document contient un formulaire. Dreamweaver ignore le gestionnaire onLoad de la balise BODY dans les fichiers de traducteur de données, d'inspecteur de propriétés et de panneau flottant. Dans tous les fichiers d'extension, Dreamweaver exécute le code contenu dans d'autres gestionnaires d'événements (par exemple, onBlur="alert('This is a required field.')") lorsque l'utilisateur utilise les champs de formulaire auxquels ils sont rattachés. Les liens (balises a, y compris celles avec des URL JavaScript telles que <a href="javascript:alert('hi')">) ne sont pas pris en charge, de même que l'instruction document.write(). Les plug-ins (définis sur play en permanence) sont pris en charge dans la balise BODY des fichiers d'extension, mais les appliquettes Java et les commandes ActiveX ne le sont pas. Exécution des scripts au démarrage ou à la fermeture Dans Dreamweaver 4, si vous placez un fichier de commandes dans le dossier Configuration/Startup, la commande s'exécute au démarrage de Dreamweaver. Les commandes de démarrage 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 conséquent, vous pouvez utiliser les commandes de démarrage 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 commande dreamweaver.runCommand(), mais vous ne pouvez pas appeler une commande qui nécessite un DOM valide. De même, si vous placez un fichier de commande dans le dossier Configuration/ Shutdown, la commande s'exécute à la fermeture de Dreamweaver. Vous pouvez appeler la fonction dreamweaver.runCommand() à partir des commandes de fermeture, afficher des avertissements ou inviter l'utilisateur à entrer des informations, mais vous ne pouvez pas arrêter le processus de fermeture. Pour plus d'informations sur les commandes, voir la section « Commandes », page 45. Commandes JavaScript personnalisées L'architecture d'extension de Dreamweaver prend en charge les éléments de formulaire HTML de base tels que select et input, qui peuvent être utilisés ultérieurement dans les extensions pour ajouter de nouvelles commandes à l'interface utilisateur de Dreamweaver. La commande d'arborescence et la commande du bouton de couleurs sont deux exemples de cette prise en charge étendue. Modèle objet de document (DOM) et JavaScript 29 Commandes d'arborescence La commande d'arborescence affiche les données dans un format hiérarchisé et permet aux utilisateurs d'étendre et de réduire les affichages des données. Les données sont stockées dans l'arborescence dans un ensemble de « Nudss de données ». Les Nudss de données peuvent contenir d'autres Nudss de données, appelés « Nudss enfants ». Les Nudss situés aux extrémités de l'arborescence sont appelés « Nudss terminaux ». Les Nudss terminaux ne contiennent, par définition, aucun Nuds enfant qui leur appartient. Le premier Nuds de l'arborescence constitue le Nuds « racine ». Dans Dreamweaver, l'Editeur de raccourcis clavier utilise la commande d'arborescence : Le fait de cliquer une fois sur un Nuds le sélectionne. Sous Windows, les boutons de Nuds sont les boutons +/-. Sur Macintosh, les Nudss sont des triangles qui peuvent être tournés vers le bas. Les Nudss contenant des Nudss enfants sont extensibles et réductibles en cliquant sur le bouton correspondant situé à côté du Nuds. Instanciation d'une commande d'arborescence Une commande d'arborescence utilise trois nouvelles balises (Dreamweaver utilise le préfixe MM: pour distinguer la balise du langage HTML normal) : 30 Chapitre 2 • MM:TREECONTROL • • MM:TREECOLUMN indique à Dreamweaver que l'élément de formulaire est une commande d'arborescence. MM:TREENODE définit une colonne dans la commande d'arborescence. définit un Nuds dans la commande d'arborescence. La balise MM:TREECONTROL est un nouvel élément HTML que l'utilisateur peut définir dans un document d'extension pour créer une instance d'une commande d'arborescence. La balise comporte plusieurs attributs, propriétés, événements et méthodes. MM:TREECONTROL Bien que la balise MM:TREECONTROL ne soit pas vide, elle ne doit pas contenir de texte brut. Le seul contenu valide pour une balise MM:TREECONTROL est au minimum une balise MM:TREECOLUMN et zéro ou plus balises MM:TREENODE. Les attributs HTML de la balise MM:TREECONTROL sont : Nom de l'attribut Description Exemple name Nom de la commande d'arborescence <MM:TREECONTROL name="MyTree"> </MM:TREECONTROL> size Nombre de lignes pour mesurer <MM:TREECONTROL size="6"> la commande. (facultatif) La </MM:TREECONTROL> valeur par défaut est de 5 lignes. multiple Permet à une arborescence de comporter plusieurs sélections. La valeur par défaut est une sélection unique. (facultatif) <MM:TREECONTROL MULTIPLE> </MM:TREECONTROL> style Définition de style pour la hauteur et la largeur de la commande d'arborescence. S'il est précisé, il est prépondérant sur l'attribut SIZE. (facultatif) <MM:TREECONTROL style="width:100px;height:200px"> </MM:TREECONTROL> noheaders Si cet attribut est présent, les en- <MM:TREECONTROL têtes de la colonne de noheaders"> l'arborescence ne sont pas </MM:TREECONTROL> affichés. La balise MM:TREECOLUMN définit une colonne dans la commande d'arborescence. Vous devez définir au minimum une balise M:TREECOLUMN. MM:TREECOLUMN Modèle objet de document (DOM) et JavaScript 31 La syntaxe d'une balise MM:TREECOLUMN est : Nom de l'attribut Description Exemple name Nom de la colonne. <MM:TREECOLUMN name="Column1"> value Chaîne qui doit s'afficher dans l'en-tête de la colonne. <MM:TREECOLUMN value="Files"> width Largeur de la colonne, en pixels. Les pourcentages ne sont pas pris en charge. La valeur par défaut est 100. <MM:TREECOLUMN width="60"> align Alignement du texte de la <MM:TREECOLUMN colonne : à gauche, à droite ou align="center"> centré. La valeur par défaut est à gauche. state Etat de la colonne : visible (visible) ou masqué (hidden). <MM:TREECOLUMN state="visible"> Les balises TREECOLUMN doivent s'afficher en haut de la déclaration TreeControl, comme par exemple : <MM:TREECONTROL name="tree1"> <MM:TREECOLUMN name="Column1" width="100" state="visible"> <MM:TREECOLUMN name="Column2" width="80" state="visible"> ... </MM:TREECONTROL> Remarque : les balises TREECOLUMN peuvent techniquement s'afficher n'importe où dans la balise TREECONTROL, mais elles doivent être placées en haut pour une meilleure lisibilité. MM:TREENODE La balise MM:TREENODE définit un Nuds individuel dans une balise MM:TREECONTROL. Il s'agit d'une balise qui n'est pas vide et qui ne peut contenir que d'autres balises MM:TREENODE. La balise MM:TREENODE ne doit pas contenir de texte brut, bien qu'elle ne soit pas vide. Le seul contenu valide pour une balise MM:TREENODE est zéro ou plus balises MM:TREENODE. 32 Chapitre 2 Les attributs MM:TREENODE sont : Nom de l'attribut Description Exemple name Nom de la balise TREENODE. <MM:TREENODE name="node1"> </MM:TREENODE> value Comporte le contenu du Nuds donné. Pour plusieurs colonnes, il s'agit d'une chaîne délimitée par un trait vertical (|). Pour définir une colonne vide, placez un seul caractère d'espace avant le trait vertical. <MM:TREENODE value="Lawnmower|129.95"> </MM:TREENODE> // EMPTY COL EXAMPLE: <MM:TREENODE value="Data| |"> </MM:TREENODE> state Etat du Nuds : étendu <MM:TREENODE (expanded) ou réduit (collapsed). state="expanded"> </MM:TREENODE> selected true si le Nuds est actuellement <MM:TREENODE selected> sélectionné. Vous pouvez </MM:TREENODE> sélectionner plusieurs Nudss en définissant cet attribut sur plusieurs Nudss d'arborescence, si cette dernière comporte un attribut MULTIPLE. icon Index des nombres entiers de l'icône intégrée à utiliser, en commençant par 0. Les icônes intégrées sont : 0 = aucune icône 1 = icône de document DW 2 = icône multi-document 3 = dossier 4 = document image 5 = coche de couleur verte 6 = X rouge 7 = point d'interrogation 8 = icône de remarque 9 = icône d'avertissement 10 = icône d'arrêt <MM:TREENODE icon='1'> </MM:TREENODE> Un ensemble classique de codes de commande d'arborescence peut ressembler à ceci : <MM:TREECONTROL name="CtrlName" [size=N] [style="[width:#px];[height:#px]"]> <MM:TREECOLUMN name="Column1" value="Items"> <MM:TREENODE value="Item1" selected></MM:TREENODE> <MM:TREENODE value="Item2|Item3" expanded> <MM:TREENODE value="Item4|Item5"></MM:TREENODE> </MM:TREENODE> </MM:TREECONTROL> Modèle objet de document (DOM) et JavaScript 33 Manipulation du contenu des commandes d'arborescence Les balises TREECONTROL et TREENODE sont implémentées comme des balises HTML et sont par conséquent analysées par Dreamweaver et stockées dans l'arborescence du document. Ces balises peuvent ensuite être manipulées comme tout autre Nuds de document en appelant des fonctions DOM et en utilisant les propriétés DOM déjà intégrées dans Dreamweaver. Dreamweaver ne possède actuellement pas de fonction DOM permettant de créer de nouveaux Nudss dans la structure du document. Dreamweaver prend en charge deux propriétés, innerHTML et outerHTML, qui peuvent être utilisées pour simuler cette fonction. Ajout de Nudss Par exemple, pour ajouter un Nuds enfant à un Nuds parent vide existant, vous devez définir : parentNode.innerHTML = "<MM:TREENODE name="X" value='myNewNode' ¬ expanded></MM:TREENODE>" Dreamweaver ne prend actuellement pas en charge de fonction DOM permettant de supprimer un Nuds dans la structure du document. Ce comportement peut être simulé à l'aide des propriétés innerHTML et outerHTML. Suppression de Nudss Par exemple, pour supprimer tous les Nudss enfants d'un Nuds parent spécifique, vous devez définir : parentNode.innerHTML = "" Dreamweaver ne dispose actuellement d'aucune fonction DOM permettant de déplacer un Nuds vers un autre emplacement dans le document. Cette action peut être simulée en utilisant une combinaison d'ajouts et de suppressions de Nudss (à l'aide des propriétés innerHTML et outerHTML). Déplacement de Nudss Les Nudss peuvent être directement modifiés avec les fonctions DOM fournies dans Dreamweaver. Modification de Nudss Par exemple, pour définir l'attribut « expanded » (étendu) d'un Nuds d'arborescence, un programmeur peut simplement utiliser la fonction DOM NODE.setAttribute('expanded','expanded') pour étendre le Nuds. Tous les autres attributs peuvent être commandés de la même façon. Dreamweaver ne dispose d'aucune fonction API intégrée pour parcourir ou itérer les Nudss. Ce comportement peut être simulé à l'aide des propriétés et méthodes parentNode, childNodes et hasChildNodes(). Exploration de noœuds Par exemple, pour récupérer le Nuds parent d'un Nuds, vous devez utiliser : parent = node.parentNode; Les données de Nuds peuvent être récupérées directement à partir du Nuds à l'aide des propriétés et des fonctions de Nuds DOM fournies dans Dreamweaver, telles que getAttribute(), innerHTML et outerHTML. Obtention des données du Nuds 34 Chapitre 2 Par exemple, pour voir si un Nuds a été sélectionné, vous pouvez utiliser : bSelected = (node.getAttribute('selected') != null) Commande d'arborescence de base de donnée et commande de grille de variables UltraDev étend la balise select HTML avec deux nouvelles commandes : la commande d'arborescence de base de donnée et la commande de grille de variables. La commande d'arborescence de base de données permet d'afficher les informations relatives aux schémas des bases de données, c'est-à-dire les tableaux et les colonnes les constituant. La commande de grille de variables est utilisée pour afficher les informations tabulaires. Dans UltraDev, la boîte de dialogue Jeu d'enregistrements avancée fait appel à ces commandes. Boîte de dialogue Jeu d'enregistrements avancée Ajout d'une commande d'arborescence de base de données Pour ajouter ce type de commande dans une boîte de dialogue, tapez le code HTML suivant dans votre page : <select name="DBTree" style="width:400px;height:110px" ¬ type=mmdatabasetree connection=""></select> La commande d'arborescence de base de données possède les attributs suivants : name="DBTree", qui est le nom de la commande d'arborescence de base de données. style="width:x;height:n", qui correspond à la taille de la commande. Vous pouvez déterminer sa largeur (x) et sa hauteur (n) en pixels. Modèle objet de document (DOM) et JavaScript 35 type=mmdatabasetree, qui correspond au type de la commande. La valeur mmdatabasetree indique que cette balise doit être restituée comme une arborescence de base de données et afficher le contenu de la connexion spécifiée dans l'attribut de connexion. connection="connectionName" indique le nom d'une connexion UltraDev (définie dans le Gestionnaire de connexions). Si l'attribut connection est vide, la commande est également vide. noexpandbuttons, lorsque cet attribut est défini, la commande d'arborescence ne dessine pas les indicateurs étendre (+) ou réduire (-) ou les flèches en triangle associées sous Windows. Cet attribut est très utile pour dessiner des commandes de liste à plusieurs colonnes. showHeaders, lorsque cet attribut est défini, la commande d'arborescence affiche un en-tête en haut, spécifiant le nom de chaque colonne. Toutes les balises d'options placées dans la balise select sont ignorées. Utilisez JavaScript pour modifier l'attribut connection et récupérer des données sélectionnées dans l'arborescence. Utilisez DBTreeControl comme objet JavaScript d'enveloppement de la nouvelle balise. L'implémentation de cet objet est disponible dans le fichier DBTreeControlClass.js, situé dans Configuration\Shared\Ultradev\Scripts. Ajout d'une commande de grille de variables Pour ajouter ce type de commande dans une boîte de dialogue, tapez le code HTML suivant dans votre page : <select name="ParamList" style="width:515px;" ¬ type=mmparameterlist columns="Name,SQL Data ¬ Type,Direction,Default Value,Run-time Value" size=6></select> La commande de grille de variables possède les attributs suivants : name="ParamList", style="width:x", qui est le nom de la commande de grille de variables. qui est la largeur de la commande. type=mmparameterlist, qui est le type de la commande. La valeur mmparameterlist indique que cette balise doit être restituée comme commande de grille de variables. 36 Chapitre 2 une columns="colName1", "colNamex", qui définit le nom des colonnes, chacune étant séparée par une virgule. Chaque colonne devant disposer d'un nom, cet attribut indique donc à la fois le nom des colonnes et leur nombre dans la commande (le nombre de colonnes correspond au nombre de noms indiqués). Dans l'exemple précédent, nous avons indiqué l'attribut de colonne suivant : columns="Name,SQL Data Type,Direction,Default Value,Run-time Value". Cette spécification crée donc cinq colonnes appelées «Name » (Nom), « SQL Data Type » (Type de données SQL), « Direction » (Direction), « Default Value » (Valeur par défaut) et « Run-time Value » (Valeur d'exécution). size=n, qui définit le nombre de lignes visibles. columnWidth="x, ...", qui définit la largeur des colonnes, chacune étant séparée par une virgule. Si vous ne définissez aucune valeurs, les colonnes ont toutes la même largeur. Vous pouvez également indiquer la largeur des premières colonnes, en laissant les dernières vides. Les colonnes vides ont alors toutes la même largeur, en fonction de l'espace restant dans la commande une fois les premières colonnes placées. Par exemple, supposons que vous définissiez la balise de sélection suivante : <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>¬ </select> Vous créez ainsi une commande de grille de variables de 500 pixels de large et comportant les cinq colonnes suivantes : Name, SQL Data Type, Direction, Default Value, and Run-time Value. La largeur de la colonne Name sera de 100 pixels, celle de SQL DataType de 25 pixels et celle de Direction de 11 pixels. Les deux dernières colonnes auront chacune une largeur de 182 pixels. Le calcul est le suivant : le total des colonnes définies est de 136 et la largeur totale de la commande de 500. Après placement des trois premières colonnes, l'espace restant est de 364 pixels. Il reste deux colonnes, 364 divisés par 2 font 182. Cette commande comporte également un objet d'enveloppement JavaScript devant être employé pour accéder aux données de la commande et les manipuler. L'implémentation de cet objet se trouve dans le fichier GridControlClass.js, dont le chemin d'accès est : Configuration\Shared\MM\Scripts\Class\ Commande de bouton couleur pour les extensions Une commande de bouton couleur vous permet d'ajouter une interface de sélecteur de couleurs à vos extensions. Créez une instance de bouton couleur à l'aide de la balise input de formulaire HTML existante, avec l'attribut type de l'ensemble de commande pour "mmcolorbutton", puis définissez les attributs name et value en conséquence. L'attribut name est le nom du bouton couleur. L'attribut value correspond à la valeur actuelle de la couleur, représentée comme une chaîne héxadécimale ou comme un nom de couleur. Modèle objet de document (DOM) et JavaScript 37 Voici quelques exemples de la balise mmcolorbutton : <input type="mmcolorbutton" name="colorbutton" value="#FF0000"> <input type="mmcolorbutton" name="colorbutton" value="teal"> Un bouton couleur comporte un événement onChange qui est déclenché lorsque la couleur est modifiée. 38 Chapitre 2 3 CHAPITRE 3 Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les objets sont conçus pour insérer une chaîne de code spécifique dans le document de l'utilisateur. Un objet apparaît dans une catégorie du panneau d'objets et dans le menu Insertion une fois que son fichier Objet est stocké dans un sous-dossier du dossier Configuration/Objects, situé dans le dossier de l'application Dreamweaver. Les objets sont constitués de deux éléments : le fichier Objet qui définit l'élément inséré dans votre document et l'image GIF de 18 x 18 pixels qui s'affiche dans le panneau d'objets. Les objets sont des fichiers HTML. La balise BODY d'un fichier d'objet peut contenir un formulaire HTML acceptant des paramètres pour l'objet (par exemple, le nombre de lignes et de colonnes du tableau à insérer). La balise HEAD d'un fichier d'objet contient des fonctions JavaScript qui traitent les entrées de formulaire de la balise BODY et contrôlent les éléments ajoutés au document de l'utilisateur. Remarque : les objets les plus simples contiennent uniquement le code HTML à insérer, sans les balises BODY et HEAD. Pour plus d'informations, reportez-vous au chapitre « Personnalisation de Dreamweaver » du manuel Utilisation de Dreamweaver. 39 Fonctionnement des fichiers d'objet Lorsqu'un utilisateur sélectionne un objet en cliquant sur une icône du panneau d'objets ou en choisissant une option du menu Insertion, la chaîne d'événements suivante se produit : Schéma du traitement de l'objet 1 La balise FORM est recherchée dans le fichier d'objet. Si un formulaire existe (et que l'option Afficher la boîte de dialogue lors de l'insertion d'objets est sélectionnée dans la boîte de dialogue Préférences, onglet Général), Dreamweaver appelle la fonction windowDimensions(), si elle est définie, pour déterminer la taille de la boîte de dialogue qui va afficher le formulaire. Si le fichier d'objet ne contient aucun formulaire, Dreamweaver n'affiche pas de boîte de dialogue et l'étape 2 est ignorée. 2 Si Dreamweaver affiche une boîte de dialogue à l'étape 1, l'utilisateur entre les paramètres de l'objet (tel que le nombre de lignes et de colonnes d'un tableau) dans la boîte de dialogue, puis clique sur OK. 3 La fonction objectTag() est appelée et la valeur qu'elle renvoie est insérée dans le document immédiatement après la sélection en cours (elle ne remplace pas la sélection en cours). API d'objet Les fonctions personnalisées de l'API d'objet ne sont pas obligatoires. Les fonctions de l'API d'objet diffèrent des fonctions de l'API JavaScript principale sur trois points : 40 Chapitre 3 • Elles ne sont pas des méthodes de l'objet dreamweaver, dom ou site. • Elles ne sont significatives que dans le contexte des fichiers d'objet. En d'autres termes, Dreamweaver n'appelle automatiquement la fonction objectTag() que si elle est définie dans un fichier d'objet, tandis que dans tout autre fichier d'extension, une fonction nommée objectTag() se comporte comme une fonction utilisateur et vous devez l'appeler explicitement. • Il vous incombe d'écrire le corps de chaque fonction et de renvoyer une valeur, si nécessaire. Ce mode de fonctionnement est à l'opposé de celui des fonctions de l'API principale dans laquelle vous appelez les fonctions et leur transmettez des arguments, avant que Dreamweaver ne génère des valeurs renvoyées, le cas échéant. Dans le cas de cette API spécifique, Dreamweaver appelle les fonctions et leur transmet des arguments et vous générez ensuite des valeurs renvoyées, le cas échéant. displayHelp() Description Si cette fonction est définie, un bouton Aide apparaît sous les boutons OK et Annuler dans la boîte de dialogue Paramètres. Cette fonction est appelée lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyées Aucune. Exemple Dans l'exemple suivant, la fonction displayHelp() ouvre dans une fenêtre de navigateur un fichier contenant les instructions d'utilisation de l'objet : function displayHelp(){ dreamweaver.browseDocument('http://people.netscape.com/¬ andreww/dreamweaver/objects.html'); } isDomRequired() Description Détermine si l'objet requiert un DOM valide pour fonctionner. Si cette fonction renvoie true ou si la fonction n'est pas définie, Dreamweaver suppose que la commande nécessite un DOM valide et synchronise les modes Affichage de code et Création du document avant de l'exécuter. La synchronisation met à jour toutes les modifications effectuées en mode Affichage de code dans le mode Création. Arguments Aucun. Objets 41 Valeurs renvoyées true si une commande nécessite un DOM valide pour fonctionner, sinon false. objectTag() Description Insère une chaîne de code dans le document de l'utilisateur. Arguments Aucun. Valeurs renvoyées La chaîne à insérer. Exemple L'exemple suivant de la fonction objectTag() insère une combinaison OBJECT/ pour un contrôle ActiveX et un plug-in spécifiques : EMBED 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 Définit les dimensions de la boîte de dialogue des paramètres. Si cette fonction n'est pas définie, les dimensions de la fenêtre sont calculées automatiquement. Remarque : ne définissez cette fonction que si vous souhaitez utiliser une boîte de dialogue d'options ayant des dimensions supérieures à 640 x 480 pixels. Arguments platform La valeur de l'argument est soit "macintosh", soit "windows", selon la plateforme utilisée par l'utilisateur. Valeurs renvoyées Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la boîte de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyées ne permettent pas de faire apparaître toutes les options, des barres de défilement s'affichent. 42 Chapitre 3 Exemple L'exemple suivant de windowDimensions() définit les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels si la plate-forme est Windows et à 660 x 580 pixels si la plate-forme est Macintosh : function windowDimensions(platform){ var retval = "" if (platform = = "windows"){ retval = "648, 520"; }else{ retval = "660, 580"; } return retval; } Ajout d'objets au panneau d'objets Dreamweaver ajoute automatiquement tous les fichiers se trouvant dans l'un des sous-dossiers du dossier Configuration/Objects à la catégorie associée à ce sous-dossier. Par exemple, un fichier se trouvant dans le dossier Configuration/ Objects/MyObjects apparaîtrait dans la catégorie MyObjects du panneau d'objets. Remarque : bien que les fichiers d'objet peuvent être stockés dans des dossiers distincts, il est important que le nom de chaque fichier soit unique. La fonction dom.insertObject(), par exemple, recherche un fichier spécifié dans l'ensemble du dossier Objects sans faire de distinction entre les sous-dossiers. En effet, si le dossier Forms et le dossier MyObjects contiennent chacun un fichier nommé Button.htm, par exemple, Dreamweaver n'est pas capable de faire la différence entre les deux. Chaque fichier d'objet est associé à une image GIF de 18 x 18 pixels qui s'affiche dans le panneau d'objets. Le fichier image doit avoir le même nom de base que le fichier d'objet (par exemple, object.gif est associé à object.htm) pour que la liaison entre ces deux fichiers soit préservée. Si vous créez une image d'objet de taille supérieure, Dreamweaver la redimensionne automatiquement à 18 x 18 pixels. Si vous ne créez pas d'image pour votre objet, une icône d'objet par défaut apparaît dans le panneau d'objets. Ajout d'objets au menu Insertion Dreamweaver ajoute automatiquement tous les fichiers se trouvant dans l'un des sous-dossiers du dossier Configuration/Objects au bas de la liste d'options du menu Insertion. Objets 43 Pour contrôler la position d'un objet dans le menu Insertion ou dans tout autre menu ou pour ajouter un objet à plusieurs menus, vous pouvez modifier le fichier menus.xml. Ce fichier contrôle l'intégralité de la structure de menus pour Dreamweaver. Pour plus d'informations sur la façon de modifier le fichier menus.xml, reportez-vous au chapitre « Personnalisation de Dreamweaver » du manuel Utilisation de Dreamweaver. Remarque : dans Dreamweaver 2 et les versions antérieures, les éléments du menu Insertion étaient contrôlés par un fichier nommé InsertMenu.htm. Ce fichier a été remplacé par menus.xml. 44 Chapitre 3 4 CHAPITRE 4 Commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les commandes permettent d'exécuter 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 insérer, supprimer ou réorganiser les balises et les attributs HTML, les commentaires et le texte. Les commandes sont des fichiers HTML. La balise BODY d'un fichier de commande peut contenir un formulaire HTML acceptant des options pour la commande (par exemple, le tri des éléments d'un tableau et la colonne de référence du tri). La balise HEAD d'un fichier de commande contient des fonctions JavaScript qui traitent les entrées de formulaire de la balise BODY et contrôlent les modifications apportées au document de l'utilisateur. 45 Fonctionnement des commandes Lorsque l'utilisateur clique sur un menu contenant une commande, la chaîne d'événements suivante se produit : Traitement de la commande et schéma de l'intégration de la boîte de dialogue 46 Chapitre 4 1 Dreamweaver appelle la fonction canAcceptCommand(), si elle est définie, dans chacun des fichiers de commande référencés dans le menu pour vérifier si cette commande correspond à l'élément sélectionné. Si canAcceptCommand() renvoie false, la commande apparaît estompée dans le menu. 2 L'utilisateur choisit une commande dans le menu. 3 Dreamweaver appelle la fonction receiveArguments(), si elle est définie, dans le fichier de commande sélectionné afin de permettre à la commande de traiter tous les arguments transmis depuis la fonction dreamweaver.runCommand(). 4 Dreamweaver appelle la fonction commandButtons(), si elle est définie, pour identifier les boutons qui figurent dans la partie droite de la boîte de dialogue des options et le code qui doit être exécuté lorsque l'utilisateur clique sur ces boutons. 5 Dreamweaver recherche la balise FORM dans le fichier de commande. S'il existe un formulaire, Dreamweaver appelle la fonction windowDimensions() pour identifier la taille de la boîte de dialogue des options qui contient les éléments BODY du fichier. Si la fonction windowDimensions() n'est pas définie, la taille de la boîte de dialogue est déterminée automatiquement. 6 Si la balise BODY du fichier de commande contient le gestionnaire onLoad, Dreamweaver l'exécute (que la boîte de dialogue soit affichée ou non). Si aucune boîte de dialogue ne s'affiche, les étapes restantes ne sont pas exécutées. 7 L'utilisateur sélectionne les options de la commande. Dreamweaver exécute les gestionnaires d'événements associés aux champs du formulaire au fur et à mesure que l'utilisateur les rencontre. 8 L'utilisateur clique sur l'un des boutons définis par la fonction commandButtons(). 9 Dreamweaver exécute le code associé au bouton sur lequel l'utilisateur a cliqué. 10 La boîte de dialogue reste affichée jusqu'à ce que l'un des scripts de la commande appelle la fonction window.close(). API de commande Les fonctions personnalisées de l'API de commande sont toutes facultatives. Les fonctions de l'API de commande diffèrent des fonctions de l'API JavaScript principale sur trois points : • Elles ne sont pas des méthodes de l'objet dreamweaver, dom ou site. • Elles ne sont significatives que dans le contexte des fichiers de commande. En d'autres termes, Dreamweaver n'appelle automatiquement la fonction commandButtons() que si elle est définie dans un fichier de commande ou de commande de menu, tandis que dans tout autre fichier d'extension, une fonction nommée commandButtons() fonctionne de la même façon qu'une fonction utilisateur et doit être appelée explicitement. • Il vous incombe d'écrire le corps de chaque fonction et de renvoyer une valeur, si nécessaire. Ce mode de fonctionnement est à l'opposé de celui des fonctions de l'API principale dans laquelle vous appelez les fonctions et leur transmettez des arguments, avant que Dreamweaver ne génère des valeurs renvoyées, le cas échéant. Dans le cas de cette API spécifique, Dreamweaver appelle les fonctions et leur transmet des arguments et vous générez ensuite des valeurs renvoyées, le cas échéant. canAcceptCmommand() Description Indique si la commande est appropriée pour la sélection en cours. Commandes 47 Remarque : ne définissez la fonction canAcceptCommand() que s'il existe au moins un cas où elle renvoie la valeur false. Si cette fonction n'est pas définie, la commande est considérée comme appropriée ; cette supposition permet de gagner du temps et d'améliorer les performances. Arguments Aucun. Valeurs renvoyées si la commande est appropriée, sinon false, auquel cas la commande apparaît estompée dans le menu. true Exemple Dans l'exemple suivant, la fonction canAcceptCommand() rend la commande disponible uniquement lorsque la sélection correspond à un tableau : function canAcceptCommand(){ var selObj=dw.getDocumentDOM.getSelectedNode(); return (selObj.nodeType == Node.ELEMENT_NODE && ¬ selObj.tagName=="TABLE"); } commandButtons() Description Définit les boutons devant figurer dans la partie droite de la boîte de dialogue Options et leur comportement lorsque l'utilisateur clique dessus. Si cette fonction n'est pas définie, aucun bouton n'apparaît et la balise BODY du fichier de commande s'étend de façon à remplir toute la boîte de dialogue. Arguments Aucun. Valeurs renvoyées Un tableau contenant un nombre pair d’éléments. Le premier élément est une chaîne contenant le libellé du premier bouton. Le deuxième élément est une chaîne de code JavaScript définissant le comportement du premier bouton lorsque l'utilisateur clique dessus. Les autres éléments définissent les boutons supplémentaires de la même manière. Exemple Dans l'exemple suivant, la fonction commandButtons() définit trois boutons : OK, Annuler et Aide. function commandButtons(){ return new Array("OK" , "doCommand()" , "Cancel" , ¬ "window.close()" , "Help" , "showHelp()"); } 48 Chapitre 4 isDomRequired() Description Détermine si la commande nécessite un DOM valide pour fonctionner. Si cette fonction renvoie true ou si la fonction n'est pas définie, Dreamweaver suppose que la commande nécessite un DOM valide et synchronise les modes Affichage de code et Création du document avant de l'exécuter. La synchronisation met à jour toutes les modifications effectuées en mode Affichage de code dans le mode Création. Arguments Aucun. Valeurs renvoyées true si une commande nécessite un DOM valide pour fonctionner, sinon false. receiveArguments() Description Traite tous les arguments transmis à partir d'un élément du menu ou de dw.runCommand(), si un argument a été donné à la fonction dw.runCommand(). Arguments {arg1}, {arg2},...{argN} Si l'attribut arguments est défini pour une balise menuitem, la valeur de l'attribut est transmise à la fonction receiveArguments() sous forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer entre deux éléments de menu appelant la même commande de menu. Les arguments peuvent également être transmis à une commande par la fonction dw.runCommand(). Valeurs renvoyées Aucune. windowDimensions() Description Définit les dimensions de la boîte de dialogue des paramètres. Si cette fonction n'est pas définie, les dimensions de la fenêtre sont calculées automatiquement. Remarque : ne définissez cette fonction que si vous souhaitez utiliser une boîte de dialogue d'options ayant des dimensions supérieures à 640 x 480 pixels. Arguments platform La valeur de l'argument est soit "macintosh", soit "windows", selon la plateforme utilisée par l'utilisateur. Commandes 49 Valeurs renvoyées Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la boîte de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyées ne permettent pas de faire apparaître toutes les options, des barres de défilement s'affichent. Exemple Dans l'exemple suivant, la fonction windowDimensions() définit les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels : function windowDimensions(){ return "648,520"; } 50 Chapitre 4 Exemple de commande simple La commande suivante convertit tous les caractères du texte sélectionné en minuscules. Cette commande est très simple ; elle n'affiche pas de boîte de dialogue, de sorte que la fonction commandButtons() n'est pas définie. <HTML> <HEAD> <TITLE>Make Lower Case</TITLE> <SCRIPT LANGUAGE="javascript"> function canAcceptCommand(){ // Get the DOM of the current document var theDOM = dw.getDocumentDOM(); // Get the offsets of the selection var theSel = theDOM.getSelection(); // Get the selected node var theSelNode = theDOM.getSelectedNode(); // Get the children of the selected node var theChildren = theSelNode.childNodes; // If the selection is not an insertion point, and // either the selection or its first child is a // text node, return true. return (theSel[0] != theSel[1] && (theSelNode.nodeType == ¬ Node.TEXT_NODE || theChildren[0].nodeType == Node.TEXT_NODE)); } function changeToLowerCase() { // Get the DOM again var theDOM = dw.getDocumentDOM(); // Get the offsets of the selection var theSel = theDOM.getSelection(); // Get the outerHTML of the HTML tag (the // entire contents of the document) var theDocEl = theDOM.documentElement; var theWholeDoc = theDocEl.outerHTML; // Extract the selection var selText = theWholeDoc.substring(theSel[0],theSel[1]); // Re-insert the modified selection into the document 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]); } </SCRIPT> Commandes 51 </HEAD> <BODY onLoad="changeToLowerCase()"> <!-- The function that does all the work in this command is ¬ called from the onLoad handler on the BODY tag. There is no form ¬ in the BODY, so no dialog box appears. --> </BODY> </HTML> Ajout de commandes au menu Commandes Dreamweaver ajoute automatiquement tous les fichiers résidant dans le dossier Configuration/Commands au bas du menu Commandes. Pour empêcher qu'une commande ne s'affiche dans le menu Commandes, placez le commentaire suivant sur la première ligne du fichier : <!-- MENU-LOCATION=NONE --> Dans Dreamweaver 1 et 2, si vous souhaitiez contrôler la position ou le texte associé à une commande, vous pouviez l'ajouter explicitement au fichier CommandMenu.htm. Dans Dreamweaver 3, ce fichier a été remplacé par le fichier menus.xml qui contrôle l'ensemble de la structure des menus de Dreamweaver. Pour plus d'informations sur la façon de modifier le fichier menus.xml, reportez-vous au chapitre « Personnalisation de Dreamweaver » du manuel Utilisation de Dreamweaver. 52 Chapitre 4 5 CHAPITRE 5 Commandes de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dreamweaver 3 a introduit un nouveau type de commande permettant une plus grande souplesse des menus ainsi que la création de menus dynamiques. A l'instar des commandes ordinaires, les commandes de menu permettent d'exécuter presque n'importe quel type de modification dans le document courant, dans d'autres documents ouverts ou dans tout document HTML situé sur un disque local. L'API des commandes de menu se développe à partir de l'API des commandes ordinaires pour accomplir plusieurs tâches liées à l'affichage et à l'appel de la commande à partir du système de menus. Remarque : les commandes de menu étant directement liées au système de menus dans Dreamweaver, il est recommandé de lire le chapitre « Personnalisation de Dreamweaver », du manuel Utilisation de Dreamweaver avant de poursuivre. Les commandes de menu sont des fichiers HTML. La balise BODY d'un fichier de commande de menu peut contenir un formulaire HTML acceptant des options pour la commande (par exemple, le tri des éléments d'un tableau et la colonne de référence du tri). La balise HEAD d'un fichier de commande de menu contient des fonctions JavaScript qui traitent les entrées de formulaire de la balise BODY et contrôlent les modifications apportées au document de l'utilisateur. Les commandes de menu sont stockées dans le dossier Configuration/Menus du dossier de l'application Dreamweaver. Remarque : si vous ajoutez vos propres commandes de menu dans Dreamweaver, faitesle au plus haut niveau du dossier Menus ou créez votre propre sous-dossier. Le dossier MM est réservé aux commandes de menu fournies avec Dreamweaver. Fonctionnement des commandes de menu Lorsque l'utilisateur clique sur un menu contenant une commande de menu, la chaîne d'événements suivante se produit : 53 1 Si l'une des balises menuitem du menu contient l'attribut dynamic, Dreamweaver appelle la fonction getDynamicContent() dans le fichier de commande de menu associé afin de renseigner le menu. 2 Dreamweaver appelle la fonction canAcceptCommand() dans chacun des fichiers de commande de menu référencés dans le menu pour vérifier si la commande correspond à l'élément sélectionné. Si canAcceptCommand() renvoie false, l'option de menu est estompée. Si la fonction canAcceptCommand() renvoie true ou si elle n'est pas définie, Dreamweaver appelle la fonction isCommandChecked() pour déterminer si l'option de menu doit être cochée. Si la fonction isCommandChecked() n'est pas définie, aucune coche n'apparaît. 54 Chapitre 5 3 Dreamweaver appelle la fonction setMenuText() pour déterminer le texte devant s'afficher dans le menu. Si la fonction setMenuText() n'est pas définie, Dreamweaver utilise le texte spécifié dans la balise menuitem. 4 L'utilisateur sélectionne une option dans le menu. 5 Dreamweaver appelle la fonction receiveArguments(), si elle est définie, dans le fichier de commande de menu sélectionné afin de permettre à la commande de traiter tous les arguments transmis depuis l'option de menu. 6 Dreamweaver appelle la fonction commandButtons(), si elle est définie, pour identifier les boutons qui figurent dans la partie droite de la boîte de dialogue des options et le code qui doit être exécuté lorsque l'utilisateur clique sur ces boutons. 7 Dreamweaver recherche une balise FORM dans le fichier de commande de menu. S'il existe un formulaire, Dreamweaver appelle la fonction windowDimensions() pour identifier la taille de la boîte de dialogue des options qui contient les éléments BODY du fichier. Si la fonction windowDimensions() n'est pas définie, la taille de la boîte de dialogue est déterminée automatiquement. 8 Si la balise BODY du fichier de commande de menu contient le gestionnaire onLoad, Dreamweaver exécute le code associé à ce gestionnaire (qu'une boîte de dialogue soit affichée ou non). Si aucune boîte de dialogue ne s'affiche, les étapes restantes ne sont pas exécutées. 9 L'utilisateur sélectionne des options dans la boîte de dialogue. Dreamweaver exécute les gestionnaires d'événements associés aux champs du formulaire au fur et à mesure que l'utilisateur les rencontre. 10 L'utilisateur clique sur l'un des boutons définis par la fonction commandButtons(). 11 Dreamweaver exécute le code associé au bouton sur lequel l'utilisateur a cliqué. 12 La boîte de dialogue reste affichée jusqu'à ce que l'un des scripts de la commande de menu appelle la fonction window.close(). API de commande de menu Les fonctions personnalisées de l'API de commandes de menu sont toutes facultatives. Les fonctions de l'API de commande de menu diffèrent des fonctions de l'API JavaScript principale sur trois points : • Elles ne sont pas des méthodes de l'objet dreamweaver, dom ou site. • Elles ne sont significatives que dans le contexte des fichiers de commande de menu. En d'autres termes, Dreamweaver n'appelle automatiquement la fonction getDynamicContent() que si elle est définie dans un fichier de commande de menu, tandis que dans tout autre fichier d'extension, une fonction nommée getDynamicContent() fonctionne de la même façon qu'une fonction utilisateur et doit donc être appelée explicitement. • Il vous incombe d'écrire le corps de chaque fonction et de renvoyer une valeur, si nécessaire. Ce mode de fonctionnement est à l'opposé de celui des fonctions de l'API principale dans laquelle vous appelez les fonctions et leur transmettez des arguments, avant que Dreamweaver ne génère des valeurs renvoyées, le cas échéant. Dans le cas de cette API spécifique, Dreamweaver appelle les fonctions et leur transmet des arguments et vous générez ensuite des valeurs renvoyées, le cas échéant. canAcceptCommand() Description Détermine si l'option de menu doit être active ou estompée. Arguments {arg1}, {arg2},...{argN}} Si l'attribut arguments est défini pour une balise menuitem, la valeur de l'attribut est transmise à la fonction canAcceptCommand() (et aux fonctions isCommandChecked(), receiveArguments() et setMenuText()) sous forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer entre deux éléments de menu appelant la même commande de menu. Valeurs renvoyées Une valeur booléenne indiquant si l'élément de menu doit être activé. commandButtons() Description Définit les boutons devant figurer dans la partie droite de la boîte de dialogue Options et leur comportement lorsque l'utilisateur clique dessus. Si cette fonction n'est pas définie, aucun bouton n'apparaît et la balise BODY du fichier de commandes de menu s'étend de façon à remplir la totalité de la boîte de dialogue. Arguments Aucun. Commandes de menu 55 Valeurs renvoyées Un tableau contenant un nombre pair d’éléments. Le premier élément est une chaîne contenant le libellé du premier bouton. Le deuxième élément est une chaîne de code JavaScript définissant le comportement du premier bouton lorsque l'utilisateur clique dessus. Les autres éléments définissent les boutons supplémentaires de la même manière. Exemple Dans l'exemple suivant, la fonction commandButtons() définit trois boutons : OK, Annuler et Aide. function commandButtons(){ return new Array("OK" , "doCommand()" , "Cancel" , ¬ "window.close()" , "Help" , "showHelp()"); } getDynamicContent() Description Extrait le contenu de la partie dynamique du menu. Arguments menuID L'argument est la valeur de l'attribut id dans la balise menuitem associée à l'élément de menu. Valeurs renvoyées Tableau de chaînes. Chaque chaîne contient le nom d'un élément de menu et son ID unique, séparés par un point-virgule. Si la fonction renvoie la valeur null, aucune modification n'est apportée au menu. Exemple Dans l'exemple suivant, la fonction getDynamicContent() renvoie un tableau de quatre éléments de menu (My Menu Item 1, My Menu Item 2, etc.) : 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=" + i); return stringArray; } isCommandChecked() Description Détermine si une coche doit apparaître à côté de l'option de menu. 56 Chapitre 5 Arguments {arg1}, {arg2},...{argN} Si l'attribut arguments est défini pour une balise menuitem, la valeur de cet attribut est transmise à la fonction isCommandChecked() (et aux fonctions canAcceptCommand(), receiveArguments() et setMenuText()) sous la forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer entre deux éléments de menu appelant la même commande de menu. Valeurs renvoyées Une valeur booléenne indiquant si une coche doit apparaître à côté de l'option de menu. receiveArguments() Description Traite tous les arguments transmis à partir d'un élément du menu ou de dw.runCommand(), si un argument a été donné à la fonction dw.runCommand(). Arguments {arg1}, {arg2},...{argN} Si l'attribut arguments est défini pour une balise menuitem, la valeur de cet attribut est transmise à la fonction receiveArguments() (et aux fonctions canAcceptCommand(), isCommandChecked() et setMenuText()) sous la forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer entre deux éléments de menu appelant la même commande de menu. Valeurs renvoyées Aucune. setMenuText() Description Spécifie le texte devant s'afficher dans le menu. Remarque : n'utilisez pas cette fonction si vous utilisez getDynamicContent(). Arguments {arg1}, {arg2},...{argN} Si l'attribut arguments est défini pour une balise menuitem, la valeur de cet attribut est transmise à la fonction setMenuText() (et aux fonctions canAcceptCommand(), isCommandChecked() et receiveArguments()) sous la forme d'un ou plusieurs arguments. L'attribut arguments permet de distinguer entre deux éléments de menu appelant la même commande de menu. Valeurs renvoyées La chaîne devant apparaître dans le menu. Commandes de menu 57 windowDimensions() Description Définit les dimensions de la boîte de dialogue des paramètres. Si cette fonction n'est pas définie, les dimensions de la fenêtre sont calculées automatiquement. Remarque : ne définissez cette fonction que si vous souhaitez utiliser une boîte de dialogue d'options ayant des dimensions supérieures à 640 x 480 pixels. Arguments platform La valeur de l'argument est soit "macintosh", soit "windows", selon la plateforme utilisée par l'utilisateur. Valeurs renvoyées Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la boîte de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyées ne permettent pas de faire apparaître toutes les options, des barres de défilement s'affichent. Exemple Dans l'exemple suivant, la fonction windowDimensions() définit les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels : function windowDimensions(){ return "648,520"; } 58 Chapitre 5 Commande de menu simple La commande de menu suivante est associée à deux éléments de menu : Annuler et Rétablir. Elle vérifie l'attribut arguments de la balise menuitem et exécute une opération dw.undo() ou dw.redo() en fonction de la valeur du premier (et unique) argument. <HTML> <HEAD> <!-- Copyright 1999 Macromedia, Inc. All rights reserved. --> <TITLE>Edit Clipboard</TITLE> <SCRIPT LANGUAGE="javascript"> function receiveArguments() { if (arguments.length != 1) return; var whatToDo = arguments[0]; if (whatToDo == "undo") { dw.undo(); } else if (whatToDo == "redo") { dw.redo(); } } 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; } function setMenuText() { if (arguments.length != 1) return ""; var whatToDo = arguments[0]; if (whatToDo == "undo") return dw.getUndoText(); Commandes de menu 59 else if (whatToDo == "redo") return dw.getRedoText(); else return ""; } </SCRIPT> </HEAD> <BODY> </BODY> </HTML> Dans cette commande, la fonction receiveArguments() traite les arguments et exécute la commande, mais il n'est pas nécessaire qu'il en soit ainsi. Des commandes de menu plus complexes peuvent appeler des fonctions différentes pour exécuter la commande. Par exemple, le code suivant vérifie si le premier argument est "foo" ; si c'est le cas, il appelle la fonction doOperationX() et lui transmet le deuxième argument. Si le premier argument est "bar", le code appelle la fonction doOperationY() et lui transmet le deuxième argument. La fonction doOperationX() ou doOperationY() est chargée de l'exécution 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]); } } 60 Chapitre 5 Menu dynamique simple La commande de menu suivante a deux actions : elle génère le sous-menu Aperçu dans le navigateur, puis lance le fichier en cours (ou les fichiers sélectionnés dans la fenêtre Site) dans le navigateur que l'utilisateur sélectionne dans le sous-menu. <HTML> <HEAD> <!-- Copyright 1999 Macromedia, Inc. All rights reserved. --> <TITLE>Preview Browsers</TITLE> <SCRIPT LANGUAGE="javascript"> <!-// getDynamicContent returns the contents of a dynamically // generated menu. // returns an array of strings to be placed in the menu, with a unique // identifier for each item separated from the menu string by a // semicolon. // // return null from this routine to indicate that you are not // adding any // items to the menu function getDynamicContent(itemID) { var browsers = null; var PIB = null; var i; var j=0; var bUpdate = dw.getMenuNeedsUpdating(itemID); if (bUpdate) { browsers = new Array(); PIB = dw.getBrowserList(); // each browser pair has the name of the browser and the path // that leads to the application on disk. We only put the // names in the menus. for (i=0; i<PIB.length; i=i+2) { browsers[j] = new String(PIB[i]); if (dw.getPrimaryBrowser() == PIB[i+1]) browsers[j] += "\tF12"; if (navigator.platform == "MacPPC") { if (dw.getSecondaryBrowser() == PIB[i+1]) browsers[j] += "\t ?F12"; } else { if (dw.getSecondaryBrowser() == PIB[i+1]) browsers[j] += "\t Ctrl+F12"; Commandes de menu 61 } browsers[j] += ";id='"+PIB[i]+"'"; j = j+1; } dw.notifyMenuUpdated(itemID, "dw.getBrowserList()"); } return browsers; } function canAcceptCommand() { var bHaveDocument; if (dw.getFocus() == 'site') bHaveDocument = site.getSelection().length > 0; else bHaveDocument = dw.getDocumentDOM('document') != null; return bHaveDocument; } function receiveArguments() { var theBrowser = arguments[0]; if (dw.getFocus() == 'site') dw.browseDocument(site.getSelection(),theBrowser); else dw.browseDocument(dw.getDocumentPath('document'),theBrowser); } // --> </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 62 Chapitre 5 6 CHAPITRE 6 Rapports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisez les fonctions API Reports pour créer des rapports personnalisés ou modifier le jeu de rapports pré-rédigés fournis avec Dreamweaver. Les rapports sont stockés dans le dossier \Configuration\Reports. Ce dossier contient plusieurs sous-dossiers représentant les différentes catégories de rapport, chaque rapport ne pouvant appartenir qu'à une seule catégorie. Chaque sous-dossier peut contenir un fichier appelé _foldername.txt. Si ce fichier existe, son contenu est utilisé comme nom de la catégorie à la place du nom de dossier. S'il n'existe pas, le nom du dossier est utilisé. Les noms de catégorie sont limités à 31 caractères. Fonctionnement des rapports 1 Pour accéder aux rapports, choisissez Site > Rapports. Dans la boîte de dialogue qui s'affiche, sélectionnez les rapports à exécuter sur des cibles spécifiques. 2 Sélectionnez les fichiers pour lesquels effectuer les rapports à l'aide du menu Rapport sur. Ce menu contient les éléments suivants : Document en cours, Tous les fichiers du site local en cours, Fichiers sélectionnés dans le site local et Dossier. Lorsque l'option Dossier est activée, un bouton Parcourir et un champ d'édition s'affichent pour vous permettre de choisir un dossier. 3 Vous pouvez personnaliser des rapports possédant des paramètres en choisissant le bouton Paramètres, puis en saisissant des valeurs pour ces paramètres. Chaque rapport est chargé d'afficher sa propre boîte de dialogue Paramètres. Cette boîte de dialogue est facultative ; il n'est pas nécessaire de définir les paramètres de chaque rapport. Si un rapport ne possède pas de boîte de dialogue Paramètres, le bouton Paramètres est estompé lorsque le rapport est sélectionné dans la liste. 63 4 Après avoir sélectionné des rapports et défini leurs paramètres, cliquez sur le bouton Exécuter. Chaque rapport définissant la fonction beforeReporting() appelle celle-ci avant le début du processus de rapport. Si un rapport renvoie la valeur false à partir de cette fonction, celle-ci est retirée du processus de rapport. 5 Chaque fichier est transmis à chaque rapport sélectionné dans la boîte de dialogue à l'aide de la fonction processFile(). Si le rapport doit inclure des informations sur ce fichier dans la liste des résultats, la fonction dw.results.addResultItem() doit être appelée. Le processus se poursuit jusqu'à ce que tous les fichiers sélectionnés par l'utilisateur soit traités ou jusqu'au ce que l'utilisateur clique sur le bouton Arrêter situé en bas de la fenêtre. Dreamweaver affiche le nom de chaque fichier en cours de traitement et le nombre de fichiers restant à traiter. Chaque rapport définissant la fonction endReporting() doit appeler cette fonction à la fin du processus de rapport. 6 Les résultats de chaque rapport s'affichent dans une fenêtre de résultats individuelle. Le rapport API La fonction processFile() est la seule fonction obligatoire pour le rapport API. Toutes les autres fonctions sont facultatives. processFile() Description Appelée lorsqu'un fichier doit être traité. La commande Rapport doit traiter le fichier sans le modifier et utiliser la fonction addResultItem() pour renvoyer des informations sur ce fichier. Dreamweaver publie automatiquement le DOM de chaque fichier lorsque le traitement est fini. Arguments strFilePath strFilePath est un nom de chemin de fichier complet du fichier à traiter. Valeurs renvoyées Aucune. 64 Chapitre 6 beginReporting() Description Appelée au début du processus de rapport, avant l'exécution effective du rapport. Si la commande Rapport renvoie false à partir de la fonction, target est exclu du processus de rapport. Arguments cible (target) est une chaîne indiquant la cible de la session de rapport. Elle peut avoir l'une des valeurs suivantes : "CurrentDoc", "CurrentSite", "CurrentSiteSelection" (pour les fichiers sélectionnés dans un site) ou "Folder:+ le chemin vers le dossier sélectionné par l'utilisateur" (par exemple, "Folder:c:temp"). target Valeurs renvoyées true si le rapport a été effectué avec succès, false si target est exclu du processus de rapport. endReporting() Description Appelée à la fin du processus de rapport. Arguments Aucun. Valeurs renvoyées Aucune. commandButtons() Description Définit les boutons devant figurer dans la partie droite de la boîte de dialogue Options et leur comportement lorsque l'utilisateur clique dessus. Si cette fonction n'est pas définie, aucun bouton n'apparaît et la balise BODY du fichier de rapport s'étend de façon à remplir la totalité de la boîte de dialogue. Arguments Aucun. Valeurs renvoyées Un tableau contenant un nombre pair d’éléments. Le premier élément est une chaîne contenant le libellé du premier bouton. Le deuxième élément est une chaîne de code JavaScript définissant le comportement du premier bouton lorsque l'utilisateur clique dessus. Les autres éléments définissent les boutons supplémentaires de la même manière. Rapports 65 Exemple Dans l'exemple suivant, la fonction commandButtons() définit trois boutons : OK, Annuler et Aide. function commandButtons(){ return new Array("OK" , "doCommand()" , "Cancel" , ¬ "window.close()" , "Help" , "showHelp()"); } configureSettings() Description Détermine si le bouton Paramètres du rapport doit être activé dans la boîte de dialogue Rapports lorsqu'un rapport est sélectionné. Arguments Aucun. Valeurs renvoyées si le bouton Paramètres du rapport doit être activé ; false dans le cas contraire. true windowDimensions() Description Définit les dimensions de la boîte de dialogue des paramètres. Si cette fonction n'est pas définie, les dimensions de la fenêtre sont calculées automatiquement. Remarque : ne définissez cette fonction que si vous souhaitez utiliser une boîte de dialogue d'options ayant des dimensions supérieures à 640 x 480 pixels. Arguments platform La valeur de l'argument est soit "macintosh", soit "windows", selon la plateforme utilisée par l'utilisateur. Valeurs renvoyées Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la boîte de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyées ne permettent pas de faire apparaître toutes les options, des barres de défilement s'affichent. Exemple Dans l'exemple suivant, la fonction windowDimensions() définit les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels : function windowDimensions(){ return "648,520"; } 66 Chapitre 6 7 CHAPITRE 7 Modules de débogage JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un module de débogage JavaScript est un module d'extension particulier, qui insère un code spécial dans un document pour interagir avec le débogueur JavaScript. Les modules de débogage sont situés dans le dossier Program Files de Dreamweaver, dans le sous-dossier Configuration/Debugger. Ces modules insèrent des codes JavaScript et HTML spécifiques dans un document en cours pour créer une « version déboguée » du document à la prochaine exécution du Débogueur JavaScript. La « version déboguée » est simplement un ensemble de fichiers dupliqués temporaires du document HTML et de chaque fichier JavaScript externe, tous créés par Dreamweaver et enregistrés dans le dossier de travail en cours. La version déboguée du fichier HTML s'affiche alors dans le navigateur. Le code JavaScript inséré dans les fichiers temporaires, appelé « instrumentation », communique avec le débogueur JavaScript de Dreamweaver lorsque JavaScript est exécuté dans le navigateur. Pour plus d'informations sur les commandes API du Débogueur JavaScript, voir « Fonctions relatives au débogueur JavaScript », page 422. Fonctionnement du module de débogage JavaScript Dreamweaver est fourni avec deux modules de débogage, un pour chaque navigateur pris en charge : Netscape et Internet Explorer. Pour prendre en charge un navigateur différent, vous devez créer un nouveau module de débogage, puis utiliser les fonctions dom.instrumentDocument et dreamweaver.startDebugger pour déboguer le document dans l'autre navigateur. Lorsque vous appelez la fonction dom.instrumentDocument, le module de débogage spécifié reçoit des rappels lorsque Dreamweaver analyse le code JavaScript du document. Ainsi, vous pouvez par exemple créer un module de débogage qui insère des commentaires ou des informations d'enregistrement à propos du code JavaScript, au lieu d'insérer des améliorations de débogage. 67 Lorsque la fonction dom.instrumentDocument est appelée avec un module de débogage spécifique, les étapes suivantes ont lieu. 1 Dreamweaver appelle getIncludeFiles() dans le module de débogage. Cette fonction renvoie la liste des fichiers qui seront référencés à partir du code d'instrumentation HTML renvoyé par getHeadInstrument() et getBodyInstrument() (qui sont appelées ultérieurement). Les fichiers inclus peuvent être de tous types, comme par exemple un fichier JavaScript externe ou un contrôle JavaApplet ou ActiveX. L'ensemble des fichiers doivent résider dans le sous-dossier Configuration/Debugger avec le module de débogage. Dreamweaver copie les fichiers intégrés dans le répertoire contenant le fichier en cours de débogage, puis les supprime ensuite lorsque vous quittez Dreamweaver. 2 Le document HTML est ensuite analysé pour rechercher des balises de script et des gestionnaires d'événements. Le code de la balise de script, dans un fichier JavaScript externe ou dans un gestionnaire d'événements, est appelé bloc. Remarque : un fichier JavaScript externe est un fichier spécifié comme attribut « src » d'une balise SCRIPT. 3 Dreamweaver analyse d'abord les balises de script de la section HEAD. 4 Lorsque Dreamweaver trouve une balise de script ou un gestionnaire d'événements, il appelle la fonction startBlock() des modules de débogage et transmet le nom du fichier ainsi que les décalages de ligne et de caractère à partir du début du fichier. 5 Dreamweaver analyse ensuite le code JavaScript dans le bloc. 6 Lorsque Dreamweaver trouve une instruction JavaScript, telle qu'une déclaration de variable, il appelle getStepInstrument() et transmet les décalages de ligne et de caractère ainsi que d'autres informations. Le module de débogage renvoie une chaîne de code JavaScript qui est insérée avant l'instruction. Faites attention de bien renvoyer un code JavaScript valide. Pour chaque appel de getStepInstrument(), Dreamweaver enregistre le numéro de ligne en tant que ligne de point d'arrêt valide sans tenir compte de l'instrumentation renvoyée. Ainsi, lorsque vous démarrez le débogueur avec dw.startDebugger(), les points d'arrêt déjà définis par l'utilisateur sont déplacés vers l'une de ces lignes valides. 7 Lorsque Dreamweaver trouve une déclaration de fonction, il appelle getFunctionStartInstrument() pour recevoir l'instrumentation à insérer au début de la fonction. Remarque : cela n'est pas considéré comme une ligne de point d'arrêt valide. 8 68 Chapitre 7 Dreamweaver continue à analyser la fonction et à appeler getStepInstrument() pour chaque instruction de la fonction. 9 Lorsque Dreamweaver arrive à une instruction de renvoi ou à la fin de la fonction, il appelle getFunctionEndInstument() pour recevoir l'instrumentation à insérer avant le renvoi de la fonction. Remarque : cela n'est pas considéré comme une ligne de point d'arrêt valide. 10 Si Dreamweaver rencontre une erreur de syntaxe ou un avertissement dans le bloc JavaScript, il appelle alors reportError() ou reportWarning(), respectivement. Après avoir détecté une erreur, Dreamweaver arrête l'analyse du bloc. Il continue cependant l'analyse d'autres blocs. 11 Une fois que Dreamweaver a analysé tous les blocs de script dans la section HEAD, il appelle getHeadInstrument() pour obtenir l'instrumentation HTML à insérer dans la section HEAD. Remarque : cette fonction doit renvoyer du code HTML et non JavaScript. Si le module de débogage doit insérer du code JavaScript dans la section HEAD, il doit alors l'inclure dans une balise SCRIPT. 12 Dreamweaver procède ensuite au traitement des blocs JavaScript (balises SCRIPT et gestionnaires d'événements) dans la section BODY du document. 13 Après avoir instrumenté le dernier bloc de la section BODY, Dreamweaver appelle getBodyInstrument() pour obtenir l'instrumentation HTML à insérer dans la section BODY. Remarque : cette fonction doit renvoyer du code HTML et non JavaScript. 14 Une fois que Dreamweaver a appelé getBodyInstrument(), il procède à un appel final des fonctions startBlock() et getStepInstrument() pour établir un point d'arrêt automatique. L'instrumentation ne correspond à aucune balise SCRIPT définie par l'utilisateur, mais est insérée dans une nouvelle balise SCRIPT après l'instrumentation BODY. Contrairement à d'autres appels de la fonction getStepInstrument(), cette ligne n'est pas considérée comme une ligne valide sur laquelle l'utilisateur peut définir un point d'arrêt ; elle est traitée comme un type particulier de point d'arrêt sur lequel s'arrête systématiquement le débogueur. 15 Enfin, Dreamweaver appelle getOnUnloadInstrument() pour obtenir une instrumentation JavaScript à insérer dans le gestionnaire onUnload de la balise BODY. Si le document possède déjà un gestionnaire onUnload, cette instrumentation est insérée après le code onUnload défini par l'utilisateur. Modules de débogage JavaScript 69 API du module de débogage JavaScript L'API du module de débogage JavaScript vous permet de personnaliser la manière dont est créée une version déboguée d'un document. Vous devez créer un module de débogage pour pouvoir faire fonctionner le Débogueur JavaScript de Dreamweaver avec un navigateur autre que les deux navigateurs (Netscape et Internet Explorer) pris en charge par Dreamweaver. Vous pouvez également créer un module de débogage à d'autres fins, comme par exemple pour compter le nombre d'instructions JavaScript utilisées par un document spécifique. Remarque : seules les balises SCRIPT et les gestionnaires d'événements sont actuellement analysés pour instrumentation. Il existe d'autres façons d'utiliser le JavaScript dans des documents HTML : les URL JavaScript et les entités JavaScript, commentaires conditionnels, etc. Ces éléments ne sont actuellement pas pris en charge. Les fonctions de l'API du module de débogage JavaScript sont uniquement significatives dans le contexte de fichiers du module de débogage. En particulier, Dreamweaver appelle automatiquement la fonction getStepInstrument() si elle est définie dans le fichier du module de débogage. Pour les fichiers ayant une autre extension, une fonction appelée getStepInstrument() agit comme une fonction définie par l'utilisateur (vous devez l'appeler explicitement). Contrairement à la façon dont vous travaillez avec les fonctions principales API JavaScript, vous êtes responsables de la rédaction du corps de chaque fonction et du renvoi d'une valeur, si nécessaire, pour les modules de débogage. Pour les fonctions de l'API principale, vous appelez et transmettez des arguments et Dreamweaver génère des valeurs de renvoi, le cas échéant. Pour les modules de débogage, Dreamweaver appelle les fonctions et leur transmet des arguments et vous générez des valeurs de renvoi, le cas échéant. Toutes les fonctions du module de débogage JavaScript sont facultatives. Si une fonction n'est pas définie, rien ne se passe lorsque Dreamweaver l'appelle. getFunctionEndInstrument() Disponibilité Dreamweaver 4.0 Description Appelée après la dernière instruction dans une déclaration de fonction. S'il existe des instructions de renvoi, ce module est appelé afin d'insérer l'instrumentation, après que la valeur de renvoi a été évaluée et avant que la fonction ne renvoie les chaînes. Arguments Aucun. Valeurs renvoyées Une chaîne contenant le code JavaScript à insérer à la fin de la fonction. 70 Chapitre 7 getFunctionStartInstrument() Disponibilité Dreamweaver 4.0 Description Appelé avant la première instruction dans une déclaration de fonction. La fonction getStepInstrument() est également appelée pour l'instruction. Arguments Aucun. Valeurs renvoyées Une chaîne contenant le code JavaScript à insérer au début de la fonction. getBodyInstrument() Disponibilité Dreamweaver 4.0 Description Cette fonction est appelée juste après l'instrumentation de tous les blocs de la section HEAD. Arguments Aucun. Valeurs renvoyées Une chaîne contenant le code HTML à insérer en haut de la section <BODY>. getHeadInstrument() Disponibilité Dreamweaver 4.0 Description Cette fonction est appelée juste après l'instrumentation de tous les blocs de la section HEAD, mais avant l'instrumentation des blocs de la section BODY. Arguments Aucun. Valeurs renvoyées Une chaîne contenant le code HTML à insérer en haut de la section <HEAD>. getIncludedFileList() Disponibilité Dreamweaver 4.0 Modules de débogage JavaScript 71 Description Appelée pour obtenir une liste de fichiers référencés par code insérés dans la section head ou body (à partir des fonctions getHeadInstrument() et getBodyInstrument()). Ces fichiers doivent se trouver dans le répertoire Configuration/Debugger du dossier Program Files de Dreamweaver, avec le module de débogage de l'instrumentation. Arguments Aucun. Valeurs renvoyées Un tableau de noms de fichiers devant être copiés dans le répertoire avec les fichiers instrumentés. getOnUnloadInstrument() Disponibilité Dreamweaver 4.0 Description Cette fonction est appelée juste après l'appel de getHeadInstrument(). Arguments Aucun. Valeurs renvoyées Une chaîne contenant le code JavaScript à insérer à la fin du gestionnaire d'événements onUnload de la balise BODY. getStepInstrument() Disponibilité Dreamweaver 4.0 Description Appelée pour chaque instruction analysée dans un bloc. La fonction StartBlock() est toujours appelée avant d'appeler cette fonction. Dreamweaver enregistre chaque ligne pour laquelle il appelle cette fonction en tant que point d'arrêt valide. Après le démarrage du débogueur, tous les points d'arrêt sont déplacés vers des lignes de points d'arrêt valides. Arguments lineNumber, offset, bisInFuncton • lineNumber • offset représente le décalage du premier caractère de l'instruction suivante par est le numéro de ligne de l'instruction suivante relative au début du bloc (index de base 1). rapport au début du bloc (index de base 0). 72 Chapitre 7 • bisInFunction est une expression Booléenne indiquant si l'étape se trouve dans une définition de fonction (true) ou dans l'étendue globale (false). Valeurs renvoyées Une chaîne contenant le code JavaScript à insérer avant l'instruction. reportError() Disponibilité Dreamweaver 4.0 Description Appelée lorsqu'une erreur de syntaxe est détectée. Les erreurs et avertissements ne sont pas nécessairement signalés dans l'ordre. Arguments fileName, errorNumber, strDesc, lineNumber, offset • • • • fileName • offset est le décalage du caractère auquel l'erreur s'est produite, par rapport au est le nom du fichier. errorNumber strDesc est l'identificateur numérique de l'erreur. est la description de l'erreur. est le numéro de ligne dans laquelle l'erreur s'est produite, par rapport au début du bloc. lineNumber début du bloc. Valeurs renvoyées Aucune. reportWarning() Disponibilité Dreamweaver 4.0 Description Appelée lorsqu'un avertissement est détecté dans un fichier. Arguments fileName, errorNumber, strDesc, lineNumber, offset • • • • fileName est le nom du fichier. errorNumber strDesc est l'identificateur numérique de l'avertissement. est la description de l'avertissement. est le numéro de ligne dans laquelle l'avertissement s'est produit, par rapport au début du bloc. lineNumber Modules de débogage JavaScript 73 • est le décalage du caractère auquel l'avertissement s'est produit, par rapport au début du bloc. offset Valeurs renvoyées Aucune. startBlock() Disponibilité Dreamweaver 4.0 Description Indique le début d'un nouveau bloc de code JavaScript. Le bloc peut être une balise de script, un gestionnaire d'événements ou un fichier .js externe. Arguments fileName, lineNumber, offset • fileName • lineNumber • offset est le nom du document HTML ou du fichier .js contenant le bloc. L'emplacement est défini par un chemin relatif vers le document HTML source. est le numéro de ligne dans le document HTML ou le fichier .js, correspondant au début du bloc (index de base 1). est le décalage du premier caractère du code JavaScript à partir du début du fichier (index de base 0). Valeurs renvoyées Aucune. 74 Chapitre 7 8 CHAPITRE 8 Inspecteurs de propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L'inspecteur de propriétés est probablement le panneau flottant le plus connu de l'interface Dreamweaver. Il est indispensable pour définir, vérifier et modifier le nom, les dimensions, l'aspect et d'autres attributs de la sélection ; il permet également de lancer des éditeurs internes et externes pour l'élément sélectionné. Dreamweaver intègre plusieurs interfaces compatibles avec l'inspecteur de propriétés permettant de définir des propriétés pour de nombreuses balises HTML standard (ces inspecteurs intégrés font partie du code Dreamweaver élémentaire ; vous ne trouverez donc pas de fichiers d'inspecteur de propriété leur correspondant dans le dossier Configuration). Avec les fichiers d'inspecteur de propriétés personnalisés, vous pouvez remplacer ces interfaces intégrées ou en créer de nouvelles pour inspecter les balises personnalisées. Les fichiers d'inspecteur de propriétés personnalisés sont des fichiers HTML qui résident dans le dossier Configuration/Inspectors du dossier de l'application Dreamweaver. La première ligne d'un fichier d'inspecteur de propriétés (la ligne située au-dessus de la balise HTML de début) doit être un commentaire respectant la syntaxe suivante : <!-- tag:tagNameOrKeyword,priority:1to10,selection:¬ exactOrWithin,hline,vline, serverModel --> où : • • tagNameOrKeyword est la balise à inspecter ou l'un des mots clefs suivants : *COMMENT* (pour les commentaires), *LOCKED* (pour les verrouillées) ou *ASP* (pour les balises ASP). régions est la priorité du fichier d'inspecteur de propriétés : 1 indique que cet inspecteur doit être utilisé uniquement lorsque aucun autre ne peut inspecter la sélection ; 10 indique que cet inspecteur a priorité sur tous les autres pouvant inspecter la sélection. 1to10 75 • exactOrWithin indique si la sélection peut être contenue dans la balise (within) ou si elle doit contenir exactement la balise (exact). • hline • vline • serverModel (facultatif ) indique qu'une ligne grise horizontale doit apparaître entre les moitiés supérieure et inférieure de l'inspecteur en mode étendu. (facultatif ) indique qu'une ligne grise verticale doit apparaître entre le champ de nom de balise et le reste des propriétés dans l'inspecteur (voir l'inspecteur de propriétés d'image pour obtenir un exemple). (facultatif ) indique le modèle de serveur de l'inspecteur de propriétés. Si le modèle de serveur de l'inspecteur de propriétés n'est pas le même que le modèle de serveur pour le document, l'inspecteur de propriétés n'est pas utilisé pour afficher les propriétés de la sélection en cours. Le commentaire suivant est approprié pour un inspecteur conçu pour inspecter la balise HAPPY : <!-- tag:HAPPY, priority:8,selection:exact,hline,vline, ¬ serverModel:ASP --> Le corps (BODY) du fichier d'inspecteur de propriétés contient un formulaire HTML. Toutefois, au lieu d'afficher le contenu du formulaire dans une boîte de dialogue, Dreamweaver utilise le formulaire pour définir les zones d'entrée et la mise en page de l'inspecteur. Comment fonctionnent les fichiers d'inspecteur de propriétés Au démarrage, Dreamweaver lit la première ligne de chaque fichier .htm et .html dans le dossier Configuration/Inspectors, recherchant la chaîne de commentaire qui définit le type, la priorité et le type de sélection d'un inspecteur de propriétés. Les fichiers qui ne possèdent pas ce commentaire en première ligne sont ignorés. Lorsque l'utilisateur effectue une sélection dans Dreamweaver ou déplace le point d'insertion vers un emplacement différent, la chaîne d'événements suivante a lieu : 76 Chapitre 8 1 Dreamweaver recherche tout inspecteur possédant un type de sélection within. 2 S'il n'existe aucun inspecteur within, Dreamweaver recherche l'arborescence du document à partir de la balise actuellement sélectionnée pour vérifier s'il existe des inspecteurs pour les autres balises entourant la sélection. Si, et seulement si, il n'existe aucun inspecteur within, Dreamweaver recherche tous les inspecteurs possédant un type de sélection exact. 3 Pour la première balise trouvée possédant un ou plusieurs inspecteurs, Dreamweaver appelle chaque fonction canInspectSelection() de l'inspecteur. Si la fonction renvoie false, Dreamweaver ne considère plus l'inspecteur comme un candidat pour inspecter cette sélection. 4 S'il reste plusieurs inspecteurs potentiels après avoir appelé canInspectSelection(), Dreamweaver trie les inspecteurs restant en fonction de leur priorité. 5 Si plusieurs inspecteurs potentiels ont le même degré de priorité, Dreamweaver choisit l'inspecteur suivant l'ordre alphabétique. 6 L'inspecteur choisi apparaît dans le panneau flottant Inspecteur de propriétés. Si le fichier d'inspecteur de propriétés définit la fonction displayHelp(), une petite icône point d'interrogation (?) est affichée dans le coin supérieur droit de l'inspecteur. 7 Dreamweaver appelle la fonction inspectSelection() pour réunir des informations sur la sélection en cours et renseigner les champs de l'inspecteur. 8 Les gestionnaires d'événements associés aux champs dans l'interface de l'inspecteur de propriétés s'exécutent au fur et à mesure que l'utilisateur les rencontre (par exemple, vous pouvez avoir un événement onBlur qui appelle setAttribute() pour définir un attribut à la valeur venant d'être saisie par l'utilisateur). API de l'inspecteur de propriétés Deux des fonctions de l'API de l'inspecteur de propriétés (canInspectSelection() et inspectSelection()) sont requises. Les fonctions de l'API de l'inspecteur de propriétés diffèrent des fonctions de l'API JavaScript principale, sur trois points : • Elles ne sont pas des méthodes de l'objet dreamweaver, dom ou site. • Elles ne sont significatives que dans le contexte des fichiers d'inspecteur de propriétés. En d'autres termes, Dreamweaver appelle automatiquement la fonction canInspectSelection() dans un fichier d'inspecteur de propriétés, tandis que dans tout autre fichier d'extension, une fonction nommée canInspectSelection() fonctionne comme une fonction définie par l'utilisateur et doit donc être appelée explicitement. • Il vous incombe d'écrire le corps de chaque fonction et de renvoyer une valeur, si nécessaire. Ce mode de fonctionnement est à l'opposé de celui des fonctions de l'API principale dans laquelle vous appelez les fonctions et leur transmettez des arguments, avant que Dreamweaver ne génère des valeurs renvoyées, le cas échéant. Dans le cas de cette API spécifique, Dreamweaver appelle les fonctions et leur transmet des arguments et vous générez ensuite des valeurs renvoyées, le cas échéant. canInspectSelection() Description Détermine si l'inspecteur de propriétés est approprié pour la sélection en cours. Inspecteurs de propriétés 77 Arguments Aucun. Utilisez dom.getSelectedNode() pour obtenir la sélection en cours en tant qu'objet JavaScript. Valeurs renvoyées true si l'inspecteur peut inspecter la sélection en cours ; sinon false. Exemple L'occurrence suivante de canInspectSelection() renvoie true si la sélection contient l'attribut CLASSID et si la valeur de cet attribut est "clsid:D27CDB6EAE6D-11cf-96B8-444553540000" (l'ID de classe pour Flash Player) : function canInspectSelection(){ 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 la fonction est définie, une icône point d'interrogation (?) apparaît dans le coin supérieur droit de l'inspecteur de propriétés. Cette fonction est appelée lorsque l'utilisateur clique sur l'icône. Arguments Aucun. Valeurs renvoyées Aucune. Exemple L'occurrence suivante de displayHelp() ouvre un fichier dans une fenêtre du navigateur expliquant les champs de l'inspecteur de propriétés: function displayHelp(){ dreamweaver.browseDocument('http://www.hooha.com/dw/¬ inspectors/inspHelp.html'); } inspectSelection() Description Actualise le contenu des champs d'entrée de l'utilisateur en fonction des attributs de la sélection en cours. 78 Chapitre 8 Arguments maxOrMin L'argument est max ou min, suivant si l'inspecteur de propriétés est en état développé ou compressé. Valeurs renvoyées Aucune. Exemple L'occurrence suivante de inspectSelection() récupère 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"); } Inspecteurs de propriétés 79 Un exemple simple d'inspecteur de propriétés L'inspecteur de propriétés suivant inspecte une balise fictive appelée INTJ. La balise INTJ est vide (c'est-à-dire qu'elle ne possède pas de balise de fermeture) ; son type de sélection est donc exact. Tant que la sélection est exactement une balise INTJ, l'inspecteur de propriétés doit s'afficher (afin que la fonction canInspectSelection() renvoie true à chaque fois). Pour qu'un inspecteur différent s'affiche en fonction de la valeur de l'attribut TYPE de la balise INTJ, par exemple, la fonction canInspectSelection() doit vérifier la valeur de l'attribut TYPE afin de déterminer quel est le bon inspecteur de propriétés. Ceci correspond au fonctionnement des mots clés et des inspecteurs de propriétés, car « keywords » et « description » ne sont pas des balises mais des valeurs de l'attribut NAME de la balise META. <!-- tag:INTJ,priority:5,selection:exact,vline,hline --> <HTML> <HEAD> <TITLE>Interjection Inspector</TITLE> <SCRIPT LANGUAGE="JavaScript"> function canInspectSelection(){ return true; } 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 TYPE attribute on the INTJ tag var // theType = theObj.getAttribute('type'); // Initialize a variable called typeIndex to -1. This will be // used to store the menu index that corresponds to // the value of the TYPE attribute var typeIndex = -1; // If there was a TYPE attribute if (theType){ // If the value of TYPE is "jeepers", set typeIndex to 0 if (theType.toLowerCase() == "jeepers"){ typeIndex = 0; // If the value of TYPE is "jinkies", set typeIndex to 1 }else if (theType.toLowerCase() == "jinkies"){ typeIndex = 1; // If the value of TYPE is "zoinks", set typeIndex to 2 }else if (theType.toLowerCase() == "zoinks"){ typeIndex = 2; } } 80 Chapitre 8 // // // if If the value of the TYPE attribute was "jeepers", "jinkies", or "zoinks", choose the corresponding option from the pop-up menu in the interface (typeIndex != -1){ document.topLayer.document.topLayerForm.intType.¬ selectedIndex = typeIndex; } } function setInterjectionTag(){ // 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 typeIndex = document.topLayer.document.¬ topLayerForm.intType.selectedIndex; // Get the value of the selected option in the pop-up menu // in the interface var theType = document.topLayer.document.¬ topLayerForm.intType.options[typeIndex].value; // Set the value of the TYPE attribute to theType theObj.setAttribute('type',theType); } </SCRIPT> </HEAD> <BODY> <SPAN ID="image" STYLE="position:absolute; width:23px; ¬ height:17px; z-index:16; left: 3px; top: 2px"> <IMG SRC="interjection.gif" WIDTH="36" HEIGHT="36" ¬ NAME="interjectionImage"> </SPAN> <SPAN ID="label" STYLE="position:absolute; width:23px; ¬ height:17px; z-index:16; left: 44px; top: 5px">Interjection</SPAN> <!-- If your form fields are in different layers, you must ¬ create a separate form inside each layer and reference it as ¬ shown in the inspectSelection() and setInterjectionTag() ¬ functions above. --> <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">Entrez :</TD> <TD VALIGN="baseline" ALIGN="right"> Inspecteurs de propriétés 81 <SELECT NAME="intType" STYLE="width:86" ¬ onChange="setInterjectionTag()"> <OPTION VALUE="jeepers">Jeepers***</OPTION> <OPTION VALUE="jinkies">Jinkies***</OPTION> <OPTION VALUE="zoinks">Zoinks***</OPTION> </SELECT> </TR> </TABLE> </FORM> </SPAN> </BODY> </HTML> 82 Chapitre 8 9 CHAPITRE 9 Panneaux flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vous pouvez créer tous types de panneaux flottants ou d'inspecteurs sans les limitations de taille ou de mise en page de l'inspecteur de propriétés. Un inspecteur de propriétés personnalisé doit rester votre premier choix lorsque vous définissez les propriétés de la sélection en cours. Toutefois, les panneaux flottants personnalisés offrent plus d'espace et de souplesse pour afficher des informations relatives à l'ensemble du document ou à plusieurs sélections. Dreamweaver possède déjà plusieurs panneaux flottants intégrés accessibles depuis le menu Fenêtre ; vous pouvez ajouter vos propres panneaux à ce menu à l'aide de la fonction d'extension des menus (ces panneaux intégrés font partie du code principal de Dreamweaver ; vous ne trouverez donc pas de fichier de panneau flottant leur correspondant dans le dossier Configuration). Pour plus d'informations sur l'ajout d'éléments au système de menus, reportez-vous au chapitre « Personnalisation de Dreamweaver » du manuel Utilisation de Dreamweaver. Les fichiers de panneaux flottants personnalisés sont des fichiers HTML qui résident dans le dossier Configuration/Floaters du dossier de l'application Dreamweaver. La balise BODY d'un fichier de panneau flottant contient un formulaire HTML. Des gestionnaires d'événements associés aux éléments du formulaire peuvent appeler un code JavaScript pour effectuer des modifications arbitraires dans le document en cours. 83 Fonctionnement des fichiers de panneau flottant Les panneaux flottants personnalisés peuvent être déplacés, redimensionnés et leurs onglets combinés, à l'instar des panneaux flottants intégrées à Dreamweaver. Les panneaux flottants personnalisés présentent les différences suivantes par rapport aux panneaux flottants intégrés : • Il n'est pas possible d'afficher une icône dans l'onglet d'un panneau flottant personnalisé ; l'onglet affiche toujours le contenu de la balise TITLE du panneau flottant. • Les panneaux flottants personnalisés s'affichent en gris par défaut. La définition de l'attribut BGCOLOR dans la balise BODY n'a aucun effet. • Tous les panneaux flottants personnalisés s'affichent toujours en haut de la fenêtre de document ou bien flottent derrière celle-ci lorsqu'ils sont inactifs, suivant le paramètre de l'option Toutes autres palettes défini dans les Préférences de panneaux flottants. Les fichiers de panneau flottant diffèrent également des autres fichiers d'extension. Contrairement aux autres fichiers d'extension, Dreamweaver ne charge pas de fichiers de panneau flottant en mémoire au démarrage, sauf si les panneaux flottants étaient affichés la dernière fois que Dreamweaver a été fermé. Si aucun panneau flottant n'était visible lors de la dernière fermeture de Dreamweaver, les fichiers définissant ces panneaux sont chargés uniquement lorsqu'ils sont référencés à partir de l'une des fonctions suivantes : dreamweaver.getFloaterVisibility(), dreamweaver.setFloaterVisibility() ou dreamweaver.toggleFloater(). Lorsqu'un des fichiers du dossier Configuration appelle dw.getFloaterVisibility(floaterName), dw.setFloaterVisibility(floaterName) ou dw.toggleFloater(floaterName), la chaîne d'événements suivante a lieu : 84 Chapitre 9 1 Si l’argument floaterName ne correspond pas à l'un des noms de panneau flottant réservés, Dreamweaver recherche dans le dossier Configuration/ Floaters un fichier nommé floaterName.htm (pour obtenir une liste complète des noms de panneau flottant réservés, voir la section « dreamweaver.getFloaterVisibility() », page 554). Si le fichier floaterName.htm est introuvable, Dreamweaver recherche floaterName.html. Si aucun fichier de ce nom n'est trouvé, aucun autre événement ne se produit. 2 Si le fichier de panneau flottant est chargé pour la première fois, la fonction initialPosition() est appelée, si elle est définie, pour déterminer la position par défaut du panneau flottant à l'écran et la fonction initialTabs() est appelée, si elle est définie, pour déterminer son groupement d'onglets par défaut. 3 Les fonctions selectionChanged() et documentEdited() sont appelées car il est supposé que des modifications ont été apportées pendant que le panneau flottant était masqué. 4 Lorsque le panneau flottant est visible, les événements suivants se produisent : • Lorsqu'un élément différent est sélectionné, la fonction selectionChanged() est appelée, si elle est définie. • Lorsque l'utilisateur modifie le document, la fonction documentEdited() est appelée, si elle est définie. • Les gestionnaires d'événements associés aux champs dans l'interface de panneau flottant s'exécutent au fur et à mesure que l'utilisateur les rencontre (par exemple, un bouton associé à un gestionnaire d'événements onClick appelant dw.getDocumentDOM().body.innerHTML=’’ a pour effet, lorsque l'utilisateur clique dessus, de supprimer tous les éléments situés entre les balises BODY de début et de fin dans le document). 5 Lorsque l'utilisateur quitte Dreamweaver, la visibilité, la position et le groupement d'onglets actuellement définis pour le panneau flottant sont enregistrés. Au démarrage suivant, l'application Dreamweaver charge les fichiers de panneau flottant correspondant à tous les panneaux flottants qui étaient affichés au moment de la dernière fermeture de l'application et elle affiche les panneaux flottants au même endroit et avec le même groupement d'onglets. API du panneau flottant Les fonctions personnalisées de l'API de panneau flottant sont toutes facultatives. Ces fonctions diffèrent des fonctions de l'API JavaScript principale sur trois points : • Elles ne sont pas des méthodes de l'objet dreamweaver, dom ou site. • Elles sont significatives uniquement dans le contexte des fichiers de panneau flottant. En d'autres termes, Dreamweaver appelle automatiquement la fonction documentEdited() seulement si elle est définie dans un fichier de panneau flottant, tandis que dans tout autre fichier d'extension, une fonction nommée documentEdited() fonctionne de la même façon qu'une fonction définie par l'utilisateur et doit donc être appelée explicitement. • Il vous incombe d'écrire le corps de chaque fonction et de renvoyer une valeur, si nécessaire. Ce mode de fonctionnement est à l'opposé de celui des fonctions de l'API principale dans laquelle vous appelez les fonctions et leur transmettez des arguments, avant que Dreamweaver ne génère des valeurs renvoyées, le cas échéant. Dans le cas de cette API spécifique, Dreamweaver appelle les fonctions et leur transmet des arguments et vous générez ensuite des valeurs renvoyées, le cas échéant. Panneaux flottants 85 displayHelp() Description Si cette fonction est définie, un bouton Aide s'affiche sous les boutons OK et Annuler dans la boîte de dialogue. Cette fonction est appelée lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyées Aucune. Exemple Dans l'exemple suivant, la fonction displayHelp() ouvre dans une fenêtre de navigateur un fichier contenant les instructions : function displayHelp(){ dreamweaver.browseDocument('http://www.hotwired.com/¬ webmonkey/javascript? /code_library/wm_pos2_elmnt_dw/¬ ?tw=javascript'); } documentEdited() Description Appelée lorsque le panneau flottant s'affiche et une fois que la série de modifications en cours est terminée, ce qui signifie que plusieurs modifications peuvent être effectuées avant que cette fonction ne soit appelée. Cette fonction ne doit être définie que si le panneau flottant doit assurer le suivi des modifications apportées au document. Remarque : ne définissez la fonction documentEdited() que si vous en avez absolument besoin, car elle a un impact sur les performances. Arguments Aucun. Valeurs renvoyées Aucune. 86 Chapitre 9 Exemple Dans l'exemple suivant, la fonction documentEdited() recherche des calques dans le document et met à jour un champ de texte affichant le nombre de calques du document : function documentEdited(){ /* create a list of all the layers in the document */ var theDOM = dw.getDocumentDOM(); var layersInDoc = theDOM.getElementsByTagName("layer"); var layerCount = layersInDoc.length; /* update the numOfLayers field with the new layer count */ document.theForm.numOfLayers.value = layerCount; } initialPosition() Description Détermine la position initiale du panneau flottant lorsqu'il est appelé pour la première fois. Si cette fonction n'est pas définie, la position par défaut est le centre de l'écran. Arguments platform Les valeurs possibles pour l'argument platform sont "Mac" et "Win". Valeurs renvoyées Une chaîne au format "leftPosInPixels,topPosInPixels". Exemple Dans l'exemple suivant, la fonction initialPosition() spécifie que lorsque le panneau flottant s'affiche pour la première fois, il doit se trouver à 420 pixels du côté gauche de l'écran et à 20 pixels du haut de l'écran sous Windows, et à 390 pixels du côté 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; } Panneaux flottants 87 initialTabs() Description Détermine les autres panneaux flottants dont les onglets sont combinés à ceux de ce panneau, lorsqu'il s'affiche pour la première fois. Si l'un des panneaux flottants répertoriés s'est affiché précédemment, il n'est pas inclus dans le groupement d'onglets. Ainsi, pour que les onglets de deux panneaux flottants personnalisés soient combinés, chacun d'eux doit référencer l'autre dans sa fonction initialTabs(). Arguments Aucun. Valeurs renvoyées Chaîne au format "floaterName1,floaterName2,...floaterNameN". Exemple Dans l'exemple suivant, la fonction initialTabs() spécifie que lorsque le panneau flottant s'affiche pour la première fois, ses onglets doivent être combinés à ceux du panneau flottant scriptEditor : function initialTabs(){ return "scriptEditor"; } isAvailableInCodeView() Description Défini par un panneau flottant afin de déterminer si le panneau flottant doit être activé lorsque l'Affichage de code est actif. Si cette fonction n'est pas définie, le panneau flottant est désactivé dans l'Affichage de code. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le panneau flottant doit être activé. selectionChanged() Description Appelée lorsque le panneau flottant s'affiche et à chaque changement de sélection (lorsqu'un nouveau document devient actif ou lorsque le pointeur d'insertion passe à un nouvel emplacement dans le document actif ). Cette fonction ne doit être définie que si le panneau flottant doit assurer le suivi de la sélection. Remarque : ne définissez la fonction selectionChanged() que si vous en avez absolument besoin, car elle a un impact sur les performances. 88 Chapitre 9 Arguments Aucun. Valeurs renvoyées Aucune. Exemple Dans l'exemple suivant, la fonction selectionChanged() affiche un panneau (calque) différent dans le panneau flottant selon que la sélection est un marqueur de script ou autre chose : function selectionChanged(){ /* get the selected node */ var theDOM = dw.getDocumentDOM(); var theNode = dw.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 déclaration des fonctions selectionChanged() ou documentEdited() dans vos panneaux flottants personnalisés risque d'avoir des répercussions négatives sur les performances de Dreamweaver. Cela est dû au fait que la fonction documentEdited() est appelée après chaque frappe d'une touche et que la fonction selectionChanged() est appelée chaque fois qu'une touche de direction est utilisée si Dreamweaver est resté inactif plus d'un dixième de seconde. Il est important de tester votre panneau flottant avec divers scénarios, en utilisant des documents volumineux (100 K ou plus de code HTML) autant que possible. Pour vous aider à éviter les pertes de performances, la fonction setTimeout() a été implémentée en tant que méthode globale dans Dreamweaver 3. Tout comme dans les navigateurs, setTimeout() accepte deux arguments : le code JavaScript devant être appelé et le délai d'attente avant cet appel en millisecondes. La méthode 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 façon explicite étant donné que l'écran se fige pendant le traitement des scripts et, par conséquent, empêche à l'utilisateur d'effectuer des modifications supplémentaires (et à vous-même de mettre à jour l'interface ou le panneau flottant). Panneaux flottants 89 Le code suivant correspond à un panneau flottant qui affiche des informations sur chacun des calques du document. Il utilise la méthode setTimeout() pour marquer une pause d'une demi-seconde après le traitement de chaque calque : /* 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 layers to be processed */ var dom = dw.getDocumentDOM(); document.layers = dom.getElementsByTagName("layer"); document.numLayers = document.layers.length; document.numProcessed = 0; /* * * if set a timer to call processLayer(); if we didn't get to finish processing the previous edit, then the timer is already set. */ (document.running = false){ setTimeout("processLayer()", 500); } /* set the processing flag to true */ document.running = true; } /* process one layer */ function processLayer(){ /* display information for the next unprocessed layer. displayLayer() is a function you would write to perform the "magic". */ displayLayer(document.layers[document.numProcessed]); /* if there's more work to do, set a timeout to process * the next layer. 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; } } 90 Chapitre 9 Exemple de panneau flottant simple Le panneau flottant suivant contient un champ de texte indiquant le contenu du marqueur de script sélectionné (l'icône jaune qui s'affiche dans la fenêtre de document pour marquer l'emplacement d'un script). Si aucun marqueur de script n'est sélectionné, un calque contenant le texte (no script selected) s'affiche. <html> <head> <title>Script Editor</title> <script language="JavaScript"> 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'; } } /* update the document with any changes made by the user in the textarea */ function updateScript(){ var theDOM = dw.getDocumentDOM(); var theNode = dw.getSelectedNode(); theNode.innerHTML = document.layers['scriptlayer'].document.¬ theForm.scriptCode.value; } </script> </head> <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> Panneaux flottants 91 (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> Rappelez-vous qu'il n'est pas suffisant d'enregistrer ce code dans un fichier appelé scriptEditor.htm situé dans le dossier Configuration/Floaters ; vous devez également appeler dw.setFloaterVisibility(‘scriptEditor’,true) ou dw.toggleFloater(‘scriptEditor’) à partir d'un endroit quelconque pour charger le panneau flottant et le rendre visible. Le fichier menus.xml du menu Fenêtre est l'endroit le plus logique à partir duquel vous pouvez effectuer cet appel. La balise menuitem pourrait ressembler à ce qui suit : <menuitem name="Script Editor" enabled="true" ¬ command="dw.toggleFloater('scriptEditor')"¬ checked="dw.getFloaterVisibility('scriptEditor')" /> 92 Chapitre 9 10 CHAPITRE 10 Comportements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les comportements permettent aux personnes qui ne savent pas rédiger des programmes de créer des pages HTML interactives. Ils offrent aux concepteurs de sites web un moyen d'affecter facilement des actions à des éléments de page en remplissant un formulaire HTML. Vous devez écrire des actions de comportement lorsque vous souhaitez partager des fonctions avec des utilisateurs non-programmeurs ou lorsque vous souhaitez insérer la même fonction JavaScript à plusieurs reprises tout en modifiant les paramètres à chaque fois. Remarque : vous ne pouvez pas utiliser les comportements pour insérer des fonctions VBScript directement ; vous pouvez toutefois ajouter une fonction VBScript indirectement en modifiant le DOM dans la fonction applyBehavior(). Le terme comportement fait référence à la combinaison d'un événement (tel que onClick, onLoad ou onSubmit) et d'une action (par exemple, Vérifier le plug-in, Atteindre l'URL, Intervertir une image). Le navigateur détermine quels éléments HTML acceptent quels événements. Les fichiers répertoriant les événements que chaque navigateur prend en charge sont stockés dans le dossier Configuration/ Behaviors/Events du dossier de l'application Dreamweaver. Les actions constituent la partie d'un comportement sur laquelle vous avez le contrôle ; ainsi, lorsque vous rédigez un comportement, vous rédigez en réalité un fichier d'action. Les actions sont des fichiers HTML. La balise BODY d'un fichier d'action contient généralement un formulaire HTML qui accepte les paramètres de l'action (par exemple, les paramètres indiquant les calques à afficher ou masquer). La balise HEAD d'un fichier d'action contient des fonctions JavaScript qui traitent les entrées de formulaire de la balise BODY et contrôlent les fonctions, arguments et gestionnaires d'événement insérés dans le document de l'utilisateur. Remarque : pour plus d'informations sur les comportements des serveurs qui offrent une fonctionnalité d'application web, voir « Comportements de serveur », page 107. 93 Fonctionnement des comportements Lorsqu'un utilisateur sélectionne un élément HTML dans un document Dreamweaver et ouvre le panneau Comportements, la chaîne d'événements suivante se produit : 1 L'utilisateur clique sur le bouton plus (+) pour afficher le menu contextuel des actions. Pour déterminer le contenu du menu déroulant, UltraDev recherche d'abord un fichier Behaviors.xml dans le dossier Actions dans le chemin d'accès Configuration/Behaviors. Le fichier Behaviors.xml référence les fichiers HTML dont la balise de titre ou le nom de fichier figureront dans le menu contextuel. Si le fichier HTML référencé contient une balise de titre (title), le contenu de cette balise s'affiche dans le menu. Si le fichier ne contient pas de balise de titre, c'est le nom du fichier qui apparaît dans le menu. S'il n'y a pas de fichier Behaviors.xml ou si le répertoire contient un ou plusieurs fichiers HTML non mentionnés dans Behaviors.xml, UltraDev recherche une balise de titre dans chaque fichier et fait figurer dans le menu le nom de cette balise ou celui du fichier. 94 Chapitre 10 2 Dreamweaver appelle la fonction canAcceptBehavior() dans chaque fichier d'action pour vérifier si l'action est adaptée au document ou à l'élément sélectionné. Si cette fonction renvoie la valeur false, Dreamweaver estompe l'action dans le menu déroulant des actions (par exemple, l'action Contrôler Shockwave ou Flash est estompée lorsque le document de l'utilisateur ne contient pas d'animation Shockwave). Si la valeur renvoyée est une liste d'événements, Dreamweaver les compare un à un aux événements valides de l'élément HTML actuellement sélectionné et du navigateur cible jusqu'à ce qu'une correspondance soit trouvée. 3 Dreamweaver insère au début de la liste du menu déroulant des événements l'événement correspondant obtenu à partir de la fonction canAcceptBehavior() ; si aucune correspondance n'a été trouvée, l'événement par défaut de l'élément HTML (marqué d'un astérisque dans le fichier d'événements) devient le premier élément de la liste. Les autres événements du menu sont retirés du fichier d'événements. 4 L'utilisateur sélectionne une action dans le menu déroulant des actions. 5 Dreamweaver appelle la fonction windowDimensions(), si elle est définie, pour déterminer la taille de la boîte de dialogue des paramètres. Si la fonction windowDimensions() n'est pas définie, la taille est déterminée automatiquement. 6 Dreamweaver affiche une boîte de dialogue contenant les éléments BODY du fichier d'action. Si la balise BODY du fichier d'action contient un gestionnaire onLoad, Dreamweaver l'exécute. 7 L'utilisateur entre les paramètres de l'action. Dreamweaver exécute les gestionnaires d'événements associés aux champs du formulaire au fur et à mesure que l'utilisateur les rencontre. 8 L'utilisateur clique sur OK. 9 Dreamweaver appelle les fonctions behaviorFunction() et applyBehavior() dans le fichier d'action sélectionné. Ces fonctions renvoient des chaînes qui sont insérées dans le document de l'utilisateur. 10 Si l'utilisateur double-clique sur l'action dans la colonne des actions, Dreamweaver rouvre la boîte de dialogue des paramètres en exécutant le gestionnaire onLoad. Dreamweaver appelle alors la fonction inspectBehavior() dans le fichier d'action sélectionné, ce qui a pour effet de renseigner les champs à l'aide des données que l'utilisateur a entrées précédemment. Insertion de plusieurs fonctions dans le fichier de l'utilisateur Les actions peuvent insérer plusieurs fonctions (la fonction de comportement principale et un nombre illimité de fonctions d'aide) dans l'élément HEAD. Plusieurs comportements peuvent même partager des fonctions d'aide, à condition que les fonctions soient définies exactement de la même façon dans chaque fichier d'action. Une façon d'assurer que les fonctions partagées sont identiques consiste à stocker chaque fonction d'aide dans un fichier JavaScript externe et à insérer ce dernier dans les fichiers d'action appropriés à l'aide de <SCRIPT SRC="externalFile.js">. Lorsque l'utilisateur supprime un comportement, Dreamweaver tente de supprimer toutes les fonctions d'aide inutilisées associées à ce comportement. Si d'autres comportements utilisent une fonction d'aide, celle-ci n'est pas supprimée. Du fait que l'algorithme de suppression des fonctions d'aide pèche par excès de prudence, Dreamweaver peut occasionnellement laisser une fonction inutilisée dans le document de l'utilisateur. Procédure à suivre lorsqu'une action exige une valeur renvoyée Il peut arriver qu'un gestionnaire d'événements exige une valeur renvoyée (par exemple, onMouseOver="window.status='This is a link'; return true"). Mais si Dreamweaver insère "return behaviorName(args)" dans le gestionnaire d'événements, les autres comportements de la liste sont ignorés. Comportements 95 Pour contourner cette limitation, affectez à une variable appelée document.MM_returnValue la valeur de renvoi désirée dans la chaîne renvoyée par behaviorFunction(). Ce paramétrage entraîne l'insertion par Dreamweaver de return document.MM_returnValue à la fin de la liste des actions du gestionnaire d'événements. Reportez-vous au fichier Validate Form.js situé dans le dossier Configuration/Behaviors/Actions du dossier de l'application Dreamweaver pour voir un exemple d'utilisation de MM_returnValue. API de comportement Deux fonctions d'API de comportements sont obligatoires (applyBehavior() et behaviorFunction()) ; les autres sont facultatives. Les fonctions de l'API de comportement diffèrent des fonctions de l'API JavaScript principale sur trois points : • Elles ne sont pas des méthodes de l'objet dreamweaver, dom ou site. • Elles ne sont significatives que dans le contexte des fichiers de comportement. En d'autres termes, Dreamweaver n'appelle automatiquement la fonction applyBehavior() que si elle est définie dans un fichier de comportement, tandis que dans tout autre fichier d'extension, une fonction nommée applyBehavior() se comporte comme une fonction utilisateur et vous devez l'appeler explicitement. • Il vous incombe d'écrire le corps de chaque fonction et de renvoyer une valeur, si nécessaire. Ce mode de fonctionnement est à l'opposé de celui des fonctions de l'API principale dans laquelle vous appelez les fonctions et leur transmettez des arguments, avant que Dreamweaver ne génère des valeurs renvoyées, le cas échéant. Dans le cas de cette API spécifique, Dreamweaver appelle les fonctions et leur transmet des arguments et vous générez ensuite des valeurs renvoyées, le cas échéant. applyBehavior() Description Insère dans le document de l'utilisateur un gestionnaire d'événements qui appelle la fonction insérée par behaviorFunction(). Cette fonction peut également exécuter d'autres modifications dans le document de l'utilisateur, mais elle ne doit pas supprimer l'objet auquel le comportement est appliqué ou qui reçoit l'action. 96 Chapitre 10 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 insérée par behaviorFunction(). Cet argument peut être utile si vous insérez une balise dans le document de l'utilisateur et souhaitez affecter une valeur unique à son attribut NAME. Valeurs renvoyées Une chaîne contenant l'appel de fonction qui doit être inséré dans le document de l'utilisateur, généralement après acceptation des paramètres entrés par l'utilisateur. Si applyBehavior() détermine que l'utilisateur a effectué une entrée non valide, la fonction peut renvoyer une chaîne d'erreur au lieu de l'appel de fonction. Dreamweaver ne signale aucune erreur si la chaîne est vide (return "";), mais si la chaîne n'est pas vide et qu'elle n'est pas non plus un appel de fonction, Dreamweaver affiche une boîte de dialogue contenant le texte : Invalid Input supplied for this behavior: [the string returned from applyBehavior()] (l'entrée spécifiée est invalide pour ce comportement : [la chaîne renvoyée par applyBehavior()]). Si la valeur renvoyée est null (return;), Dreamweaver indique qu'une erreur s'est produite mais sans fournir plus de détails. Remarque : les guillemets contenus dans la chaîne renvoyée doivent être précédés d'une barre oblique inverse (\) afin d'éviter que l'interpréteur JavaScript ne signale des erreurs. Comportements 97 Exemple Dans l'exemple suivant, la fonction applyBehavior() appelle la fonction MM_openBrWindow() et lui transmet les paramètres fournis par l'utilisateur (hauteur et largeur de la fenêtre ; si la fenêtre doit afficher des barres de défilement, une barre d'outils, une barre d'emplacement et d'autres fonctions et l'URL qui doit s'ouvrir dans la fenêtre) : 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 Insère une ou plusieurs fonctions (délimitées par les balises <SCRIPT LANGUAGE="JavaScript"></SCRIPT> si aucune n'existe déjà) dans la balise HEAD du document de l'utilisateur. Arguments Aucun. Valeurs renvoyées Soit une chaîne contenant les fonctions JavaScript à insérer dans le document de l'utilisateur, soit une chaîne contenant le nom des fonctions à insérer dans le document de l'utilisateur. Cette valeur doit être chaque fois identique (elle ne peut pas dépendre des données entrées par l'utilisateur). Les fonctions sont insérées une seule fois, quel que soit le nombre de fois que l'action est appliquée aux éléments du document. Remarque : les guillemets contenus dans la chaîne renvoyée doivent être précédés d'une barre oblique inverse (\) afin d'éviter que l'interpréteur JavaScript ne signale des erreurs. 98 Chapitre 10 Exemple Dans l'exemple suivant, la fonction behaviorFunction() renvoie une fonction appelée MM_popupMsg() : function behaviorFunction(){ return ""+ "function MM_popupMsg(theMsg) { //v1.0\n"+ " alert(theMsg);\n"+ "}"; } Le code suivant est équivalent à la déclaration de fonction behaviorFunction() précédente et il s'agit de la méthode utilisée pour déclarer la fonction behaviorFunction() dans tous les comportements fournis avec Dreamweaver : function MM_popupMsg(theMsg){ //v1.0 alert(theMsg); } function behaviorFunction(){ return "MM_popupMsg"; } canAcceptBehavior() Description Indique si l'action est autorisée pour l'élément HTML sélectionné et définit l'événement par défaut qui doit la déclencher. Peut également rechercher la présence de certains objets (tels que des animations Shockwave) dans le document de l'utilisateur et interdire l'action si ces objets sont absents. Arguments HTMLelement L'argument est l'élément HTML sélectionné. Valeurs renvoyées L'une des valeurs suivantes : • true si l'action est autorisée mais n'est associée à aucun événement préféré. • Une liste des événements préférés (par ordre décroissant de préférence) de cette action. La définition d'événements préférés remplace l'événement par défaut (signalé par un astérisque dans le fichier d'événements) de l'objet sélectionné. Voir les étapes 2 et 3 de la section « Fonctionnement des comportements », page 94. • false si l'action n'est pas autorisée. Si canAcceptBehavior() renvoie la valeur false, l'action apparaît estompée dans le menu déroulant des actions du panneau Comportements. Comportements 99 Exemple Dans l'exemple suivant, la fonction canAcceptBehavior() renvoie une liste des événements préférés du comportement si le document contient des images nommées : 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; } } displayHelp() Description Si cette fonction est définie, un bouton Aide apparaît sous les boutons OK et Annuler dans la boîte de dialogue des paramètres. Cette fonction est appelée lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyées Aucune. Exemple Dans l'exemple suivant, la fonction displayHelp() ouvre dans une fenêtre de navigateur un fichier contenant les instructions d'utilisation du comportement : function displayHelp(){ dreamweaver.browseDocument('http://www.hotwired.com/¬ webmonkey/javascript/code_library/wm_pos2_elmnt_dw/¬ ?tw=javascript'); } deleteBehavior() Description Annule toutes les modifications effectuées par la fonction applyBehavior(). Remarque : Dreamweaver supprime automatiquement la déclaration de fonction et le gestionnaire d'événements associés à un comportement lorsque l'utilisateur supprime ce comportement dans le panneau Comportements. Il est ainsi nécessaire de définir la fonction deleteBehavior() uniquement si la fonction applyBehavior() a effectué des modifications supplémentaires dans le document de l'utilisateur (par exemple, si elle a inséré une balise). 100 Chapitre 10 Arguments applyBehaviorString Cet argument correspond à la chaîne qui a été renvoyée précédemment par la fonction applyBehavior(). Valeurs renvoyées Aucune. identifyBehaviorArguments() Description Associe les arguments d'un appel de fonction de comportement à nav, dep, URL, NS4.0ref, IE4.0ref, objName ou other de façon à ce que les URL utilisées dans les comportements puissent être mises à jour si l'utilisateur enregistre le document dans un autre emplacement et pour que les fichiers référencés puissent s'afficher dans la carte du site et être considérés comme des fichiers dépendants afin de pouvoir être téléchargés vers et depuis un serveur. Arguments theFunctionCall Cet argument correspond à la chaîne qui a été renvoyée précédemment par la fonction applyBehavior(). Valeurs renvoyées Une chaîne contenant une liste des types d'arguments de l'appel de fonction séparés 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 sont toujours l'un des suivants : • nav indique que l'argument est une URL de navigation et qu'il doit donc être affiché dans la carte du site. • dep indique que l'argument est une URL de fichier dépendant et qu'il doit donc être inclus avec tous les autres fichiers dépendants lorsqu'un document contenant ce comportement est téléchargé depuis ou vers un serveur. • URL indique que l'argument est à la fois une URL de navigation et une URL dépendante (ou une URL de type inconnu), et qu'il doit donc être affiché dans la carte du site et considéré comme un fichier dépendant lors du téléchargement depuis ou vers un serveur. • NS4.0ref indique que l'argument est une référence à un objet DOM de Navigator. • IE4.0ref • objName indique que l'argument est une référence à un objet DOM d'Internet Explorer. indique que l'argument est un nom d'objet simple, tel qu'il est spécifié dans l'attribut NAME de l'objet. Ce type a été ajouté à Dreamweaver 3. Comportements 101 • 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 la fenêtre Navigateur qui renvoie une fonction comportant toujours trois arguments (l'URL à ouvrir, le nom de la nouvelle fenêtre et la liste des propriétés de la fenêtre) : function identifyBehaviorArguments(fnCallStr) { return "URL,other,other"; } Une version plus complexe de la fonction identifyBehaviorArguments() est nécessaire pour les fonctions de comportement ayant un nombre variable d'arguments (telles que Afficher-Masquer les calques). Pour cette version de la fonction identifyBehaviorArguments(), il existe un nombre minimum d'arguments et les arguments supplémentaires se présentent 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. 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"; } } 102 Chapitre 10 inspectBehavior() Description Recherche dans l'appel de fonction un comportement déjà appliqué au document de l'utilisateur et définit les valeurs des options de la boîte de dialogue des paramètres en conséquence. Si la fonction inspectBehavior() n'est pas définie, les valeurs par défaut des options s'affichent. Remarque : 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 chaîne qui a été renvoyée précédemment par la fonction applyBehavior(). Valeurs renvoyées Aucune. Exemple Dans l'exemple suivant, la fonction inspectBehavior(), extraite du fichier Display Status Message.htm, renseigne le champ Message du formulaire des paramètres avec le message que l'utilisateur a sélectionné lors de la première 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 string.js du dossier Configuration/Shared/MM/Scripts/CMN. windowDimensions() Description Définit les dimensions de la boîte de dialogue des paramètres. Si cette fonction n'est pas définie, les dimensions de la fenêtre sont calculées automatiquement. Remarque : ne définissez cette fonction que si vous souhaitez utiliser une boîte de dialogue d'options ayant des dimensions supérieures à 640 x 480 pixels. Comportements 103 Arguments platform La valeur de l'argument est soit "macintosh", soit "windows", selon la plateforme utilisée par l'utilisateur. Valeurs renvoyées Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la boîte de dialogue parce qu'elles n'incluent pas la zone des boutons OK et Annuler. Si les dimensions renvoyées ne permettent pas de faire apparaître toutes les options, des barres de défilement s'affichent. Exemple Dans l'exemple suivant, la fonction windowDimensions() définit les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels : function windowDimensions(){ return "648,520"; } Exemple de comportement simple Pour mieux comprendre le fonctionnement des comportements et la façon dont vous pouvez en créer un, il est utile d'examiner un exemple. Le dossier Configuration/Behaviors/Actions du dossier de l'application Dreamweaver contient de nombreux exemples ; toutefois, la plupart sont probablement trop complexes pour les utilisateurs qui ne sont pas des programmeurs confirmés. 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). 104 Chapitre 10 Le code suivant présente un exemple relativement simple. Il vérifie la marque du navigateur et atteint une page spécifique s'il s'agit de Netscape Navigator et une page différente s'il s'agit de Microsoft Internet Explorer. Ce code peut facilement être étendu pour vérifier d'autres marques (telles qu'Opera et WebTV) et modifié pour exécuter d'autres actions que l'action d'atteindre des URL. <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); 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, "()',"); Comportements 105 var nsURL = unescape(argArray[1]); var ieURL = unescape(argArray[2]); document.theForm.nsURL.value = nsURL; document.theForm.ieURL.value = ieURL; } //***************** LOCAL FUNCTIONS ****************** // Put the cursor 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> <form method="post" action="" name="theForm"> <table border="0" cellpadding="8"> <tr> <td nowrap="nowrap"> Go to this URL if the browser is ¬ Netscape Navigator:<br> <input type="text" name="nsURL" size="50" value=""> <input type="button" name="nsBrowse" value="Browse..." ¬ onClick="browseForURLs('nsURL')"></td> </tr> <tr> <td nowrap="nowrap"> Go to this URL is the browser is ¬ Microsoft Internet Explorer:<br> <input type="text" name="ieURL" size="50" value=""> <input type="button" name="ieBrowse" value="Browse..." ¬ onClick="browseForURLs('ieURL')"></td> </tr> </table> </form> </body> </html> 106 Chapitre 10 11 CHAPITRE 11 Comportements de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les utilisateurs de Dreamweaver UltraDev ajoutent des comportements de serveur à leurs documents afin d'exécuter des tâches côté serveur, comme par exemple pour filtrer des enregistrements en fonction de critères préalablement définis, parcourir des enregistrements, lier des listes de résultats à des pages d'informations détaillées et insérer des enregistrements dans un jeu de résultats. Si l’utilisateur insère sans cesse le même code d'exécution dans les documents, il a tout intérêt à créer une nouvelle extension afin d'automatiser la mise à jour de documents à l'aide de blocs de code couramment utilisés. UltraDev prend actuellement en charge des extensions de comportements de serveur, afin d'ajouter des codes d'exécution pour les serveurs de type ASP/JavaScript, ASP/VBScript, JSP et CFML. Le présent chapitre utilise les termes suivants : • Extension de comportement de serveur : interface entre votre code côté serveur et Dreamweaver UltraDev. Une extension de comportement de serveur est composée d'un code JavaScript, d'un code HTML et habituellement d'un code XML. Dans UltraDev 4.0, vous pouvez rédiger une partie de code JavaScript afin de gérer l'interface utilisateur de l'extension et utiliser les fonctions JavaScript pour traiter la gestion du code d'exécution dans le document utilisateur. De même, vous pouvez créer un formulaire HTML pour obtenir des entrées utilisateur pour votre comportement de serveur. Enfin, dans les fichiers XML, vous avez la possibilité de décrire votre extension, y compris le code d'exécution réel et les paramètres dynamiques. Dirigez UltraDev, grâce à l'appel JavaScript de la fonction applySB(), jusqu'à ces fichiers XML, où vous pouvez récupérer les composants de votre extension, afin de les ajouter ensuite au document utilisateur. 107 • Occurrence de comportement de serveur : l'ajout par UltraDev du code d'exécution au document utilisateur constitue une occurrence de comportement de serveur. La plupart des comportements de serveur pouvant être appliqués plusieurs fois, les occurrences peuvent être multiples. Chaque occurrence de comportement de serveur est répertoriée dans le panneau Comportements de serveur. • Code d'exécution : ensemble des blocs de code ajoutés à un document lorsqu'un comportement de serveur est appliqué. Ces blocs de code sont d'ordinaire un code côté serveur, tel qu'une directive ASP comprise entre des balises <% ... %>. Vous pouvez rédiger le code d'exécution d'un comportement de serveur en langage JavaScript, Visual Basic, Java ou C. • Bloc de code : l'extension de comportement de serveur insère des blocs de code dans le document utilisateur. Un bloc de code est un bloc de script unique et continu, tel qu'une balise côté serveur, une balise HTML, voire un attribut qui ajoute une fonctionnalité côté serveur à une page web. Il arrive parfois que des blocs de code insérés dans les documents de l'utilisateur dépendent d'autres parties du document. Par exemple, si une partie de votre code d'exécution dépend d'un jeu d'enregistrements, elle doit être placée au-dessous du bloc de code dudit jeu. Certains blocs de code sont ainsi qualifiés de pondérés. Un fichier XML désigne chaque bloc de code par le terme de participant. De même, tous les participants (blocs de code) pour un comportement de serveur donné forment un groupe XML. Remarque : « Schéma XML de comportement de serveur », page 145, décrit les fichiers groupes et participants, ainsi que la façon dont les fichiers XML d'UltraDev sont structurés. Pour utiliser la nouvelle architecture d'UltraDev, vous devez placer l'information relative à votre extension dans les fichiers XML. Les fichiers XML de comportement de serveur contiennent la totalité du code d'exécution à insérer dans le document utilisateur, ainsi que les chaînes de recherche servant au rapprochement du document et des données en cours avec votre extension de comportement de serveur. Architecture d'UltraDev Lorsque vous rédigez ou modifiez une extension spécifique à UltraDev, utilisez les services UltraDev et les fichiers XML pour rendre votre extension plus simple et plus efficace. Selon les schémas de l'API de comportement de serveur et XML d'UltraDev, vous créez des extensions à l'aide des fonctions *SB(), puis vous placez le code d'exécution et les paramètres dynamiques dans les fichiers XML. Non seulement ce type d'architecture simplifie la mise en œuvre de l'API d'UltraDev, mais il permet également de distinguer le code d'exécution et la façon dont il est déployé dans Dreamweaver UltraDev. Le scénario typique suivant illustre ce qui se passe lorsqu'un utilisateur sélectionne une extension de comportement de serveur pour la première fois. 108 Chapitre 11 Exécution d'un comportement de serveur La figure suivante illustre le déroulement de haut niveau des opérations entre l'utilisateur, l'extension de comportement de serveur et UltraDev, lorsqu'un utilisateur sélectionne votre extension de comportement de serveur. Le résultat final est un document mis à jour. 1 L'utilisateur clique sur le bouton Plus (+) pour sélectionner l'extension dans le panneau Comportements de serveur. 2 Votre formulaire HTML invite l'utilisateur à saisir des données. 3 Le comportement de serveur fait appel au programme SBM (Server Behavior Manager) afin qu'il procède à l'insertion du code d'exécution dans le document utilisateur. 4 Le programme SBM fait lui-même appel à EDM (Extension Data Manager) pour obtenir une description complète du comportement de serveur. Pour ce faire, EDM extrait des fichiers XML que vous avez créés les informations relatives à l'extension (données d'extension), y compris le code d'exécution. 5 Après obtention des données d'extension par EDM, le programme SBM met le document utilisateur à jour avec le code d'exécution. Comportements de serveur 109 Cette illustration généralisée vous indique le degré de dépendance de l'extension vis-à-vis d'UltraDev quand il s'agit d'insérer le code d'exécution dans le document utilisateur. La section suivante examine plus en détails ce système de stratification corrélative. Dossiers et fichiers de comportements de serveur L'interface utilisateur pour chaque comportement de serveur réside dans le dossier Configuration/ServerBehaviors/NomdeModèledeServeur, où NomdeModèledeServeur correspond à l'une des technologies ASP, JSP ou ColdFusion. Tous les fichiers XML correspondants se trouvent dans les dossiers du répertoire Configuration/ExtensionData. Partage de fichiers entre modèles de serveur Au sein de chaque sous-dossier de modèle de serveur (ASP, ColdFusion et JSP) figurent les fichiers HTML de l'interface utilisateur associés aux comportements pour le modèle de serveur concerné. Ces comportements sont intégrés au menu Plus (+) du panneau Comportements de serveur. Par exemple, le fichier InsertRecord.htm du dossier Configuration/ServerBehaviors/ASP correspond au comportement Insérer un enregistrement, inclus dans le menu Plus (+) du panneau Comportements de serveur lorsque le modèle de serveur sélectionné pour votre site est ASP. La plupart du temps, l'interface utilisateur est exactement la même pour les trois modèles de serveur. Pour plus d'efficacité, nous avons intégré la prise en charge de l'option Server-Side Include (SSI - Inclusions à partir du serveur). Par exemple, le fichier Configuration/ServerBehaviors/ASP/Dynamic Textfield.htm contient la directive d'inclusion <!-- #include virtual="../Dynamic Textfield.htm" -->. Lorsque le fichier de comportement de serveur est chargé, Dreamweaver UltraDev remplace la directive #include par le fichier HTML commun, Dynamic Textfield.htm. Partage des fichiers JavaScript pour économiser la mémoire Vous pouvez gagner de l'espace en ajoutant une directive appropriée au fichier JavaScript, s'il figure dans plusieurs fichiers HTML à la fois. Dreamweaver charge dans la mémoire partagée les fichiers JavaScript comportant la directive spéciale, et vous devez par conséquent faire très attention aux éventuels conflits de noms. Pour faire de la place en mémoire, ajoutez le code suivant au début du fichier JavaScript : //SHARE-IN-MEMORY=true 110 Chapitre 11 Conseil: consultez les fichiers *.js du répertoire Configuration/Shared pour plus d'exemples. Si votre fichier contient la directive SHARE-IN-MEMORY et qu'un fichier HTML y fait référence (à l'aide de la balise SCRIPT avec l'attribut SRC), Dreamweaver le charge dans un emplacement centralisé afin qu'il soit, par la suite, implicitement inclus dans tous les fichiers HTML. Les fichiers JavaScript chargés à cet emplacement centralisé partageant la mémoire, ils ne peuvent dupliquer aucune déclaration. Un conflit de noms peut éventuellement se produire s'il y a définition simultanée d'une même variable ou fonction à la fois dans votre fichier chargé dans la mémoire commune et dans un autre fichier Javascript. Pour illustrer ce cas de figure, supposons deux fichiers : le premier fichier, shared.js, contient la directive d'inclusion //SHARE-IN-MEMORY=true. Le second fichier, notshared.js, ne comporte aucune directive d'inclusion. Les fichiers définissent tous deux la fonction applyServerBehavior(). Si <script src="notshared.js"> apparaît dans un fichier myext.htm, Dreamweaver charge notshared.js dans la mémoire. Si <script src="shared.js"> est incluse dans un fichier, quel et où qu'il soit, Dreamweaver charge automatiquement shared.js, qui est ensuite implicitement inclus dans myext.htm. Comme applyServerBehavior() figure dans les deux fichiers, Dreamweaver n'est pas en mesure de déterminer la fonction à exécuter. Par conséquent, il est conseillé de ne pas intégrer la directive SHARED-IN-MEMORY si le fichier JavaScript et un autre fichier susceptible d'être chargé en mémoire définissent une même fonction. Conseil: ajoutez la directive SHARE-IN-MEMORY après avoir entièrement débogué le code ; dans le cas contraire, vous devez quitter, puis redémarrer Dreamweaver et recharger la version la plus récente de votre fichier (lors du débogage, il est plus pratique d'utiliser la fonctionnalité « Recharger extensions » lors d'une modification, plutôt que de quitter complètement Dreamweaver). Exemple : Hello World L'exemple suivant illustre le processus de création d'un nouveau comportement de serveur, à l'aide des nombreux services déjà rédigés. Remarque : cet exemple fait référence à des fonctions définies plus loin dans ce chapitre. Etape 1 Etape 2 Rédigez le code d'exécution, puis testez-le. Créez les fichiers XML groupes et participants. Etape 3 Créez le fichier de comportement de serveur et appelez les fonctions API. A chaque étape, développez et testez l'exemple. Chaque étape est composée de quelques rappels rapides, d'une explication détaillée et du code source approprié. Comportements de serveur 111 Imaginez, pour commencer, un comportement ASP simple qui affiche « Hello World » à partir du serveur ASP. Cet exemple contient un seul participant (une simple balise ASP) et rien n'est modifié, ni ajouté sur la page. Les exemples de fichiers suivants figurent dans le dossier Help/UltraDev/Samples : Hello_World.htm, Hello_World.xml et Hello_World_main.xml. Etape 4 Rédigez le code d'exécution, puis testez-le. A ce niveau, il convient de veiller au bon fonctionnement du code, de déterminer les parties du code devant être définies par l'utilisateur (c'est-à-dire les parties susceptibles de varier) et de vérifier que l'extrait de code est facilement repérable (après insertion dans le document utilisateur). Remarque : dans cet exemple préliminaire, aucune information n'est requise de l'utilisateur et le code ASP ne contient aucun paramètre. La chaîne de résultat est simplement « Hello World ». Chaque participant doit constituer une balise ou un attribut unique. Cet exemple ne comporte qu'un seul participant et le code d'exécution dans ASP/JavaScript est : <% Response.Write("Hello World") %> Pour vérifier que le code d'exécution fonctionne correctement, définissez un site avec le modèle de serveur ASP et le langage JavaScript. Créez un document dans le site et tapez cette ligne de code ASP dans le code source HTML (au sein de la balise BODY). Quand vous prévisualisez ce fichier sur le serveur ASP, « Hello World » doit apparaître sur la page. Après avoir testé le code d'exécution pour vérifier qu'il fonctionne correctement, vous pouvez passer à l'étape 5. Etape 5 Créez les fichiers XML groupes et participants. Le but de cette étape consiste à vérifier que vous disposez d'un fichier groupe et d'au moins un fichier participant, puis à ajouter les balises XML élémentaires requises pour l'insertion et la recherche du code d'exécution. 112 Chapitre 11 Pour chaque comportement de serveur, il vous faut au moins un fichier XML participant et un fichier XML groupe. Commencez par créer un fichier participant, nommé Hello World_main.xml et placez-le dans le dossier Configuration/ExtensionData. Ce fichier se compose comme suit : <participant> <implementation serverModel="ASP/JavaScript"> <quickSearch>Hello World</quickSearch> <insertText location="afterSelection"> <![CDATA[ <% Response.Write("Hello World") %> ]]> </insertText> <searchPatterns whereToSearch="directive"> <searchPattern>/Response\.Write\("Hello World"\)/i </searchPattern> </searchPatterns> </implementation> </participant> La clé de ce fichier est la balise <insertText>, qui contient le code d'exécution à insérer. Ce code est contenu dans une structure XML standard CDATA, afin d'empêcher toute confusion de l'analyseur syntaxique XML par le code ASP. Créez ensuite le fichier XML groupe. Le fichier groupe identifie le comportement de serveur qui l'utilise et répertorie tous les participants. Dans le dossier Configuration/ExtensionData, créez un fichier nommé Hello World.xml qui se compose comme suit : <group serverBehavior="Hello World.htm"> <title>Hello World</title> <groupParticipants selectParticipant="Hello World_main"> <groupParticipant name="Hello World_main" /> </groupParticipants> </group> Ce fichier groupe se réfère au fichier de comportement de serveur que vous allez créer et indique la présence d'un participant. Etape 6 Créez le fichier de comportement de serveur. Dans cette étape, vous intégrez tous les fichiers communs éventuellement nécessaires et déclarant les fonctions élémentaires de comportement de serveur. Commencez par enregistrer votre fichier HTML de comportement de serveur dans le dossier Configuration/ServerBehaviors/ASP. Toutes les extensions Dreamweaver sont divisées en deux fichiers, par exemple Recordset.htm et Recordset.js, afin de faciliter la traduction en diverses langues. Pour votre exemple, créez un seul fichier et nommez-le Hello World.htm. Au moment de tester le comportement dans Dreamweaver, modifiez le fichier de comportement de serveur à l'aide d'un éditeur de texte indépendant, tel que Bloc-notes ou SimpleText. Comportements de serveur 113 Vous allez utiliser de nombreuses fonctions et classes communes dans les étapes restantes. Pour pouvoir accéder à l'ensemble du code utile, vous devez inclure les fichiers commençant par les lettres ss à partir du dossier partagé. <HTML> <HEAD> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/UI.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/file.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/string.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/localText.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/docInfo.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/niceName.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/helper.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/Class/ ListControlClass.js"></SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssClasses.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssDocManager.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssCmnElements.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/sbManager.js">¬ </SCRIPT> Afin que votre comportement de serveur s'affiche dans le menu Plus (+) du panneau Comportements de serveur, ajoutez les fonctions API requises, comme suit : <SCRIPT> function findServerBehaviors() { return findSBs(); } function canApplyServerBehavior() { return true; } function applyServerBehaviors(sbObj) { var paramObj = new Object(); applySB(paramObj,sbObj); } function deleteServerBehavior(sbObj) { deleteSB(sbObj) } function inspectServerBehavior(sbObj) { } function analyzeServerBehavior(sbObj, allRecs) { } </SCRIPT> </HEAD> 114 Chapitre 11 Pour s'afficher, l'interface utilisateur d'une extension Dreamweaver doit contenir une balise de formulaire (form). Pour l'instant, ajoutez une simple balise form à l'intérieur d'une balise body : <BODY> <FORM> Insert "Hello World". </FORM> </BODY> </HTML> Vous pouvez maintenant effectuer un test rapide. Redémarrez Dreamweaver et ouvrez le fichier test. Ouvrez le panneau Comportements de serveur. Cliquez sur le menu Plus (+), puis choisissez Hello World. Cliquez sur OK. Le texte ASP doit être ajouté à votre document et Hello World doit être affiché dans le panneau Comportements de serveur. Exemple : Redirect If Empty Dans l'exemple suivant, vous allez utiliser un code ASP pour diriger l'utilisateur vers une autre page quand un jeu d'enregistrements est vide (aucun enregistrement n'a été comptabilisé). Cet exemple contient un seul participant (une simple balise ASP) et rien n'est modifié, ni ajouté sur la page. Cet exemple est possible uniquement si des jeux d'enregistrements existent. Les exemples de fichiers suivants figurent dans le sous-dossier Help/UltraDev/Samples de Dreamweaver UltraDev : Redirect_If_Empty_main.xml, Redirect_If_Empty.xml et Redirect_If_Empty.htm. Remarque : l'exemple suivant utilise une adresse URL comme l'un des paramètres. « URL » étant un mot réservé dans le code JavaScript, assurez-vous d'attribuer un nom unique au paramètre (tel que new__url). Si vous terminez le nom du paramètre conformément à la convention __url (c'est-à-dire deux caractères de soulignement, suivis de « url »), Dreamweaver conserve le nom du chemin d'accès relatif dans l'URL lorsque vous changez le fichier de place. Etape 1 Rédigez le code d'exécution, puis testez-le. A ce niveau, il convient de veiller au bon fonctionnement du code, de déterminer les parties du code devant être définies par l'utilisateur (c'est-à-dire les parties susceptibles de varier) et de vérifier que l'extrait de code est facilement repérable (après insertion dans le document utilisateur). Il s'agit de l'étape la plus importante. Les développeurs peuvent commencer avec une interface utilisateur, à seule fin de constater que les contraintes du code d'exécution modifient complètement la conception. Chaque participant doit correspondre à une balise ou un attribut unique, identifiable à l'aide d'expressions régulières. Pour cet exemple, le code d'exécution dans ASP/JavaScript est : <% if (Recordset1.EOF) Response.Redirect("http://www.yahoo.com"); %> Comportements de serveur 115 Ce code est composé de deux paramètres modifiables : le nom du jeu d'enregistrements et l'URL. Le comportement de serveur a donc pour tâche de récupérer et d'intégrer ces deux informations dans le code d'exécution, puis d'ajouter ledit code à l'endroit approprié sur la page. Pour vérifier que le code d'exécution fonctionne correctement, définissez un site avec le modèle de serveur ASP et le langage JavaScript. Créez un document dans le site, définissez un jeu d'enregistrements, puis effectuez un aperçu dans un navigateur. Ajoutez ensuite le code d'exécution à la page, au-dessus de la balise <HTML> mais en dessous du jeu d'enregistrements. Après avoir testé le code d'exécution pour vérifier qu'il fonctionne correctement, vous pouvez passer à l'étape 2. Etape 2 Créez les fichiers XML groupes et participants. Le but de cette étape consiste à vérifier que vous disposez d'un fichier groupe et d'au moins un fichier participant, puis à ajouter les balises XML élémentaires requises pour l'insertion et la recherche du code d'exécution. Le code d'exécution dépendant d'un jeu d'enregistrements, il doit être positionné en dessous du code de définition du jeu d'enregistrements, mais au-dessus de tout autre code éventuellement dépendant du jeu d'enregistrements quand celui-ci n'est pas vide. Utilisez l'attribut d'implantation (location) pour définir avec précision ce positionnement au sein du fichier XML. Pour chaque comportement de serveur, il vous faut au moins un fichier XML participant et un fichier XML groupe. Commencez par créer un fichier participant, nommé Redirect If Empty.xml, dans le dossier Configuration/ ExtensionData/. Ce fichier se compose comme suit : <participant> <implementation serverModel="ASP/JavaScript"> <quickSearch>Response.Redirect</quickSearch> <insertText location="aboveHTML+51"> <![CDATA[ <% if (@@rs@@.EOF) Response.Redirect("@@new__url@@"); %> ]]> </insertText> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="rs,new__url"> /if \((\w+)\.EOF\) Response\.Redirect\("(.*)"/i </searchPattern> </searchPatterns> </implementation> </participant> Le texte d'insertion contient maintenant deux espaces réservés pour les données paramétrées : @@rs@@ et @@new__url@@. Ces deux espace réservés sont remplacés lors de l'insertion du texte. Le profil de recherche extrait maintenant les valeurs des deux paramètres rs et new__url. Ces valeurs proviennent des première et deuxième sous-expressions entre parenthèses (\w+) et (.*). 116 Chapitre 11 Créez ensuite le fichier XML groupe. Le fichier groupe identifie le comportement de serveur qui l'utilise et répertorie tous les participants. Dans le dossier Configuration/ExtensionData, créez un fichier nommé Redirect If Empty.xml, qui se compose comme suit : <group serverBehavior="Redirect If Empty.htm"> <title>Hello World</title> <groupParticipants selectParticipant="Redirect If Empty_main"> <groupParticipant name="Redirect If Empty_main" /> </groupParticipants> </group> Ce fichier groupe se réfère au fichier de comportement de serveur que vous allez créer et indique la présence d'un participant. Etape 3 Créez le fichier de comportement de serveur. Dans cette étape, vous intégrez tous les fichiers communs éventuellement nécessaires et déclarant les fonctions élémentaires de comportement de serveur. Commencez par créer votre fichier HTML de comportement de serveur dans le dossier Configuration/ServerBehaviors/ASP. Toutes les extensions Dreamweaver sont divisées en deux fichiers, par exemple Recordset.htm et Recordset.js, afin de faciliter la traduction en diverses langues. Pour votre exemple, créez un seul fichier et nommez-le Hello World.htm. Au moment de tester le comportement dans Dreamweaver, modifiez le fichier de comportement de serveur à l'aide d'un éditeur de texte indépendant, tel que Bloc-notes ou SimpleText. Comportements de serveur 117 Vous allez utiliser de nombreuses fonctions et classes communes dans les étapes restantes. Pour accéder à l'ensemble du code utile, vous devez inclure des fichiers communs. Commencez par les notions de base : <HTML> <HEAD> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/UI.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/file.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/string.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/localText.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/docInfo.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/niceName.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/helper.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/displayHelp.js"></ SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/Class/ListControlClass.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssClasses.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssDocManager.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssCmnElements.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/sbManager.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/Controls/Scripts/RecordsetMenu.js">¬ </SCRIPT> <SCRIPT SRC="../../Shared/Controls/Scripts/TextField.js">¬ </SCRIPT> Initialisez maintenant les deux commandes qui s'affichent dans votre interface utilisateur à l'aide des classes de commande disponibles. La première commande est un menu composé de jeux d'enregistrements et la deuxième un champ de texte pour la saisie des URL. <SCRIPT> var rs = new RecordsetMenu("Redirect If Empty","rs"); var new__url = new TextField("Redirect If Empty","new__url"); function findServerBehaviors() { return findSBs(); } La fonction canApplyServerBehavior() détermine si le comportement de serveur peut être exécuté. Dans cet exemple, elle renvoie la valeur false si la page ne contient aucun jeu d'enregistrements. function canApplyServerBehavior(sbObj) { var success = true; if (success) success = rs.canApplyServerBehavior(sbObj); if (success) success = new__url.canApplyServerBehavior(sbObj); return success; } 118 Chapitre 11 La valeur que vous obtenez à la rédaction de la fonction applyServerBehaviors() provient normalement de chaque commande d'élément de formulaire. Dans ce cas, chaque commande peut être affectée d'un paramètre paramObj, qui est ensuite transmis à applySB(). Par exemple, elles créent les propriétés paramObj.rs et paramObj.new__url, que vous pouvez, par ailleurs, définir manuellement à l'aide d'un élément de formulaire dépourvu de classe de commande. function applyServerBehavior(sbObj) { var paramObj = new Object(); var errStr = ""; if (!errStr) errStr = rs.applyServerBehavior(sbObj, paramObj); if (!errStr) errStr = new__url.applyServerBehavior(sbObj, ¬ paramObj); if (!errStr) applySB(paramObj,sbObj); return errStr; } La fonction inspectServerBehavior() sélectionne les valeurs précédentes dans l'interface utilisateur lors de la modification d'une occurrence existante. function inspectServerBehavior(sbObj) { var success = true; if (success) success = rs.inspectServerBehavior(sbObj); if (success) success = new__url.inspectServerBehavior(sbObj); } function deleteServerBehavior(sbObj) { deleteSB(sbObj); } La fonction analyzeServerBehavior() valide une occurrence du code d'exécution du comportement de serveur pour vérifier qu'il est complet (c'est-àdire qu'il contient tous les participants). Par exemple, si le jeu d'enregistrements dont il est fait référence est introuvable, cette fonction définit l'indicateur « incomplete » et un point d'exclamation rouge s'affiche dans le panneau Comportements de serveur. function analyzeServerBehavior(sbObj, allRecs) { rs.analyzeServerBehavior(sbObj, allRecs); new__url.analyzeServerBehavior(sbObj, allRecs); } function initializeUI() { rs.initializeUI(); new__url.initializeUI(); } </SCRIPT> Comportements de serveur 119 Vous définissez l'interface utilisateur dans le code HTML. L'interface utilisateur doit être contenue dans une balise FORM. Dans ce cas, les noms attribués à chaque élément de formulaire correspondent aux appels de classes de commande qui se trouvent au-dessus (rs et new__url). <META HTTP-EQUIV="Content-Type" CONTENT="text/html"> </HEAD> <BODY onLoad="initializeUI()"> <FORM NAME="theForm"> <TABLE> <TR> <TD ALIGN="right" VALIGN="baseline" NOWRAP> Recordset: </TD> <TD VALIGN="baseline" NOWRAP> <SELECT NAME="rs" STYLE="width:230px"> <OPTION SELECTED>*** no Recordsets found ***</OPTION> </SELECT> </TD> </TR> <TR> <TD ALIGN="right" VALIGN="baseline" NOWRAP> Redirect URL: </TD> <TD VALIGN="baseline" NOWRAP> <INPUT TYPE="text" NAME="new__url" STYLE="width:230px"> <INPUT TYPE="button" VALUE="Browse..." ¬ onClick="browseFile(document.theForm.url"> </TD> </TR> </TABLE> </FORM> </BODY> </HTML> Techniques de comportements de serveur Cette section traite des techniques, courantes et évoluées, utilisées pour la création de comportements de serveur. La plupart des suggestions faites ici impliquant des configurations particulières de fichiers XML, il est indispensable de lire le chapitre sur le schéma XML avant de poursuivre. L'exemple utilisé fait de nombreuses références aux fonctions définies dans ce chapitre. 120 Chapitre 11 Application de comportements de serveur Les comportements de serveur sont appliqués lorsqu'un utilisateur clique sur OK dans la boîte de dialogue Comportement de serveur. Cet événement utilisateur appelle la fonction applyServerBehavior(), qui appelle généralement la fonction applySB() pour traiter le code XML et insérer le code d'exécution dans le document utilisateur. Le code à insérer est stocké dans les balises <insertText> dans vos fichiers XML. L'attribut location de ces balises permet de définir l'emplacement exact du code dans le document. Voici quelques conseils pour bien définir l'attribut location. Insertion du code au-dessus de la balise <html> Votre code d'exécution du comportement de serveur doit être placé dans le document de l'utilisateur à l'emplacement approprié. La plupart du code du serveur devant être traité avant le code HTML, vous pouvez demander à Dreamweaver de l'insérer au-dessus de la balise <html> dans le document utilisateur. Si le code est autonome et n'est en relation avec aucun autre code, définissez l'emplacement sur aboveHTML. Exemple : <insertText location="aboveHTML"><![CDATA[<% ASP_CODE_HERE %>]]>¬ </insertText> Cette instruction indique à Dreamweaver d'insérer le code d'exécution de comportement de serveur directement au-dessus de la balise <HTML>. Le code peut, le cas échéant, faire l'objet d'une pondération. Autrement dit, il doit être situé au-dessus de la balise <HTML>, mais en dessous d'un autre bloc de code. Vous pouvez ajouter une pondération numérique spécifique comprise entre 1 et 99 (par exemple, location="aboveHTML+10"). Dreamweaver UltraDev insère les éléments pondérés dans l'ordre, de 1 à 99. 1 est le poids le plus léger et signifie que le code est placé au début du document utilisateur. 99 est le poids le plus lourd et signifie que le code est placé au-dessus, et proche, de la balise <HTML> dans le document utilisateur (la première ligne du document est affectée d'une pondération de 0. La ligne précédent la balise <HTML> a une pondération de 100. Ces deux valeurs sont des valeurs réservées). Remarque : l'attribut d'implantation belowHTML peut être lui aussi pondéré d'une valeur comprise entre 1 et 99. Si l'attribut belowHTML a la valeur 1, le code est placé au-dessous, et proche, de la balise de fermeture </HTML>. 99 signifie que le code est placé dans le bas du document utilisateur. Rappelons que 0 et 100 sont des valeurs réservées. Par exemple, un code qui dépend de l'existence d'un jeu d'enregistrements doit forcément suivre le code dudit jeu. Le jeu d'enregistrements est affecté d'une valeur de pondération de 50 ; Par conséquent, vous insérez votre code après le code du jeu, à l'aide d'une pondération plus élevée (par exemple, location="aboveHTML+60"). Remarque : une fois que le code est inséré, vous pouvez toujours le réorganiser manuellement. Comportements de serveur 121 Pour que plusieurs participants restent groupés, attribuez-leur la même pondération. La première fois que le comportement de serveur est appliqué, les participants sont ajoutés selon l'ordre dans lequel ils sont répertoriés dans le fichier groupe. Lorsque le comportement de serveur est mis à jour, l'ordre des participants reste inchangé. Supposons, par exemple, que votre fichier groupe test.xml répertorie les participants test_A, test_B et test_C, qui disposent tous trois d'une valeur d'emplacement location="aboveHTML+40". Lorsque vous ajoutez ce comportement de serveur, les participants sont insérés dans le document selon l'ordre dans lequel ils ont été définis dans test.xml. Si vous supprimez le code du participant test_B du document, un point d'exclamation rouge apparaît dans le panneau Comportements de serveur, pour indiquer que l'occurrence du comportement de serveur est incomplète. Si vous modifiez cette occurrence de comportement et que vous la réappliquez, le code manquant est inséré entre le code du participant test_A et celui de test_C. L'ordre des participants est ainsi conservé. Enveloppement d'une sélection Certains comportements de serveur agissent sur un bloc de code sélectionné par l'utilisateur. Le comportement de serveur doit envelopper la sélection pour pouvoir en fait s'y conformer. Le comportement de serveur Afficher la région en est un exemple type. Si vous enveloppez la sélection avec deux balises, vous créez deux participants XML. Si vous utilisez une seule balise, vous créez un seul participant. 1 Enveloppement d'une sélection à l'aide de deux balises distinctes En environnement ASP ou JSP, il est fréquent d'envelopper la sélection avec deux balises distinctes, comme suit : <% if (expression) { // tag1 mySBName %> Random HTML selection here <% } // tag2 end mySBName %> Pour envelopper une sélection à l'aide des fichiers XML, créez deux participants, le premier avec la valeur d'emplacement location="beforeSelection" et le deuxième avec location="afterSelection". Répertoriez ensuite les deux participants, selon l'ordre dans lequel ils se trouvent dans le fichier XML groupe. 122 Chapitre 11 2 Enveloppement d'une sélection à l'aide d'une seule balise Une autre technique permet d'envelopper la sélection à l'aide d'une seule balise. Par exemple, en environnement Cold Fusion, vous pouvez envelopper la sélection à l'aide d'une balise CFIF : <CFIF expression EQ true> Random HTML selection here </CFIF> Dans ce cas, comme il n'y a qu'une seule balise à ajouter, définissez location="wrapSelection" et insertText d'après la balise toute entière, comme suit : <insertText location="wrapSelection"> <![CDATA[ <CFIF expression EQ true></CFIF> ]]> </insertText> Remarque : UltraDev équilibre la sélection avant d'appliquer ce comportement de serveur. Si la sélection contient une balise d'ouverture sans la balise de fermeture correspondante, elle est étendue pour renfermer l'ensemble de la balise. Un comportement de serveur peut contenir des participants qui sont simplement la valeur d'un attribut. Par exemple, pour qu'un comportement de serveur représente une valeur dynamique, il peut être nécessaire de définir l'attribut ACTION d'une balise FORM, comme suit : Gestion des attributs <FORM ACTION="<%=MY_URL%>"> Pour ce faire, il suffit de définir location="nodeAttribute+ACTION". Voici une éventuelle représentation de insertText : <insertText location="nodeAttribute+action" ¬ nodeParamName="form__tag"> <![CDATA[<%=MY_URL%>]]> </insertText> Remarque : l'attribut nodeParamName contient le nom du paramètre utilisé pour transmettre un pointeur à une balise de formulaire. Si l'attribut ACTION ne figure pas déjà dans le formulaire, il y est ajouté. Lorsque le comportement de serveur est supprimé, l'attribut ACTION dans son ensemble disparaît. Pour que seule la valeur de l'attribut soit éliminée lors de la suppression, ajoutez une balise de suppression au fichier XML participant, puis définissez-la afin qu'elle supprime innerOnly, comme suit : <delete deleteType="innerOnly" /> Vous pouvez éventuellement gérer un autre type d'attribut, c'est-à-dire un attribut qui existe en tant que balise de serveur à l'intérieur d'une autre balise. Supposons, par exemple, que vous souhaitiez ajouter un attribut conditionnel pour activer une case à cocher. En environnement ASP, voici ce que cela pourrait donner : <input type="checkbox" name="flag1" ¬ <%if(expr)Response.Write("checked")%> > Comportements de serveur 123 Pour ajouter ce code ASP à l'intérieur d'une balise, utilisez location="nodeAttribute". Aucun attribut n'étant nommé, il est ajouté directement à la balise. Comme dans l'exemple ci-dessus, un pointeur est transmis à une balise de saisie. Exemple : <insertText location="nodeAttribute" nodeParamName="input__tag"> <![CDATA[<%if(expr)Response.Write("checked")%>]]> </insertText> Dans ce cas, seule la balise ASP entière est ajoutée ou supprimée ; une balise de suppression s'avère donc inutile. Recherche des comportements de serveur Rédaction de profils de recherche Pour que des comportements de serveur soient mis à jour ou supprimés, vous devez fournir à UltraDev les moyens de trouver chaque occurrence 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 chaîne (et non une expression régulière) indiquant l'éventuelle existence du comportement de serveur sur la page. Elle respecte la casse. Elle doit être courte et unique et ne contenir aucun espace ni autre section susceptible d'être modifiée par l'utilisateur. Supposons, par exemple, que le participant soit composé de la simple balise ASP : <% if (Recordset1.EOF) Response.Redirect("some_url_here") %> La chaîne quickSearch à consulter pourrait être représentée comme suit : <quickSearch>Response.Redirect</quickSearch> Pour des raisons de performances, le processus de recherche des occurrences de comportement de serveur commence par le profil quickSearch. Si cette chaîne figure dans le document et que le participant identifie un comportement de serveur (dans le fichier groupe, partType="identifier" pour ce participant), les fichiers associés sont alors chargés et la fonction findServerBehaviors() est appelée. A défaut de chaînes fiables à rechercher dans le participant (ou pour des raisons de débogage), vous pouvez laisser la chaîne quickSearch vide : <quickSearch></quickSearch> Dans ce cas, le comportement de serveur est toujours chargé et la recherche du document exécutée. 124 Chapitre 11 La balise searchPattern est ensuite utilisée pour analyser plus minutieusement le document et pour extraire des valeurs de paramètre du code du participant. Les profils de recherche spécifient l'emplacement de la recherche (l'attribut whereToSearch) et exploitent une série de balises searchPattern contenant des profils spécifiques. Ces profils peuvent utiliser de simples chaînes ou des expressions régulières. Le code de l'exemple précédent est une directive ASP, à savoir whereToSearch="directive", et une expression régulière identifie la directive et extrait les paramètres, comme suit : <quickSearch>Response.Write</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="rs,new__url"> /if\s*\((\w+)\.EOF\)\s*Response\.Redirect\("(.+)"/i </searchPattern> </searchPatterns> La chaîne recherchée est définie comme une expression régulière, commençant et finissant par une barre oblique et suivie d'un i pour éliminer le respect de la casse. Dans l'expression régulière, les caractères spéciaux (parenthèses, points, etc.) sont évités en les faisant précéder d'une barre oblique inverse. Les deux paramètres rs et new__url sont extraits de la chaîne à l'aide de sous-expressions entre parenthèses (les paramètres doivent être entre parenthèses). Ici, ils sont indiqués par (\w+) et (.+). Ces valeurs correspondent aux valeurs des expressions régulières normalement renvoyées par \1 et \2. Il arrive parfois que vous vouliez identifier un participant, en dépit de paramètres demeurés introuvables. Un des participants peut éventuellement stocker des informations facultatives, telles qu'un numéro de téléphone. Supposons, par exemple, le code ASP : Profils de recherche facultatifs <% //address block LNAME = "joe"; FNAME = "smith"; PHONE = "123-4567"; %> Les profils de recherche peuvent se présenter comme suit : <quickSearch>address</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="lname">/LNAME\s*=\s*"(.*)"/i¬ </searchPattern> <searchPattern paramNames="fname">/FNAME\s*=\s*"(.*)"/i¬ </searchPattern> <searchPattern paramNames="phone">/PHONE\s*=\s*"(.*)"/i¬ </searchPattern> </searchPatterns> Comportements de serveur 125 Si le numéro de téléphone n'est pas spécifié, comme dans : <% //address block LNAME = "joe"; FNAME = "smith"; %> c'est le participant tout entier qui ne sera pas reconnu. Pour résoudre ce problème, rendez searchPattern facultative en lui ajoutant l'attribut isOptional, comme suit : <quickSearch>address</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="lname">/LNAME\s*=\s*"(.*)"/i¬ </searchPattern> <searchPattern paramNames="fname">/FNAME\s*=\s*"(.*)"/i¬ </searchPattern> <searchPattern paramNames="phone" isOptional="true">¬ /PHONE\s*=\s*"(.*)"/i </searchPattern> </searchPatterns> A présent, le participant sera reconnu, que le numéro de téléphone soit trouvé ou non. Si un comportement de serveur comporte plusieurs participants, ils doivent être identifiés dans le document utilisateur et comparés les uns aux autres. Si l'utilisateur applique plusieurs occurrences du comportement de serveur à un document, chaque groupe de participants doit être comparé comme il se doit. Pour que la comparaison des participants s'effectue correctement, vous devez éventuellement modifier ou ajouter des paramètres, puis créer des participants qui soient identifiables de façon unique. Mode de comparaison des participants Voici les règles de fonctionnement de cette comparaison : les participants sont comparés quand l'ensemble des paramètres disposant du même nom ont la même valeur. Au-dessus et en dessous de la balise <HTML> ne peut figurer qu'une seule occurrence d'un participant, avec un jeu donné de valeurs de paramètre. Entre les balises <HTML>...</HTML>, les participants concordent également en fonction de leur position par rapport à la sélection ou aux Nudss communs utilisés pour l'insertion. Les participants sans paramètres concordent automatiquement. Supposons, par exemple, qu'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_p1" partType="identifier" /> </groupParticipants> </group> 126 Chapitre 11 puisse insérer deux participants simples au-dessus de la balise HTML, comme suit : <% //test_p1 %> <% //test_p2 %> <html> Ces participants sont localisés, puis comparés les uns aux autres 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 déjà. Si les paramètres des participants sont uniques, de multiples occurrences peuvent être insérées au-dessus de la balise <HTML>. Par exemple, en ajoutant un paramètre de nom au participant, un utilisateur peut saisir un nom unique dans la boîte de dialogue du comportement de serveur Test. S'il saisit le nom « aaa », les participants suivants seront insérés : <% //test_p1 name="aaa" %> <% //test_p2 name="aaa" %> <html> Si vous ajoutez de nouveau le comportement de serveur et saisissez un autre nom, soit « bbb », le document se présentera comme suit : <% //test_p1 <% //test_p2 <% //test_p1 <% //test_p2 <html> name="aaa" name="aaa" name="bbb" name="bbb" %> %> %> %> et deux occurrences du mot Test seront répertoriées dans le panneau Comportements de serveur. Si l'utilisateur tente d'ajouter une troisième occurrence à la page et qu'il la nomme « aaa », rien n'est ajouté étant donné qu'elle existe déjà. Dans la balise <HTML>, le processus de concordance peut également avoir recours à des informations de position. Supposons, par exemple, deux participants, l'un ajouté avant la sélection et l'autre après, comme suit : <% if (expression) { //mySBName %> Random HTML selection here <% } //end mySBName %> Comportements de serveur 127 Ces deux participants ne sont pourvus d'aucun paramètre et sont donc regroupés. Il est toutefois possible d'ajouter une autre occurrence de ce comportement de serveur ailleurs dans le code HTML, comme suit : <% if (expression) { //mySBName %> Random HTML selection here <% } //end mySBName %> More HTML here... <% if (expression) { //mySBName %> Another HTML selection here <% } //end mySBName %> A présent, les deux occurrences de chaque participant sont identiques (chose permise dans le code HTML) et sont comparées selon l'ordre dans lequel elles apparaissent dans le document. Voici un exemple type d'un problème de concordance et des solutions possibles pour l'éviter. Imaginons que vous désiriez créer un participant capable de calculer la taxe de certaines données dynamiques et d'afficher le résultat à la sélection. Exemple : <% total = Recordset1.Fields.Item("itemPrice").Value * 1.0825 %> <html> <body> The total (with taxes) is $<%=total%> </body> </html> Les deux participants concordent car ils n'ont aucun paramètre en commun. Toutefois, si vous ajoutez une deuxième occurrence de ce comportement de serveur, vous pouvez avoir : <% total = Recordset1.Fields.Item("itemPrice").Value * 1.0825 %> <% total = Recordset1.Fields.Item("salePrice").Value * 1.0825 %> <html> <body> The total (with taxes) is $<%=total%> Sale price (with taxes) is $<%=total%> </body> </html> 128 Chapitre 11 Ce comportement de serveur ne fonctionne plus correctement, car un seul paramètre est nommé total. Pour résoudre le problème, vérifiez qu'il existe bien un paramètre dont la valeur est unique pouvant être utilisé pour comparer les participants. Dans cet exemple, vous pouvez faire en sorte que le nom de la variable total soit unique en utilisant le nom de la colonne et avoir : <% itemPrice_total = Recordset1.Fields.Item("itemPrice").¬ Value * 1.0825 %> <% salePrice_total = Recordset1.Fields.Item("salePrice").¬ Value * 1.0825 %> <html> <body> The total (with taxes) is $<%=itemPrice_total%> Sale price (with taxes) is $<%=salePrice_total%> </body> </html> A présent, les profils de recherche peuvent identifier de façon unique et comparer les participants. Mise à jour des comportements de serveur Mise à jour des participants Par défaut, aucune balise <updatePatterns> ne figure dans les fichiers XML participants et les occurrences 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 paramètre dont la valeur a changé sera supprimé, puis rajouté au même endroit. Si l'utilisateur personnalise le code du participant dans le document, le participant peut ne plus être reconnu car les profils de recherche recherchent l'ancien code. Des profils de recherche plus courts permettent à l'utilisateur de personnaliser le code du participant dans le document ; toutefois, la mise à jour de l'occurrence du comportement de serveur risque d'entraîner le remplacement du participant et la perte des modifications personnalisées. Dans certains cas, il peut s'avérer préférable de laisser l'utilisateur personnaliser le code du participant après insertion dans le document. Pour ce faire, il suffit de limiter les profils de recherche et de fournir des profils de mise à jour dans le fichier XML. Une fois le participant ajouté à la page, seules quelques parties spécifiques seront mises à jour par le comportement de serveur. Supposons, par exemple, un simple participant doté de deux paramètres : Mise à jour de précision <% if (Recordset1.EOF) Response.Redirect("some_url_here") %> Comportements de serveur 129 Les profils de recherche peuvent se présenter comme suit : <quickSearch>Response.Write</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="rs,new__url"> /if\s*\((\w+)\.EOF\)\s*Response\.Redirect\("(.+)"/i </searchPattern> </searchPatterns> Le cas échéant, l'utilisateur peut ajouter un autre test à une occurrence particulière de ce code, par exemple : <% if (Recordset1.EOF || x > 2) Response.Redirect("some_url_here") %> A présent, les profils de recherche échouent (ils recherchent une parenthèse après EOF). Pour rendre les profils de recherche plus flexibles, vous pouvez les raccourcir en les partageant : <quickSearch>Response.Write</quickSearch> <searchPatterns whereToSearch="directive"> <searchPattern paramNames="rs">/(\w+)\.EOF/</searchPattern> <searchPattern paramNames="new__url"> /if\s*\(.+\)\s*Response\.Redirect\("(.*)"/i </searchPattern> </searchPatterns> Ces profils de recherche étant plus souples, l'utilisateur peut effectuer des ajouts au code. Toutefois, s'il utilise le comportement de serveur pour modifier l'URL, lorsqu'il clique sur OK, le participant est remplacé et ses personnalisations sont perdues. Pour des mises à jour plus précises, ajoutez une balise updatePatterns et un profil pour la mise à jour de chaque paramètre : <updatePatterns> <updatePattern paramNames="rs">/(\b)\w+(\.EOF)/¬ </updatePattern> <updatePattern paramNames="new__url"> /(Response\.Redirect\(").*(")/i </updatePattern> </updatePatterns> Dans les profils de mise à jour, les parenthèses sont inversées et placées autour du texte avant et après le paramètre. Pour les profils de recherche, utilisez textBeforeParam(param)textAfterParam. Pour les profils de mise à jour, utilisez (textBeforeParam)param(textAfterParam). Tout ce qui se trouve entre les deux sous-expressions entre parenthèses sera remplacé par la nouvelle valeur du paramètre. 130 Chapitre 11 Suppression de comportements de serveur L'utilisateur peut supprimer une occurrence qu'il a sélectionnée dans le panneau Comportements de serveur en cliquant sur le bouton Moins (-) ou en appuyant sur la touche Suppr du clavier. Sont éliminés tous les participants, hormis ceux qui sont communs à d'autres comportements de serveur. Notamment, si plusieurs comportements de serveur ont un pointeur de participant relié au même Nuds, le Nuds ne sera pas supprimé. Suppression par défaut et comptes de dépendance Par défaut, vous supprimez les participants en éliminant la balise entière. Si l'emplacement d'insertion correspond à "wrapSelection", seule la balise extérieure est supprimée. La déclaration d'attribut dans son ensemble est supprimée. Supposons, par exemple, un participant sur l'attribut ACTION d'une balise de formulaire, comme suit : <form action="<% my_participant %>"> Après la suppression, il ne reste plus que : <form> Il s'avère parfois utile de limiter la façon dont les participants sont supprimés. Pour cela, il suffit d'ajouter une balise de suppression (delete) au fichier XML. Supposons, par exemple, un participant correspondant à l'attribut HREF d'un lien, comme suit : Utilisation d'indicateurs pour limiter la suppression des participants <a href="<%=MY_URL%>">Link Text</a> Lorsque ce participant d'attribut est supprimé, la balise devient : <a>Link Text</a> qui n'apparaît plus sous forme de lien dans Dreamweaver. Vous pouvez éventuellement ne supprimer que la valeur de l'attribut, en ajoutant la balise suivante au fichier XML participant : <delete deleteType="innerOnly"/> Vous pouvez aussi éliminer la balise entière lorsque l'attribut est supprimé. La chaîne au départ est la suivante : <delete deleteType="tagOnly"/> et le texte résultant (après la suppression) est : Link Text Simplification des comportements de serveur findSBs(), applySB() et deleteSB() sont trois fonctions auxiliaires à votre disposition pour la création de comportements de serveur. Vous les appelez à partir des fonctions API de comportement de serveur. Vous devez également créer des fichiers XML, utilisés par les fonctions pour les données d'exécution. Comportements de serveur 131 findSBs() Disponibilité Dreamweaver UltraDev 4.0 Description Cette fonction recherche toutes les occurrences d'un comportement de serveur sur la page en cours, ainsi que tous les participants. Elle définit le titre, le type, les tableaux des participants, des poids et des types, l'attribut selectedNode et l'indicateur « incomplete ». Elle crée également un objet de paramètre contenant une liste de propriétés définissables par l'utilisateur (le nom d'un jeu d'enregistrements et le nom d'une colonne, par exemple). Renvoyez ce tableau depuis la fonction findServerBehaviors(). Arguments est une chaîne de titre facultative utilisée pour remplacer le titre XML. Utile pour la localisation. Voir « Schéma XML de comportement de serveur », page 145 pour plus de détails. serverBehaviorTitle Valeurs renvoyées Un tableau d'objets JavaScript, avec les propriétés requises définies. Cette fonction renvoie un tableau vide si les fichiers XML groupes se réfèrent au comportement de serveur appelant. Exemple Le code suivant recherche dans le document utilisateur en cours toutes les occurrences d'un comportement de serveur particulier : function findServerBehaviors() { allMySBs = findSBs(); return allMySBs; } 132 Chapitre 11 et renvoie le tableau suivant, étant donné deux comportements de serveur dans le document utilisateur : allMySBs[0].title = "Redirect If Empty (Recordset1)" allMySBs[0].type = "redirectIfEmpty"; allMySBs[0].selectedNode = true; allMySBs[0].incomplete = false; allMySBs[0].participants[0] = someAspNodePointer; allMySBs[0].weights[0] = aboveHTML+51; allMySBs[0].types[0] = "redirectIfEmpty_main"; allMySBs[0].parameters.rs = "Recordset1"; allMySBs[0].parameters.url = "http:www.yahoo.com"; allMySBs[1].title = "Redirect If Empty (Recordset2)" allMySBs[1].type = "redirectIfEmpty"; allMySBs[1].selectedNode = true; allMySBs[1].incomplete = false; allMySBs[1].participants[0] = someAspNodePointer; allMySBs[1].weights[0] = 51; allMySBs[1].types[0] = "redirectIfEmpty_main"; allMySBs[1].parameters.rs = "Recordset2"; allMySBs[1].parameters.url = "http://www.excite.com"; applySB() Disponibilité Dreamweaver UltraDev 4.0 Description Cette fonction insère ou met à jour le code d'exécution du comportement de serveur. Si le paramètre sbObj est null, la fonction insère un nouveau code d'exécution ; dans le cas contraire, elle met à jour le code d'exécution existant indiqué par l'objet sbObj. Définissez les paramètres utilisateur sous la forme de propriétés sur un objet JavaScript, puis transmettez-les en tant que paramObj. Ils doivent correspondre à tous les paramètres déclarés sous la forme @@paramName@@ dans le texte d'insertion XML. Si un participant dépend d'un pointeur de Nuds (tel que le poids d'insertion relatif à un Nuds), une propriété nameTag doit être définie. Arguments sbObj, paramObj • sbObj • paramObj est l'occurrence de l'objet du comportement de serveur à ajouter au document utilisateur. est l'objet contenant les paramètres utilisateur. Comportements de serveur 133 Valeurs renvoyées true si le comportement de serveur a été correctement ajouté au document utilisateur ; false dans le cas contraire. Exemple Dans l'exemple suivant, vous renseignez l'objet paramObj avec les données de l'utilisateur, puis vous appelez la fonction applySB et transmettez les données et votre comportement de serveur, sbObj. function applyServerBehaviors(sbObj) { // get all UI values here... paramObj = new Object(); paramObj.rs = rs; paramObj.col = col; paramObj.formFields = ....; paramObj.url = new__url; paramObj.form__tag = formObj; applySB(paramObj, sbObj); } deleteSB() Disponibilité Dreamweaver UltraDev 4.0 Description Cette fonction supprime tous les participants de l'occurrence du comportement de serveur sbObj. Le participant dans son ensemble est supprimé, à moins que le fichier XML n'indique des instructions de suppression spéciales à l'aide de la balise <delete>. Elle ne supprime pas les participants appartenant à plusieurs occurrences de comportement de serveur (comptage de référence > 1). Arguments est l'occurrence de l'objet du comportement de serveur à supprimer du document utilisateur. sbObj Valeurs renvoyées Aucune. Exemple L'exemple suivant illustre la suppression de tous les participants du comportement de serveur sbObj, hormis ceux qui sont protégés par la balise <delete> du fichier XML. function deleteServerBehavior(sbObj) { deleteSB(sbObj); } 134 Chapitre 11 displayHelp() Description Si cette fonction est définie, un bouton Aide s'affiche sous les boutons OK et Annuler dans la boîte de dialogue. Cette fonction est appelée lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyées Aucune. Exemple Dans l'exemple suivant, la fonction displayHelp() ouvre dans une fenêtre de navigateur un fichier contenant les instructions : function displayHelp(){ dreamweaver.browseDocument('http://www.hotwired.com/¬ webmonkey/javascript/code_library/wm_pos2_elmnt_dw/¬ ?tw=javascript'); } Comment appeler les fonctions API de comportement de serveur Les fonctions API de comportement de serveur sont appelées dans les situations suivantes : • La fonction findServerBehaviors() est appelée à l'ouverture du document et à chaque fois qu'un participant est modifié. Elle recherche des occurrences du comportement de serveur dans le document utilisateur. Pour chaque occurrence trouvée, findServerBehaviors() crée un objet JavaScript et lui attache des informations d'état sous la forme de propriétés JavaScript. Comportements de serveur 135 • Lorsqu'elle est mise en œuvre, UltraDev appelle la fonction analyzeServerBehavior() pour chaque comportement trouvé dans le document utilisateur après que toutes les fonctions findServerBehaviors() ont été appelées. Lorsque la fonction findServerBehaviors() crée un objet de comportement, elle définit normalement les quatre propriétés (incomplete, participants, selectedNode et title). Cependant, il est parfois plus facile de retarder la configuration de certaines des propriétés jusqu'à ce que tous les autres comportements de serveur aient trouvé des occurrences d'eux-mêmes. Par exemple, le comportement Déplacer vers l'enregistrement suivant est composé de deux participants : un objet lien et un objet jeu d'enregistrements. Au lieu de rechercher l'objet de jeu d'enregistrements dans sa fonction findServerBehaviors(), il est plus simple d'attendre que la fonction findServerBehaviors() du comportement du jeu d'enregistrements soit exécutée, car ledit jeu recherche toutes les occurrences de lui-même. Lorsque la fonction analyzeServerBehavior() du comportement Déplacer vers l'enregistrement suivant est appelée, un tableau lui est transmis, contenant tous les comportements de serveur du document. La fonction peut rechercher l'objet de jeu d'enregistrements dans le tableau, puis ajouter ledit jeu à son tableau de participants. En cours d'analyse, il arrive que deux comportements ou plus identifient une seule balise dans le document utilisateur comme étant une occurrence de ce comportement. Supposons, par exemple, que la fonction findServerBehaviors() pour le comportement Attribut dynamique détecte une occurrence du comportement Attribut dynamique associée à une balise <input> dans le document utilisateur. Simultanément, la fonction findServerBehaviors() pour le comportement Champ de texte dynamique a analysé la même balise <input> et détecté une occurrence du comportement Champ de texte dynamique. Le panneau Comportements de serveur affiche alors à la fois le bloc Attribut dynamique et le comportement Champ de texte dynamique. Pour corriger ce problème, utilisez les fonctions analyzeServerBehavior() pour supprimer tous les comportements de serveur redondants sauf un. Pour supprimer un comportement de serveur, une fonction analyzeServerBehavior() peut définir la propriété « deleted » dudit comportement sur la valeur true. Si la propriété deleted a toujours la valeur true lorsqu'UltraDev finit d'appeler les fonctions analyzeServerBehavior(), le comportement disparaît de la liste. 136 Chapitre 11 • Lorsque l'utilisateur clique sur le bouton Plus (+) du panneau Comportements de serveur, le menu contextuel s'affiche. Pour déterminer le contenu du menu, UltraDev recherche d'abord un fichier ServerBehaviors.xml dans le même répertoire que celui des comportements. ServerBehaviors.xml fait référence aux fichiers HTML devant apparaître dans le menu. Si le fichier HTML référencé contient une balise de titre (title), le contenu de cette balise s'affiche dans le menu. Par exemple, si le fichier ServerBehaviors/ ASP/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 apparaît dans le menu. Par exemple, si GetRecords.htm ne contient pas de balise de titre, GetRecords s'affiche dans le menu. S'il n'y a pas de fichier ServerBehaviors.xml ou si le répertoire contient un ou plusieurs fichiers HTML non mentionnés dans ServerBehaviors.xml, UltraDev 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 répertoire ServerBehaviors s'affiche dans le menu, ajoutez l'instruction suivante sur la première ligne du fichier HTML : <!-- MENU-LOCATION=NONE --> Remarque : pour qu'un fichier du répertoire ServerBehaviors s'applique à un seul langage de script spécifique, ajoutez l'instruction suivante de manière à ce qu'elle devienne la première ligne du fichier HTML : <!-- SCRIPTING-LANGUAGE=XXX --> où XXX correspond au langage de script. Cette instruction provoque l'apparition du comportement de serveur dans le menu Plus (+) du panneau Comportements de serveur, seulement quand le langage de script sélectionné est XXX. • La fonction canApplyServerBehavior() est appelée lorsque l'utilisateur sélectionne un élément dans le menu. Si cette fonction renvoie la valeur true, une boîte de dialogue s'affiche. Lorsque l'utilisateur clique sur OK, la fonction applyServerBehavior() est appelée. • Si l'utilisateur double-clique sur un comportement de serveur existant pour le modifier, UltraDev affiche la boîte de dialogue, exécute le gestionnaire onLoad sur la balise BODY (si elle existe), puis appelle inspectServerBehavior(). La fonction inspectServerBehavior() renseigne les éléments du formulaire avec les valeurs des paramètres en cours. Lorsque l'utilisateur clique sur OK, UltraDev appelle à nouveau la fonction applyServerBehavior(). Comportements de serveur 137 • Si l'utilisateur clique sur le bouton Moins (-), la fonction deleteServerBehavior() deleteServerBehavior() est appelée. La fonction supprime les comportements correspondants du document. • Lorsque l'utilisateur sélectionne un comportement de serveur et appuie sur Ctrl+C (ou Ctrl+X), UltraDev transmet l'objet représentant le comportement de serveur à sa fonction copyServerBehavior(). La fonction copyServerBehavior() ajoute à l'objet de comportement les propriétés supplémentaires nécessaires à son collage ultérieur. Une fois la fonction copyServerBehavior() renvoyée, UltraDev convertit l'objet de comportement en un formulaire qui peut être placé dans le Pressepapiers. Pendant la conversion de l'objet, UltraDev supprime toutes les propriétés faisant référence à des objets ; toute propriété de l'objet autre qu'un nombre, un opérateur booléen ou une chaîne est perdue. Lorsque l'utilisateur appuie sur Ctrl+V, UltraDev décompresse le contenu du Presse-papiers et génère un nouvel objet de comportement de serveur. Ce nouvel objet est identique à l'original, sauf qu'il ne contient aucune propriété faisant référence à des objets. UltraDev transmet le nouvel objet de comportement à pasteServerBehavior(). La fonction pasteServerBehavior() ajoute le comportement au document utilisateur. Une fois la fonction pasteServerBehavior() renvoyée, UltraDev appelle les fonctions findServerBehaviors() pour obtenir la nouvelle liste des comportements de serveur présents dans le document utilisateur. Les utilisateurs peuvent copier et coller des comportements d'un document à un autre. En fait, ils peuvent copier et coller des comportements d'une session à une autre, c'est-à-dire copier un comportement, quitter UltraDev, redémarrer UltraDev, puis coller le comportement. Pour échanger des informations, les fonctions copyServerBehavior() et pasteServerBehavior() doivent se baser uniquement sur les propriétés de l'objet de comportement. API de comportement de serveur Les fonctions suivantes sont les API que vous pouvez utiliser pour créer des comportements de serveur. Pour vous simplifier la tâche, imbriquez des fonctions *SB() à l'intérieur de ces fonctions et créez des fichiers XML. Pour plus d’informations, voir « Simplification des comportements de serveur », page 131. analyzeServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 138 Chapitre 11 Description Cette fonction permet aux comportements de serveur de définir leurs indicateurs sur les valeurs incomplete et deleted. Une fois la fonction findServerBehaviors() appelée 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 présent dans le tableau, la fonction analyzeServerBehavior() est appelée. Par exemple, pour le comportement Texte dynamique, UltraDev appelle la fonction analyzeServerBehavior() dans DynamicText.htm (ou DynamicText.js). La fonction analyzeServerBehavior() a notamment pour but de terminer la définition de toutes les propriétés (incomplete, participants, selectedNode et title) sur l'objet de comportement (il est parfois plus facile d'exécuter cette tâche après que findServerBehaviors() a généré une liste exhaustive des comportements de serveur présents dans le document utilisateur). L'autre but de la fonction analyzeServerBehavior() est de rechercher si plusieurs comportements se réfèrent à la même balise dans le document utilisateur. Dans ce cas, la propriété deleted est utilisée pour supprimer du tableau tous les comportements sauf un. Voici un exemple de la manière dont analyzeServerBehavior() fonctionne : Supposons trois comportements de serveur sur une page : Recordset1, DynamicText1 et DynamicText2. Pour que la liste soit considérée comme exhaustive, les deux comportements de serveur DynamicText requièrent Recordset1 pour exister sur la page. Après que findServerBehaviors() a repéré les trois comportements de serveur, la fonction analyzeServerBehavior() est appelée pour les trois comportements trouvés. Lorsque la fonction analyzeServerBehavior() est appelée pour DynamicText1, elle inspecte le tableau de tous les objets de comportement de serveur présents sur la page, à la recherche de celui qui appartient à Recordset1. Si elle ne trouve pas l'objet JavaScript de comportement de serveur qui appartient à Recordset1, la propriété incomplete est affectée 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 problème. De même, lorsque la fonction analyzeServerBehavior() est appelée pour DynamicText2, elle recherche l'objet JavaScript appartenant à Recordset1. Comme Recordset1 ne dépend d'aucun autre comportement de serveur, il n'a pas besoin de définir la fonction analyzeServerBehavior() dans cet exemple. Arguments behavior, [behaviorArray] • • behavior est un objet JavaScript représentant le comportement à analyser. est un tableau d'objets JavaScript représentant l'ensemble des comportements de serveur trouvés sur une page. [behaviorArray] Valeurs renvoyées Aucune. Comportements de serveur 139 applyServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Cette fonction consulte les valeurs des éléments de formulaire dans la boîte de dialogue et ajoute le comportement au document utilisateur. UltraDev appelle cette fonction lorsque l'utilisateur clique sur OK dans la boîte de dialogue Paramètres. Si la fonction est exécutée avec succès, la boîte de dialogue Paramètres est fermée. Si elle échoue, la boîte de dialogue Paramètres reste ouverte et un message d'erreur s'affiche à l'écran. Cette fonction peut modifier un document utilisateur. Voir également « applySB() », page 133. Arguments serverBehavior ou null est un objet JavaScript représentant le comportement de serveur ; transmis s'il modifie un comportement existant. S'il s'agit d'un nouveau comportement, transmet la valeur null. serverBehavior Valeurs renvoyées Une chaîne vide en cas de succès. Si la fonction échoue, la boîte de dialogue Paramètres reste ouverte et un message d'erreur s'affiche à l'écran. canApplyServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Cette fonction détermine si un comportement peut être appliqué. UltraDev appelle cette fonction avant d'afficher la boîte de dialogue Paramètres. Si la fonction renvoie la valeur true, la boîte de dialogue Paramètres s'affiche à l'écran. Si elle renvoie false, la boîte de dialogue Paramètres ne s'affiche pas et la tentative d'ajout d'un comportement de serveur est interrompue. Arguments behavior ou null est un objet JavaScript représentant le comportement ; transmis s'il modifie un comportement existant. S'il s'agit d'un comportement existant, transmet la valeur null. behavior Valeurs renvoyées true 140 Chapitre 11 si le comportement peut être appliqué, sinon false. copyServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Lorsqu'elle est mise en œuvre, cette fonction permet aux utilisateurs de copier des occurrences du comportement de serveur spécifié. Elle est mise en œuvre pour les jeux d'enregistrements, par exemple. Lorsqu'un utilisateur sélectionne un jeu d'enregistrements dans les panneaux Comportements de serveur ou Liaisons de données, il appuie sur les touches Ctrl+C pour copier le comportement dans le Presse-papiers ou sur Ctrl+X pour le couper. Ctrl+C et Ctrl+X n'ont aucun effet sur les comportements de serveur qui ne mettent pas en œuvre cette fonction. L'utilisation de copyServerBehavior() n'est pas obligatoire. Pour plus d'informations, voir « Comment appeler les fonctions API de comportement de serveur », page 135. Pour échanger des informations, les fonctions copyServerBehavior() et pasteServerBehavior() doivent uniquement se baser sur les propriétés de l'objet de comportement capables d'être converties en chaînes. Le Presse-papiers ne contient que du texte brut ; il est, pour cette raison, nécessaire de résoudre les Nudss participant dans le document et d'enregistrer le texte brut qui en résulte dans une propriété secondaire. Remarque : il est également important de mettre en œuvre la fonction pasteServerBehavior() pour permettre à l'utilisateur de coller le comportement dans un document UltraDev. Arguments behavior est un objet JavaScript représentant le comportement. Valeurs renvoyées true si false. le comportement a été copié avec succès dans le Presse-papiers, sinon deleteServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Cette fonction supprime le comportement du document utilisateur. Elle est appelée lorsque l'utilisateur clique sur le bouton Moins (-) du panneau Comportements de serveur. Elle permet de modifier un document utilisateur. Voir également « deleteSB() », page 134. Comportements de serveur 141 Arguments behavior est un objet JavaScript représentant le comportement. Valeurs renvoyées Aucune. findServerBehaviors() Disponibilité Dreamweaver UltraDev 1.0 Description Cette fonction parcourt le document utilisateur à la recherche d'occurrences d'elle-même. Pour chaque occurrence trouvée, findServerBehaviors() crée un objet JavaScript et lui attache des informations d'état sous la forme de propriétés JavaScript. Les quatre propriétés requises sont incomplete, participants, title et selectedNode. Vous pouvez définir d'autres propriétés en fonction de vos besoins. UltraDev appelle cette fonction après l'exécution d'un traducteur ou chaque fois qu'un participant est modifié. Pour plus d'informations sur les traducteurs de données, voir « Mode de fonctionnement des traducteurs de données ». Voir également « findSBs() », page 132 et « dw.getParticipants() », page 143. Arguments Aucun. Valeurs renvoyées Un tableau d'objets JavaScript ; la longueur du tableau correspond au nombre d'occurrences du comportement trouvées dans la page. inspectServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Cette fonction détermine les paramètres de la boîte de dialogue Paramètres en fonction de l'objet de comportement spécifié. UltraDev appelle cette fonction lorsqu'un utilisateur affiche la boîte de dialogue Paramètres, uniquement si celui-ci modifie un comportement existant. Arguments behavior est un objet JavaScript représentant le comportement. Il s'agit du même objet que celui renvoyé par findServerBehaviors() (appelée à l'ouverture du document). Valeurs renvoyées Aucune. 142 Chapitre 11 pasteServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Lorsqu'elle est mise en œuvre, cette fonction permet aux utilisateurs de coller des occurrences du comportement de serveur spécifié. Elle est utilisée avec copyServerBehavior(). Lorsque l'utilisateur appuie sur les touches Ctrl+V pour coller le comportement de serveur, UltraDev décompresse le contenu du Pressepapiers et génère un nouvel objet de comportement. Ce nouvel objet est identique à l'original, sauf qu'il ne contient aucune propriété de pointeur. UltraDev transmet le nouvel objet de comportement à pasteServerBehavior(). La fonction pasteServerBehavior() se base sur les propriétés de l'objet de comportement pour déterminer ce qui doit être ajouté au document utilisateur. La fonction pasteServerBehavior() ajoute ensuite le comportement au document utilisateur. Une fois la fonction pasteServerBehavior() renvoyée, UltraDev appelle les fonctions findServerBehaviors() pour obtenir la nouvelle liste des comportements de serveur présents dans le document utilisateur. La mise en œuvre de la fonction pasteServerBehavior() n'est pas obligatoire. Pour plus d'informations, voir « Comment appeler les fonctions API de comportement de serveur », page 135. Remarque : si vous implémentez cette fonction, vous devez également implémenter la fonction copyServerBehavior(). Arguments behavior est un objet JavaScript représentant le comportement. Valeurs renvoyées true si false. le comportement a été collé avec succès depuis le Presse-papiers, sinon dw.getParticipants() Disponibilité Dreamweaver UltraDev 4.0 Description La fonction JavaScript dw.getParticipants() répertorie les participants présents dans le document utilisateur. Une fois tous les participants du comportement trouvés, UltraDev mémorise ces listes de participants au niveau interne. En général, vous utilisez cette fonction avec findServerBehaviors() pour repérer les occurrences d'un comportement dans le document utilisateur. Arguments est le nom du fichier groupe ou participant qui contient les noms des participants à localiser dans le document utilisateur. Cette chaîne est le nom de fichier, sans le suffixe d'extension .xml. xmlFilename Comportements de serveur 143 Valeurs renvoyées Un tableau contenant toutes les occurrences du participant spécifié (ou, dans le cas d'un fichier groupe, une occurrence d'un participant dans le groupe) apparaissant dans le document utilisateur. Le tableau contient des objets JavaScript, avec un élément pour chaque occurrence de chaque participant trouvé dans le document utilisateur. Le tableau est trié selon l'ordre dans lequel les participants apparaissent dans le document. Chaque objet JavaScript présente les propriétés suivantes : • participantNode • participantName : un pointeur relié au Nuds dans le document utilisateur et considéré comme participant. : le nom du fichier XML du participant (moins le suffixe « .xml »). • : un objet JavaScript qui stocke toutes les paires paramètre/valeur (voir l'exemple). parameters Exemple Etant donné un comportement avec un seul participant, nommé « SetSession.xml », supposons que le profil de recherche du participant recherche ce qui suit : <% Session("@@parameterName@@") = "@@value@@" %> Supposons également que le document utilisateur contienne deux occurrences du participant : <% Session("User") = "Bob" %> <% Session("Password" = "password" %> Un appel à la fonction dw.getParticipants("SetSession") renvoie un tableau contenant deux éléments. Le premier élément présente les propriétés suivantes : array[0].participantNode = ptrJsObj Où ptrJsObj pointe vers un objet JavaScript dans le DOM du document utilisateur. Cet objet JavaScript correspond à la directive de script <% Session("User") = "Bob" %> : array[0].participantName = "SetSession" array[0].parameters.parameterName = "User" array[0].parameters.value = "Bob" 144 Chapitre 11 12 CHAPITRE 12 Schéma XML de comportement de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le schéma XML UltraDev sépare votre code d'exécution de comportement de serveur en fonction de la façon dont UltraDev le déploie. Vous pouvez utiliser des fichiers XML pour indiquer à UltraDev comment insérer, rendre, trouver, mettre à jour et supprimer votre code d'exécution. UltraDev accède à ces fichiers XML lorsque vous appelez les fonctions findSBs(), applySB() et deleteSB() dans votre fichier Comportement de serveur. Si vous créez un comportement de serveur entièrement nouveau, vous devez créer les fichiers XML requis par UltraDev pour pouvoir associer et déployer vos fonctions avec les données appropriées. Si vous modifiez un comportement de serveur créé dans l'éditeur de comportements de serveur UltraDev, il est possible que vous deviez également modifier les fichiers XML. Tandis que vous créez ou modifiez chaque fichier XML, vous devez maintenir les dépendances qui existent entre les composants XML. Ce chapitre présente le schéma XML UltraDev et explique comment les fichiers XML Groupe et Participant sont construits pour créer et modifier la description des données de votre extension. 145 eXtensible Markup Language (Langage de Marquage eXtensible) Un langage de marquage est un moyen de définir et de déterminer la structure d'un document. Il indique la façon dont les éléments sont organisés et non pas ce qui est présenté. Le langage XML (eXtensible Markup Language) est décrit par le W3C (World Wide Web Consortium ; http://www.w3.com/xml) comme un profil d'application du langage SGML (Standard Generalized Markup Language ; Langage de Marquage généralisé standard). XML a été qualifié de SGML simplifié, abrégé ou limité, mais son influence sur la conception d'applications est considérable. Contrairement au langage SGML, XML permet aux développeurs de créer leurs propres balises, puis de les regrouper dans une structure hiérarchique et de définir des règles d'utilisation de ces balises. XML change ainsi la façon dont les informations sont structurées et partagées sur Internet, entre les fournisseurs et entre les différents composants des environnements de développement à plusieurs niveaux. UltraDev, cependant, utilise XML pour effectuer des opérations bien spécifiques. C'est pourquoi il suffit de connaître le schéma et certaines règles de base pour pouvoir créer et modifier sans aucune difficulté des fichiers XML UltraDev. Observation d'un fichier HTML Vous pouvez utiliser votre connaissance de HTML, autre sous-ensemble de SGML, pour observer XML. Vous avez probablement construit des sections HTML similaires à ce qui suit : <H1>Redwood Medical Group</H1> <H2>Dr. Jon</H2> <H3>Podiatry</H3> <p>Dr. Jon is not taking new patients.</p> Le Docteur Jon est membre du Groupe médical Redwood. Sa spécialité est la podologie. Il ne peut pas prendre de nouveaux patients. L'emploi de la balise <H1> indique que le Groupe médical Redwood est le plus haut niveau d'information présenté. La balise <H1>, cependant, ne distingue le Groupe médical Redwood d'aucun autre type d'informations qu'elle pourrait contenir. En d'autres termes, le jeu de balises <H1></H1> pourrait tout aussi bien contenir <H1>Groupe de Rock'n Roll Redwood</H1> et ainsi n'établir aucune distinction entre un groupe médical et un groupe de rock and roll. XML peut établir cette distinction. 146 Chapitre 12 Observation d'un fichier XML Voyez comment les mêmes informations pourraient être organisées dans un document XML : <!-- Medical Group Data --> <GROUP medical="Redwood Medical Group"> <PARTICIPANT Doctor="Dr. Jon"> <SPECIALTY>Podiatry</SPECIALTY> <AVAIL newPatients="false"/> </PARTICIPANT> </GROUP> Le schéma XML spécifie les métadonnées des balises, c'est-à-dire la façon dont les données sont structurées et utilisées. Dans l'exemple précédent, un commentaire s'ouvre avec <!-- et se ferme avec -->. La balise <H1> est remplacée par une balise donnant des informations porteuses de sens sur la façon dont ce type de document organise ses données par rapport à un document contenant, par exemple, une liste de groupes de rock and roll. Le premier élément <GROUP> indique que les données sont classées par groupes. Le groupe contient des informations sur un groupe médical, le Groupe médical Redwood. La paire nom=valeur, medical="Redwood Medical Group", est un attribut. Un autre attribut est Doctor="Dr. Jon", qui indique que le PARTICIPANT Dr. Jon participe à ce groupe médical en tant que Docteur. La balise PARTICIPANT possède deux champs, SPECIALTY et AVAIL (disponibilité), contenant les valeurs Podiatry (podologie) et false, respectivement. Remarquez que la balise <AVAIL> n'a pas de balise de fermeture correspondante. Au lieu de cela, la balise se termine par un /> pour indiquer que le jeu de balises est complet. L'organisation des données à l'intérieur de balises de métadonnées permet de faire correspondre les balises à d'autres sources de données. Les balises peuvent être reliées à des tableaux et à des champs de base de données. Dans cet exemple, les valeurs Redwood Medical Group et Dr. Jon pourraient être extraites d'une base de données. Comme avec le code HTML, cet exemple donne une vue simplifiée d'un document XML. Si vous observez le schéma XML d'UltraDev, vous constaterez que les composants XML donnent les moyens d'implémenter un comportement de serveur. Vous n'aurez pas à créer de nouveaux jeux de balises, groupes ou règles. Vous devez comprendre les balises et les règles pour pouvoir utiliser les fichiers XML UltraDev pour créer, mettre à jour et déployer vos extensions de comportement de serveur. Schéma XML de comportement de serveur 147 Schéma XML de comportement de serveur UltraDev Le schéma XML d'UltraDev structure les métadonnées par groupes et participants, comme dans la section précédente, mais les participants représentent des blocs de code et les groupes définissent les participants regroupés pour former un comportement de serveur individuel. Il existe deux types de fichiers XML correspondants : les fichiers Groupe et les fichiers Participant. Tous les fichiers résident dans le dossier Configuration/ExtensionData et, au-dessous de ce niveau, les dossiers peuvent être organisés en fonction des comportements de serveur que vous créez. Fichiers Groupe En général, les fichiers Groupe contiennent une liste de participants et les fichiers Participant comportent toutes les données sur les participants spécifiques au modèle de serveur. Les fichiers Participant peuvent être utilisés par plusieurs extensions. Voici une vue de haut niveau du fichier XML Groupe UltraDev. Pour obtenir une liste complète des éléments et des attributs, reportez-vous à la section « Fichiers XML Groupe », page 153 plus avant dans ce chapitre. <group serverBehavior="value"> <title>value</title> <groupParticipants selectParticipant="value"> <groupParticipant name="value" partType="value" /> <groupParticipant name="value" partType="value" /> ... </groupParticipants> </group> L'élément group déclare un attribut du type serverBehavior. value est le nom du fichier d'extension, par exemple, myExtension.htm (qui doit se trouver dans le dossier Configuration/ServerBehaviors). Dans la balise de bloc groupParticipants, chaque balise groupParticipant indique le fichier Participant XML contenant le bloc de code à insérer. La valeur de l'attribut name est le nom du fichier Participant moins l'extension .xml (par exemple, myJSPCode). Fichiers Participant Un participant représente un bloc de code unique sur la page, tel une balise de serveur, une balise HTML ou un attribut. Le fichier Participant décrit cet élément pour chaque modèle de serveur pris en charge, comme ASP/JavaScript, ASP/ VBScript, JSP et ColdFusion. A l'intérieur de chaque spécification de modèle de serveur, il décrit l'élément en détail : comment l'insérer, le trouver et le mettre à jour. 148 Chapitre 12 Remarque : bien que cela ne soit pas obligatoire, un participant peut décrire un bloc de code pour plus d'un modèle de serveur. Pour pouvoir être utilisé par un comportement de serveur, le fichier Participant doit figurer dans le fichier Groupe, lequel définit le comportement de serveur particulier, et le comportement de serveur doit appeler les fonctions findSBs(), applySB() et deleteSB(). Un seul et même fichier Participant peut être partagé par plusieurs fichiers Groupe et par plusieurs comportements de serveur. Si vous deviez expliquer à quelqu'un comment ajouter un comportement de serveur, par exemple un code d'exécution JSP, à un document, vous devriez lui donner des informations très détaillées, y compris le type de serveur à rechercher, l'endroit où insérer le code, ce à quoi le code ressemble et les paramètres devant être remplacés par les données utilisateur ou d'exécution. C'est ce que chaque fichier XML Participant décrit pour chaque bloc de code. Le fichier XML Participant décrit les données suivantes à propos de votre comportement de serveur à l'aide de balises spécifiques à UltraDev : • Le type de serveur Exemple : <implementation serverModel="JSP"> ... </implementation> • Le code et l'endroit où placer l'occurrence unique. Ces informations sont définies par les paramètres de balise XML insertText et sont insérées par la fonction applySB(). Exemple : <insertText location="aboveHTML"> <!CDATA[ <%= //specific run-time code here %> ]]> </insertText> • Comment reconnaître les occurrences figurant déjà sur la page. Ces occurrences sont recherchées par la fonction findSB(). Exemple : <searchPatterns whereToSearch="directive"> <searchPattern><!CDATA[/search pattern here/]]></ searchPattern> <searchPattern><!CDATA[/another search pattern/]]></ searchPattern> </searchPatterns> Schéma XML de comportement de serveur 149 Ce fichier Participant déclare le modèle de serveur avec lequel il fonctionne. Le jeu de balises implementation contient toutes les données sur le participant se rapportant à un langage et à un modèle de serveur spécifiques. L'élément quickSearch fournit la chaîne qu'UltraDev doit utiliser pour effectuer une recherche rapide. La recherche rapide permet de trouver des marqueurs indiquant que le document de l'utilisateur doit faire l'objet d'une recherche détaillée. La recherche détaillée permet de déterminer si le document de l'utilisateur contient un participant précis. La balise insertText fournit le texte à insérer dans le document de l'utilisateur. Dans la balise de bloc searchPatterns, chaque searchPattern contient un profil utilisé pour rechercher des occurrences de code d'exécution et pour extraire des paramètres spécifiques. Modification de fichiers XML Vous devez respecter les conventions de codage UltraDev lorsque vous modifiez un fichier. En particulier, faites très attention à la dépendance d'un élément par rapport à un autre. Par exemple, si vous mettez à jour les balises que vous insérez, il est possible que vous deviez également mettre à jour les profils de recherche. Expressions régulières Vous devez connaître les expressions régulières implémentées dans JavaScript 1.2. Vous devez également savoir à quel moment il convient de les utiliser dans les fichiers XML UltraDev. Par exemple, les expressions régulières ne peuvent pas être utilisées dans les valeurs quickSearch. En revanche, elles sont employées dans searchPattern pour la recherche et l'extraction de données. Les expressions régulières décrivent des chaînes de texte en utilisant des caractères affectés d'une signification spéciale (métacaractères) pour représenter le texte, le diviser et le traiter selon des règles prédéfinies. Les expressions régulières sont des outils d'analyse et de traitement puissants, du fait qu'elles constituent une méthode généralisée de représentation de profil. Tout bon manuel de référence sur JavaScript 1.2 comporte une section ou un chapitre consacré aux expressions régulières. Nous examinons ici la façon dont les fichiers XML Dreamweaver UltraDev utilisent les expressions régulières pour rechercher des paramètres dans votre code d'exécution et pour extraire leurs valeurs. Chaque fois qu'un utilisateur modifie un comportement de serveur, les valeurs des paramètres doivent être extraites des occurrences du code d'exécution. Ce processus d'extraction repose sur les expressions régulières. 150 Chapitre 12 Il importe que vous connaissiez quelques métacaractères (caractères spéciaux) et métaséquences (regroupements de caractères spéciaux) utiles dans les fichiers XML UltraDev. Expression régulière Description \ Quitter les caractères spéciaux. Par exemple : \. rétablit le métacaractère à un point littéral, \/ rétablit la barre oblique à son sens littéral et \) rétablit la parenthèse à son sens littéral. / ... /i Ne pas tenir compte de la casse lors de la recherche d'une métaséquence. /( ...)/ Créer une sous-expression entre parenthèses dans la métaséquence. \s* Rechercher zéro ou plus espaces blancs. Dans l'exemple Redirect If Empty (Rediriger si jeu d'enregistrements vide) du chapitre « Comportements de serveur », page 107, le visiteur est renvoyé à une autre page si un jeu d'enregistrements donné est vide. L'utilisateur de Dreamweaver UltraDev doit indiquer le nom de ce jeu d'enregistrements et votre bloc de code doit être mis à jour en fonction de ce nom. Dans le fichier XML, l'espace réservé @@rs@@ indique l'emplacement de ce nom. Dans votre code JavaScript d'extension, vous appelez la fonction applySB() et le gestionnaire de données d'extension utilise les profils de recherche XML pour remplacer le marqueur @@rs@@ par le nom du jeu d'enregistrements de l'utilisateur. La balise XML <searchPatterns whereToSearch="directive"> indique qu'une recherche doit être effectuée dans le code d'exécution. Chaque sous-balise <searchPattern>...</searchPattern> définit un profil dans le code d'exécution devant être identifié. Ainsi, l'exemple Redirect If Empty contient deux profils. Pour extraire des valeurs de paramètre de : <% if (@@rs@@.EOF) Response.Redirect("@@new__url@@"); %> rédigez une expression régulière qui identifie les chaînes rs et new__url <searchPattern paramNames="rs,new__url"> /if \((\w+)\.EOF\) Response\.Redirect\("(.*)"/i </searchPattern> Une recherche est donc effectuée dans le document de l'utilisateur et, si une correspondance est trouvée, les valeurs de paramètre sont extraites. La valeur de rs est extraite à l'aide de la première sous-expression entre parenthèses (\w+). La valeur de new__url est extraite à l'aide de la deuxième sous-expression entre parenthèses (.*). Schéma XML de comportement de serveur 151 Quelques mots sur la structure XML Vous devez utiliser un nom de fichier unique pour identifier votre groupe de comportements de serveur, comme, par exemple, updateRecord.xml. En règle générale, vous devez donner à votre fichier Participant un nom correspondant à celui du groupe, comme, par exemple, updateRecord_init.xml. Mais il peut arriver que les fichiers Participant soient partagés entre plusieurs groupes de comportements de serveur. Dans ce cas, nommez-les pour refléter leur fonction exacte. Remarque : l'espace de nom étant partagé indépendamment de la structure de dossier, choisissez des noms à la fois descriptifs et uniques. Les noms de fichiers ne doivent pas comporter plus de 31 caractères en raison des limitations Macintosh. Le code d'exécution de votre comportement de serveur réside à l'intérieur de fichiers XML. Le programme d'analyse XML ne doit confondre aucun de vos codes d'exécution avec les balises XML. C'est pourquoi une balise spéciale doit envelopper votre code d'exécution. La balise XML, CDATA, se charge de cette protection. CDATA signifie « données de caractère » et correspond à tout texte autre qu'une balise XML. Lorsque vous utilisez la balise CDATA, le programme d'analyse XML n'essaie pas de l'interpréter en tant que balise, mais l'assimile plutôt à un bloc de texte en clair. Les blocs marqués par la balise CDATA commencent par <![CDATA[ et se terminent par ]]>. Par exemple, si vous insérez le texte « Hello, World », il est prudent de spécifier votre XML de la façon simple : <insertText>Hello, World</insertText> Cependant, si vous insérez un texte comportant des balises, comme par exemple <img src='foo.gif'>, cela peut être source de confusion pour le programme d'analyse. Dans ce cas, incorporez votre texte dans la construction CDATA : <insertText><![CDATA[<img src='foo.gif'>]]></insertText> Vous avez déjà vu un exemple de la balise CDATA dans le fichier Participant XML de l'exemple Redirect If Empty du chapitre « Comportements de serveur ». Le code d'exécution ASP est enveloppé par la balise CDATA définie comme suit : <![CDATA[ <% if (@@rs@@.EOF) Response.Redirect("@@new__url@@"); %> ]] En raison de la balise CDATA, les balises ASP <%= %>, ainsi que tout se qui se trouve entre elles, ne sont pas traitées. Au lieu de cela, le gestionnaire de données d'extension UltraDev (EDM) reçoit le texte non interprété : <% if (Recordset1.EOF) Response.Redirect("http://www.yahoo.com"); %> Dans les définitions XML suivantes, les emplacements où la balise CDATA est recommandée sont indiqués dans les exemples. 152 Chapitre 12 Blocs de code dépendants Il arrive que vous deviez créer deux blocs de code, dont un est le début d'un jeu de balises et l'autre la fin (par exemple, lorsque vous enveloppez une sélection du document avec le jeu de balises). Bien qu'il s'agisse de deux participants séparés, ils dépendent l'un de l'autre et agissent comme un seul et même participant. Pour empêcher les erreurs lors du traitement des deux participants, n'utilisez par de profils de recherche et supprimez le type du deuxième participant, qui n'est en réalité que la moitié du premier. Fichiers XML Groupe Balise XML : group Description Contient toutes les spécifications pour un groupe de participants. Parent Aucun. Type Balise de bloc. Obligatoire Oui. Attribut : serverBehavior Description L'attribut serverBehavior indique le comportement de serveur qui peut utiliser le groupe. Lorsque l'une des chaînes quickSearch du participant du groupe est trouvée dans le document, le comportement de serveur indiqué par l'attribut serverBehavior est notifié et a la possibilité d'effectuer une recherche approfondie dans le document. Dans certains cas, si plusieurs groupes sont associés à un seul et même comportement de serveur, ce dernier doit déterminer le groupe qu'il veut utiliser. Parent group Type Attribut. Obligatoire Non. Schéma XML de comportement de serveur 153 Valeur Le nom exact (sans chemin) d'un fichier HTML de comportement de serveur d'un dossier Configuration/ServerBehaviors. Exemple : <group serverBehavior="redirectIfEmpty.htm"> Attribut : dataSource Description Cette fonction avancée prend en charge les nouvelles sources de données qui peuvent être ajoutées à UltraDev. Plusieurs versions d'un comportement de serveur peuvent différer, selon la source de données utilisée. Par exemple, le comportement de serveur Région répétée est conçu pour la source de données Recordset.htm standard. Si UltraDev est développé afin de prendre en charge un nouveau type de source de données (un objet COM, par exemple), vous pouvez configurer dataSource="COM.htm" dans un fichier Groupe avec une implémentation différente de Région répétée. Le comportement de serveur Région répétée applique alors la nouvelle implémentation de Région répétée si la nouvelle source de données est sélectionnée. Parent group Type Attribut. Obligatoire Non. Valeur Le nom exact d'un fichier de source de données dans un dossier Configuration/ DataSources. Exemple : <group serverBehavior="Repeat Region.htm" ¬ dataSource="myCOMdataSource.htm"> Ce groupe définit une nouvelle implémentation de Région répétée à utiliser si la source de données COM est utilisée. Dans applyServerBehaviors(), vous pouvez indiquer que ce groupe doit être appliqué en définissant la propriété MM_dataSource sur l'objet de paramètre, comme dans : function applyServerBehavior(ssRec) { var paramObj = new Object(); paramObj.rs = getComObjectName(); paramObj.MM_dataSource = "myCOMdataSource.htm"; applySB(paramObj, sbObj); } 154 Chapitre 12 Attribut : subType Description Cette fonction avancée prend en charge plusieurs implémentations d'un comportement de serveur. Plusieurs versions d'un comportement de serveur peuvent différer, selon la sélection de l'utilisateur. Lorsqu'un comportement de serveur est appliqué mais que plusieurs fichiers Groupe sont appropriés, le fichier Groupe correct peut être choisi par transmission d'une valeur subType. Le groupe ayant cette valeur subType spécifique est appliqué. Parent group Type Attribut. Obligatoire Non. Valeur Une chaîne unique qui sera transmise avec l'appel de findGroups(). Exemple : <group serverBehavior="myServerBehavior.htm" ¬ subType="longVersion"> Ce groupe définit la version longue de myServerBehavior. Vous avez également une version avec subType="shortVersion". Dans applyServerBehaviors(), vous pouvez indiquer le groupe qui doit être appliqué en définissant la propriété MM_subType sur l'objet de paramètre, comme dans : function applyServerBehavior(ssRec) { var paramObj = new Object(); if (longVersionChecked) { paramObj.MM_subType = "longVersion"; } else { paramObj.MM_subType = "shortVersion"; } applySB(paramObj, sbObj); } Balise XML : title Description Chaîne qui sera affichée dans le panneau Comportements de serveur pour chaque occurrence de comportement de serveur trouvée dans le document courant. Parent group Type Balise de bloc. Schéma XML de comportement de serveur 155 Obligatoire Non. Valeur Chaîne de texte en clair. Peut comporter des noms de paramètre pour rendre chaque occurrence unique. Exemple : <title>Redirect If Empty (@@recordsetName@@)</title> Balise XML : groupParticipants Description Contient un tableau de déclarations groupParticipant. Parent group Type Balise de bloc. Obligatoire Oui. Attribut : selectParticipant Description Indique quel participant doit être sélectionné et mis en surbrillance dans le document lorsqu'une occurrence est sélectionnée dans le panneau Comportements de serveur. Les occurrences de comportements de serveur énumérées dans ce panneau étant classées en fonction du participant sélectionné, vous devez définir selectParticipant même si le participant n'est pas visible. Cet attribut fonctionne uniquement pour les participants se trouvant à l'intérieur des balises HTML, et non pour ceux se trouvant au-dessus de la balise HTML. Parent groupParticipants Type Attribut. Obligatoire Non. Valeur est le nom exact (moins le suffixe .xml) d'un seul et même fichier Participant référencé comme un participant Groupe. Voir aussi « Attribut : name », page 157. Exemple : participantName <groupParticipants selectParticipant="redirectIfEmpty_link"> 156 Chapitre 12 Balise XML : groupParticipant Description Représente l'inclusion d'un participant unique dans le groupe. Remarque : l'ordre dans lequel les balises groupParticipant sont énumérées a son importance dans certains cas. Parent groupParticipants Type Balise. Obligatoire Oui (au moins un). Attribut : name Description Désigne un participant particulier à inclure dans le groupe. L'attribut de nom figurant dans la balise groupParticipant doit être le même que le nom de fichier du participant (moins l'extension de fichier). Parent groupParticipant Type Attribut. Obligatoire Oui. Valeur Le nom exact (moins le suffixe .xml) de tout fichier Participant dans le dossier Configuration/ServerExtData. Exemple : <groupParticipant name="redirectIfEmpty_init"> Fait référence au fichier redirectIfEmpty_init.xml. Attribut : partType Description Indique le type de participant. Parent groupParticipant Type Attribut. Schéma XML de comportement de serveur 157 Obligatoire Non. Valeurs identifier, member, option, multiple, data • identifier • member • option • multiple • data est un participant non standard utilisé par les programmeurs en tant que lieu de stockage des données de groupe supplémentaires. N'est pris en compte par rien d'autre. Exemple : est un participant qui identifie le groupe entier. Si ce participant est trouvé dans le document, le groupe est considéré comme existant, que d'autres participants du groupe soient ou non trouvés. Il s'agit de la valeur par défaut si partType n'est pas spécifié. est un membre normal d'un groupe. Trouvé seul, il n'identifie pas un groupe. S'il n'est pas trouvé dans un groupe, le groupe est jugé incomplet. indique que le participant est facultatif. S'il n'est pas trouvé, le groupe est quand même jugé complet (et aucun indicateur « incomplete » n'est affiché dans le panneau Comportements de serveur). indique que le participant est facultatif et que plusieurs de ses copies peuvent être associées au comportement de serveur. Aucun des paramètres uniques à ce participant ne sera utilisé lors du regroupement de participants (ils peuvent avoir des valeurs différentes). <groupParticipant name="redirectIfEmpty_extraData" ¬ partType="member"> Fichiers XML Participant Balise XML : participant Description Contient toutes les spécifications pour un seul participant. Parent Aucun. Type Balise de bloc. Obligatoire Oui. 158 Chapitre 12 Balise XML : implementation Description Chaque balise <implementation> contient toutes les spécifications de participant pertinentes pour un langage et un modèle de serveur uniques. Parent participant Type Balise de bloc. Obligatoire Oui. Attribut : serverModel Description Spécifie le langage et le modèle de serveur pour la balise d'implémentation. UltraDev 4 prenant en charge quatre modèles de serveur (ASP/JavaScript, ASP/ VBScript, JSP et ColdFusion), un participant peut comporter jusqu'à quatre balises <implementation>, chacune avec un attribut serverModel différent. Parent implementation Type Attribut. Obligatoire Oui. Valeurs ASP/JavaScript, ASP/VBScript, JSP, ColdFusion Exemple : <implementation serverModel="ASP/JavaScript"> ...participant info for ASP/JavaScript here... </implementation> Balise XML : quickSearch Description Simple chaîne de recherche utilisée à des fins de performance (il ne peut s'agir d'une expression régulière). Si la chaîne est trouvée dans le document en cours, tous les comportements de serveur faisant référence à ce participant ont la possibilité de rechercher des participants dans le document. Peut être vide (pour qu'il y ait toujours correspondance). Schéma XML de comportement de serveur 159 Parent participant Type Balise de bloc. Obligatoire Non. Valeur searchString, chaîne littérale qui existe sur la page si le participant existe. Elle doit être aussi unique que possible, bien qu'elle n'ait pas à être complètement unique. Elle n'est pas sensible à la casse. Faites tout de même attention aux espaces non essentiels qui pourraient être modifiés par l'utilisateur. Exemple : <quickSearch>Response.Redirect</quickSearch> Si la chaîne quickSearch est vide, elle est jugée comme correspondante et des recherches plus précises utilisent les expressions régulières définies dans les balises <searchPattern>. Cela peut être utile lorsqu'une simple chaîne ne peut pas être utilisée pour exprimer un profil de recherche fiable et que des expressions régulières sont requises. Balise XML : insertText Description Donne des indications sur ce qui doit être inséré dans le document et à quel endroit. Contient le texte devant être inséré dans le document. Les parties du texte qui seront personnalisées doivent être indiquées par @@parameterName@@. Dans certains cas, comme par exemple pour un participant traducteur uniquement, vous n'aurez probablement pas besoin de cette balise. Parent implementation Type Balise de bloc. Obligatoire Non. Valeur Le texte devant être inséré dans le document. Si des parties du texte doivent être personnalisées, elles peuvent être transmises ultérieurement en tant que paramètres. Les paramètres doivent être incorporés entre deux signes @. Ce texte pouvant interférer avec la structure XML, il doit utiliser la construction CDATA. Exemple : <insertText location="aboveHTML"> <![CDATA[<%= @@recordset@@).cursorType %>]]> </insertText> 160 Chapitre 12 Lorsque le texte est inséré, @@recordset@@ est remplacé par un nom de jeu d'enregistrements fourni par l'utilisateur. Attribut : location Description Indique où le texte participant doit être inséré. L'emplacement d'insertion étant relatif à l'attribut whereToSearch de la balise searchPatterns, veillez à définir ces deux paramètres soigneusement (voir « Attribut : whereToSearch », page 164). Parent insertText Type Attribut. Obligatoire Oui. Valeurs aboveHTML[+weight], belowHTML[+weight], beforeSelection, replaceSelection, wrapSelection, afterSelection, beforeNode, replaceNode, afterNode, firstChildOfNode, lastChildOfNode, nodeAttribute[+attribute] • insère le texte au-dessus de la balise <HTML> (appropriée pour le code de serveur uniquement). Le poids peut être un nombre entier compris entre 1 et 99 et est utilisé pour préserver l'ordre relatif entre les différents participants. Par convention, les jeux d'enregistrements ont un poids de 50. Si un participant fait référence à des variables de jeu d'enregistrements, il devra par conséquent être affecté d'un poids plus élevé, de 60 par exemple, de façon à ce que le code soit inséré au-dessous du jeu d'enregistrements. Exemple : aboveHTML[+weight] <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 spécifique. Exemple : <insert location="aboveHTML"> • belowHTML[+weight] est similaire à l'emplacement aboveHTML, si ce n'est que ces participants sont ajoutés au-dessous de la balise </HTML> de fermeture. • beforeSelection • replaceSelection • wrapSelection équilibre la sélection actuelle, insère le texte avant la sélection et ajoute la balise de fin appropriée après la sélection. insère le texte avant le point d'insertion ou la sélection actuelle. S'il n'y a pas de sélection, le texte est inséré à la fin de la balise <BODY>. remplace la sélection actuelle par le texte. S'il n'y a pas de sélection, le texte est inséré à la fin de la balise <BODY>. Schéma XML de comportement de serveur 161 • afterSelection • beforeNode insère le texte après la sélection actuelle ou le point d'insertion. S'il n'y a pas de sélection, le texte est inséré à la fin de la balise <BODY>. insère le texte avant un Nuds (emplacement spécifique dans le DOM). Lorsqu'une fonction telle que applySBs() est appelée pour effectuer l'insertion, le pointeur de Nuds doit être transmis en tant que paramètre de paramObj. Le nom de ce paramètre définissable par l'utilisateur doit être spécifié par l'attribut nodeParamName (voir la section « Attribut : nodeParamName », page 163). En résumé, si votre emplacement comporte le mot node, veillez à déclarer la balise <nodeParamName>. • replaceNode • afterNode • insère le texte en tant que premier enfant d'une balise de bloc. Par exemple, pour insérer un élément au début d'une balise FORM. Nécessite la transmission d'un Nuds de la façon décrite pour beforeNode. • insère le texte en tant que dernier enfant d'une balise de bloc. Par exemple, si vous souhaitez insérer quelque chose à la fin d'une balise FORM (utile pour l'ajout de champs de formulaire masqués). Nécessite la transmission d'un Nuds de la façon décrite pour beforeNode. • nodeAttribute[+attribute] définit un attribut d'un Nuds de balise. Nécessite la transmission d'un Nuds de la façon décrite pour beforeNode. Si l'attribut n'existe pas, il est créé. remplace un Nuds par le texte. Nécessite la transmission d'un Nuds de la façon décrite pour beforeNode. insère le texte après un Nuds. Nécessite la transmission d'un Nuds de la façon décrite pour beforeNode. firstChildOfNode lastChildOfNode Par exemple, utilisez <insert location="nodeAttribute+ACTION"> pour définir l'attribut ACTION d'un formulaire. Cela convertit la balise FORM de l'utilisateur de <form> à <form action="myText">. Si aucun attribut n'est indiqué, 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 procéder ainsi pour convertir une balise INPUT d'un utilisateur de <input type="checkbox"> à <input type="checkbox" <%if(foo)Reponse.Write("CHECKED")%>> 162 Chapitre 12 Remarque : pour location="nodeAttribute", le dernier profil de recherche est utilisé pour déterminer où l'attribut commence et se termine. Veillez à ce que le dernier profil trouve l'instruction entière. Attribut : nodeParamName Description Est uniquement utilisé pour les emplacements d'insertion relatifs à un Nuds. Indique le nom du paramètre qui sera utilisé pour transmettre le Nuds au moment de l'insertion. Parent insertText Type Attribut. Obligatoire Seulement si l'emplacement d'insertion comporte le mot node. Valeur est un nom spécifié par l'utilisateur pour le paramètre de Nuds transmis avec l'objet de paramètre à la fonction applySB(). Par exemple, si vous insérez du texte dans un formulaire, vous pouvez utiliser un paramètre appelé form__tag. Dans votre fonction applyServerBehavior() de comportement de serveur, vous pouvez alors utiliser form__tag pour indiquer le formulaire précis à mettre à jour. Exemple : tagtype__Tag function applyServerBehavior(ssRec) { var paramObj = new Object(); paramObj.rs = getRecordsetName(); paramObj.form__tag = getFormNode(); applySB(paramObj, sbObj); } Dans votre fichier XML, vous indiquez le paramètre de Nuds form__tag. Exemple : <insertText location="lastChildOfNode" nodeParamName="form__tag"> <![CDATA[<input type="hidden" name="MY_DATA">]]> </insertText> Le texte est inséré en tant que lastChildOfNode et le Nuds spécifique est transmis à l'aide de la propriété form__tag de l'objet de paramètre. Schéma XML de comportement de serveur 163 Balise XML : searchPatterns Description Donne des indications sur la façon de rechercher le texte du participant dans le document. Contient une liste de profils utilisés lors de la recherche d'un participant. Si plusieurs profils de recherche sont définis, ils doivent tous être trouvés dans le texte analysé (les profils de recherche ont une logique ET une relation), à moins qu'ils ne soient marqués comme facultatifs à l'aide de l'indicateur isOptional. Parent implementation Type Balise de bloc. Obligatoire Non. Attribut : whereToSearch Description Indique où rechercher le texte du participant. Cet emplacement d'insertion étant relatif à l'emplacement d'insertion, veillez à définir ces deux paramètres soigneusement (voir « Attribut : location », page 161). Parent searchPatterns Type Attribut. Obligatoire Oui. Valeurs directive, tag+tagName, tag+*, comment, text • recherche toutes les directives de serveur (balises spécifiques au serveur). Pour ASP et JSP, cela signifie une recherche dans toutes les balises <% ... %>. directive Remarque : la recherche n'est pas effectuée dans les attributs de balise, même s'ils contiennent des directives. 164 Chapitre 12 • tag+tagName effectue une recherche dans le contenu de la balise donnée. Exemple : <searchPatterns whereToSearch="tag+FORM"> indique que le recherche doit se limiter aux seules balises de formulaire. Par défaut, la recherche est effectuée dans toute la balise outerHTML. Pour les balises INPUT, le type peut également être indiqué (après une barre oblique). Par exemple, pour que la recherche soit effectuée dans tous les boutons d'envoi, saisissez : <searchPatterns whereToSearch="tag+INPUT/SUBMIT"> • effectue une recherche dans le contenu de n'importe quelle balise. Exemple : tag+* <searchPatterns whereToSearch="tag+*"> indique que la recherche doit être effectuée dans toutes les balises. • limite la recherche aux seuls commentaires HTML <! Exemple : comment ... >. <searchPatterns whereToSearch="comment"> indique que la recherche sera effectuée dans des balises telles que <!-comment here -->. • text my limite la recherche aux sections de texte brut. Exemple : <searchPatterns whereToSearch="text"> <searchPattern>XYZ</searchPattern> </searchPatterns> recherche un Nuds de texte contenant le texte XYZ. Balise XML : searchPattern Description Profil utilisé pour identifier le texte participant et en extraire des valeurs de paramètre. Chaque sous-expression de paramètre doit être mise entre parenthèses. Vous pouvez avoir des profils sans paramètres (utilisés simplement pour identifier le texte participant), des profils avec un paramètre ou des profils avec plusieurs paramètres. Tous les profils obligatoires doivent être trouvés et chaque paramètre doit être nommé et trouvé exactement une fois. Parent searchPatterns Type Balise de bloc. Obligatoire Oui. Schéma XML de comportement de serveur 165 Valeurs searchString, /regularExpression/, <empty> • searchString • • /regularExpression/ est une simple chaîne de recherche (sensible à la casse). Elle ne peut pas être utilisée pour l'extraction de paramètres. est un profil de recherche d'expression régulière. se produit lorsqu'aucun profil n'est indiqué. Dans ce cas, il est toujours considéré qu'il y a correspondance et la valeur entière est affectée au premier paramètre. <empty> Par exemple, pour identifier le texte participant <%= RS1.Field.Items("author_id") %>, vous pouvez définir un profil simple suivi d'un profil précis extrayant également les deux valeurs de paramètre : <searchPattern>Field.Items</searchPattern> <searchPattern paramNames="rs,col"> <![CDATA[ /<%=\s*(\w+)\.Field\.Items\("(\w+)"\)/ ]]> </searchPattern> Une correspondance précise est établie avec le profil, la valeur de la première sous-expression (\w+) est affectée au paramètre « rs » et celle de la deuxième sous-expression (\w+) au paramètre « col ». Remarque : l'expression régulière doit impérativement commencer et se terminer par une barre oblique. Sinon, elle sera utilisée en tant que recherche de chaîne littérale. Les expressions régulières peuvent être suivies du modificateur d'expression régulière « 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 désirez affecter le contenu entier de l'emplacement de recherche limitée à un paramètre, n'indiquez aucun profil, comme dans : <searchPatterns whereToSearch="tag+OPTION"> <searchPattern>MY_OPTION_NAME</searchPattern> <searchPattern paramNames="optionLabel" limitSearch="innerOnly"> </searchPattern> </searchPatterns> Le paramètre « optionLabel » est alors affecté à tout le innerHTML d'une balise OPTION. 166 Chapitre 12 Attribut : paramNames Description Liste séparée par virgule des noms de paramètre dont les valeurs sont extraites. Elles sont affectées dans l'ordre de la sous-expression. Vous pouvez affecter des paramètres uniques ou utiliser une liste séparée par virgule pour affecter plusieurs paramètres. Si d'autres expressions entre parenthèses sont utilisées mais n'indiquent pas de paramètres, des virgules supplémentaires peuvent être utilisées en tant qu'espaces réservés dans la liste des noms de paramètres. Les noms de paramètres doivent correspondre à ceux spécifiés dans le texte d'insertion et dans les paramètres de mise à jour. Parent searchPattern Type Attribut. Obligatoire Oui. Valeurs paramName1, paramName2, ... Chaque nom de paramètre doit être le nom exact d'un paramètre utilisé dans le texte d'insertion. Par exemple, si le texte d'insertion contient @@p1@@, vous devez définir exactement un paramètre avec ce nom : <searchPattern paramNames="p1">patterns</searchPattern> Pour extraire plusieurs paramètres utilisant un seul profil, utilisez une liste séparée par virgule de noms de paramètre, dans l'ordre dans lequel les sous-expressions apparaissent dans le profil. Par exemple, si votre profil de recherche est : <searchPattern paramName="p1,,p2">/(\w+)_(BIG|SMALL)_(\w+)/¬ </searchPattern> il y a deux paramètres séparés par du texte à extraire. Avec le texte suivant : <%= a_BIG_b %> la première sous-expression du profil de recherche correspond à "a", donc p1="a". La deuxième sous-expression est ignorée (remarquez le ,,). La troisième sous-expression correspond à "b", donc p2="b". Attribut : limitSearch Description Limite la recherche à une partie de la balise whereToSearch. Parent searchPattern Schéma XML de comportement de serveur 167 Type Attribut. Obligatoire Non. Valeurs all, attribute+attribName, tagOnly, innerOnly • all (valeur par défaut) effectue une recherche dans la balise entière spécifiée dans l'attribut whereToSearch. • attribute+attribName effectue la recherche dans la seule valeur de l'attribut spécifié. Exemple : <searchPatterns whereToSearch="tag+FORM"> <searchPattern limitSearch="attribute+ACTION"> /MY_PATTERN/ </searchPattern> </searchPatterns> indique que la recherche doit se limiter à la seule valeur de l'attribut ACTION des balises FORM. Si cet attribut n'est pas défini, la balise est ignorée. • tagOnly effectue la recherche dans la seule balise extérieure et ignore la innerHTML. Valide uniquement lorsque whereToSearch est une balise. • innerOnly balise effectue la recherche dans la seule balise innerHTML et ignore la balise extérieure. Valide uniquement lorsque whereToSearch est une balise. Attribut : isOptional Description Indicateur signifiant que le profil de recherche n'est pas nécessaire pour que le participant soit trouvé. Cela est utile pour les participants plus complexes pouvant avoir des paramètres non essentiels à extraire. Vous pouvez créer des profils servant à identifier de façon distincte un participant et avoir des profils facultatifs pour l'extraction de paramètres non essentiels. Parent searchPattern Type Attribut. Obligatoire Non. Valeurs true, false • 168 Chapitre 12 true si searchPattern n'a pas à être trouvé pour que le participant soit identifié. • false (valeur par défaut) si searchPattern doit être trouvé. Considérez par exemple une chaîne de jeux d'enregistrements simple : <% var Recordset1 = Server.CreateObject("ADODB.Recordset"); Recordset1.ActiveConnection = "dsn=andescoffee;"; Recordset1.Source = "SELECT * FROM PressReleases"; Recordset1.CursorType = 3; Recordset1.Open(); %> Les profils de recherche doivent identifier le participant et extraire plusieurs paramètres. Cependant, si un paramètre tel que cursorType n'est pas trouvé, cela devrait toujours être considéré comme un jeu d'enregistrements. Le paramètre cursor est facultatif. Dans le XML, les profils de recherche peuvent ressembler à ceci : <searchPattern paramNames="rs">/var (\w+) = Server.CreateObject/ </searchPattern> <searchPattern paramNames="src">/ActiveConnection = "(.*)"/¬ </searchPattern> <searchPattern paramNames="conn">/Source = "(.*)"/¬ </searchPattern> <searchPattern paramNames="cursor" isOptional="true">¬ /CursorType = (\d+)/ </searchPattern> Les trois premiers profils sont nécessaires pour identifier le jeu d'enregistrements. Si le dernier paramètre n'est pas trouvé, le jeu d'enregistrements est quand même identifié. Balise XML : updatePatterns Description Cette fonction facultative avancée permet des mises à jour précises du participant. Sans cette balise, le participant est automatiquement mis à jour par remplacement du texte participant entier à chaque fois. Si vous spécifiez une balise <updatePatterns>, elle doit contenir des profils précis pour trouver et remplacer chaque paramètre du participant. Cela peut s'avérer utile si l'utilisateur peut apporter des modifications non préjudiciables au texte. Seules les parties du texte qui ont besoin d'être modifiées seront mises à jour avec précision. Parent implementation Type Balise de bloc. Schéma XML de comportement de serveur 169 Obligatoire Non. Balise XML : updatePattern Description Type d'expression régulière spécifique utilisé pour des mises à jour précises du texte du participant. Il doit y avoir au moins une définition de profil de mise à jour pour chaque paramètre unique déclaré dans le texte d'insertion (de la forme @@paramName@@). Parent updatePatterns Type Balise de bloc. Obligatoire Oui (au moins une, si la balise updatePatterns est déclarée). Valeurs Expression régulière trouvant un paramètre placé entre deux sous-expressions entre parenthèses, de la forme /(pre-pattern)parameter-pattern(postpattern)/. Vous devez avoir au moins un profil de mise à jour défini pour chaque @@paramName@@ unique dans votre texte d'insertion. Par exemple, votre texte d'insertion peut être : <insertText location="afterSelection"> <![CDATA[<%= @@rs@@.Field.Items("@@col@@") %>]]> </insertText> et une occurrence particulière de ce texte sur une page peut ressembler à : <%= RS1.Field.Items("author_id") %> Remarquez qu'il y a deux paramètres, rs et col. Aussi, pour mettre à jour ce texte une fois qu'il est inséré sur la page, vous devez mettre à jour deux définitions de profil : <updatePattern paramName="rs" > /(\b)\w+(\.Field\.Items)/ </updatePattern> <updatePattern paramName="col"> /(\bItems\(")\w+("\))/ </updatePattern> Notez que des parenthèses littérales, ainsi que d'autres caractères d'expressions régulières spéciaux, n'ont pas été pris en compte en raison de la barre oblique inverse les précédant. L'expression du milieu, ici définie comme \w+, sera mise à jour avec la dernière valeur transmise pour les paramètres « rs » et « col », respectivement. Les valeurs « RS1 » et « author_id » peuvent être mises à jour avec de nouvelles valeurs de façon précise. 170 Chapitre 12 Plusieurs occurrences du même profil peuvent être mises à jour en même temps. Pour cela, vous devez utiliser l'indicateur global d'expression régulière « g » après la barre oblique de fermeture, comme dans /pattern/g. Si le texte du participant est long et complexe, vous pouvez utiliser plusieurs profils pour mettre à jour un seul paramètre. Par exemple, si votre texte de participant est : <% ... 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 profils de mise à jour pour un seul paramètre, comme dans : <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 sera mis à jour avec précision à trois endroits. Attribut : paramName Description Indique le nom du paramètre dont la valeur est utilisée pour mettre à jour le participant. Ce paramètre doit correspondre à ceux spécifiés dans les paramètres de texte d'insertion et de recherche. Parent updatePattern Type Attribut. Obligatoire Oui. Valeurs Le nom exact d'un paramètre utilisé dans le texte d'insertion. Par exemple, si le texte d'insertion contient @@rs@@, vous devez avoir un paramètre du nom : <updatePattern paramName="rs">pattern</updatePattern> Schéma XML de comportement de serveur 171 Balise XML : delete Description Cette fonction facultative avancée vous permet de contrôler la façon dont un participant est supprimé. Sans cette balise, vous devez supprimer le participant entièrement pour le supprimer (seulement si aucun comportement de serveur n'y fait référence). En définissant une balise <delete>, vous pouvez spécifier qu'il ne doit jamais être supprimé ou que seules certaines parties doivent l'être. Parent implementation Type Balise. Obligatoire Non. Attribut : deleteType Description Indique le type de suppression à effectuer. Possède différentes significations, selon que le participant est une directive, une balise ou un attribut. Par défaut, le participant entier est supprimé. Parent delete Type Attribut. Obligatoire Non. Valeurs • all (valeur par défaut) supprime la directive ou la balise entière. Pour les attributs, supprime la définition entière. • • none n'est jamais automatiquement supprimé. tagOnly supprime uniquement la balise extérieure mais laisse le contenu balise innerHTML intact. Pour les attributs, supprime également la balise de la extérieure s'il s'agit d'une balise de bloc. Sans signification pour les directives. 172 Chapitre 12 • innerOnly supprime uniquement le contenu (innerHTML) lorsqu'elle est appliquée à des balises. Pour les attributs, supprime uniquement la valeur. Sans signification pour les directives. • attribute+attribName supprime uniquement l'attribut spécifié lorsqu'elle est appliquée à des balises. Sans signification pour les directives et les attributs. • attribute+* supprime tous les attributs des balises. Sans signification pour les directives et les attributs. Par exemple, si votre comportement de serveur convertit le texte sélectionné en lien, vous pouvez supprimer le lien lorsque vous effectuez une suppression de la balise extérieure uniquement : <delete deleteType="tagOnly"/> Cela convertit un participant de lien <A HREF="...">HELLO</A> en HELLO. Balise XML : translator Description Donne des informations pour la traduction d'un participant de façon à ce qu'il puisse être rendu différemment et puisse éventuellement avoir un inspecteur de propriétés personnalisé. Parent implementation Type Balise de bloc. Obligatoire Non. Balise XML : searchPatterns Description Même description que pour les profils de recherche de nodeParamName décrits dans la section « Balise XML : searchPatterns », page 164, si ce n'est que whereToSearch est indiqué dans chaque balise de traduction. Parent translator Type Balise de bloc. Obligatoire Oui. Balise XML : translations Description Contient une liste d'instructions de traduction. Chacune indique où rechercher le participant et ce qu'il convient d'en faire. Parent translator Schéma XML de comportement de serveur 173 Type Balise de bloc. Obligatoire Non. Balise XML : translation Description Contient une instruction de traduction unique indiquant où rechercher le participant, quel type de traduction effectuer et par quoi remplacer le texte du participant. Parent translations Type Balise de bloc. Obligatoire Non. Attribut : whereToSearch Description Même description que celle de l'attribut whereToSearch pour les profils de recherche nodeParamName décrits à la section « Attribut : whereToSearch », page 164. Parent translation Type Attribut. Obligatoire Oui. Attribut : limitSearch Description Même description que celle de l'attribut limitSearch pour les profils de recherche nodeParamName décrits à la section « Attribut : limitSearch », page 167. Parent translation Type Attribut. 174 Chapitre 12 Obligatoire Non. Attribut : translationType Description Indique le type de traduction à réaliser. Ces types sont prédéfinis et donnent à la traduction une fonctionnalité précise. Par exemple, si vous spécifiez « données dynamiques », tout ce qui est traduit doit se comporter comme des données dynamiques UltraDev, c'est-à-dire ressembler à un espace réservé de données dynamiques dans le mode de mise en page (notation entre accolades avec couleur d'arrière-plan dynamique) et figurer dans le panneau Comportements de serveur. Parent translation Type Attribut. Obligatoire Oui. Valeurs • indique que les directives traduites ressemblent à des données dynamiques UltraDev et se comportent comme telles. Exemple : dynamic data <translation whereToSearch="tag+IMAGE" limitSearch="attribute+SRC" translationType="dynamic data"> • dynamic image indique que les attributs traduits doivent ressembler à des images dynamiques UltraDev et se comporter comme telles. Exemple : <translation whereToSearch="IMAGE+SRC" translationType="dynamic image"> • indique que les directives traduites doivent se comporter comme des sources dynamiques UltraDev. Exemple : dynamic source <translation whereToSearch="directive" translationType="dynamic source"> • indique que les balises <CFLOOP> traduites définissent le début d'un contour tabulé. Exemple : tabbed region start <translation whereToSearch="CFLOOP" translationType="tabbed region start"> • tabbed region end indique que les balises </CFLOOP> traduites définissent la fin d'un contour tabulé. Exemple : <translation whereToSearch="CFLOOP" translationType="tabbed region end"> Schéma XML de comportement de serveur 175 • est le cas par défaut, dans lequel aucune fonctionnalité UltraDev interne n'est ajoutée à la traduction. Il est courant de l'utiliser lors de la spécification d'une balise à insérer pour un inspecteur de propriétés personnalisé. Exemple : custom <translation whereToSearch="directive" translationType="custom"> Balise XML : openTag Description Une balise facultative pouvant être insérée au début de la section de traduction. Cela permet à certaines autres extensions, comme par exemple les inspecteurs de propriétés personnalisés, de trouver la traduction. Parent translation Type Balise de bloc. Obligatoire Non. Valeurs tagName est un nom de balise valide. Ce nom doit être suffisamment unique pour empêcher les conflits avec des types de balise connus. Par exemple, si vous spécifiez : <openTag>MM_DYNAMIC_CONTENT</openTag> les données dynamiques sont traduites dans la balise <MM_DYNAMIC_CONTENT>. Balise XML : attributes Description Contient une liste d'attributs à ajouter à la balise traduite spécifiée dans openTag. Sinon, si openTag n'est pas définie et que searchPattern spécifie tag, cette balise contient une liste d'attributs traduits à ajouter à la balise trouvée. Parent translation Type Balise de bloc. Obligatoire Non. 176 Chapitre 12 Balise XML : attribute Description Spécifie un attribut unique (ou un attribut traduit) devant être ajouté à la balise traduite. Parent attributes Type Balise de bloc. Obligatoire Oui (au moins un). Valeurs est un attribut défini pour une valeur. Le nom d'attribut est généralement fixe et la valeur contient des références de paramètres extraites par les profils de paramètres. Exemple : attributeName="attributeValue" <attribute>SOURCE="@@rs@@"</attribute> <attribute>BINDING="@@col@@"</attribute> ou <attribute> mmTranslatedValueDynValue="VALUE={@@rs@@.@@col@@}" </attribute> Balise XML : display Description Chaîne d'affichage facultative devant être insérée dans la traduction. Parent translation Type Balise de bloc. Obligatoire Non. Valeurs se réfère à toute chaîne contenant du texte et du HTML. Peut comporter des références de paramètres extraites par les profils de paramètres. Exemple : displayString <display>{@@rs@@.@@col@@}</display> fera la traduction se présenter sous la forme {myRecordset.myCol}. Schéma XML de comportement de serveur 177 Balise XML : closeTag Description Balise facultative devant être insérée à la fin de la section traduite. Cela permet à certaines autres extensions, comme par exemple les inspecteurs de propriétés personnalisés, de trouver la traduction. Parent translation Type Balise de bloc. Obligatoire Non. Valeurs tagName est openTag. un nom de balise valide. Il doit correspondre à une traduction Exemple Si vous spécifiez : <closeTag>MM_DYNAMIC_CONTENT</closeTag> des données dynamiques sont traduites pour se terminer avec la balise </MM_DYNAMIC_CONTENT>. Utilisation du gestionnaire de données Le gestionnaire de données d'extension (EDM) se compose des API de cette section. Vous pouvez programmer l'accès et la manipulation des données contenues dans les fichiers Groupe et Participant en appelant ces fonctions. L'EDM fonctionne de la manière suivante : • L'EDM exécute toutes les entrées/sorties de fichier XML pour les fichiers Groupe et Participant. • En exécutant toutes les demandes de données pour le modèle de serveur en cours, l 'EDM agit comme un filtre de modèle de serveur. • L'EDM renvoie automatiquement des valeurs par défaut pour les données non spécifiées pour le participant demandé. Les valeurs par défaut sont spécifiées par le participant « par défaut » (c'est-à-dire dans le fichier defaultParticipant.xml). getExtDataValue() Disponibilité Dreamweaver UltraDev 4.0 178 Chapitre 12 Description Extrait les valeurs de champ d'un fichier XML pour les Nudss spécifiés. Arguments est une liste, de longueur variable, de qualifieurs de Nudss séparés par virgule comprenant le nom du Groupe ou du Participant, le sous-bloc (le cas échéant) et le nom du champ. qualifier(s) Valeurs renvoyées La valeur du champ est renvoyée. Si aucune valeur n'est spécifiée, la valeur par défaut est renvoyée. getExtDataArray() Disponibilité Dreamweaver UltraDev 4.0 Description Extrait un tableau de valeurs d'un fichier XML pour les Nudss spécifiés. Arguments est une liste, de longueur variable, de qualifieurs de Nudss séparés par virgule comprenant le nom du Groupe ou du Participant, le sous-bloc (le cas échéant) et le nom du champ. qualifier(s) Valeurs renvoyées Tableau de noms de Nudss enfants. getExtParticipants() Disponibilité Dreamweaver UltraDev 4.0 Description Extrait la liste de participants d'un fichier Groupe XML ou de fichiers Participant. Arguments value, qualifier(s) • value • qualifier(s) est une valeur de propriété ou une valeur vierge ne devant pas être prise en compte. est une liste, de longueur variable, de qualifieurs de Nudss séparés par virgule ayant la propriété requise. Valeurs renvoyées Tableau de noms de participants ayant la propriété requise, si elle est spécifiée, et la propriété correspond à la valeur requise, si elle est spécifiée. Schéma XML de comportement de serveur 179 getExtGroups() Disponibilité Dreamweaver UltraDev 4.0 Description Extrait le nom du groupe, qui est l'équivalent du nom d'un comportement de serveur, d'un fichier Groupe XML. Arguments value, qualifier(s) • value • qualifier(s) est une valeur de propriété ou une valeur vierge ne devant pas être prise en compte. est une liste, de longueur variable, de qualifieurs de Nudss séparés par virgule ayant la propriété requise. Valeurs renvoyées Tableau de noms de groupes ayant la propriété requise, si elle est spécifiée, et la propriété correspond à la valeur requise, si elle est spécifiée. getGroup() Disponibilité Dreamweaver UltraDev 4.0 Description Extrait le groupe, ou le comportement de serveur, du fichier XML. Arguments name est une référence au nom du groupe, qui est l'équivalent du nom du comportement de serveur. Valeurs renvoyées Le groupe, en tant que chaîne constante. addGroup() Disponibilité Dreamweaver UltraDev 4.0 Description Ajoute le groupe, ou le comportement de serveur, au fichier XML. Arguments pGroup pointe vers un groupe d'objets de données d'extension. Valeurs renvoyées Valeurs booléennes. 180 Chapitre 12 updateGroup() Disponibilité Dreamweaver UltraDev 4.0 Description Met à jour le groupe, ou le comportement de serveur, dans le fichier XML. Arguments originalName, pGroup • originalName est une référence CString constante au groupe qui doit être mis à jour. • pGroup pointe vers le groupe mis à jour. Valeurs renvoyées Valeurs booléennes. deleteGroup() Disponibilité Dreamweaver UltraDev 4.0 Description Supprime un groupe d'un fichier XML. Arguments name est le nom du groupe à supprimer. Valeurs renvoyées Valeurs booléennes. getParticipant() Disponibilité Dreamweaver UltraDev 4.0 Description Extrait le participant, ou le bloc de code, du fichier XML. Arguments name, serverModel • • name est une référence au nom de groupe. serverModel est le nom du modèle de serveur en cours. Valeurs renvoyées Le fichier XML participant, en tant que chaîne constante. Schéma XML de comportement de serveur 181 addParticipant() Disponibilité Dreamweaver UltraDev 4.0 Description Ajoute le participant, ou le bloc de code, au fichier XML. Arguments pParticipant pointe vers un participant d'objet de données d'extension. Valeurs renvoyées Valeurs booléennes. updateParticipant() Disponibilité Dreamweaver UltraDev 4.0 Description Met à jour le participant, ou le bloc de code, dans le fichier XML. Arguments originalName, pParticipant originalName est une référence CString constante au participant devant être mis à jour. pParticipant pointe vers le participant mis à jour. Valeurs renvoyées Valeurs booléennes. deleteParticipant() Disponibilité Dreamweaver UltraDev 4.0 Description Arguments name est le nom du participant devant être supprimé. Valeurs renvoyées Valeurs booléennes. objectExistsWithName() Disponibilité Dreamweaver UltraDev 4.0 182 Chapitre 12 Description Cette fonction peut être utilisée pour comparer deux noms d'objets de données d'extension. Arguments name est le nom d'objet de données d'extension courant. Valeurs renvoyées Valeurs booléennes. refreshExtData() Disponibilité Dreamweaver UltraDev 4.0 Description Recharge tous les fichiers de données d'extension. Conseil: vous pouvez créer une commande utile à partir de cette fonction, qui vous permettra de recharger les modifications manuelles apportées aux fichiers XML de comportement de serveur sans avoir à redémarrer UltraDev. Arguments Aucun. Valeurs renvoyées Données rechargées. Utilisation du gestionnaire de traduction Les traducteurs de données traduisent des balises spéciales, telles que le script ASP/ JSP ou les balises CFML, en balises pouvant être lues et affichées par Dreamweaver UltraDev. Pour plus d'informations sur les traducteurs de données et les concepts qui leur sont associés, voir « Traducteurs de données », page 293. La création d'un nouveau traducteur ou l'amélioration d'un traducteur existant peut s'avérer difficile. Dreamweaver UltraDev 4 simplifie ce procédé en fournissant un nouveau service permettant de développer rapidement des traducteurs puissants ; il s'agit du gestionnaire de traduction. Utilisez le gestionnaire de traduction en deux étapes simples : 1 Intégrez le gestionnaire de traduction et les utilitaires associées dans l'en-tête de votre traducteur. <script <script <script <script SRC="TransData.js"></SCRIPT> SRC="TMCallback.js"></SCRIPT> SRC="Translator.js"></SCRIPT> SRC="TranslationManager.js"></SCRIPT> Schéma XML de comportement de serveur 183 2 Ajoutez les deux lignes suivantes à votre fonction translateMarkup() : var TM = new TranslationManager(translatorClass, serverModel, ¬ serverLanguage); var outStr = TM.translate(inStr); // inStr is the string to be translated, outStr is the resulting // translation Le gestionnaire de traduction utilise les règles déclarées dans la section traducteur des fichiers Participant XML pour générer une traduction devant être renvoyée par la fonction translateMarkup(). Pour obtenir une description des traducteurs des fichiers participants, voir « Fichiers Participant », page 148. Les traducteurs ASP, JSP et ColdFusion de Dreamweaver UltraDev utilisent le gestionnaire de traduction. Vous pouvez facilement étendre la fonctionnalité de ces traducteurs en créant de nouveaux fichiers Participant avec les règles de traduction déclarées dans leur section traducteur. Les développeurs peuvent se partager ces fichiers Participant à l'aide d’Extension Manager. Remarque : avant d'exécuter les traducteurs Macromedia, UltraDev exécute tous les traducteurs tiers. Pour tout bloc de code donné, Dreamweaver applique le premier traducteur trouvé. Exemple de traducteur L'exemple qui suit indique comment créer un traducteur à partir d'un nouveau modèle de serveur. UltraDev contient des traducteurs pour ASP, JSP, JavaScript et ColdFusion. Supposons toutefois que vous vouliez créer un nouveau modèle de serveur pour PHP. Dans cet exemple, vous créez les traducteurs pour la façon dont UltraDev rend les balises PHP dans le mode Création de la fenêtre de document. Pour créer un nouveau traducteur PHP : 1 Créez un fichier HTML contenant le code JavaScript de votre traducteur. Incluez le gestionnaire de traduction et les autres utilitaires. <html> <head> <title>PHP Translator</title> <script <script <script <script <script 184 Chapitre 12 SRC="TransData.js"></SCRIPT> SRC="TMCallback.js"></SCRIPT> SRC="Translator.js"></SCRIPT> SRC="TranslationManager.js"></SCRIPT> language=”JavaScript”> 2 La fonction translateMarkup() appelle le gestionnaire de traduction pour qu'il traduise le document de l'utilisateur. function translateMarkup(docNameStr, siteRootStr, inStr) { \\ Get the name of the server model from the document DOM var serverModel = ¬ dw.getDocumentDOM().serverModel.getServerName(); \\ Get the server scripting language from the document DOM var serverLanguage = ¬ dw.getDocumentDOM().serverModel.getServerLanguage(); \\ Call the Translation Manager with your new translator class, \\ and the document server model type and scripting language. var TM = new TranslationManager("PHP", serverModel, ¬ serverLanguage); \\ Pass in the data and place the translation into outStr var outStr = TM.translate(inStr); \\ Return the translated document return outStr; } 3 La fonction getTranslatorInfo() fournit des informations sur le traducteur et sur les fichiers sur lesquels il agit. function getTranslatorInfo() { returnArray = new Array( 8 ) returnArray[0] = "MM_PHP" // uniquely identifies the ¬ translator returnArray[1] = "PHP" // Describes he translator - 40 ¬ character limit returnArray[2] = "1" // The number of file extensions returnArray[3] = "php" // The file extension that the ¬ translator works with returnArray[4] = "1" // The number of expressions returnArray[5] = "<?php” // Expression returnArray[6] = "allFiles" // default preference returnArray[7] = "50" // priority level to apply translator return returnArray } </SCRIPT> </HEAD> <BODY> </BODY> </HTML> Schéma XML de comportement de serveur 185 4 Créez le fichier XML Participant. <participant name="PHPData"> <implementation serverModel="PHP"> <translator> <searchPatterns> <searchPattern paramNames="rs,col"> <![CDATA[ //code to be translated ]]> </searchPattern> </searchPatterns> <translations> <translation whereToSearch="tag+*" limitSearch="all" translationType="dynamic data"> <openTag>MY_DYNAMIC_CONTENT</openTag> <attributes> <attribute>SOURCE=@@rs@@</attribute> <attribute>BINDING="@@col@@"</attribute> </attributes> <display>{@@rs@@.@@col@@}</display> <closeTag>MY_DYNAMIC_CONTENT</closeTag> </translation> </translations> </translator> </implementation> </participant> 186 Chapitre 12 13 CHAPITRE 13 Sources de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les fonctions API des sources de données vous permettent de manipuler les options des menus Plus (+) du panneau Liaisons de données. Tous les fichiers de sources de données résident dans le dossier DataSources contenu dans le dossier Configuration. Chaque modèle de serveur possède son propre dossier : ASP, ColdFusion et JSP. Le sous-dossier de chaque modèle contient des fichiers HTML associés aux sources de données de ce modèle de serveur. Fonctionnement des sources de données Dans UltraDev, l'ajout de données dynamiques se fait à partir du panneau Liaisons de données. Les objets de données dynamiques affichés dans le menu Plus (+) sont basés sur le modèle de serveur spécifié pour le site. Par exemple, les utilisateurs peuvent insérer des jeux d'enregistrements, des commandes, des variables de demande, des variables de session et des variables d'application pour les applications ASP. Les étapes suivantes décrivent la procédure d'ajout de données dynamiques : 187 1 Lorsque vous cliquez sur le menu Plus (+) du panneau Liaisons de données, le menu déroulant s'affiche. Pour déterminer le contenu du menu, UltraDev commence par rechercher un fichier DataSources.xml dans le même dossier que les sources de données (par exemple, \Configuration\DataSources\ASP\DataSources.xml). Le fichier DataSources.xml décrit le contenu du menu déroulant ; il contient les références des fichiers HTML devant figurer dans le menu déroulant. UltraDev recherche une balise de titre dans chaque fichier HTML référencé. 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 apparaît dans le menu. Une fois qu'UltraDev a fini de travailler avec le fichier DataSources.xml ou si le fichier n'existe pas, UltraDev analyse le reste du dossier pour vérifier s'il contient d'autres éléments devant apparaître dans le menu. Si le dossier principal s'avère contenir des fichiers qui ne figurent pas déjà dans le menu, ils y sont ajoutés. Si des sous-dossiers contiennent des fichiers qui ne figurent pas déjà dans le menu, UltraDev crée un sous-menu et les y ajoute. 2 Lorsque l'utilisateur choisit un élément dans le menu Plus (+), la fonction addDynamicSource() est appelée afin que le code de la source de données soit ajouté au document de l'utilisateur. 3 UltraDev passe en revue chaque fichier du dossier de modèles de serveur approprié, en appelant la fonction findDynamicSources() dans chaque fichier. Pour chaque valeur du tableau retourné, UltraDev appelle la fonction generateDynamicSourceBindings() dans le même fichier afin d'obtenir une liste à jour de toutes les sources de données pour le document de l'utilisateur. Ces sources de données sont présentées à l'utilisateur sous forme d'arborescence dans les boîtes de dialogue Données dynamiques ou Texte dynamique ou dans le panneau Liaisons de données. Par exemple, l'arborescence des sources de données d'un document ASP peut se présenter comme suit : Recordset (Recordset1) ColumnOneInRecordset ColumnTwoInRecordset Recordset (Recordset2) ColumnOfRecordset Request NameOfRequestVariable NameOfAnotherRequestVariable Session NameOfSessionVariable 188 Chapitre 13 4 Si l'utilisateur clique sur le bouton moins (-), UltraDev extrait le Nuds sélectionné de l'arborescence et le transmet à deleteDynamicSource(), qui supprime le code ajouté précédemment à l'aide de addDynamicSource(). Si la suppression de la sélection n'est pas logique, la fonction renvoie un message d'erreur. Une fois deleteDynamicSource() terminée, UltraDev actualise l'arborescence des sources de données en appelant les fonctions findDynamicSources() et generateDynamicSourceBindings(). 5 Si l'utilisateur choisit une source de données et clique sur OK dans les boîtes de dialogue Données dynamiques ou Texte dynamique ou clique sur Insérer ou sur Lier dans le panneau Liaisons de données, UltraDev appelle la fonction generateDynamicDataRef(). La valeur retournée est insérée dans le document au point d'insertion. 6 Si l'utilisateur affiche les boîtes de dialogue Données dynamiques ou Texte dynamique pour modifier un objet de données dynamiques existant, la sélection dans l'arborescence de la source de données doit être initialisée sur l'objet de données dynamiques. Pour initialiser l'arborescence, UltraDev passe en revue chaque fichier du dossier de modèles de serveur approprié (le dossier \Configuration\DataSources\ASP, par exemple), en appelant l'implémentation de la fonction inspectDynamicDataRef() dans chaque fichier. UltraDev appelle la fonction inspectDynamicDataRef() pour reconvertir l'objet de données dynamiques du code du document de l'utilisateur en un élément de l'arborescence (c'est l'opération inverse de celle qui se produit lorsque la fonction generateDynamicDataRef() est appelée). Si inspectDynamicDataRef() renvoie un tableau composé de deux éléments, UltraDev fournit une indication visuelle en désignant l'élément de l'arborescence lié à la sélection courante. 7 Chaque fois que l'utilisateur modifie la sélection, UltraDev appelle la fonction inspectDynamicDataRef() pour déterminer si la nouvelle sélection est du texte dynamique ou une balise avec un attribut dynamique. Si la nouvelle sélection est dynamique, UltraDev affiche les liaisons de la sélection courante dans le panneau Liaisons de données. 8 Vous pouvez, à partir du panneau Liaisons de données ou des boîtes de dialogue Données dynamiques ou Texte dynamique, modifier le format des données pour un objet de texte dynamique ou un attribut dynamique que l'utilisateur a déjà ajouté à la page. Une fois le format modifié, UltraDev appelle la fonction generateDynamicDataRef() pour extraire la chaîne à insérer dans le document de l'utilisateur, puis transmet cette chaîne à formatDynamicDataRef() (décrite au chapitre « Formatage des données », page 195). La chaîne renvoyée par formatDynamicDataRef() est insérée dans le document. Sources de données 189 Remarque : si vous voulez qu'un fichier du dossier DataSources s'applique uniquement à un langage de script spécifique, ajoutez l'instruction suivante de manière à ce qu'elle figure à la première ligne du fichier HTML : <!-- SCRIPTING-LANGUAGE=XXX --> où XXX correspond au langage de script. Cette instruction fait apparaître la source de données dans le menu Plus du panneau Source de données uniquement lorsque le langage de script sélectionné est XXX. Par exemple, <!-- SCRIPTING-LANGUAGE=VBSCRIPT -->. API de source de données addDynamicSource() Disponibilité Dreamweaver UltraDev 1.0 Description Ajoute une source de données dynamiques. Comme il existe une implémentation de cette fonction dans chaque fichier de source de données, UltraDev appelle l'implémentation appropriée de la fonction addDynamicSource() dès qu'une source de données est sélectionnée dans le menu Plus (+). Par exemple, pour les jeux d'enregistrements ou les commandes, UltraDev appelle la fonction dw.serverBehaviorInspectorpopupServerBehavior(), qui insère un nouveau comportement de serveur dans le document. Pour les variables de demande, de session et d'application, UltraDev affiche une boîte de dialogue HTML/JavaScript permettant de recueillir le nom de la variable ; le comportement stocke alors ce nom en vue d'une utilisation ultérieure. Une fois la fonction addDynamicSource() renvoyée, UltraDev efface le contenu de l'arborescence de la source de données et appelle les fonctions findDynamicSources() et generateDynamicSourceBindings() pour remplir l'arborescence de la source de données. Valeurs renvoyées Aucune. deleteDynamicSource() Disponibilité Dreamweaver UltraDev 1.0 190 Chapitre 13 Description Appelée lorsqu'un utilisateur d'UltraDev sélectionne une source de données dans l'arborescence et clique sur le bouton Moins (-). La fonction deleteDynamicSource() affiche un message d'erreur dans certaines conditions. Par exemple, si un utilisateur tente de supprimer la colonne d'un jeu d'enregistrements, un message lui indique de supprimer plutôt le jeu d'enregistrements. Ainsi, dans UltraDev, si la sélection est un jeu d'enregistrements ou une commande, la fonction deleteDynamicSource() appelle dw.serverBehaviorInspector.deleteServerBehavior(). Si la sélection est une variable de requête, de session ou d'application, la fonction se souvient que la variable a été supprimée et ne l'affiche plus par la suite. Une fois la fonction deleteDynamicSource() renvoyée, UltraDev efface le contenu de l'arborescence de la source de données et appelle les fonctions findDynamicSources() et generateDynamicSourceBindings() pour obtenir une liste à jour de toutes les sources de données associées au document de l'utilisateur. Arguments sourceName, bindingName • sourceName est le nom du Nuds de niveau supérieur auquel le Nuds enfant est associé. • bindingName est le nom du Nuds enfant. Valeurs renvoyées Aucune. displayHelp() Description Si cette fonction est définie, un bouton Aide s'affiche sous les boutons OK et Annuler dans la boîte de dialogue. Cette fonction est appelée lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyées Aucune. Exemple Dans l'exemple suivant, la fonction displayHelp() ouvre dans une fenêtre de navigateur un fichier contenant les instructions : function displayHelp(){ dreamweaver.browseDocument('http://www.hotwired.com/¬ webmonkey/javascript/code_library/wm_pos2_elmnt_dw/¬ ?tw=javascript'); } Sources de données 191 findDynamicSources() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie les Nudss de niveau supérieur de l'arborescence de la source de données qui s'affiche dans le panneau Liaisons de données ou dans les boîtes de dialogue Données dynamiques ou Texte dynamique. Chaque fichier de la source de données contient une implémentation de la fonction findDynamicSources(). En actualisant l'arborescence, UltraDev parcourt tous les fichiers du dossier DataSources et appelle la fonction findDynamicSources() dans chacun d'eux. Valeurs renvoyées Un tableau d'objets JavaScript. Chaque objet peut avoir jusqu'à cinq attributs : 1 La propriété title correspond au libellé qui apparaît à droite de l'icône de chaque Nuds parent. La propriété title est obligatoire. 2 La propriété imageFile est le chemin d'un fichier contenant l'icône (image GIF) représentant le Nuds parent dans l'arborescence du panneau Liaisons de données ou dans les boîtes de dialogue Données dynamiques ou Texte dynamique. La propriété imageFile est obligatoire. 3 La propriété allowDelete est facultative. Si cette propriété est définie sur false, lorsque l'utilisateur clique sur ce Nuds dans le panneau Liaisons de données, le bouton Moins (-) est désactivé. Si elle est définie sur true, le bouton Moins (-) est activé. Si la propriété n'est pas définie, elle prend par défaut la valeur true. 4 La propriété dataSource est le nom du fichier dans lequel la fonction findDynamicSources() est définie. L'extension « .htm » n'est pas spécifiée. Par exemple, la fonction findDynamicSources() de Configuration/ DataSources/ASP/session.htm définit la propriété dataSource sur session. Cette propriété est obligatoire. 5 La propriété name est le nom du comportement de serveur associé à la source de données, si elle existe. Cette propriété est obligatoire. Certaines sources de données, telles que des jeux d'enregistrements, sont associées à des comportements de serveur. Lorsque vous créez un jeu d'enregistrements et que vous le nommez Auteurs, la propriété « name » doit être égale à Auteurs. D'autres sources de données, telles que les variables de session, ne sont pas associées à un comportement de serveur. Leur propriété « name » doit être une chaîne vide (" "). generateDynamicDataRef() Disponibilité Dreamweaver UltraDev 1.0 192 Chapitre 13 Description Génère l'objet de données dynamiques pour un Nuds enfant. Arguments sourceName, bindingName • • sourceName est le nom du Nuds de niveau supérieur associé au Nuds enfant. est le nom du Nuds enfant à partir duquel vous souhaitez générer un objet de données dynamiques. bindingName Valeurs renvoyées Une chaîne, que vous pouvez transmettre à formatDynamicDataRef() pour la formater avant de l'insérer dans un document d'utilisateur. generateDynamicSourceBindings() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie le Nuds enfant d'un Nuds de niveau supérieur. Arguments sourceName est le nom du Nuds de niveau supérieur dont vous voulez renvoyer les Nudss enfants. sourceName Valeurs renvoyées Un tableau d'objets JavaScript. Chaque objet peut avoir jusqu'à quatre propriétés : 1 La propriété title correspond au libellé qui apparaît à droite de l'icône de chaque Nuds parent. La propriété title est obligatoire. 2 La propriété allowDelete est facultative. Si cette propriété est définie sur false, lorsque l'utilisateur clique sur ce Nuds dans le panneau Liaisons de données, le bouton Moins (-) est désactivé. Si elle est définie sur true, le bouton Moins (-) est activé. Si la propriété n'est pas définie, elle prend par défaut la valeur true. 3 La propriété dataSource est le nom du fichier dans lequel la fonction findDynamicSources() est définie. L'extension « .htm » n'est pas spécifiée. Par exemple, la fonction findDynamicSources() de Configuration/ DataSources/ASP/session.htm définit la propriété dataSource sur session. Cette propriété est obligatoire. Sources de données 193 4 La propriété name est le nom du comportement de serveur associé à la source de données, si elle existe. Cette propriété est obligatoire. Certaines sources de données, telles que des jeux d'enregistrements, sont associées à des comportements de serveur. Lorsque vous créez un jeu d'enregistrements et que vous le nommez Auteurs, la propriété « name » doit être égale à Auteurs. D'autres sources de données, telles que les variables de session, ne sont pas associées à un comportement de serveur. Leur propriété « name » doit être une chaîne vide (" "). inspectDynamicDataRef() Disponibilité Dreamweaver UltraDev 1.0 Description A partir d'un objet de données dynamiques, détermine le Nuds correspondant dans l'arborescence des sources de données. La fonction inspectDynamicDataRef() compare la chaîne transmise à la chaîne renvoyée par generateDynamicDataRef() pour chaque Nuds de l'arborescence. En cas de correspondance, la fonction inspectDynamicDataRef() indique quel Nuds de l'arborescence correspond à la chaîne transmise. La fonction identifie le Nuds au moyen d'un tableau composé de deux éléments. Le premier élément est le nom du Nuds parent ; le second est le nom du Nuds enfant. Si aucune correspondance n'est trouvée, inspectDynamicDataRef() renvoie un tableau vide. Chaque implémentation de inspectDynamicDataRef() ne recherche que les correspondances de son propre type d'objet. Par exemple, l'implémentation de la fonction inspectDynamicDataRef() pour les jeux d'enregistrements ne trouve une correspondance que si la chaîne transmise correspond à un Nuds de jeu d'enregistrements dans l'arborescence. Arguments string string désigne l'objet de données dynamiques. Valeurs renvoyées Un tableau de deux éléments (nom du parent et nom de l'enfant) pour le Nuds correspondant ; la valeur null si aucune correspondance n'est trouvée. 194 Chapitre 13 14 CHAPITRE 14 Formatage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le chapitre précédent explique comment Dreamweaver UltraDev insère des données 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 données, en contenu d'une variable de requête ou en toute autre valeur dynamique. L'utilisateur UltraDev peut formater la façon dont cette valeur dynamique est présentée au visiteur. Ce chapitre présente l'API utilisée pour formater les données dynamiques renvoyées par les fonctions décrites dans le chapitre précédent. Les fonctions décrites dans les deux chapitres fonctionnent de concert pour formater les données dynamiques. Si l'utilisateur choisit un format pour les données dynamiques, Dreamweaver UltraDev appelle la fonction de source de données generateDynamicDataRef(), décrite au chapitre précédent, pour que la chaîne soit insérée dans le document de l'utilisateur. Avant de l'insérer dans le document de l'utilisateur, UltraDev transmet cette chaîne à la fonction formatDynamicDataRef(), décrite dans ce chapitre. La chaîne renvoyée par cette fonction formatDynamicDataRef() représente les données dynamiques formatées finalement insérées dans le document de l'utilisateur. L'utilisateur peut formater les données dynamiques de plusieurs façons. En utilisant le menu Format des boîtes de dialogue Données dynamiques ou Texte dynamique ou du panneau Liaisons de données, l'utilisateur peut formater les données avant de les insérer dans un document HTML. S'il veut créer un format, l'utilisateur peut choisir le menu Format, puis l'élément Modifier la liste de formats et sélectionner ensuite un type de format dans le menu Plus (+). Le menu Plus (+) contient une liste de types de format. Les types de format appartiennent à des catégories de format de base (Devise, Date/Heure, Casse, etc.) et regroupent tous les caractères communs à une catégorie, ce qui vous simplifie la tâche lorsque vous en créez un. 195 Supposons par exemple que vous vouliez créer un nouveau format de devise. Le formatage des devises consiste en fait à convertir un nombre en une chaîne et à insérer des virgules et un symbole de devise (le signe du dollar, $, par exemple). Le type de données de format Devise regroupe tous les paramètres communs et vous demande une valeur pour chacun d'eux. Lorsque vous créez un nouveau format de devise, il vous est demandé d'indiquer les valeurs requises. Les utilisateurs d'UltraDev peuvent formater les données à l'aide de formats prédéfinis ou créer de nouveaux formats à partir de types prédéfinis ou de types qu'ils ont créés eux-mêmes. Organisation du formatage de données Tous les fichiers de format résident dans le dossier ServerFormats du dossier Configuration. Chaque modèle de serveur possède son propre sous-dossier : ASP, JSP et ColdFusion. Chaque sous-dossier contient un fichier XML et plusieurs fichiers HTML. Le fichier XML (Formats.xml) décrit tous les choix du menu Format. Les choix Aucun et Modifier la liste de formats sont automatiquement ajoutés par UltraDev. Le dossier contient également un fichier HTML pour chaque type de format installé. Les types de format sont les suivants : Casse, Devise, Date/Heure, Maths, Nombre, Pourcentage, Simple et Rogner. Fichier Formats.xml Ce fichier contient une balise <format> pour chaque élément du menu Format. Chaque balise <format> contient les attributs obligatoires suivants : • file=fileName, « Devise ». • title=string, qui est la chaîne qui apparaît dans le menu Format. Exemple « Devise - Défaut ». • expression=regexp, qui est une expression régulière correspondant aux objets de données dynamiques qui utilisent ce format. Cette expression permet de connaître le format appliqué à un objet de données dynamiques. Par exemple, l'expression correspondant au format « Devise - Défaut » serait qui est le fichier HTML pour ce type de format. Exemple : : « <%\s*=\s*FormatCurrency\(.*, -1, -2, -2, 2\)\s*%>|<%\s*=\s*DoCurrency\(.*, -1, -2, -2, -2\)\s*%> ». La valeur de l'attribut d'expression doit être unique parmi toutes les balises <format> du fichier. Elle doit être suffisamment précise pour garantir que seules les occurrences de ce format correspondent à l'expression. • visibility=[hidden | visible], qui indique si la valeur est affichée dans le menu Format. Si la valeur de visibility est hidden (masqué), le format ne s'affiche pas dans le menu Format. 196 Chapitre 14 La balise <format> peut éventuellement contenir des attributs supplémentaires ayant un nom arbitraire. Certaines fonctions de formatage de données nécessitent un argument, format, qui est un objet JavaScript. Cet objet est le Nuds correspondant à la balise <format> dans le fichier Formats.xml. L'objet a une propriété JavaScript pour chaque attribut de la balise <format> correspondante. Voici un exemple de balise <format> pour « Devise - Défaut » : <format file="Currency" title="Devise - Défaut" ¬ 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/> Dans ce cas, le type de format est Devise. La chaîne « Devise - Défaut » s'affiche dans le menu Format. L'expression <%\s*=\s*FormatCurrency\(.*, 1, -2, -2, -2\)\s*%>|<%\s*=\s*DoCurrency\(.*, -1, -2, -2, 2\)\s*%> est utilisée pour trouver des occurrences de ce format dans le document de l'utilisateur. NumDigitsAfterDecimal, IncludeLeadingDigit, UseParensForNegativeNumbers et GroupDigits sont des paramètres du type de format Devise ; ils sont facultatifs. Ces paramètres s'affichent dans la boîte de dialogue Paramètres pour le type de format Devise. La boîte de dialogue Paramètres apparaît chaque fois qu'un utilisateur choisit le type de format Devise dans le menu Plus (+) de la boîte de dialogue Modifier la liste de formats. Les valeurs indiquées pour ces paramètres sont utilisées pour définir le nouveau format. Menu Plus (+) de Modifier la liste de formats Si vous ne voulez pas qu'un fichier du dossier ServerFormats apparaisse dans le menu Plus (+) de Modifier la liste de formats, ajoutez l'instruction suivante de manière à ce qu'elle figure sur la première ligne du fichier HTML : <!-- MENU-LOCATION=NONE --> Pour déterminer le contenu du menu, UltraDev commence par rechercher un fichier ServerFormats.xml dans le même dossier que les formats de données (par exemple, \Configuration\ServerFormats\ASP\ServerFormats.xml). Le fichier ServerFormats.xml décrit le contenu du menu Plus (+) de la boîte de dialogue Modifier la liste de formats. Il contient des références aux fichiers HTML devant figurer dans le menu. Remarque : si vous voulez qu'un fichier du dossier DataSources s'applique uniquement à un langage de script spécifique, ajoutez l'instruction suivante de manière à ce qu'elle figure à la première ligne du fichier HTML : <!-- SCRIPTING-LANGUAGE=XXX --> Formatage des données 197 où XXX correspond au langage de script. Cette instruction fait apparaître la source de données dans le menu Plus du panneau Source de données uniquement lorsque le langage de script sélectionné est XXX. Par exemple, <!-- SCRIPTINGLANGUAGE=VBSCRIPT -->. UltraDev recherche une balise de titre dans chaque fichier HTML référencé. 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 apparaît dans le menu. Lorsqu'UltraDev a fini de travailler avec le fichier ServerFormats.xml ou si ce fichier n'existe pas, UltraDev analyse le reste du dossier pour vérifier s'il contient d'autres éléments devant apparaître dans le menu. Si le dossier principal s'avère contenir des fichiers qui ne figurent pas déjà dans le menu, ils y sont ajoutés. Si des sous-dossiers contiennent des fichiers qui ne figurent pas déjà dans le menu, UltraDev crée un sous-menu et les y ajoute. Mise en service des fonctions de formatage de données Les fonctions de formatage de données sont appelées dans les cas suivants : • Dans les boîtes de dialogue Données dynamiques ou Texte dynamique, l'utilisateur choisit un Nuds à partir de l'arborescence de la source de données et un format dans le menu Format. Lorsque le format est sélectionné, UltraDev appelle generateDynamicDataRef(), puis transmet la valeur renvoyée de generateDynamicDataRef() à formatDynamicDataRef(). La valeur renvoyée de formatDynamicDataRef() s'affiche dans le paramètre Code de la boîte de dialogue. Quand l'utilisateur clique sur OK, la chaîne de code est insérée dans le document de l'utilisateur ainsi qu'à l'emplacement du point d'insertion. UltraDev appelle ensuite la fonction applyFormat() pour insérer une déclaration de fonction. Pour plus d'informations, voir « generateDynamicDataRef() », page 192. Un processus similaire a lieu lorsque l'utilisateur utilise le panneau Liaisons de données. • L'utilisateur change le format ou efface l'élément de données dynamiques. La fonction deleteFormat() est alors appelée. Cette fonction deleteFormat() supprime les scripts correspondants du document. 198 Chapitre 14 • Lorsque l'utilisateur clique sur le bouton plus (+) de la boîte de dialogue Modifier la liste de formats, UltraDev affiche un menu contenant tous les types de format pour le modèle de serveur utilisé. Chaque type de format correspond à un fichier du dossier Configuration\ServerFormats\[ModèleServeur]. Si l'utilisateur choisit, dans le menu Plus (+), un format qui nécessite un paramètre spécifié par l'utilisateur, UltraDev soumet la balise « body » au gestionnaire onLoad, puis ouvre la boîte de dialogue Paramètres, qui affiche les paramètres de ce type de format. Dans cette boîte de dialogue, l'utilisateur choisit les paramètres du format et clique sur OK. UltraDev appelle alors la fonction applyFormatDefinition(). Si le format choisi ne nécessite pas l'affichage d'une boîte de dialogue et permet à l'utilisateur de choisir des paramètres, UltraDev 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 sélectionnant dans la boîte de dialogue Modifier la liste de formats et en cliquant sur le bouton Modifier), UltraDev appelle la fonction inspectFormatDefinition() avant d'afficher la boîte de dialogue Paramètres, de façon à ce que les commandes de formulaire puissent être initialisées sur les valeurs correctes. API de formatage de données applyFormat() Disponibilité Dreamweaver UltraDev 1.0 Description Ajoute une déclaration de fonction de format au document de l'utilisateur. Lorsqu'un utilisateur choisit un format dans le champ Format des boîtes de dialogue Données dynamiques ou Texte dynamique ou dans le panneau Liaisons de données, UltraDev apporte deux modifications au document de l'utilisateur : il ajoute la fonction de format appropriée au-dessus de la balise HTML (si elle ne s'y trouve pas déjà) et il modifie l'objet de données dynamiques pour appeler la fonction de format appropriée. UltraDev ajoute la déclaration de fonction en appelant la fonction JavaScript applyFormat() dans le fichier Format des données. Il modifie l'objet de données dynamique en appelant la fonction formatDynamicDataRef(). La fonction applyFormat() doit utiliser le DOM (Document Object Model, Modèle d'objet de document) pour ajouter des déclarations de fonction au début du document de l'utilisateur. Par exemple, si l'utilisateur choisit Devise - Défaut, la fonction ajoute la déclaration de la fonction Currency. Formatage des données 199 Cette fonction peut modifier un document de l'utilisateur. Arguments format est un objet JavaScript qui décrit le format à appliquer. Cet objet JavaScript constitue le Nuds correspondant à la balise <format> dans le fichier Formats.xml. L'objet a une propriété JavaScript pour chaque attribut de la balise <format> correspondante. format Valeurs renvoyées Aucune. applyFormatDefinition() Disponibilité Dreamweaver UltraDev 1.0 Description Applique les changements à un format créé à partir de la boîte de dialogue Modifier le format. Les utilisateurs peuvent créer, modifier ou supprimer des formats à partir de la boîte de dialogue Modifier la liste de formats. Cette fonction est appelée pour appliquer toutes les modifications réalisées. Elle peut également définir d'autres propriétés, nommées arbitrairement, pour l'objet. Chaque propriété est stockée en tant qu'attribut de la balise <format> dans le fichier Formats.xml. Arguments format est un objet JavaScript correspondant à ce format. Cette fonction doit faire de la propriété expression de l'objet JavaScript l'expression régulière du format. Elle peut également définir d'autres propriétés, nommées arbitrairement, pour l'objet. Chacune de ces propriétés est stockée en tant qu'attribut de la balise <format>. format Valeurs renvoyées L'objet de format est renvoyé, si la fonction est correctement appliquée. En cas d'erreur, une chaîne d'erreur est renvoyée. Si une chaîne vide est renvoyée, le formulaire est fermé mais le nouveau format n'est pas créé, ce qui revient à annuler l'opération. deleteFormat() Disponibilité Dreamweaver UltraDev 1.0 200 Chapitre 14 Description Supprime la déclaration de fonction du format au début du document de l'utilisateur. Lorsque l'utilisateur change le format d'un objet de données dynamiques (dans le panneau Liaisons de données ou dans les boîtes de dialogue Données dynamiques ou Texte dynamique) ou supprime un objet de données dynamiques formaté, UltraDev supprime la déclaration de fonction au début du document, ainsi que l'appel de la fonction de l'objet de données dynamique en appliquant la fonction deleteFormat(). La fonction deleteFormat() doit utiliser le DOM pour supprimer la déclaration de fonction au début du document. Arguments format est un objet JavaScript qui décrit le format à supprimer. Cet objet JavaScript constitue le Nuds correspondant à la balise <format> dans le fichier Formats.xml. format Valeurs renvoyées Aucune. formatDynamicDataRef() Disponibilité Dreamweaver UltraDev 1.0 Description Ajoute à l'objet de données dynamiques l'appel de la fonction de format. Lorsqu'un utilisateur choisit un format dans le champ Format des boîtes de dialogue Données dynamiques ou Texte dynamique ou dans le panneau Liaisons de données, UltraDev apporte deux modifications au document de l'utilisateur : il ajoute la fonction de format appropriée au-dessus de la balise HTML (si elle ne s'y trouve pas déjà) et il modifie l'objet de données dynamiques pour appeler la fonction de format appropriée. UltraDev ajoute la déclaration de fonction en appelant la fonction JavaScript applyFormat() dans le fichier de format des données. Il modifie l'objet de données dynamique en appelant la fonction formatDynamicDataRef(). La fonction formatDynamicDataRef() est appelée lorsque l'utilisateur choisit un format dans le champ Format du panneau Liaisons de données ou dans les boîtes de dialogue Données dynamiques ou Texte dynamique. Elle ne modifie pas le document de l'utilisateur. Formatage des données 201 Arguments dynamicDataObject, format • • dynamicDataObject est une chaîne contenant l'objet de données dynamiques. est un objet JavaScript qui décrit le format à appliquer. Cet objet JavaScript constitue le Nuds correspondant à la balise <format> dans le fichier Formats.xml. L'objet a une propriété JavaScript pour chaque attribut de la balise <format> correspondante. format Valeurs renvoyées La nouvelle valeur de l'objet de données dynamiques est renvoyée. Si une erreur a lieu, la fonction affiche un message d'avertissement dans certaines conditions. Si la fonction renvoie une chaîne vide, le champ Format prend la valeur Aucun. inspectFormatDefinition() Disponibilité Dreamweaver UltraDev 1.0 Description Initialise les commandes de formulaire lorsqu'un utilisateur essaie de modifier un format existant dans la boîte de dialogue Modifier la liste de formats. Arguments format est un objet JavaScript qui décrit le format à appliquer. Cet objet JavaScript constitue le Nuds correspondant à la balise <format> dans le fichier Formats.xml. L'objet a une propriété JavaScript pour chaque attribut de la balise <format> correspondante. format Valeurs renvoyées Aucune. 202 Chapitre 14 15 CHAPITRE 15 Modèles de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les modèles de serveur sont des techniques permettant d'exécuter des scripts sur un serveur. Lorsqu'il définit un site à l'aide de Dreamweaver UltraDev, l'utilisateur spécifie le modèle de serveur qu'il exploite. UltraDev utilise ce modèle pour déterminer le code approprié à utiliser lorsque l'utilisateur ajoute des éléments dynamiques aux pages du site. Tous les modèles de serveur résident dans le sous-dossier ServerModels du dossier Configuration. Chaque modèle de serveur possède son propre fichier : ASP 2.0, ColdFusion 4.0 et JSP 1.0. Fonctions API des modèles de serveur UltraDev utilise les fonctions getServerLanguages(), getFileExtensions() et getVersionArray() pour déterminer les options à présenter à l'utilisateur dans l'onglet Serveur d'application de la boîte de dialogue Définition du site. displayHelp() Description Si cette fonction est définie, un bouton Aide s'affiche sous les boutons OK et Annuler dans la boîte de dialogue. Cette fonction est appelée lorsque l'utilisateur clique sur le bouton Aide. Arguments Aucun. Valeurs renvoyées Aucune. 203 Exemple Dans l'exemple suivant, la fonction displayHelp() ouvre dans une fenêtre de navigateur un fichier contenant les instructions : function displayHelp(){ dreamweaver.browseDocument('http://www.hotwired.com/¬ webmonkey/javascript/code_library/wm_pos2_elmnt_dw/¬ ?tw=javascript'); } getFileExtensions() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie les extensions des fichiers avec lesquels un modèle de serveur peut fonctionner. Par exemple, le modèle de serveur ASP prend en charge les extensions de fichier .asp et .htm. Cette fonction renvoie un tableau de chaînes ; UltraDev utilise ces chaînes pour compléter la liste Extension de page par défaut contenue dans la catégorie Serveur d'application de la boîte de dialogue Définition du site. Arguments Aucun. Valeurs renvoyées Un tableau de chaînes représentant les extensions de fichier autorisées. getServerLanguages() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie les langages de script d'un modèle de serveur pris en charge. Cette fonction renvoie un tableau de chaînes ; UltraDev utilise ces chaînes pour compléter la liste Langage de script par défaut contenue dans la catégorie Serveur d'application de la boîte de dialogue Définition du site. Un modèle de serveur peut prendre en charge plusieurs langages de script. Par exemple, le modèle de serveur ASP prend en charge JavaScript et VBScript. Remarque : si vous voulez qu'un fichier du répertoire ServerFormats s'applique uniquement à un langage de script spécifique, ajoutez l'instruction suivante sur la première ligne du fichier HTML : <!-- SCRIPTING-LANGUAGE=XXX --> où XXX correspond au langage de script. Cette instruction provoque l'apparition du comportement de serveur dans le menu Plus du panneau Comportements de serveur, seulement quand le langage de script sélectionné est XXX. 204 Chapitre 15 Arguments Aucun. Valeurs renvoyées Un tableau de chaînes représentant les langages de script pris en charge. getServerExtension() Disponibilité Dreamweaver UltraDev 4.0 Description Renvoie l'extension par défaut des fichiers exploitant le modèle de serveur en cours. L'objet serverModel est défini sur le modèle de serveur du site sélectionné si aucun document utilisateur n'est sélectionné. Arguments Aucun. Valeurs renvoyées Une chaîne représentant les extensions de fichier prises en charge. getVersionArray() Disponibilité Dreamweaver UltraDev 1.0 Description Met en correspondance les techniques de serveur avec les numéros de version. Cette fonction est appelée par dom.serverModel.getServerVersion(). Arguments Aucun. Valeurs renvoyées Un tableau d'objets de version, chacun portant un nom et une valeur de version : • ASP version 2.0 • ADODB version 2.1 Modèles de serveur 205 206 Chapitre 15 16 CHAPITRE 16 API d'intégration de Fireworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FWLaunch est une bibliothèque C partagée qui donne aux auteurs d'objets, de commandes, de comportements et d'inspecteurs de propriétés la possibilité de communiquer avec Fireworks. Ce chapitre décrit l'API d'intégration de Fireworks et son utilisation. Pour obtenir des informations générales sur la façon dont les bibliothèques C interagissent avec l'interpréteur JavaScript dans Dreamweaver, voir « Extensions C », page 319. API d'intégration de Fireworks Toutes les fonctions de l'API d'intégration de Fireworks sont des méthodes associées à l'objet FWLaunch. Les arguments facultatifs sont indiqués entre accolades ({ }). FWLaunch.bringDWToFront() Disponibilité Dreamweaver 3.0, Fireworks 3.0 Description Fait passer Dreamweaver au premier plan. Arguments Aucun. Valeurs renvoyées Aucune. 207 FWLaunch.bringFWToFront() Disponibilité Dreamweaver 3.0, Fireworks 3.0 Description Fait passer Fireworks au premier plan s'il est en cours d'exécution. Arguments Aucun. Valeurs renvoyées Aucune. FWLaunch.execJsInFireworks() Disponibilité Dreamweaver 3.0, Fireworks 3.0 Description Transmet la chaîne JavaScript spécifiée à Fireworks en vue de son exécution. Arguments javascriptOrFileURL L’argument est soit une chaîne de JavaScript littéral, soit le chemin d’accès d'un fichier .js ou .jsf, exprimé sous la forme d’une URL de type file://. Valeurs renvoyées Un objet cookie si le code JavaScript a été transmis avec succès ou un code d'erreur non nul indiquant que l'une des erreurs suivantes s'est produite : • Utilisation non valide ; l'argument javascriptOrFileURL a été spécifié comme étant null ou sous forme d'une chaîne vide ou le chemin d'accès au fichier .js ou .jsf n'était pas valide. • Erreur d'E/S de fichier ; Fireworks ne peut pas créer de fichier réponse car le disque est saturé. • Erreur de notification de Dreamweaver ; l'utilisateur n'exécute pas une version valide de Dreamweaver (3.0 ou ultérieure). • Erreur de lancement du traitement de Fireworks ; la fonction n'a pas lancé une version valide de Fireworks (3.0 ou ultérieure). • L'utilisateur a annulé l'opération. 208 Chapitre 16 FWLaunch.getJsResponse() Disponibilité Dreamweaver 3.0, Fireworks 3.0 Description Détermine si Fireworks est toujours en train d'exécuter le code JavaScript qui lui a été transmis par la fonction FWLaunch.execJsInFireworks(), que l'exécution du script se soit terminée avec succès ou qu'une erreur se soit produite. Arguments progressTrackerCookie L'argument est l'objet cookie renvoyé par FWLaunch.execJsInFireworks(). Valeurs renvoyées Une chaîne contenant le résultat du script transmis à FWLaunch.execJsInFireworks() si l'opération s'est terminée avec succès, null si Fireworks est toujours en train d'exécuter le code JavaScript, ou un code d'erreur non nul indiquant que l'une des erreurs suivantes s'est produite : • Utilisation non valide ; une erreur JavaScript s'est produite pendant que Fireworks exécutait le script. • Erreur d'E/S de fichier ; Fireworks ne peut pas créer de fichier réponse car le disque est saturé. • Erreur de notification de Dreamweaver ; l'utilisateur n'exécute pas une version valide de Dreamweaver (3.0 ou ultérieure). • Erreur de lancement du traitement de Fireworks ; la fonction n'a pas lancé une version valide de Fireworks (3.0 ou ultérieure). • L'utilisateur a annulé l'opération. API d'intégration de Fireworks 209 Valeurs renvoyées Le code suivant transmet la chaîne "prompt('Please enter your name:')" à la fonction FWLaunch.execJsInFireworks(), puis il vérifie le résultat : var progressCookie = FWLaunch.execJsInFireworks("prompt('Please enter your name:')"); var doneFlag = false; while (!doneFlag){ // check for completion every 1/2 second setTimeout('checkForCompletion()',500); } function checkForCompletion(){ if (progressCookie != null) { var response = FWLaunch.getJsResponse(progressCookie); if (response != null) { if (typeof(response) == "number") { // error or user-cancel, time to close the window // and let the user know we got an error window.close(); alert("An error occurred."); }else{ // got a valid response! alert("Nice to meet you, " + response); window.close(); } doneFlag = true; } } } FWLaunch.mayLaunchFireworks() Disponibilité Dreamweaver 2.0, Fireworks 2.0 Description Détermine s'il est possible de lancer une session d'optimisation de Fireworks. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si la plate-forme est Windows ou Macintosh. Sur Macintosh, indique si une autre session d'optimisation de Fireworks est déjà en cours d'exécution. 210 Chapitre 16 FWLaunch.optimizeInFireworks() Disponibilité Dreamweaver 2.0, Fireworks 2.0 Description Lance une session d'optimisation de Fireworks pour l'image spécifiée. Arguments docURL, imageURL, {targetWidth}, {targetHeight} • Le premier argument est le chemin d'accès du document actif, exprimé sous la forme d'une URL de type file://. • Le deuxième argument est le chemin de l'image sélectionnée. S'il s'agit d'un chemin relatif, il est relatif à docURL. • Le troisième argument, s'il est fourni, est la largeur par rapport à laquelle l'image doit être redimensionnée. • Le quatrième argument, s'il est fourni, est la hauteur par rapport à laquelle l'image doit être redimensionnée. Valeurs renvoyées 0 si une session d'optimisation de Fireworks a été lancée avec succès pour l'image spécifiée ; sinon, un code d'erreur non nul indiquant que l'une des erreurs suivantes s'est produite : • Utilisation non valide ; l'argument docURL, l'argument imageURL, ou les deux, ont été spécifiés comme étant null ou sous forme d'une chaîne vide. • Erreur d'E/S de fichier ; Fireworks ne peut pas créer de fichier réponse car le disque est saturé. • Erreur de notification de Dreamweaver ; l'utilisateur n'exécute pas une version valide de Dreamweaver (2.0 ou ultérieure). • Erreur de lancement du traitement de Fireworks ; la fonction n'a pas lancé une version valide de Fireworks (2.0 ou ultérieure). • L'utilisateur a annulé l'opération. API d'intégration de Fireworks 211 FWLaunch.validateFireworks() Disponibilité Dreamweaver 2.0, Fireworks 2.0 Description Recherche la version spécifiée de Fireworks sur le disque dur de l'utilisateur. Arguments {versionNumber} L'argument est un nombre à virgule flottante supérieur ou égal à 2.0 ; il représente la version de Fireworks qui doit être recherchée. Si cet argument n’est pas défini, il prend par défaut la valeur 2.0. Valeurs renvoyées Une valeur booléenne indiquant si la version spécifiée de Fireworks a été trouvée. Exemple Le code suivant vérifie si Fireworks 3.0 est installé : if (FWLaunch.validateFireworks(3.0)){ alert( "Fireworks 3.0 is installed."); }else{ alert( "Fireworks 3.0 is not installed."); } 212 Chapitre 16 Exemple simple d'intégration de Fireworks La commande suivante demande à Fireworks d'inviter l'utilisateur à entrer son nom, puis renvoie le nom à Dreamweaver. <html> <head> <title>Prompt in Fireworks</title> <meta http-equiv="Content-Type" content="text/html; ¬ charset=iso-8859-1"> <script> function commandButtons(){ return new Array("Prompt", "promptInFireworks()", "Cancel", ¬ "readyToCancel()", "Close","window.close()"); } var gCancelClicked = false; var gProgressTrackerCookie = null; function readyToCancel() { gCancelClicked = true; } function promptInFireworks() { var isFireworks3 = FWLaunch.validateFireworks(3.0); if (!isFireworks3) { alert("You must have Fireworks 3.0 or later to use this ¬ command"); return; } // Tell Fireworks to execute the prompt() method. gProgressTrackerCookie = FWLaunch.execJsInFireworks¬ ("prompt('Please enter your name:')"); // null means it wasn't launched, a number means an error code if (gProgressTrackerCookie == null || ¬ typeof(gProgressTrackerCookie) == "number") { window.close(); alert("an error occurred"); gProgressTrackerCookie = null; } else { // bring Fireworks to the front FWLaunch.bringFWToFront(); // start the checking to see if Fireworks is done yet checkOneMoreTime(); } } function checkOneMoreTime() { // Call checkJsResponse() every 1/2 second to see if Fireworks // is done yet API d'intégration de Fireworks 213 window.setTimeout("checkJsResponse();", 500); } function checkJsResponse() { var response = null; // The user clicked the cancel button, close the window if (gCancelClicked) { window.close(); alert("cancel clicked"); } else { // We're still going, ask Fireworks how it's doing if (gProgressTrackerCookie != null) response = ¬ FWLaunch.getJsResponse(gProgressTrackerCookie); if (response == null) { // still waiting for a response, call us again in 1/2 a // second checkOneMoreTime(); } else if (typeof(response) == "number") { // if the response was a number, it means an error // occurred // the user cancelled in Fireworks window.close(); alert("an error occurred."); } else { // got a valid response! This return value might not // always be a useful one, since not all functions in // Fireworks return a string, but we know this one does, // so we can show the user what we got. window.close(); FWLaunch.bringDWToFront(); // bring Dreamweaver to the ¬ front alert("Nice to meet you, " + response + "!"); } } } </script> </head> <body> <form> <table width="313" nowrap> <tr> <td>This command asks Fireworks to execute the prompt() ¬ function. When you click Prompt, Fireworks comes forward and ¬ asks you to enter a value into a dialog box. That value is then ¬ returned to Dreamweaver and displayed in an alert.</td> </tr> </table> </form> </body> </html> 214 Chapitre 16 17 CHAPITRE 17 API des objets Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L'API des objets Flash est une extension de l'API d'objets permettant aux développeurs d'extension de construire des objets pour créer un contenu Flash simple. Cette API fournit un moyen de définir des paramètres dans un modèle Flash Generator (fichier .swt) pour réaliser une animation Flash ou un fichier image. Outre qu'elle permet de créer de nouveaux objets Flash, l'API permet également de lire et de manipuler des objets Flash existants. Les fonctionnalités bouton Flash et texte Flash sont construites à l'aide de cette API. Le fichier de modèle Flash Generator .swt contient toutes les informations indispensables à la construction d'un fichier d'objet Flash (.swf ). Ces fonctions API vous permettent de créer un nouveau fichier .swf (ou fichier image) à partir d'un fichier .swt en remplaçant les paramètres du fichier .swt par des valeurs réelles. Pour plus d'informations sur Flash et Flash Generator, voir les manuels respectifs. SWFFile.createFile() Description Génère un nouveau fichier Objet Flash à partir du modèle et du tableau de paramètres spécifiés. Crée également une version GIF, PNG, JPEG et MOV du titre si les noms de fichier sous ces formats sont précisés. Pour pouvoir déterminer un paramètre facultatif placé après les paramètres facultatifs que vous ne voulez pas spécifier, vous devez déterminer des chaînes vides pour ces paramètres. Par exemple, si vous souhaitez spécifier un fichier .png, mais pas de fichier .gif, vous devez déterminer une chaîne vide avant de préciser le nom du fichier .png. Arguments templateFile, templateParams, swfFileName, {gifFileName}, {pngFileName}, {jpgFileName}, {movFileName}, {generatorParams} 215 • templateFile • templateParams • est le nom de fichier de sortie d'un nom de fichier .swf, exprimé sous la forme d'une URL de type file:// ou sous la forme d'une chaîne vide à ignorer. • {gifFileName} est le nom de fichier de sortie d'un nom de fichier .gif, exprimé sous la forme d'une URL de type file://. Facultatif. • {pngFileName} est le nom de fichier de sortie d'un nom de fichier .png, exprimé sous la forme d'une URL de type file://. Facultatif. • {jpgFileName} est le nom de fichier de sortie d'un nom de fichier .jpeg, exprimé sous la forme d’une URL de type file://. Facultatif. • {movFileName} est le nom de fichier de sortie d'un nom de fichier d'animation QuickTime, exprimé sous la forme d'une URL de type file://. Facultatif. • {generatorParams} est un tableau de chaînes représentant les indicateurs facultatifs de la ligne de commande de Generator. Facultatif. Dans le tableau, chaque indicateur doit être suivi de ses éléments de données. Les indicateurs couramment utilisés sont répertoriés dans le tableau suivant. est le chemin d'accès du fichier modèle, exprimé sous la forme d'une URL de type file://. Il peut s'agir d'un fichier .swt. est un tableau de paires nom/valeur dans lequel les noms identifient les paramètres du fichier .swt et les valeurs correspondent à la définition que vous voulez leur attribuer. Pour qu'un fichier .swf soit reconnu comme étant un objet Flash par Dreamweaver, le premier paramètre doit être "dwType". Sa valeur doit être une chaîne représentant le nom du type d'objet, telle que "Flash Text". swfFileName Indicateur d'option Données Description Exemple -defaultsize largeur, hauteur "-defaultsize", Définit la taille de l'image de sortie en fonction des largeur et "640", "480" hauteur indiquées. -exactFit aucune Etend le contenu de l'image de sortie pour qu'il s'adapte exactement à la taille de sortie indiquée. "-exactFit" Valeurs renvoyées Chaîne contenant l'une des valeurs suivantes : • • "noError" signifie que l'appel s'est déroulé sans anomalie. "invalidTemplateFile" signifie que le fichier de modèle choisi était invalide ou introuvable. • 216 Chapitre 17 signifie qu'au moins un des noms de fichier de sortie spécifiés n'était pas valable. "invalidOutputFile" • "invalidData" • • "initGeneratorFailed" • signifie qu'un ou plusieurs des paramètres templateParams n'étaient pas valables. signifie que Generator n'a pas pu être initialisé. "outOfMemory" signifie que l'opération n'a pas pu se terminer correctement faute de mémoire. "unknownError" signifie qu'une erreur inconnue s'est produite. Exemple Le code JavaScript suivant crée un fichier Objet Flash de type "myType" qui remplace chaque occurrence du mot "text" par "Hello World" à l'intérieur du fichier modèle. Il va créer un fichier .gif et un fichier .swf. var params = new Array; params[0] = "dwType"; params[1] = "myType"; params[2] = "text"; params[3] = "Hello World"; errorString = SWFFile.createFile( "file:///MyMac/test.swt", ¬ params, "file:///MyMac/test.swf", "file:///MyMac/test.gif"); SWFFile.getNaturalSize() Description Renvoie la taille initiale d'une animation Flash. Arguments fileName est un chemin d'accès de l'animation Flash, exprimé sous la forme d'une URL de type file://. fileName Valeurs renvoyées Un tableau contenant deux éléments, représentant la largeur et la hauteur de l'animation, ou null si le fichier n'est pas un fichier Flash. SWFFile.getObjectType() Description Renvoie le type d'objet Flash, c'est-à-dire la valeur transmise dans le paramètre dwType lorsque le fichier a été créé par la fonction SWFFile.createFile(). Arguments fileName est un chemin d'accès du fichier Objet Flash, exprimé sous la forme d'une URL de type file://. Il s'agit généralement d'un fichier .swf. fileName API des objets Flash 217 Valeurs renvoyées Une chaîne représentant le type d'objet ou null si le fichier n'est pas un fichier Objet Flash ou s'il est demeuré introuvable. Exemple Le code suivant vérifie si le fichier test.swf est un objet Flash de type myType : if ( SWFFile.getObjectType("file:///MyMac/test.swf") == ¬ "myType" ){ alert ("This is a myType object."); }else{ alert ("This is not a myType object."); } SWFFile.readFile() Description Lit un fichier Objet Flash. Arguments fileName est un chemin d'accès du fichier Objet Flash à lire, exprimé sous la forme d'une URL de type file://. fileName Valeurs renvoyées Tableau de chaînes. Le premier élément du tableau est le chemin d'accès complet du fichier modèle .swt. Les chaînes suivantes représentent les paramètres (paires nom/valeur) de l'objet. Dans le tableau, chaque nom est suivi de sa valeur. La première paire nom/valeur est "dwType" suivie de sa valeur ; null est renvoyé si le fichier demeure introuvable ou s'il n'est pas de type Objet Flash. Exemple L'appel suivant : var params = SWFFile.readFile("file:///MyMac/test.swf"); renvoie dans le tableau des paramètres ce qui suit : "file:///MyMac/test.swt" this .swf file "dwType" "myType" "text" "Hello World" 218 Chapitre 17 // the template file used to create ¬ // // // // first parameter first parameter value second parameter second parameter value 18 CHAPITRE 18 API de Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UltraDev 4, Dreamweaver 4 et Fireworks 4 offrent aux créateurs de sites web et aux développeurs un nouveau moyen de stocker et de récupérer des informations complémentaires sur les documents (telles que des commentaires de révision, des notes de modification ou le fichier source d'un document GIF ou JPEG) dans des fichiers appelés Design Notes. MMNotes est une bibliothèque C partagée qui permet aux auteurs d'extensions de lire et d'écrire dans les fichiers Design Notes. A l'instar de la bibliothèque partagée DWfile, MMNotes possède une API JavaScript qui permet d'appeler les fonctions de la bibliothèque à partir d'objets, de commandes, de comportements, de panneaux flottants, d'inspecteurs de propriétés et de traducteurs de données. MMNotes possède également une API C qui donne à d'autres applications la possibilité de lire et d'écrire dans les fichiers Design Notes. La bibliothèque partagée MMNotes peut être utilisée indépendamment de Dreamweaver, que Dreamweaver soit installé ou non. Pour plus d'informations sur l'utilisation de la fonctionnalité Design Notes dans Dreamweaver, voir le manuel Utilisation de Dreamweaver. Fonctionnement de Design Notes Chaque fichier Design Notes stocke des informations relatives à un seul document. Si un fichier Design Notes est associé à un ou plusieurs documents dans un dossier, Dreamweaver crée un sous-dossier _notes pour y stocker les fichiers Design Notes. Le dossier _notes et les fichiers Design Notes qu'il contient ne sont pas visibles dans la fenêtre Site, mais ils s'affichent dans le Finder Macintosh ou dans l'Explorateur Windows. Un nom de fichier Design Notes est composé du nom du fichier principal suivi de l'extension .mno. Par exemple, le fichier Design Notes associé à avocado8.gif est avocado8.gif.mno. 219 Les fichiers Design Notes sont des fichiers XML stockant des informations sous la forme d'une série de paires clé/valeur. La clé décrit le type des informations stockées, et la valeur représente les informations elles-mêmes. Les clés sont limitées à 64 caractères. Le fichier Design Notes associé au fichier foghorn.gif pourrait ressembler à ce qui suit : <?xml version="1.0" encoding="iso-8859-1" ?> <info> <infoitem key="FW_source" value="file:///C|sites/¬ dreamcentral/images/sourceFiles/foghorn.png" /> <infoitem key="Author" value="Heidi B." /> <infoitem key="Status" value="Final draft, approved ¬ by Jay L." /> </info> API JavaScript de Design Notes Toutes les fonctions de l'API JavaScript de Design Notes sont des méthodes associées à l'objet MMNotes. Les arguments facultatifs sont indiqués entre accolades ({ }). MMNotes.close() Description Ferme le fichier Design Notes spécifié et enregistre les modifications éventuelles. Si toutes les paires clé/valeur ont été supprimées, Dreamweaver supprime le fichier Design Notes. Arguments fileHandle L'argument est l'identificateur de fichier renvoyé par MMNotes.open(). Valeurs renvoyées Aucune. Exemple Voir « MMNotes.set() », page 224. MMNotes.filePathToLocalURL() Description Convertit le chemin d'accès du lecteur local spécifié en une URL de type file://. Arguments drivePath L'argument est une chaîne contenant le chemin d'accès complet du lecteur. 220 Chapitre 18 Valeurs renvoyées Une chaîne contenant l'URL de type file:// du fichier spécifié. Exemple Un appel à la fonction MMNotes.filePathToLocalURL('C:/sites/webdev/ index.htm') renvoie "file:///c|sites/webdev/index.htm". MMNotes.get() Description Obtient la valeur de la clé spécifiée dans le fichier Design Notes indiqué. Arguments fileHandle, keyName • Le premier argument est l'identificateur de fichier renvoyé par MMNotes.open(). • Le deuxième argument est une chaîne contenant le nom de la clé. Valeurs renvoyées Une chaîne contenant la valeur de la clé. Exemple Voir « MMNotes.getKeys() », page 221 . MMNotes.getKeyCount() Description Obtient le nombre de paires clé/valeur du fichier Design Notes spécifié. Arguments fileHandle L'argument est l'identificateur de fichier renvoyé par MMNotes.open(). Valeurs renvoyées Un nombre entier représentant le nombre de paires clé/valeur du fichier Design Notes spécifié. MMNotes.getKeys() Description Obtient une liste de toutes les clés d'un fichier Design Notes. Arguments fileHandle L'argument est l'identificateur de fichier renvoyé par MMNotes.open(). API de Design Notes 221 Valeurs renvoyées Un tableau de chaînes, chacune d'elles contenant le nom d'une clé. Exemple Le code suivant peut être utilisé dans un panneau flottant personnalisé afin d'afficher les informations Design Notes relatives au document actif : var noteHandle = MMNotes.open(dw.getDocumentDOM().URL); var theKeys = MMNotes.getKeys(noteHandle); var noteString = ""; var theValue = ""; for (var i=0; i < theKeys.length; i++){ theValue = MMNotes.get(noteHandle,theKeys[i]); noteString += theKeys[i] + " = " theValue + "\n"; } document.theForm.bigTextField.value = noteString; MMNotes.getSiteRootForFile() Description Détermine la racine du site pour le fichier Design Notes spécifié. Arguments fileURL L’argument est le chemin d’un fichier local, exprimé sous la forme d’une URL de type file://. Valeurs renvoyées Une chaîne contenant le chemin d'accès du dossier racine local du site, exprimé sous la forme d'une URL de type file://, ou une chaîne vide si Dreamweaver (ou UltraDev) n'est pas installé ou si le fichier Design Notes se trouve en dehors de tout site défini par Dreamweaver ou UltraDev. MMNotes.getVersionName() Description Obtient le nom de version de la bibliothèque partagée MMNotes indiquant l'application qui l'a implémentée. Arguments Aucun. Valeurs renvoyées Une chaîne contenant le nom de l'application qui a implémenté la bibliothèque partagée MMNotes. 222 Chapitre 18 Exemple L'appel de la fonction MMNotes.getVersionName() à partir d'une commande, d'un objet, d'un comportement, d'un inspecteur de propriétés, d'un panneau flottant ou d'un traducteur de données Dreamweaver renvoie "Dreamweaver". L'appel de la fonction MMNotes.getVersionName() à partir de Fireworks renvoie également la valeur "Dreamweaver" étant donné que Fireworks utilise la même version de la bibliothèque (celle qui a été créée par l'équipe technique de Dreamweaver). MMNotes.getVersionNum() Description Obtient le numéro de version de la bibliothèque partagée MMNotes. Arguments Aucun. Valeurs renvoyées Une chaîne contenant le numéro de version. MMNotes.localURLToFilePath() Description Convertit l'URL de type file:// spécifiée en un chemin d'accès du lecteur local. Arguments fileURL L’argument est le chemin d’un fichier local, exprimé sous la forme d’une URL de type file://. Valeurs renvoyées Une chaîne contenant le chemin d'accès du lecteur local pour le fichier spécifié. Exemple Un appel à la fonction MMNotes.localURLToFilePath('file:/// MacintoshHD/images/moon.gif') renvoie "MacintoshHD:images:moon.gif". MMNotes.open() Description Ouvre le fichier Design Notes associé au fichier spécifié ou crée un fichier Design Notes s'il n'en existe pas. Arguments filePath, {bForceCreate} • Le premier argument est le chemin du fichier principal auquel le fichier Design Notes est associé, exprimé sous la forme d’une URL de type file://. API de Design Notes 223 • Le deuxième argument est une valeur booléenne indiquant si la Note doit être créée même si la fonctionnalité Design Notes est désactivée pour le site ou si filePath n'est associé à aucun site. Valeurs renvoyées L'identificateur du fichier Design Notes ou zéro (0) si le fichier n'a pas été ouvert ni créé. Exemple Voir « MMNotes.set() », page 224 . MMNotes.remove() Description Supprime la clé spécifiée (et sa valeur) du fichier Design Notes indiqué. Arguments fileHandle, keyName • Le premier argument est l'identificateur de fichier renvoyé par MMNotes.open(). • Le deuxième argument est une chaîne contenant le nom de la clé à supprimer. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi. MMNotes.set() Description Crée ou met à jour une paire clé/valeur dans un fichier Design Notes. Arguments fileHandle, keyName, valueString • Le premier argument est l'identificateur de fichier renvoyé par MMNotes.open(). • Le deuxième argument est une chaîne contenant le nom de la clé. • Le troisième argument est une chaîne contenant la valeur. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi. 224 Chapitre 18 Exemple Le code suivant ouvre le fichier Design Notes associé à un fichier situé sur le site dreamcentral appelé peakhike99/index.html, ajoute une nouvelle paire clé/valeur, modifie la valeur d'une clé existante, puis ferme le fichier Note. var noteHandle = MMNotes.open('file:///c|sites/dreamcentral/ peakhike99/index.html',true); MMNotes.set(noteHandle,"Author","M. G. Miller"); MMNotes.set(noteHandle,"Last Changed","August 28, 1999"); MMNotes.close(noteHandle); API C de Design Notes Outre l'API JavaScript, la bibliothèque partagée MMNotes affiche une API C permettant aux autres applications de créer des fichiers Design Notes. Il n'est pas nécessaire d'appeler les fonctions C directement si vous utilisez la bibliothèque partagée MMNotes dans Dreamweaver ; les versions JavaScript de ces fonctions les appellent pour vous. Cette section contient une description de ces fonctions, de leurs arguments et des valeurs qu'elles renvoient ; les définitions de toutes les fonctions et de tous les types de données sont disponibles dans le fichier MMInfo.h du dossier Extending/ c_files dans le dossier de l'application Dreamweaver. Les arguments facultatifs sont indiqués entre accolades ({ }). void CloseNotesFile() Description Ferme le fichier Design Notes spécifié et enregistre les modifications éventuelles. Si toutes les paires clé/valeur ont été supprimées de la Note, Dreamweaver supprime cette dernière. Arguments FileHandle noteHandle L'argument est l'identificateur de fichier renvoyé par OpenNotesFile(). Valeurs renvoyées Aucune. BOOL FilePathToLocalURL() Description Convertit le chemin d'accès du lecteur local spécifié en une URL de type file://. Arguments const char* drivePath, char* localURLBuf, int localURLMaxLen API de Design Notes 225 • Le premier argument est une chaîne contenant le chemin d'accès complet du lecteur. • Le deuxième argument est la zone de mémoire tampon où l'URL de type file:// doit être stockée. • Le troisième argument est la taille maximale de localURLBuf. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi ; stockage de l'URL de type file:// dans localURLBuf. BOOL GetNote() Description Obtient la valeur de la clé spécifiée dans le fichier Design Notes indiqué. Arguments FileHandle noteHandle, const char keyName[64], char* valueBuf, int valueBufLength • Le premier argument est l'identificateur de fichier renvoyé par OpenNotesFile(). • Le deuxième argument est une chaîne contenant le nom de la clé. • Le troisième argument est la zone de mémoire tampon où la valeur doit être stockée. • Le quatrième argument est le nombre entier renvoyé par GetNoteLength(noteHandle,keyName), indiquant la longueur maximale de la mémoire tampon des valeurs. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi ; stockage de la valeur de la clé dans valueBuf. Exemple Le code suivant obtient la valeur de la clé comments dans le fichier Design Notes associé à welcome.html : FileHandle noteHandle = OpenNotesFile("file:///c|sites/avocado8/¬ iwjs/welcome.html"); int valueLength = GetNotesLength( noteHandle, "comments"); char* valueBuffer = new char[valueLength + 1] ¬ GetNote(noteHandle, "comments", valueBuffer, valueLength + 1); printf("Comments: %s",valueBuffer); CloseNotesFile(noteHandle); 226 Chapitre 18 int GetNoteLength() Description Obtient la longueur de la valeur associée à la clé spécifiée. Arguments FileHandle noteHandle, const char keyName[64] • Le premier argument est l'identificateur de fichier renvoyé par OpenNotesFile(). • Le deuxième argument est une chaîne contenant le nom de la clé. Valeurs renvoyées Un nombre entier représentant la longueur de la valeur. Exemple Voir « BOOL GetNote() », page 226 . int GetNotesKeyCount() Description Obtient le nombre de paires clé/valeur du fichier Design Notes spécifié. Arguments FileHandle noteHandle L'argument est l'identificateur de fichier renvoyé par OpenNotesFile(). Valeurs renvoyées Un nombre entier représentant le nombre de paires clé/valeur du fichier Design Notes spécifié. BOOL GetNotesKeys() Description Obtient une liste de toutes les clés d'un fichier Design Notes. Arguments FileHandle noteHandle, char* keyBufArray[64], int keyArrayMaxLen • Le premier argument est l'identificateur de fichier renvoyé par OpenNotesFile(). • Le deuxième argument est le tableau en mémoire tampon où les clés doivent être stockées. • Le troisième argument est le nombre entier renvoyé par GetNotesKeyCount(noteHandle), indiquant le nombre maximum d'éléments contenu dans le tableau en mémoire tampon des clés. API de Design Notes 227 Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi ; stockage des noms de clé dans keyBufArray. Exemple Le code suivant imprime les noms de clé et les valeurs de toutes les clés du fichier Design Notes associé à welcome.html : typedef char[64] InfoKey; FileHandle noteHandle = OpenNotesFile("file:///c|sites/avocado8/¬ iwjs/welcome.html"); if (noteHandle > 0){ int keyCount = GetNotesKeyCount(noteHandle); if (keyCount <= 0) return; InfoKey* keys = new InfoKey[keyCount]; BOOL succeeded = GetNotesKeys(noteHandle, keys, keyCount); if (succeeded){ for (int i=0; i < keyCount; i++){ printf(“Key is: %s\n", keys[i]); printf("Value is: %s\n\n", GetNote(noteHandle, keys[i]); } delete keys; } CloseNotesFile(noteHandle); BOOL GetSiteRootForFile() Description Détermine la racine du site pour le fichier Design Notes spécifié. Arguments char* filePath, char* siteRootBuf, int siteRootBufMaxLen, {InfoPrefs* infoPrefs} • Le premier argument est l'identificateur de fichier renvoyé par OpenNotesFile(). • Le deuxième argument est la zone de mémoire tampon où la racine du site doit être stockée. • Le troisième argument est la taille maximale de siteRootBuf. • Le quatrième argument est une référence à un struct dans lequel les préférences du site doivent être stockées. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi ; stockage de la racine du site dans siteRootBuf. Si infoPrefs est spécifié, la fonction renvoie également les préférences Design Notes pour le site. Le struct InfoPrefs possède deux variables : bUseDesignNotes et bUploadDesignNotes, toutes deux de type BOOL. 228 Chapitre 18 BOOL GetVersionName() Description Obtient le nom de version de la bibliothèque partagée MMNotes indiquant l'application qui l'a implémentée. Arguments char* versionNameBuf, int versionNameBufMaxLen • Le premier argument est la zone de mémoire tampon où le nom de version doit être stocké. • Le deuxième argument est la taille maximale de versionNameBuf. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi ; stockage du nom de version dans versionNameBuf. BOOL GetVersionNum() Description Obtient le numéro de version de la bibliothèque partagée MMNotes. Arguments char* versionNumBuf, int versionNumBufMaxLen • Le premier argument est la zone de mémoire tampon où le numéro de version doit être stocké. • Le deuxième argument est la taille maximale de versionNumBuf. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi ; stockage du numéro de version dans versionNumBuf. BOOL LocalURLToFilePath() Description Convertit l'URL de type file:// spécifiée en un chemin d'accès du lecteur local. Arguments const char* localURL, char* drivePathBuf, int drivePathMaxLen • Le premier argument est le chemin d’un fichier local, exprimé sous la forme d’une URL de type file://. • Le deuxième argument est la zone de mémoire tampon où le chemin d'accès du lecteur local doit être stocké. • Le troisième argument est la taille maximale de drivePathBuf. API de Design Notes 229 Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi ; stockage du chemin d'accès du lecteur local dans drivePathBuf. FileHandle OpenNotesFile() Description Ouvre le fichier Design Notes associé au fichier spécifié ou crée un fichier Design Notes s'il n'en existe pas. Arguments const char* localFileURL, {BOOL bForceCreate} • Le premier argument est une chaîne contenant le chemin du fichier principal auquel le fichier Design Notes est associé, exprimé sous la forme d’une URL de type file://. • Le deuxième argument est une valeur booléenne indiquant si le fichier Design Notes doit être créé même si la fonctionnalité Design Notes est désactivée pour le site ou si filePath n'est associé à aucun site. FileHandle OpenNotesFilewithOpenFlags() Description Ouvre le fichier Design Notes associé au fichier spécifié ou crée un fichier Design Notes s'il n'en existe pas. Vous pouvez ouvrir le fichier en mode lecture seule. Arguments const char* localFileURL, {BOOL bForceCreate}, {BOOL bReadOnly} • Le premier argument est une chaîne contenant le chemin du fichier principal auquel le fichier Design Notes est associé, exprimé sous la forme d’une URL de type file://. • Le deuxième argument est une valeur booléenne indiquant si le fichier Design Notes doit être créé même si la fonctionnalité Design Notes est désactivée pour le site ou si filePath n'est associé à aucun site. La valeur par défaut est false. Cet argument est facultatif, mais vous devez le définir si vous spécifiez le troisième argument. • Le troisième argument est une valeur booléenne indiquant si le fichier doit être ouvert en mode lecture seule. La valeur par défaut est false. Cet argument est facultatif. BOOL RemoveNote() Description Supprime la clé spécifiée (et sa valeur) du fichier Design Notes indiqué. 230 Chapitre 18 Arguments FileHandle noteHandle, const char keyName[64] • Le premier argument est l'identificateur de fichier renvoyé par OpenNotesFile(). • Le deuxième argument est une chaîne contenant le nom de la clé à supprimer. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi. BOOL SetNote() Description Crée ou met à jour une paire clé/valeur dans un fichier Design Notes. Arguments FileHandle noteHandle, const char keyName[64], const char* value • Le premier argument est l'identificateur de fichier renvoyé par OpenNotesFile(). • Le deuxième argument est une chaîne contenant le nom de la clé. • Le troisième argument est une chaîne contenant la valeur. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi. API de Design Notes 231 232 Chapitre 18 19 CHAPITRE 19 API d'E/S de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dreamweaver est livré avec une bibliothèque partagée C, appelée DWFile, qui donne aux auteurs d'objets, de commandes, de comportements, de traducteurs de données, de panneaux flottants et d'inspecteurs de propriétés la possibilité de lire et d'écrire des fichiers sur le système de fichiers local. Ce chapitre décrit l'API d'entrée/sortie de fichiers et son utilisation. Pour obtenir des informations générales sur la façon dont les bibliothèques C interagissent avec l'interpréteur JavaScript dans Dreamweaver, voir « Extensions C », page 319. Vérification de l'installation de DWfile Pour que l'accès aux fonctions de la bibliothèque DWfile soit possible, cette bibliothèque doit se trouver dans le dossier Configuration/JSExtensions et être chargée par Dreamweaver. Comme DWfile n'était pas fourni avec Dreamweaver 2 (l'utilisateur devait le télécharger séparément et l'installer), vérifiez que cette bibliothèque est disponible avant d'appeler une de ses fonctions. Pour ce faire, vérifiez le code typeof(DWfile). Si DWfile n'existe pas, typeof(DWfile) renvoie undefined. Par exemple, si vous utilisez DWfile dans le contexte d'une commande, vous pouvez vérifier si DWfile fait partie de la fonction canAcceptCommand() : // Returns true if typeof(DWfile) is not undefined, false // otherwise. function canAcceptCommand(){ return (typeof(DWfile) != "undefined"); } 233 API d'E/S de fichiers Toutes les fonctions de l'API d'E/S de fichiers sont des méthodes associées à l'objet DWfile. Les arguments facultatifs sont indiqués entre accolades ({ }). Les fonctions ayant une disponibilité de la version 2.0 sont celles qui étaient incluses dans la version de DWfile fournie sous forme de téléchargement pour Dreamweaver 2 à partir du site web de Macromedia. Il est possible que cette version de DWfile ait été installée avec certains objets propriétaires. DWfile.copy() Disponibilité Dreamweaver 3.0 Description Copie le fichier spécifié vers l'URL spécifiée. Arguments originalURL, copyURL • Le premier argument est le fichier que vous souhaitez copier, exprimé sous la forme d'une URL de type file://. • Le deuxième argument est l'emplacement dans lequel est enregistré le fichier copié, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées true si la copie a réussi, sinon false. Exemple Le code suivant copie un fichier appelé myconfig.cfg vers myconfig_backup.cfg. var fileURL = "file:///c|/Config/myconfig.cfg"; var newURL ="file:///c|/Config/myconfig_backup.cfg"; DWfile.copy(fileURL, newURL); DWfile.createFolder() Disponibilité Dreamweaver 2.0 Description Crée un dossier (répertoire) à l'emplacement spécifié. Arguments folderURL L'argument est l'emplacement du dossier que vous souhaitez créer, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées true 234 Chapitre 19 si le dossier a été créé avec succès, sinon false. Exemple Le code suivant tente de créer un dossier nommé tempFolder à la racine du lecteur C et affiche un message d'avertissement indiquant si l'opération a réussi. var folderURL = "file:///c|/tempFolder"; if (DWfile.createFolder(folderURL)){ alert("Created " + folderURL); }else{ alert("Unable to create " + folderURL); } DWfile.exists() Disponibilité Dreamweaver 2.0 Description Vérifie l'existence du fichier spécifié. Arguments fileURL L'argument est le fichier que vous recherchez, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées true si le fichier existe, sinon false. Exemple Le code suivant recherche un fichier nommé mydata.txt et affiche un message d'avertissement indiquant à l'utilisateur si le fichier existe. var fileURL = "file:///c|/temp/mydata.txt"; if (DWfile.exists(fileURL)){ alert( fileURL + " exists!"); }else{ alert( fileURL + " does not exist."); } DWfile.getAttributes() Disponibilité Dreamweaver 2.0 Description Obtient les attributs du fichier ou dossier spécifié. Arguments fileURL L'argument est le fichier ou le dossier dont vous souhaitez obtenir les attributs, exprimé sous la forme d'une URL de type file://. API d'E/S de fichiers 235 Valeurs renvoyées Une chaîne représentant les attributs du fichier ou dossier spécifié ou null si le fichier ou dossier n'existe pas. Les caractères de la chaîne représentent les attributs de la façon suivante : • • • • R signifie lecture seule. D signifie dossier (répertoire). H signifie masqué. S indique un fichier ou dossier système. Exemple Le code suivant extrait les attributs du fichier mydata.txt et il affiche un message d'avertissement si le fichier est en lecture seule. var URL = "file:///c|/temp/mydata.txt"; var str = DWfile.getAttributes(URL); if (str && (str.indexOf("R") != -1)){ alert(URL + " is read only!"); } DWfile.getModificationDate() Disponibilité Dreamweaver 2.0 Description Renvoie l'heure à laquelle le fichier a été modifié pour la dernière fois. Arguments fileURL L'argument est le fichier dont vous recherchez l'heure de la dernière modification, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées Une chaîne contenant un nombre hexadécimal qui représente le nombre d'unités de temps écoulées depuis une base de temps. La signification exacte des unités de temps et de la base de temps dépend de la plate-forme ; sous Windows, par exemple, une unité de temps est égale à 100 ns et la base de temps est le 1er janvier 1600. 236 Chapitre 19 Exemple Comme la valeur renvoyée par cette fonction n'est pas une date et une heure identifiables (et parce qu'elle dépend de la plate-forme), il est utile d'appeler la fonction deux fois et de comparer les valeurs renvoyées. Par exemple, le code suivant renvoie les dates de modification de file1.txt et file2.txt et il affiche un message d'avertissement indiquant quel fichier est le plus récent. var file1 = "file:///c|/temp/file1.txt"; var file2 = "file:///c|/temp/file2.txt"; var time1 = DWfile.getModificationDate(file1); var time2 = DWfile.getModificationDate(file2); if (time1 == time2){ alert("file1 and file2 were saved at the same time"); }else if (time1 < time2){ alert("file1 older than file2"); }else{ alert("file1 is newer than file2"); } DWfile.getCreationDate() Disponibilité Dreamweaver 4.0 Description Indique l'heure à laquelle le fichier a été créé. Arguments fileURL L'argument est le fichier dont vous recherchez l'heure de création, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées Une chaîne contenant un nombre hexadécimal qui représente le nombre d'unités de temps écoulées depuis une base de temps. La signification exacte des unités de temps et de la base de temps dépend de la plate-forme ; sous Windows, par exemple, une unité de temps est égale à 100 ns et la base de temps est le 1er janvier 1600. API d'E/S de fichiers 237 Exemple Vous pouvez appeler cette fonction ainsi que la fonction DWfile.getModificationDate() pour un fichier afin de comparer les dates de modification et de création. var file1 = "file:///c|/temp/file1.txt"; var time1 = DWfile.getCreationDate(file1); var time2 = DWfile.getModificationDate(file1); if (time1 == time2){ alert("file1 has not been modified since it was created"); }else if (time1 < time2){ alert("file1 was last modified on time2"); } DWfile.listFolder() Disponibilité Dreamweaver 2.0 Description Obtient une liste du contenu du dossier spécifié. Arguments folderURL, {constraint} • Le premier argument est le dossier pour lequel vous souhaitez obtenir une liste de contenu, exprimé sous la forme d'une URL de type file://, plus un masque de fichier à caractères génériques facultatif. Les caractères génériques valides sont * (correspond à 1 ou plusieurs caractères) et ? (correspond à un seul caractère). • Le deuxième argument, s'il est fourni, doit être soit « files » (renvoyer uniquement les fichiers), soit « directories » (renvoyer uniquement les répertoires). Si cet argument est omis, la fonction renvoie à la fois des fichiers et des répertoires. Valeurs renvoyées Un tableau de chaînes représentant le contenu du dossier. Exemple Le code suivant obtient une liste de tous les fichiers texte (.txt) du dossier Temp et affiche la liste dans un message d'avertissement. var folderURL = "file:///c|/temp"; var fileMask = "*.txt"; var list = listFolder(folderURL + "/" + fileMask, "files"); if (list){ alert(folderURL + " contains: " + list.join("\n")); } 238 Chapitre 19 DWfile.read() Disponibilité Dreamweaver 2.0 Description Lit le contenu du fichier spécifié dans une chaîne. Arguments fileURL L'argument est le fichier que vous souhaitez lire, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées Une chaîne comprenant le contenu du fichier ou null en cas d'échec de la lecture. Exemple Le code suivant lit le fichier mydata.txt et, s'il réussit, affiche un message d'avertissement renfermant le contenu du fichier. var fileURL = "file:///c|/temp/mydata.txt"; var str = DWfile.read( fileURL); if (str){ alert( fileURL + " contains: " + str); } DWfile.remove() Disponibilité Dreamweaver 3.0 Description Déplace le fichier spécifié dans la Corbeille. Arguments fileURL L'argument est le fichier que vous souhaitez supprimer, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées true si l'opération a réussi, sinon false. DWfile.write() Disponibilité Dreamweaver 2.0 Description Rédige la chaîne spécifiée dans le fichier spécifié. Si le fichier spécifié n'existe pas, il est créé. API d'E/S de fichiers 239 Arguments fileURL, text, {mode} • Le premier argument est le fichier dans lequel vous écrivez, exprimé sous la forme d'une URL de type file://. • Le deuxième argument est la chaîne qui doit être écrite. • Le troisième argument, s'il est fourni, doit être « append ». Si cet argument est omis, le contenu du fichier est écrasé par la chaîne. Valeurs renvoyées true si l'écriture de la chaîne dans le fichier a réussi, sinon false. Exemple Le code suivant tente d'écrire la chaîne "xxx" dans le fichier mydata.txt et affiche un message d'avertissement si l'écriture a réussi. Il essaie alors d'ajouter la chaîne "aaa" au fichier et affiche un deuxième message d'avertissement si l'écriture a réussi. Après l'exécution de ce script, le fichier mydata.txt contient uniquement le texte xxxaaa. var fileURL = "file:///c|/temp/mydata.txt"; if (DWfile.write(fileURL, "xxx")){ alert("Wrote xxx to " + fileURL); } if (DWfile.write(fileURL, "aaa", "append")){ alert("Appended aaa to " + fileURL); } 240 Chapitre 19 20 CHAPITRE 20 API HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les extensions ne fonctionnent pas uniquement dans le système de fichiers local. Dreamweaver offre un mécanisme d'acquisition d'informations depuis un serveur web et d'envoi d'informations à un serveur web via le protocole HTTP (Hypertext Transfer Protocol). Ce chapitre décrit l'API HTTP et son utilisation. API HTTP Toutes les fonctions de l'API HTTP sont des méthodes associées à l'objet MMHttp. La plupart d'entre elles acceptent au moins une URL comme argument et la plupart renvoient un objet. Le port par défaut pour les arguments URL est 80 ; pour spécifier un port différent, ajoutez deux points (:) et le numéro de port à la suite de l'URL. Exemple : MMHttp.getText("http://www.myserver.com:8025"); Pour les fonctions qui renvoient un objet, cet objet possède deux propriétés : statusCode et data. statusCode • • • • indique l'état de l'opération ; les valeurs possibles sont notamment : 200: Status OK (état OK) 400: Unintelligible request (requête incompréhensible) 404: Requested URL not found (URL demandée introuvable) 405: Server does not support requested method (le serveur ne prend pas en charge la méthode demandée) • 500: Unknown server error (erreur de serveur inconnue) • 503: Server capacity reached (capacité du serveur atteinte) 241 Pour obtenir une liste complète des codes d'état pour votre serveur, consultez votre fournisseur d'accès Internet ou votre administrateur système. La valeur de la propriété data varie selon la fonction ; les valeurs possibles sont spécifiées dans les listes des fonctions individuelles. Les fonctions qui renvoient un objet ont également une version de rappel (« callback »). Les fonctions de rappel permettent aux autres fonctions de s'exécuter pendant que le serveur web traite une requête HTTP. Elles sont utiles si vous effectuez plusieurs requêtes HTTP à partir de Dreamweaver. La version de rappel d'une fonction transmet directement son ID et sa valeur de renvoi à la fonction spécifiée sous la forme de son premier argument. Les arguments facultatifs sont indiqués entre accolades ({ }). MMHttp.clearTemp() Description Supprime tous les fichiers du dossier Configuration/Temp situé dans le dossier de l'application Dreamweaver. Arguments Aucun. Valeurs renvoyées Aucune. Exemple Le code suivant, lorsqu'il est enregistré dans un fichier du dossier Configuration/ Shutdown, supprime tous les fichiers du dossier Configuration/Temp lorsque l'utilisateur quitte Dreamweaver : <html> <head> <title>Clean Up Temp Files on Shutdown</title> </head> <body onLoad="MMHttp.clearTemp()"> </body> </html> MMHttp.getFile() Description Obtient le fichier situé à l'URL spécifiée et l'enregistre dans le dossier Configuration/Temp du dossier de l'application Dreamweaver sur le disque dur de l'utilisateur. Dreamweaver crée automatiquement des sous-dossiers qui reproduisent la structure de dossiers du serveur ; par exemple, si le fichier spécifié est dans http://www.dreamcentral.com/people/index.html, Dreamweaver enregistre le fichier index.html dans le sous-dossier People du dossier www.dreamcentral.com. 242 Chapitre 20 Arguments URL, {prompt}, {saveURL}, {titleBarLabel} • Le premier argument est une URL absolue sur un serveur web ; si « http:// » n'est pas indiqué dans l'URL, il est supposé. • Le deuxième argument est une valeur booléenne spécifiant s'il faut inviter l'utilisateur à enregistrer le fichier. Si saveURL est en dehors du dossier Configuration/Temp, une valeur de prompt égale à false n'est pas prise en compte pour des raisons de sécurité. • Le troisième argument est l'emplacement sur le disque dur de l'utilisateur où le fichier doit être enregistré, exprimé sous la forme d’une URL de type file://. Si l'argument prompt a pour valeur true ou si saveURL est en dehors du dossier Configuration/Temp, l'utilisateur peut remplacer saveURL dans la boîte de dialogue d'enregistrement. • Le quatrième argument est le libellé qui doit figurer dans la barre de titre de la boîte de dialogue d'enregistrement. Valeurs renvoyées Un objet représentant la réponse du serveur. La propriété data de cet objet est une chaîne contenant l'emplacement où le fichier a été enregistré, exprimé sous la forme d'une URL de type file://. Normalement, la propriété statusCode de l'objet contient le code d'état envoyé par le serveur. Toutefois, si une erreur de disque se produit lors de l'enregistrement du fichier sur le lecteur local, la propriété statusCode contient un entier représentant l'un des codes d'erreur suivants en cas d'échec de l'opération : • • • • 1: Unspecified error (erreur inconnue) 2: File not found (fichier introuvable) 3: Invalid path (chemin non valide) 4: Number of open files limit reached (la limite du nombre de fichiers ouverts est atteinte) • 5: Access denied (accès refusé) • 6: Invalid file handle (identificateur de fichier non valide) • 7: Cannot remove current working directory (impossible de supprimer le répertoire de travail en cours) • • • • • • • 8: No more directory entries (pas d'autre entrée de répertoire) 9: Error setting file pointer (erreur lors de la définition du pointeur de fichier) 10: Hardware error (erreur matérielle) 11: Sharing violation (violation de partage) 12: Lock violation (violation de verrouillage) 13: Disk full (disque saturé) 14: End of file reached (fin du fichier atteinte) API HTTP 243 Exemple Le code suivant obtient un fichier HTML, enregistre tous les fichiers dans le dossier Configuration/Temp, puis ouvre la copie locale du fichier HTML dans un navigateur : var httpReply = MMHttp.getFile("http://www.dreamcentral.com/¬ people/profiles/scott.html", false); if (httpReply.statusCode == 200){ var saveLoc = httpReply.data; dw.browseDocument(saveLoc); } MMHttp.getFileCallback() Description Obtient le fichier situé à l'URL spécifiée, l'enregistre dans le dossier Configuration/Temp du dossier de l'application Dreamweaver sur le disque dur de l'utilisateur, puis appelle la fonction spécifiée avec l’ID et le résultat de la requête. Lorsque le fichier est enregistré localement, Dreamweaver crée automatiquement des sous-dossiers qui reproduisent l'arborescence du serveur ; par exemple, si le fichier spécifié est dans http://www.dreamcentral.com/people/index.html, Dreamweaver enregistre le fichier index.html dans le sous-dossier People du dossier www.dreamcentral.com. Arguments callbackFunction, URL, {prompt}, {saveURL}, {titleBarLabel} • Le premier argument est le nom de la fonction JavaScript à appeler lorsque la requête HTTP est terminée. • Le deuxième argument est une URL absolue sur un serveur web ; si « http:// » n'est pas indiqué dans l'URL, il est supposé. • Le troisième argument est une valeur booléenne spécifiant s'il faut inviter l'utilisateur à enregistrer le fichier. Si saveURL est en dehors du dossier Configuration/Temp, une valeur de prompt égale à false n'est pas prise en compte pour des raisons de sécurité. • Le quatrième argument est l'emplacement sur le disque dur de l'utilisateur où le fichier doit être enregistré, exprimé sous la forme d’une URL de type file://. Si l'argument prompt a pour valeur true ou si saveURL est en dehors du dossier Configuration/Temp, l'utilisateur peut remplacer saveURL dans la boîte de dialogue d'enregistrement. • Le cinquième argument est le libellé qui doit figurer dans la barre de titre de la boîte de dialogue d'enregistrement. 244 Chapitre 20 Valeurs renvoyées Un objet représentant la réponse du serveur. La propriété data de cet objet est une chaîne contenant l'emplacement où le fichier a été enregistré, exprimé sous la forme d'une URL de type file://. Normalement, la propriété statusCode de l'objet contient le code d'état envoyé par le serveur. Toutefois, si une erreur disque se produit lors de l'enregistrement du fichier sur le lecteur local, la propriété statusCode contient un nombre entier représentant un code d'erreur. Voir « MMHttp.getFile() », page 242 pour une liste des codes d'erreur possibles. MMHttp.getText() Description Extrait le contenu du document situé à l'URL spécifiée. Arguments URL L'argument est une URL absolue sur un serveur web ; si « http:// » n'est pas indiqué dans l'URL, il est supposé. Valeurs renvoyées Un objet représentant la réponse du serveur. La propriété data de cet objet est une chaîne englobant le contenu du document. Exemple Le code suivant obtient le contenu d'un fichier situé sur un serveur web et le place dans un nouveau document Dreamweaver sans titre : var httpReply = MMHttp.getText("http://www.dreamcentral.com/¬ people/profiles/lori.html"); if (httpReply.statusCode == 200){ var newDoc = dw.createDocument(); newDoc.documentElement.outerHTML = httpReply.data; } MMHttp.getTextCallback() Description Extrait le contenu du document situé à l'URL spécifiée et le passe à la fonction spécifiée. Arguments callbackFunc, URL • Le premier argument est le nom de la fonction JavaScript à appeler lorsque la requête HTTP est terminée. • Le deuxième argument est une URL absolue sur un serveur web ; si « http:// » n'est pas indiqué dans l'URL, il est supposé. API HTTP 245 Valeurs renvoyées Un objet représentant la réponse du serveur. La propriété data de cet objet est une chaîne englobant le contenu du document. Exemple Le code suivant renseigne un champ de formulaire avec le texte renvoyé par la fonction MMHttp.GetTextCallback() ou affiche un message d'erreur si la fonction renvoie une erreur : var requestID = MMHttp.getTextCallback("httpCallback", ¬ "www.dreamcentral.com/index.html") function httpCallback(requestID,reply) { if (reply.statusCode == 200) { document.theForm.docContents.value = reply.data; }else{ alert("Request #: " + requestID + "returned the following ¬ error: " + reply.statusCode); } } MMHttp.postText() Description Exécute un envoi HTTP des données spécifiées à l'URL spécifiée. En règle générale, les données associées à une opération d'envoi se présentent sous la forme de texte codé en formulaire, mais il peut s'agir de tout type de données que le serveur peut accepter. Arguments URL, dataToPost, {contentType} • Le premier argument est une URL absolue sur un serveur web ; si « http:// » n'est pas indiqué dans l'URL, il est supposé. • Le deuxième argument correspond aux données à envoyer. Si le troisième argument est « application/x-www-form-urlencoded » ou s'il n'est pas spécifié, dataToPost doit être codé en formulaire conformément à la section 8.2.1 de la spécification RFC 1866 (disponible à l'adresse http:// www.faqs.org/rfcs/rfc1866.html). • Le troisième argument est le type de contenu des données à envoyer. S'il n'est pas spécifié, il prend par défaut la valeur « application/x-www-form- urlencoded ». Valeurs renvoyées Un objet représentant la réponse du serveur. La propriété data de cet objet est une chaîne englobant les données résultant de l'opération d'envoi. 246 Chapitre 20 MMHttp.postTextCallback() Description Exécute un envoi HTTP du texte à l'URL spécifiée et passe la réponse du serveur à la fonction spécifiée. En règle générale, les données associées à une opération d'envoi se présentent sous la forme de texte codé en formulaire, mais il peut s'agir de tout type de données que le serveur peut accepter. Arguments callbackFunc, URL, dataToPost, {contentType} • Le premier argument est le nom de la fonction JavaScript à appeler lorsque la requête HTTP est terminée. • Le deuxième argument est une URL absolue sur un serveur web ; si « http:// » n'est pas indiqué dans l'URL, il est supposé. • Le troisième argument correspond aux données à envoyer. Si le troisième argument est « application/x-www-form-urlencoded » ou s'il n'est pas spécifié, data doit être codé en formulaire conformément à la section 8.2.1 de la spécification RFC 1866 (disponible à l'adresse http://www.faqs.org/rfcs/ rfc1866.html). • Le quatrième argument est le type de contenu des données à envoyer. S'il n'est pas spécifié, il prend par défaut la valeur « application/x-www-form- urlencoded ». Valeurs renvoyées Un objet représentant la réponse du serveur. La propriété data de cet objet est une chaîne englobant les données résultant de l'opération d'envoi. API HTTP 247 248 Chapitre 20 21 CHAPITRE 21 API de base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les fonctions de base de données vous permettent d'utiliser des instructions SQL et des procédures stockées. A l'aide de ces fonctions, vous pouvez obtenir certaines informations sur le schéma de base de données. Un schéma de base de données donne la structure de la base (ces données structurelles sont également appelées méta-données). La structure d'une base de données comprend les noms des tableaux et des colonnes de la base de données. Les fonctions de l'API de base de données vous permettent d'extraire les noms des tableaux et des colonnes des instructions SQL et des procédures stockées, d'extraire les noms d'utilisateur et les mots de passe servant à établir des connexions de base de données et d'afficher les résultats d'une instruction SQL ou d'une procédure stockée exécutée. Ces fonctions sont utilisées au moment de la conception, lorsque les utilisateurs développent leurs applications web, par opposition au moment de l'exécution, c'est-à-dire lorsque l'application web est déployée. Les fonctions de base de données peuvent être utilisées par n'importe quelle extension. En fait, les fonctions API de comportements de serveur, formats de données et sources de données d'UltraDev utilisent les fonctions de base de données. L'exemple suivant illustre la définition de la fonction de comportement de serveur, getDynamicBindings(), pour le jeu d'enregistrements (le fichier Recordset.js figure dans le dossier /Configuration/ServerBehaviors/ASP). 249 Notez que la fonction MMDB.getColumnList() est utilisée. fonction getDynamicBindings(elementNode) { var ss = findSSrec(elementNode, LABEL_Type) var var var var connString = ss.activeconnection connName = ss.connectionName statement = ss.source rsName = ss.rsName var pa = new Array() if (String(ss.ParamArray) != "undefined") { for (var i = 0; i < ss.ParamArray.length; i++) { pa[i] = new Array() pa[i][0] = ss.ParamArray[i].name pa[i][1] = ss.ParamArray[i].value } } var statement = ReplaceParamsWithVals(statement, pa) return MMDB.getColumnList(connName, statement) } Fonctions de l'API de base de données La liste suivante décrit certains des arguments communs aux fonctions de base de données : • La plupart des fonctions de base de données utilisent un nom de connexion comme argument. Pour obtenir la liste des noms de connexion valides, utilisez le Gestionnaire de connexions d'UltraDev ou la fonction MMDB.getConnectionList(). • Les procédures stockées exigent souvent des paramètres. Il existe deux façons de spécifier des valeurs de paramètres pour certaines fonctions de base de données. En premier lieu, vous pouvez fournir un tableau de valeurs de paramètre (paramValuesArray). Si vous ne spécifiez que des valeurs de paramètre, cellesci doivent être dans l'ordre dans lequel la procédure stockée les demande. Spécifiez ensuite les valeurs de paramètre pour fournir un tableau des noms de paramètre (paramNameArray) (vous pouvez utiliser la fonction MMDB.getSPParamsAsString() pour extraire les paramètres de la procédure stockée). Si vous fournissez des noms de paramètre, les valeurs spécifiées dans paramValuesArray doivent être dans l'ordre dans lequel les noms ont été spécifiés dans paramNameArray. 250 Chapitre 21 getColdFusionDsnList() Disponibilité Dreamweaver UltraDev 4.0 Description Extrait les DSN ColdFusion du serveur du site, en utilisant les fonctions getRdsUserName() et getRdsPassword(). Arguments Aucun. Valeurs renvoyées Un tableau contenant les DSN ColdFusion définis sur le serveur pour le site en cours. MMDB.getColumnAndTypeList() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de colonnes et de leurs types à partir d'une instruction SQL SELECT exécutée. Arguments connName, statement • connName • statement désigne le nom de la connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. désigne l'instruction SQL SELECT à exécuter. Valeurs renvoyées Un tableau de chaînes représentant une liste de colonnes (et leurs types) correspondant à l'instruction SELECT ou une erreur si l'instruction SQL était incorrecte ou si la connexion n'a pas pu être établie. Exemple Le code var columnArray = MMDB.getColumnAndTypeList("EmpDB","Select * from Employees") renvoie le tableau de chaînes suivantes : columnArray[0] = "EmpName" , columnArray[1] = "varchar", ¬ columnArray[2] = "EmpFirstName", columnArray[3] = "varchar", ¬ columnArray[4] = "Age", columnArray[5] = "integer" MMDB.getColumnList() Disponibilité Dreamweaver UltraDev 1.0 API de base de données 251 Description Extrait une liste de colonnes à partir d'une instruction SQL SELECT exécutée. Arguments connName, statement • connName • statement désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. désigne l'instruction SQL SELECT à exécuter. Valeurs renvoyées Un tableau de chaînes représentant une liste de colonnes correspondant à l'instruction SELECT ou une erreur si l'instruction SQL était incorrecte ou si la connexion n'a pas pu être établie. Exemple Le code var columnArray = MMDB.getColumnList("EmpDB","Select * from Employees") renvoie le tableau de chaînes suivantes : columnArray[0] = "EmpName", columnArray[1] = "EmpFirstName", ¬ columnArray[2] = "Age" MMDB.getColumnsOfTable() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de toutes les colonnes du tableau spécifié. Arguments connName, tableName • connName • tableName connName. désigne le nom de la connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. est le nom d'un tableau de la base de données désignée par Valeurs renvoyées Un tableau de chaînes, chaque chaîne désignant le nom d'une colonne du tableau. Exemple L'instruction MMDB.getColumnsOfTable chaînes suivantes : ("EmpDB","Employees"); ["EmpID", "FirstName", "LastName"] 252 Chapitre 21 renvoie les MMDB.getConnectionList() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de toutes les chaînes de connexion définies dans le Gestionnaire de connexion. Arguments Aucun. Valeurs renvoyées Un tableau de chaînes, chaque chaîne désignant le nom d'une connexion tel qu'il apparaît dans le Gestionnaire de connexion. Exemple La fonction MMDB.getConnectionList() peut renvoyer les chaînes ["EmpDB", "Test", "TestEmp"]. MMDB.getConnectionName() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait un nom de connexion correspondant à la chaîne de connexion spécifiée. Cette fonction est utile lorsque vous devez resélectionner un nom de connexion dans l'interface utilisateur à partir des données de la page. Si vous avez une chaîne de connexion faisant référence à deux pilotes différents, vous pouvez spécifier à la fois la chaîne de connexion et le pilote correspondant au nom de connexion que vous souhaitez obtenir. Par exemple, vous pourriez avoir deux connexions : Connexion1 possède les propriétés suivantes : ConnectionString="jdbc:inetdae:velcro-qa-5:1433?database=pubs" DriverName="com.inet.tds.TdsDriver" Connexion2 possède les propriétés suivantes : ConnectionString="jdbc:inetdae:velcro-qa-5:1433?database=pubs" DriverName="com.inet.tds.TdsDriver2" Les chaînes de connexion de Connexion1 et Connexion2 sont identiques. Connexion2 établit une connexion avec une version plus récente de TdsDriver. Vous devez transmettre le nom du pilote à cette fonction pour définir complètement le nom de connexion que vous souhaitez obtenir. API de base de données 253 Arguments connString, {driverName} • connString désigne la chaîne de connexion utilisée pour obtenir le nom de connexion. • driverName est un argument facultatif définissant connString de façon plus précise. Valeurs renvoyées Une chaîne de nom de connexion correspondant à la chaîne de connexion. Exemple Le code suivant renvoie la chaîne "EmpDB" : var connectionName = MMDB.getConnectionName ¬ ("dsn=EmpDB;uid=;pwd="); MMDB.getConnectionString() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une chaîne de connexion associée au nom de connexion spécifié. Arguments connName désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. connName Valeurs renvoyées Une chaîne correspondant au nom de connexion. Exemple Le code var connectionString = MMDB.getConnectionString renvoie différentes chaînes pour une connexion ADO ou JDBC. ("EmpDB") Pour une connexion ADO, il peut renvoyer la chaîne suivante : "dsn=EmpDB;uid=;pwd="; Pour une connexion JDBC, il peut renvoyer la chaîne suivante : "jdbc:inetdae:192.168.64.49:1433?database=pubs&user=JoeUser&¬ password=joesSecret" MMDB.getDriverName() Disponibilité Dreamweaver UltraDev 1.0 254 Chapitre 21 Description Extrait le nom du pilote associé à la connexion spécifiée. Seule une connexion JDBC a un nom de pilote dans Dreamweaver UltraDev 1.0. Arguments connName désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. connName Valeurs renvoyées Une chaîne contenant le nom du pilote. Exemple L'instruction MMDB.getDriverName suivante : ("EmpDB"); peut renvoyer la chaîne "jdbc/oracle/driver/JdbcOracle" MMDB.getPassword() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait le mot de passe utilisé pour la connexion spécifiée. Arguments connName désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. connName Valeurs renvoyées Une chaîne de mot de passe associée au nom de connexion. Exemple L'instruction MMDB.getPassword ("EmpDB"); peut renvoyer "joessecret". MMDB.getRuntimeConnectionType() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie le type de connexion d'exécution du nom de connexion spécifié. Cette fonction peut renvoyer une des valeurs suivantes : "ADO", "ADODSN", "JDBC" ou "CFDSN". API de base de données 255 Arguments connName désigne le nom de la connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. connName Valeurs renvoyées Une chaîne correspondant au type de connexion. Exemple Le code suivant renverrait la chaîne "ADO" pour une connexion ADO : var connectionType = MMDB.getRuntimeConnectionType ("EmpDB") MMDB.getSPColumnList() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de colonnes de jeu de résultats générée par un appel à la procédure stockée spécifiée. Arguments connName, statement, paramValuesArray • connName • statement • est un tableau contenant une liste de valeurs test de paramètre de conception. Spécifiez les valeurs de paramètre dans l'ordre attendu par la procédure stockée. Vous pouvez utiliser la fonction MMDB.getSPParamsAsString() pour obtenir les paramètres de la procédure stockée. désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. est le nom de la procédure stockée qui renvoie le jeu de résultats lorsqu'elle est exécutée. paramValuesArray Valeurs renvoyées Un tableau de chaînes représentant la liste de colonnes. Cette fonction renvoie une erreur si l'instruction SQL est incorrecte ou si la chaîne de connexion est erronée. Exemple Le code suivant pourrait renvoyer une liste de colonnes de jeu de résultats générées à partir de la procédure stockée exécutée, getNewEmployeesMakingAtLeast : var paramValueArray = new Array("2/1/2000", "50000") var columnArray = MMDB.getSPColumnList("EmpDB", ¬ "getNewEmployeesMakingAtLeast", paramValueArray) 256 Chapitre 21 Les valeurs renvoyées sont : columnArray[0] = "EmpID", columnArray[1] = "LastName", ¬ columnArray[2] ="startDate", columnArray[3] = "salary" MMDB.getSPColumnListNamedParams() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de colonnes de jeu de résultats générée par un appel à la procédure stockée spécifiée. Arguments connName, statement, paramNameArray, paramValuesArray • connName • statement • est un tableau contenant une liste de noms de paramètre. Vous pouvez utiliser la fonction MMDB.getSPParamsAsString() pour obtenir les paramètres de la procédure stockée. • est un tableau contenant une liste de valeurs test de paramètre de conception. Vous pouvez éventuellement spécifier si la procédure exige des paramètres lors de son exécution. Si vous avez fourni des noms de paramètre dans paramNameArray, spécifiez les valeurs de paramètre dans l'ordre dans lequel leurs noms apparaissent dans paramNameArray. Si vous n'avez pas indiqué paramNameArray, spécifiez les valeurs dans l'ordre attendu par la procédure stockée. désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. est le nom de la procédure stockée qui renvoie le jeu de résultats lorsqu'elle est exécutée. paramNameArray paramValuesArray Valeurs renvoyées Un tableau de chaînes représentant la liste de colonnes. Cette fonction renvoie une erreur si l'instruction SQL est incorrecte ou si la chaîne de connexion est erronée. Exemple Le code suivant pourrait renvoyer une liste de colonnes de jeu de résultats générées à partir de la procédure stockée exécutée, getNewEmployeesMakingAtLeast : var paramNameArray = new Array("startDate", "salary") var paramValueArray = new Array("2/1/2000", "50000") var columnArray = MMDB.getSPColumnListNamedParams("EmpDB", ¬ "getNewEmployeesMakingAtLeast", paramNameArray, paramValueArray) API de base de données 257 Les valeurs renvoyées sont : columnArray[0] = "EmpID", columnArray[1] = "LastName", ¬ columnArray[2] ="startDate", columnArray[3] = "salary" MMDB.getSPParamsAsString() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie une chaîne délimitée par des virgules contenant la liste des paramètres que prend la procédure stockée. Arguments connName, procName • connName • procName désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. est le nom de la procédure stockée. Valeurs renvoyées Une chaîne délimitée par des virgules contenant la liste des paramètres exigés par la procédure stockée. Les noms, la direction et le type de données des paramètres sont inclus, séparés par des points-virgules (;). Exemple Le code MMDB.getSPParamsAsString ("EmpDB","getNewEmployeesMakingAtLeast") pourrait renvoyer une de nom de formulaire startDate;direction:in;datatype:date, salary;direction:in;datatype:integer chaîne Ici, la procédure stockée getNewEmployeesMakingAtLeast possède deux paramètres : startDate et Salary. Pour startDate, la direction est in et le type de données est date. Pour salary, la direction est in et le type de données est date. MMDB.getTables() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de tous les tableaux définis pour la base de données spécifiée. Chaque objet de tableau a trois propriétés : table, schema et catalog. Table est le nom du tableau, schema le nom du schéma contenant le tableau et catalog le nom du catalogue contenant le tableau. 258 Chapitre 21 Arguments connName désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. connName Valeurs renvoyées Un tableau d'objets ; chaque objet a trois propriétés : table, schema et catalog. Exemple L'instruction MMDB.getTables ("EmpDB"); pourrait produire un tableau de deux objets. Les propriétés du premier objet pourrait être les suivantes : object1[table:"Employees", schema:"personnel", catalog:"syscat"] Les propriétés du deuxième objet pourrait être les suivantes : object2[table:"Departments", schema:"demo", catalog:"syscat2"] MMDB.getUserName() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie un nom d'utilisateur pour la connexion spécifiée. Arguments connName désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. connName Valeurs renvoyées Une chaîne de nom d'utilisateur associée au nom de connexion. Exemple L'instruction MMDB.getUserName ("EmpDB"); pourrait renvoyer "amit". MMDB.getViews() Disponibilité Dreamweaver UltraDev 4.0 Description Extrait une liste de tous les modes d'affichage définis pour la base de données spécifiée. Chaque objet mode a les propriétés catalog, schema et view. Catalog ou schema permet de restreindre/filtrer le nombre de modes d'affichage rattachés à un nom de schéma individuel ou à un nom de catalogue défini comme faisant partie des informations de connexion. API de base de données 259 Arguments connName désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. connName Valeurs renvoyées Un tableau des objets mode d'affichage ; chaque objet possède trois propriétés : catalog, schema et view. Exemple L'exemple suivant renvoie les modes pour une valeur de connexion donnée, CONN_LIST.getValue() : var viewObjects = MMDB.getViews(CONN_LIST.getValue()) for (i = 0; i < viewObjects.length; i++) { thisView = viewObjects[i] thisSchema = Trim(thisView.schema) if (thisSchema.length == 0) { thisSchema = Trim(thisView.catalog) } if (thisSchema.length > 0) { thisSchema += "." } views.push(String(thisSchema + thisView.view)) } MMDB.showConnectionMgrDialog() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche la boîte de dialogue Gestionnaire de connexion. Arguments Aucune. Valeurs renvoyées Aucune. La boîte de dialogue Gestionnaire de connexion s’affiche. MMDB.showResultset() Disponibilité Dreamweaver UltraDev 1.0 260 Chapitre 21 Description Affiche une boîte de dialogue contenant les résultats de l'exécution de l'instruction SQL spécifiée. Cette boîte de dialogue contient une grille dont l'entête reflète les informations de colonne et les données du jeu de résultats généré par la procédure stockée exécutée. Si la chaîne de connexion ou l'instruction SQL n'est pas valide, une erreur apparaît. Vous pouvez utiliser cette fonction pour vérifier la validité de l'instruction SQL. Arguments connName, SQLstatement • connName • SQLstatement désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. désigne l'instruction SQL SELECT. Valeurs renvoyées Aucune. Cette fonction renvoie une erreur si l'instruction SQL est incorrecte ou si la chaîne de connexion est erronée. Exemple Le code suivant affiche le résultat de l'instruction SQL exécutée : MMDB.showResultset("EmpDB","Select EmpName,EmpFirstName,Age ¬ from Employees") MMDB.showSPResultset() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche une boîte de dialogue contenant les résultats de l'exécution de la procédure stockée spécifiée. Cette boîte de dialogue contient une grille dont l'en-tête reflète les informations de colonne et les données du jeu de résultats généré par la procédure stockée exécutée. Si la chaîne de connexion ou la procédure stockée n'est pas valide, une erreur apparaît. Vous pouvez utiliser cette fonction pour vérifier la validité de la procédure stockée. Arguments connName, procName, paramValuesArray • connName • procName désigne le nom de la connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. est le nom de la procédure stockée à exécuter. API de base de données 261 • est un tableau contenant une liste de valeurs test de paramètre de conception. Spécifiez les valeurs de paramètre dans l'ordre attendu par la procédure stockée. Vous pouvez utiliser la fonction MMDB.getSPParamsAsString() pour obtenir les paramètres de la procédure stockée. paramValuesArray Valeurs renvoyées Aucune. Cette fonction renvoie une erreur si l'instruction SQL est incorrecte ou si la chaîne de connexion est erronée. Exemple Le code suivant affiche le résultat de la procédure stockée exécutée : var paramValueArray = new Array("2/1/2000", "50000") MMDB.showSPResultset("EmpDB", "getNewEmployeesMakingAtLeast", ¬ paramValueArray) MMDB.showSPResultsetNamedParams() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche une boîte de dialogue contenant les résultats de l'exécution de la procédure stockée spécifiée. Cette boîte de dialogue contient une grille dont l'en-tête reflète les informations de colonne et les données du jeu de résultats généré par la procédure stockée exécutée. Si la chaîne de connexion ou la procédure stockée n'est pas valide, une erreur apparaît. Vous pouvez utiliser cette fonction pour vérifier la validité de la procédure stockée. Cette fonction diffère de MMDB.showSPResultset() car vous pouvez spécifier les valeurs de paramètre par leur nom, au lieu de l'ordre attendu par la procédure stockée. Arguments connName, procName, paramNameArray, paramValuesArray 262 Chapitre 21 • connName • procName • est un tableau contenant une liste de noms de paramètres. Vous pouvez utiliser la fonction MMDB.getSPParamsAsString() pour obtenir les paramètres de la procédure stockée. • paramValuesArray désigne un nom de connexion UltraDev spécifié dans le Gestionnaire de connexion. Ce nom sert à établir une connexion de base de données à une source de données active. est le nom de la procédure stockée qui renvoie le jeu de résultats lorsqu'elle est exécutée. paramNameArray est un tableau contenant une liste de valeurs test de paramètre de conception. Valeurs renvoyées Aucune. Cette fonction renvoie une erreur si l'instruction SQL est incorrecte ou si la chaîne de connexion est erronée. Exemple Le code suivant affiche le résultat de la procédure stockée exécutée : var paramNameArray = new Array("startDate", "salary") var paramValueArray = new Array("2/1/2000", "50000") MMDB.showSPResultsetNamedParams("EmpDB","getNewEmployees¬ MakingAtLeast", paramNameArray, paramValueArray) API de base de données 263 264 Chapitre 21 22 CHAPITRE 22 API JavaBean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ce chapitre présente les API pour JavaBeans. Les fonctions MMJB*() sont des accroches JavaScript qui appellent des introspections Java pour la prise en charge des JavaBeans. Ces fonctions extraient des noms de classe, des méthodes, des propriétés et des événements des JavaBeans, qui peuvent être affichés dans votre interface utilisateur Dreamweaver. Pour utiliser ces fonctions JavaScript et permettre à Dreamweaver d'accéder à votre JavaBean, ce dernier doit résider dans le dossier Configuration/Classes. Remarque : packageName.className correspond à une seule entrée de chaîne. MMJB.getProperties() Disponibilité Dreamweaver UltraDev 4.0 Description Introspecte la classe de bean et renvoie ses propriétés. Arguments packageName.className correspond au nom de la classe, qui fait partie du chemin de la classe. Ce doit être un élément d'archives Java .jar ou .zip résidant dans le chemin de classe de votre système ou un fichier .class installé dans le dossier Configuration/Classes. packageName.className Valeurs renvoyées Un tableau de chaînes des propriétés JavaBean. En cas d'erreur, le tableau renvoyé est vide. 265 MMJB.getMethods() Disponibilité Dreamweaver UltraDev 4.0 Description Introspecte la classe de bean et renvoie ses méthodes. Arguments packageName.className correspond au nom du paquet de la classe, qui fait partie du chemin de la classe. Ce doit être un élément d'archives Java .jar ou .zip. packageName.className Valeurs renvoyées Un tableau de chaînes des méthodes JavaBean. En cas d'erreur, le tableau renvoyé est vide. MMJB.getEvents() Disponibilité Dreamweaver UltraDev 4.0 Description Introspecte la classe de bean et renvoie ses événements. Arguments packageName.className correspond au nom du paquet de la classe, qui fait partie du chemin de la classe. Ce doit être un élément d'archives Java .jar ou .zip. packageName.className Valeurs renvoyées Un tableau de chaînes des événements JavaBean. En cas d'erreur, le tableau renvoyé est vide. MMJB.getIndexedProperties() Disponibilité Dreamweaver UltraDev 4.0 Description Introspecte la classe de bean et renvoie ses propriétés indexées. Les propriétés indexées sont des modèles de création qui se comportent comme des ensembles. Arguments packageName.className correspond au nom du paquet de la classe, qui fait partie du chemin de la classe. Ce doit être un élément d'archives Java .jar ou .zip. packageName.className 266 Chapitre 22 Valeurs renvoyées Un tableau de chaînes des propriétés indexées du JavaBean. En cas d'erreur, le tableau renvoyé est vide. MMJB.getClasses() Disponibilité Dreamweaver UltraDev 4.0 Description Lit tous les noms de classe JavaBean à partir du dossier Configuration/Classes. Arguments Aucun. Valeurs renvoyées Un tableau de chaînes des noms de classe qui réside dans le dossier Configuration/ Classes. En cas d'erreur, le tableau renvoyé est vide. MMJB.getClassesFromPackage() Disponibilité Dreamweaver UltraDev 4.0 Description Lit toutes les classes JavaBean du paquet. Arguments packageName.pathName correspond au chemin du paquet. Ce doit être un élément d'archives Java .jar ou .zip. Par exemple, C:\jdbcdrivers\Una2000_Enterprise.zip. packageName.pathName Valeurs renvoyées Un tableau de chaînes des noms de classe dans le fichier Java .jar ou .zip spécifié. En cas d'erreur, le tableau renvoyé est vide. MMJB.getErrorMessage() Disponibilité Dreamweaver UltraDev 4.0 Description Extrait le dernier message d'erreur de Dreamweaver envoyé pendant l'utilisation de l'interface MMJB. Arguments Aucun. Valeurs renvoyées Une chaîne du message Dreamweaver de la dernière erreur. API JavaBean 267 268 Chapitre 22 23 CHAPITRE 23 API d'intégration de commande source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L'API d'intégration de commande source vous permet de rédiger des DLL (bibliothèques de liens dynamiques) afin d'étendre les fonctions d'archivage et d'extraction de Dreamweaver à l'aide des fonctionnalités d'autres systèmes de commande source (tels que Sourcesafe, CVS ou Whirlwind). Ces fonctions d'API permettent également de décrire comment l'utilisateur de Dreamweaver peut interagir avec le système de commande source intégré. Pour implémenter cette API, rédigez un fragment de code DLL niveau C/partagé conforme à l'API définie dans ce chapitre. Vous devez prendre un charge au moins un jeu de fonctions d'API afin que Dreamweaver puisse l'intégrer au système de commande source. Les DLL sont placées dans le dossier Configuration/ SourceControl. Lors du démarrage, Dreamweaver charge chaque fichier DLL. Dreamweaver détermine les API prises en charge par la DLL en appelant GetProcAddress() sur les diverses API. Si une adresse n'existe pas, Dreamweaver suppose que la DLL ne prend pas en charge l'API. Si l'adresse existe, Dreamweaver utilise la version de la DLL de la fonction pour prendre en charge la fonctionnalité. Lorsqu'un utilisateur Dreamweaver définit ou modifie un site, puis choisit l'onglet SCS du serveur web, les choix correspondant aux DLL chargées depuis le dossier Configuration/SourceControl s'affichent (en plus des éléments standard) sur l'onglet. Pour ajouter des éléments personnalisés au menu Site > Commande source, ajoutez le code suivant dans le menu Site du fichier menus.xml : <menu name="Source Control" id="DWMenu_MainSite_Site_Source¬ Control"><menuitem dynamic name="None"file="Menus/MM/¬ File_SCSItems.htm" id="DWMenu_MainSite_Site_NewFeatures_¬ Default" /> </menu> 269 Intégration à Dreamweaver Lorsqu'un utilisateur Dreamweaver choisit des fonctions de connexion au serveur, de transfert de fichiers ou de Design Notes, Dreamweaver appelle la version de la DLL de la fonction API correspondante (Connect(), Disconnect(), Get(), Put(), Checkin(), Checkout(), Undocheckout() et Synchronize()). La DLL est responsable de la gestion de la requête, notamment de l'affichage des boîtes de dialogue qui rassemblent les informations ou permettent à l'utilisateur d'interagir avec la DLL. La DLL est également responsable de l'affichage des messages d'informations ou d'erreur. Le système de commande source peut éventuellement prendre en charge les Design Notes et l'archivage et l'extraction. Pour activer les Design Notes dans les systèmes de commande source, l'utilisateur Dreamweaver doit choisir l'onglet Design Notes dans la boîte de dialogue Définir les sites et cocher la case pour activer cette fonction (de la même façon qu'avec les systèmes FTP et de réseau local dans la version 3.0). Si le système de commande source ne prend pas en charge les Design Notes et que l'utilisateur désire les utiliser, Dreamweaver transporte les fichiers Design Note (.mno) pour conserver les Design Notes (de la même façon qu'avec les systèmes FTP et de réseau local dans la version 3.0). Les fonctions d'archivage et d'extraction sont traitées différemment ; si le système de commande source les prend en charge, l'utilisateur ne peut pas éviter leur utilisation dans la boîte de dialogue Design Notes. Si l'utilisateur essaie de court-circuiter le système de commande source, un message d'erreur s'affiche. Ajout d'une fonctionnalité de système de commande source Pour ajouter une fonctionnalité de système de commande source à Dreamweaver, rédigez un gestionnaire GetNewFeatures qui renvoie un jeu d'éléments de menu et les fonctions C correspondantes. Si, par exemple, vous rédigez une DLL Sourcesafe et voulez permettre aux utilisateurs de Dreamweaver de consulter l'historique d'un fichier, vous pouvez rédiger un gestionnaire GetNewFeatures qui renvoie l'élément de menu Historique et le nom de fonction C de l'historique. Ainsi, lorsque l'utilisateur clique avec le bouton droit de la souris sur un fichier, l'élément Historique s'affiche dans le menu. Si l'utilisateur choisit l'élément de menu Historique, Dreamweaver appelle la fonction historique transmettant les fichiers sélectionnés à la DLL. La DLL affiche alors la boîte de dialogue Historique pour permettre à l'utilisateur d'interagir comme s'il utilisait Sourcesafe. Fonctions obligatoires de l'API d'intégration de commande source L'API d'intégration de commande source possède des fonctions obligatoires et facultatives. Les fonctions répertoriées dans cette section sont obligatoires. 270 Chapitre 23 SCS_GetAgentInfo() Description Demande à la DLL de renvoyer son nom et sa description, qui sont affichés dans la boîte de dialogue Définir les sites. Le nom apparaît dans le menu contextuel Accès au serveur (par exemple, sourcesafe, webdav, perforce) et la description s'affiche juste en dessous du menu. Arguments name, version, description, dwAppVersion • name est le nom du système de commande source. Le nom s'affiche dans la zone de liste modifiable permettant de sélectionner un système de commande source dans l'onglet Commande source de la boîte de dialogue Définir les sites. Le nom ne doit pas compter plus de 32 caractères. • version • description • dwAppVersion est une chaîne indiquant la version de la DLL. La version s'affiche dans l'onglet Commande source de la boîte de dialogue Définir les sites. La version ne doit pas compter plus de 32 caractères. est une chaîne décrivant le système de commande source. La description s'affiche dans l'onglet Commande source de la boîte de dialogue Définir les sites. La description ne doit pas compter plus de 256 caractères. est une chaîne représentant la version de Dreamweaver qui appelle la DLL. La DLL peut utiliser cette chaîne pour déterminer la version et la langue de Dreamweaver. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_Connect() Description Connecte l'utilisateur à son système de commande source. Si la DLL ne possède pas d'informations de connexion, elle affiche une boîte de dialogue qui invite l'utilisateur à fournir ces informations et stocke ces données pour une utilisation ultérieure. Arguments connectionData, siteName • connectionData • siteName est un descripteur des données que l'agent veut recevoir de Dreamweaver lorsqu'il appelle d'autres fonctions API. est une chaîne pointant vers le nom du site. Le nom du site ne doit pas compter plus de 64 caractères. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. API d'intégration de commande source 271 SCS_Disconnect() Description Déconnecte l'utilisateur du système de commande source. Arguments connectionData est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). connectionData Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_IsConnected() Description Détermine l'état de la connexion. Arguments connectionData est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). connectionData Valeurs renvoyées true si connecté, sinon false. SCS_GetRootFolderLength() Description Renvoie la longueur du nom du dossier racine. Arguments connectionData • est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). connectionData Valeurs renvoyées Un nombre entier représentant la longueur du nom du dossier racine. Si la fonction renvoie < 0, Dreamweaver considère cette réponse comme une erreur et tente de récupérer le message d'erreur de la DLL si elle est prise en charge. SCS_GetRootFolder() Description Renvoie le nom du dossier racine. 272 Chapitre 23 Arguments connectionData, remotePath, folderLen • connectionData • remotePath • folderLen est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une mémoire tampon dans laquelle est enregistré le chemin distant complet du dossier racine. est un nombre entier indiquant la longueur de remotePath. C'est la valeur renvoyée par GetRootFolderLength. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_GetFolderListLength() Description Renvoie le nombre d'éléments dans le dossier transmis. Arguments connectionData, remotePath • connectionData • remotePath est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le chemin complet du dossier distant que la DLL vérifie pour connaître le nombre d'éléments. Valeurs renvoyées Un nombre entier indiquant le nombre d'éléments dans le dossier en cours. Si la fonction renvoie < 0, Dreamweaver considère cette réponse comme une erreur et tente de récupérer le message d'erreur de la DLL si elle est prise en charge. SCS_GetFolderList() Description Renvoie une liste de fichiers et de dossiers dans le dossier transmis, notamment des informations pertinentes telles que la date de modification, la taille et si l'élément est un dossier ou un fichier. Arguments connectionData, remotePath, itemList, numItems • connectionData • remotePath • • itemList est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le chemin complet du dossier distant que la DLL vérifie pour connaître le nombre d'éléments. est une liste pré-allouée de structures itemInfo. numItems est le nombre d'éléments GetFolderListLength). alloués à itemList (renvoyé par API d'intégration de commande source 273 Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_Get() Description Extrait une liste de fichiers ou de dossiers et les stocke localement. Arguments connectionData, remotePathList, localPathList, numItems • connectionData • remotePathList • est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de fichiers ou de dossiers distants complets à acquérir. localPathList est une copie de la liste des chemins de fichiers ou de dossiers locaux complets. • numItems est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_Put() Description Place une liste de fichiers ou de dossiers locaux dans le système de commande source. Arguments connectionData, localPathList, remotePathList, numItems • connectionData • localPathList est une liste de chemins de fichiers ou de dossiers locaux complets à placer. • remotePathList est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une copie de la liste de chemins de fichiers ou de dossiers distants complets. • numItems est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_NewFolder() Description Crée un nouveau dossier. 274 Chapitre 23 Arguments connectionData, remotePath • connectionData • remotePath est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le nom complet du dossier distant créé par la DLL. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_Delete() Description Supprime une liste de fichiers ou de dossiers du système de commande source. Arguments connectionData, remotePathList, numItems • connectionData • remotePathList • numItems est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de fichiers ou de dossiers distants complets à supprimer. est le nombre d'éléments dans remotePathList. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_Rename() Description Renomme ou déplace un fichier ou un dossier selon les valeurs spécifiées pour oldRemotePath et newRemotePath. Si, par exemple, oldRemotePath est égal à "$/dossier1/fichier1" et newRemotePath est égal à "$/dossier1/ fichierrenommé1", fichier1 est renommé fichierrenommé1 et placé dans dossier1. Si oldRemotePath est égal à "$/dossier1/fichier1" et newRemotePath est égal à "$/dossier1/sousdossier1/fichier1", fichier1 est déplacé dans le répertoire sousdossier1. Pour savoir si l'invocation de cette fonction constitue un déplacement ou l'attribution d'un nouveau nom, vérifiez les chemins parents des deux valeurs d'entrée ; s'ils sont identiques, il s'agit de l'opération « renommer ». Arguments connectionData, oldRemotePath, newRemotePath • est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). connectionData API d'intégration de commande source 275 • oldRemotePath est un chemin de fichier ou de dossier distant complet à renommer. • newRemotePath est le chemin distant complet du nouveau nom de fichier ou de dossier. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_ItemExists() Description Détermine si un fichier ou un dossier existe ou non sur le serveur. Arguments connectionData, remotePath • connectionData • remotePath est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est un chemin de fichier ou de dossier distant complet. Valeurs renvoyées true s'il existe, sinon false. Fonctions facultatives de l'API d'intégration de commande source L'API d'intégration de commande source possède des fonctions obligatoires et facultatives. Les fonctions répertoriées dans cette section sont facultatives. SCS_GetConnectionInfo() Description Affiche une boîte de dialogue permettant à l'utilisateur de modifier ou de configurer les informations de connexion de ce site. N'établit pas la connexion. Elle est appelée lorsque l'utilisateur clique sur le bouton Paramètres, dans la section Infos distantes de la boîte de dialogue Définir les sites. Arguments connectionData, siteName • connectionData • siteName est un descripteur des données que l'agent veut recevoir de Dreamweaver lorsqu'il appelle d'autres fonctions API. est une chaîne pointant vers le nom du site, qui ne doit pas dépasser 64 caractères. Valeurs renvoyées true 276 Chapitre 23 si l'insertion réussit, false si elle échoue. SCS_SiteDeleted() Description Notifie à la DLL que le site a été supprimé ou qu'il n'est plus lié à ce système de commande source, ce qui signifie que le système de commande source peut supprimer les informations encore présentes pour ce site. Arguments siteName est une chaîne pointant vers le nom du site, qui ne doit pas dépasser 64 caractères. siteName Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_SiteRenamed() Description Notifie à la DLL que l'utilisateur a renommé le site, pour qu'il puisse mettre à jour les informations relatives à ce site. Arguments oldSiteName, newSiteName • oldSiteName • newSiteName est une chaîne pointant vers le nom d'origine du site avant qu'il ne soit renommé, ce nom ne devant pas dépasser 64 caractères. est une chaîne pointant vers le nouveau nom du site renommé, ce nom ne devant pas dépasser 64 caractères. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_GetNumNewFeatures() Description Renvoie le nombre de nouvelles fonctions à ajouter à Dreamweaver (comme Historique de fichier, Différences, etc.). Arguments Aucun. Valeurs renvoyées Un nombre entier représentant le nombre de nouvelles fonctions à ajouter à Dreamweaver. Si la fonction renvoie < 0, Dreamweaver considère cette réponse comme une erreur et tente de récupérer le message d'erreur de la DLL si elle est prise en charge. API d'intégration de commande source 277 SCS_GetNewFeatures() Description Renvoie une liste d'éléments à ajouter aux menus principaux et contextuels de Dreamweaver. Par exemple, la DLL Sourcesafe peut ajouter Historique et Différences de fichiers au menu principal. Arguments menuItemList, menuItemList, enablerList, numNewFeatures • menuItemList • functionList • enablerList • numNewFeatures est le nombre d'éléments en appelant GetNumNewFeatures(). est une liste de chaînes renseignée par la DLL ; il indique les éléments à ajouter aux menus principaux et contextuels. Chaque chaîne peut contenir 32 caractères maximum. est renseigné par la DLL ; il indique les routines de la DLL à appeler lorsque l'utilisateur choisit l'élément de menu correspondant. est renseigné par la DLL ; il indique les routines de la DLL à appeler lorsque Dreamweaver a besoin de déterminer si l'élément de menu correspondant est activé. ajoutés par la DLL ; il est récupéré Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_GetCheckoutName() Description Renvoie le nom d'extraction de l'utilisateur en cours. Si cette fonction n'est pas prise en charge par le système de commande source et est activée par l'utilisateur, elle utilise la fonction interne d'archivage/extraction de Dreamweaver qui transporte les fichiers .lck depuis et vers le système de commande source. Arguments connectionData, checkOutName, emailAddress • connectionData • • checkOutName est le nom d'extraction de l'utilisateur en cours. emailAddress est l'adresse électronique de l'utilisateur en cours. est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). Valeurs renvoyées true 278 Chapitre 23 si l'insertion réussit, false si elle échoue. SCS_Checkin() Description Archive une liste de fichiers ou de dossiers locaux dans le système de commande source. La DLL doit configurer le fichier en lecture seule. Si cette fonction n'est pas prise en charge par le système de commande source et est activée par l'utilisateur, elle utilise la fonction interne d'archivage/extraction de Dreamweaver qui transporte les fichiers .lck depuis et vers le système de commande source. Arguments connectionData, localPathList, remotePathList, successList, numItems • connectionData • localPathList est une liste de chemins de fichiers ou de dossiers locaux complets à archiver. • remotePathList est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une copie de la liste de chemins de fichiers ou de dossiers distants complets. • successList • numItems est une liste de valeurs booléennes renseignée par la DLL, qui permet à Dreamweaver de savoir lequel des fichiers correspondants a été archivé avec succès. est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_Checkout() Description Extrait une liste de fichiers ou de dossiers locaux du système de commande source. La DLL doit accorder les privilèges permettant de modifier le fichier. Si cette fonction n'est pas prise en charge par le système de commande source et est activée par l'utilisateur, elle utilise la fonction interne d'archivage/extraction de Dreamweaver qui transporte les fichiers .lck depuis et vers le système de commande source. Arguments connectionData, remotePathList, localPathList, successList, numItems • connectionData • remotePathList est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de fichiers ou de dossiers distants complets à extraire. API d'intégration de commande source 279 • localPathList est une copie de la liste des chemins de fichiers ou de dossiers locaux complets. • successList • numItems est une liste de valeurs booléennes renseignée par la DLL, qui permet à Dreamweaver de savoir lequel des fichiers correspondants a été extrait avec succès. est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_UndoCheckout() Description Annule l'état d'extraction d'une liste de fichiers ou de dossiers. La DLL doit configurer le fichier en lecture seule. Si cette fonction n'est pas prise en charge par le système de commande source et est activée par l'utilisateur, elle utilise la fonction interne d'archivage/extraction de Dreamweaver qui transporte les fichiers .lck depuis et vers le système de commande source. Arguments connectionData, remotePathList, localPathList, successList, numItems • connectionData • remotePathList • est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de dossiers ou de fichiers distants complets pour lesquels annuler l'extraction. localPathList est une copie de la liste des chemins de fichiers ou de dossiers locaux complets. • successList • numItems est une liste de valeurs booléennes renseignée par la DLL, qui permet à Dreamweaver de savoir quelles extractions de fichiers correspondants ont été annulées avec succès. est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_GetNumCheckedOut() Description Renvoie le nombre de personnes qui disposent d'un fichier extrait. Arguments connectionData, remotePath 280 Chapitre 23 • connectionData • remotePath est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le chemin de dossier ou de fichier distant complet à vérifier pour voir combien d'utilisateurs l'ont extrait. Valeurs renvoyées Un nombre entier représentant le nombre de personnes qui disposent du fichier extrait. Si la fonction renvoie < 0, Dreamweaver considère cette réponse comme une erreur et tente de récupérer le message d'erreur de la DLL si elle est prise en charge. SCS_GetFileCheckoutList() Description Renvoie une liste de personnes qui disposent d'un fichier extrait. Si cette liste est vide, c'est que personne n'a de fichier extrait. Arguments connectionData, remotePath, checkOutList, emailAddressList, numCheckedOut • connectionData • remotePath • checkOutList • emailAddressList • numCheckedOut est le nombre de personnes qui ont le fichier extrait. Il est renvoyé par GetNumCheckedOut(). est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le chemin de dossier ou de fichier distant complet à vérifier pour voir combien d'utilisateurs l'ont extrait. est une liste de chaînes correspondant aux utilisateurs qui disposent du fichier extrait. Chaque chaîne ne doit pas avoir plus de 64 caractères. est une liste de chaînes correspondant aux adresses électroniques des utilisateurs. Chaque chaîne ne doit pas avoir plus de 64 caractères. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_GetErrorMessageLength() Description Renvoie la longueur du message d'erreur interne en cours de la DLL. Il est utilisé pour allouer la mémoire tampon transmise dans la fonction GetErrorMessage(). Cette fonction doit uniquement être appelée si une fonction d'API renvoie false ou < 0, ce qui indique une défaillance. API d'intégration de commande source 281 Arguments connectionData est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). connectionData Valeurs renvoyées Un nombre entier représentant la longueur du message d'erreur. SCS_GetErrorMessage() Description Renvoie le dernier message d'erreur. Si vous implémentez getErrorMessage(), Dreamweaver l'appelle à chaque fois qu'une de vos fonctions d'API renvoie false. Si une routine renvoie -1 ou false, cela indique qu'un message d'erreur doit être disponible. Arguments connectionData, errorMsg, msgLength • connectionData • errorMsg • msgLength est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une chaîne pré-allouée de la DLL dans laquelle vient se placer le message d'erreur. est la longueur de la mémoire tampon errorMsg transmise. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_GetNoteCount() Description Renvoie le nombre de clés Design Note pour le chemin de dossier ou de fichier distant spécifié. Si cela n'est pas pris en charge par le système de commande source, Dreamweaver obtient ces informations du fichier compagnon Design Note (.mno). Arguments connectionData, remotePath 282 Chapitre 23 • connectionData • remotePath est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le chemin de dossier ou de fichier distant complet que la DLL vérifie pour connaître le nombre de Design Notes qui lui sont rattachées. Valeurs renvoyées Un nombre entier représentant le nombre de Design Notes associées au fichier. Si la fonction renvoie < 0, Dreamweaver considère cette réponse comme une erreur et tente de récupérer le message d'erreur de la DLL si elle est prise en charge. SCS_GetMaxNoteLength() Description Renvoie la longueur de la Design Note la plus longue pour le fichier ou le dossier spécifié. Si cela n'est pas pris en charge par le système de commande source, Dreamweaver obtient ces informations du fichier compagnon Design Note (.mno). Arguments connectionData, remotePath • connectionData • remotePath est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le chemin de fichier ou de dossier distant complet que la DLL vérifie pour connaître la longueur maximale de Design Note. Valeurs renvoyées Un nombre entier représentant la taille de la Design Note la plus longue associée au fichier. Si la fonction renvoie < 0, Dreamweaver considère cette réponse comme une erreur et tente de récupérer le message d'erreur de la DLL si elle est prise en charge. SCS_GetDesignNotes() Description Récupère des paires clé-valeur des méta-informations pour le fichier ou le dossier spécifié. Si cela n'est pas pris en charge par le système de commande source, Dreamweaver récupère ces informations dans le fichier Design Note (.mno) correspondant. Arguments connectionData, remotePath, keyList, valueList, showColumnList, noteCount, noteLength • connectionData • remotePath • • keyList est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le chemin de fichier ou de dossier distant complet que la DLL vérifie pour connaître le nombre d'éléments. est une liste de clés Design Note, telle que « Status ». est une liste de valeurs Design Note correspondant aux clés Design Note, comme « Awaiting Signoff ». valueList API d'intégration de commande source 283 • showColumnList • noteCount • noteLength est une liste de valeurs booléennes correspondant aux clés Design Note, qui indique si Dreamweaver peut afficher la clé sous forme de colonne dans la fenêtre Site. est le nombre de Design Notes rattachées à ce fichier ou dossier ; cette valeur est renvoyée en appelant GetNoteCount(). est la longueur maximale d'une Design Note ; c'est la valeur renvoyée en appelant GetMaxNoteLength(). Valeurs renvoyées true si l'insertion réussit, false si elle échoue. SCS_SetDesignNotes() Description Enregistre les paires clé-valeur dans les méta-informations du fichier ou du dossier spécifié. Cela remplace le jeu de méta-informations du fichier. Si cette fonction n'est pas prise en charge par le système de commande source, Dreamweaver enregistre les Design Notes dans des fichiers .mno. Arguments connectionData, remotePath, keyList, valueList, showColumnList, noteCount, noteLength • connectionData • remotePath • • keyList • showColumnList • noteCount • noteLength est la longueur de la Design Note la plus longue pour le fichier ou est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est le chemin de fichier ou de dossier distant complet que la DLL vérifie pour connaître le nombre d'éléments. est une liste de clés Design Note, telle que « est une liste de valeurs Design Note correspondant aux clés Design Note, comme « Awaiting Signoff ». valueList est une liste de valeurs booléennes correspondant aux clés Design Note, qui indique si Dreamweaver peut afficher la clé sous forme de colonne dans la fenêtre Site. est le nombre de Design Notes rattachées à ce fichier ou dossier ; cela permet à la DLL de connaître la taille des listes spécifiées. Si noteCount est nul, toutes les Design Notes sont supprimées de ce fichier. le dossier spécifié. Valeurs renvoyées true 284 Chapitre 23 Status ». si l'insertion réussit, false si elle échoue. SCS_IsRemoteNewer() Description Vérifie chaque chemin distant spécifié pour voir si la copie distante est plus récente. Si cela n'est pas pris en charge par le système de commande source, Dreamweaver utilise son algorithme interne isRemoteNewer. Arguments connectionData, remotePathList, localPathList, remoteIsNewerList, numItems • connectionData • remotePathList • est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de fichiers ou de dossiers distants complets à comparer pour voir les états les plus récents. localPathList est une copie de la liste des chemins de fichiers ou de dossiers locaux complets. • remoteIsNewerList est une liste de nombres entiers, renseignée par la DLL, qui permet à Dreamweaver de savoir quel est le fichier correspondant le plus récent du côté distant. Les valeurs valides sont les suivantes : 1 lorsque la version distante est la plus récente, -1 lorsque la version locale est la plus récente, 0 lorsque les versions sont identiques. • numItems est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. Activateurs Si les activateurs facultatifs ne sont pas pris en charge par le système de commande source ou que l'application n'est pas connectée au serveur, Dreamweaver détermine quand les éléments de menu sont activés, en fonction des informations qu'il possède sur les fichiers distants. SCS_canConnect() Description Indique si l'élément de menu Connecter doit être activé ou non. Arguments Aucun. Valeurs renvoyées true si activé, sinon false. API d'intégration de commande source 285 SCS_canGet() Description Indique si l'élément de menu Acquérir doit être activé ou non. Arguments connectionData, remotePathList, localPathList, numItems • connectionData • remotePathList • est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de fichiers ou de dossiers distants complets à acquérir. localPathList est une copie de la liste des chemins de fichiers ou de dossiers locaux complets. • numItems est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si activé, sinon false. SCS_canCheckout() Description Indique si l'élément de menu Extraire doit être activé ou non. Arguments connectionData, remotePathList, localPathList, numItems • connectionData • remotePathList • est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de fichiers ou de dossiers distants complets à extraire. localPathList est une copie de la liste des chemins de fichiers ou de dossiers locaux complets. • numItems est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si activé, sinon false. SCS_canPut() Description Indique si l'élément de menu Placer doit être activé ou non. Arguments connectionData, localPathList, remotePathList, numItems 286 Chapitre 23 • connectionData • localPathList est une liste de chemins de fichiers ou de dossiers locaux complets à placer. • remotePathList est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une copie de la liste de chemins de fichiers ou de dossiers distants complets. • numItems est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si activé, sinon false. SCS_canCheckin() Description Indique si l'élément de menu Archiver doit être activé ou non. Arguments connectionData, localPathList, remotePathList, numItems • connectionData • localPathList est une liste de chemins de fichiers ou de dossiers locaux complets à archiver. • remotePathList est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une copie de la liste de chemins de fichiers ou de dossiers distants complets. • numItems est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si activé, sinon false. SCS_CanUndoCheckout() Description Indique si l'élément de menu Annuler l'extraction doit être activé ou non. Arguments connectionData, remotePathList, localPathList, numItems • connectionData • remotePathList • localPathList est une liste de chemins de fichiers ou de dossiers locaux complets à placer. est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de fichiers ou de dossiers distants complets à extraire. API d'intégration de commande source 287 • numItems est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si activé, sinon false. SCS_canNewFolder() Description Indique si l'élément de menu Nouveau dossier doit être activé ou non. Arguments connectionData, remotePath • connectionData • remotePath est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est un chemin de fichier ou de dossier distant complet que l'utilisateur a sélectionné pour indiquer où sera créé le nouveau dossier. Valeurs renvoyées true si activé, sinon false. SCS_canDelete() Description Indique si l'élément de menu Supprimer doit être activé ou non. Arguments connectionData, remotePathList, numItems • connectionData • remotePathList • numItems est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). est une liste de chemins de fichiers ou de dossiers distants complets à supprimer. est le nombre d'éléments dans chaque liste. Valeurs renvoyées true si activé, sinon false. SCS_canRename() Description Indique si l'élément de menu Renommer doit être activé ou non. Arguments connectionData, remotePathList • 288 Chapitre 23 est un pointeur vers les données de l'agent transférées vers Dreamweaver au cours de l'appel de Connect(). connectionData • est le chemin de fichier ou de dossier distant complet qui a pu être renommé. remotePath Valeurs renvoyées true si activé, sinon false. structure de itemInfo name char[256] nom de fichier ou de dossier isFolder bool true si c'est un dossier, false si c'est un fichier month int composant mois de la date de modification, de 1 à 12 day int composant jour de la date de modification, de 1 à 31 year int composant année de la date de modification, 1900+ hour int composant heure de la date de modification, de 0 à 23 minutes int composant minute de la date de modification, de 0 à 59 seconds int composant seconde de la date de modification, de 0 à 59 type char[256] type de fichier (s'il n'est pas défini par la DLL, DW utilise l'extension de fichier pour déterminer le type, comme il le fait à présent) size int en octets SCS_BeforeGet() Description Dreamweaver appelle cette fonction avant d'acquérir ou d'extraire un ou plusieurs fichiers. Cela permet à votre DLL d'effectuer une opération, comme l'ajout d'un commentaire d'extraction, sur un groupe de fichiers. Arguments *connectionData *connectionData est un pointeur vers les données de connexion. Valeurs renvoyées Une valeur booléenne true en cas de succès, sinon false. API d'intégration de commande source 289 Exemple Pour acquérir un groupe de fichiers, Dreamweaver effectue des appels vers la DLL dans l'ordre suivant : SCS_BeforeGet(connectionData); SCS_Get(connectionData,remotePathList1,localPathList1,¬ successList1); SCS_Get(connectionData,remotePathList2,localPathList2,¬ successList2); SCS_Get(connectionData,remotePathList3,localPathList3,¬ successList3); SCS_AfterGet(connectionData); SCS_BeforePut() Description Dreamweaver appelle cette fonction avant de placer ou d'archiver un ou plusieurs fichiers. Cela permet à votre DLL d'effectuer une opération, comme l'ajout d'un commentaire d'archivage, sur un groupe de fichiers. Arguments *connectionData *connectionData est un pointeur vers les données de connexion. Valeurs renvoyées Une valeur booléenne true en cas de succès, sinon false. Exemple Pour acquérir un groupe de fichiers, Dreamweaver effectue des appels vers la DLL dans l'ordre suivant : SCS_BeforePut(connectionData); SCS_Put(connectionData,localPathList1,remotePathList1,¬ successList1); SCS_Put(connectionData,localPathList2,remotePathList2,¬ successList2); SCS_Put(connectionData,localPathList3,remotePathList3,¬ successList3); SCS_AfterPut(connectionData); SCS_AfterGet() Description Dreamweaver appelle cette fonction après avoir acquis ou extrait un ou plusieurs fichiers. Cela permet à votre DLL d'effectuer n'importe quelle opération après l'acquisition ou l'extraction d'un lot, comme la présentation d'une boîte de dialogue de résumé. Arguments *connectionData *connectionData 290 Chapitre 23 est un pointeur vers les données de connexion. Valeurs renvoyées Une valeur booléenne true en cas de succès, sinon false. Exemple Voir l'exemple de la section « SCS_BeforeGet() », page 289. SCS_AfterPut() Description Dreamweaver appelle cette fonction après avoir placé ou archivé un ou plusieurs fichiers. Cela permet à la DLL d'effectuer n'importe quelle opération après le placement ou l'archivage d'un lot, comme la présentation d'une boîte de dialogue de résumé. Arguments *connectionData *connectionData est un pointeur vers les données de connexion. Valeurs renvoyées true en cas de succès, sinon false. Exemple Voir l'exemple de la section « SCS_BeforePut() », page 290. API d'intégration de commande source 291 292 Chapitre 23 24 CHAPITRE 24 Traducteurs de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Définition d'un traducteur de données Les traducteurs de données permettent de convertir des marqueurs spécialisés, tels que des SSI (server-side includes, inclusions à partir du serveur), des instructions JavaScript conditionnelles ou d'autres codes non HTML (ePerl, PHP3, JSP, CFML ou ASP, par exemple), en code HTML pouvant être lu et affiché par Dreamweaver. Dans Dreamweaver 3, vous pouvez traduire des attributs contenus dans les balises ainsi que des balises entières ou des blocs de code. Conseil: si vous suivez la procédure décrite dans ce chapitre, vous constaterez que la création d'un nouveau traducteur implique que vous rédigiez vos propres fonctions et, si possible, vos DLL ou autres bibliothèques partagées. UltraDev propose une autre méthode, qui utilise une implémentation simplifiée des appels aux API getTranslatorInfo() et translateMarkup() ainsi qu'un fichier participant XML. Cette méthode plus simple met à profit les services du Gestionnaire de traduction d'UltraDev. Pour obtenir une description de cette autre méthode de création de traducteurs, voir le « Utilisation du gestionnaire de traduction », page 183. Vous y trouverez également des renseignements sur le schéma XML d'UltraDev et les fichiers participants. Les balises ou les blocs de code convertis doivent être délimités dans des régions verrouillées pour que les marqueurs d'origine soient préservés. Les attributs convertis ne nécessitent pas de verrouillage, ce qui simplifie le processus de contrôle des balises qui les contiennent. Tous les traducteurs de données (blocs/balises ou attributs) sont des fichiers HTML. La balise HEAD d'un traducteur de données contient au moins deux fonctions JavaScript : une fonction spécifiant l'action du traducteur et les fichiers sur lesquels il agit, une autre fonction chargée d'exécuter la traduction, et un nombre illimité de fonctions associées. La balise BODY d'un traducteur de données est vide. 293 La traduction de données, surtout lorsqu'elle porte sur des balises entières ou des blocs de code, peut comporter plusieurs opérations complexes qui ne peuvent pas être effectuées avec JavaScript ou qui seraient effectuées de façon plus efficace sous C. Si vous connaissez bien les langages C ou C++, lisez également « Extensions C », page 319 Fonctionnement des traducteurs de données Dreamweaver traite tous les fichiers de traducteur de la même façon, qu'ils convertissent des balises entières ou uniquement des attributs. Au démarrage, Dreamweaver lit tous les fichiers du dossier Configuration/Translators et appelle la fonction getTranslatorInfo() pour obtenir des informations sur le traducteur. Dreamweaver ignore tous les fichiers dans lesquels la fonction getTranslatorInfo() est absente ou qui contiennent une erreur empêchant de la définir. Remarque : pour éviter que des erreurs JavaScript n'affectent le démarrage, les erreurs détectées dans un fichier de traducteur ne sont signalées qu'après le chargement de tous les traducteurs. Pour plus d'informations sur les traducteurs de débogage, voir « Recherche de bogues dans le traducteur », page 316. Dreamweaver appelle également la fonction translateMarkup() dans tous les fichiers de traducteur appropriés (spécifiés dans les préférences de traduction) chaque fois que l'utilisateur ajoute un nouveau contenu ou modifie un contenu existant qui requiert une traduction. Par conséquent, Dreamweaver appelle la fonction translateMarkup() lorsque l'utilisateur effectue l'une des opérations suivantes : • • • • • Ouverture d'un fichier dans Dreamweaver. Retour à la fenêtre de document après modifications dans le panneau HTML. Modification des propriétés d'un objet dans le document actif. Insertion d'un objet (à l'aide du panneau Objets ou du menu Insertion). Actualisation du document actif après sa modification dans une autre application. • Application d'un modèle au document. • Collage ou déplacement d'un contenu vers ou à l'intérieur de la fenêtre de document. • Enregistrement des modifications dans un fichier dépendant. • Appel d'une commande, d'un comportement, d'un inspecteur de propriétés ou de toute autre extension qui définit la propriété innerHTML ou outerHTML d'un objet de balise ou la propriété data d'un objet de commentaire. 294 Chapitre 24 • Sélection de Fichier > Convertir > Compatible navigateurs 3.0. • Sélection de Modifier > Mode Mise en forme > Convertir les tableaux en calques. • Sélection de Modifier > Mode Mise en forme > Convertir les calques en tableau. • Sélection de Modifier > Traduire > translatorName. • Modification d'une balise ou d'un attribut dans Quick Tag Editor, suivie de l'activation de la touche Tab ou Entrée. API de traducteur de données Il existe trois fonctions personnalisées dans l'API de traducteur de données. Les fonctions de l'API de traducteur de données diffèrent des fonctions de l'API JavaScript principale sur trois points : • Elles ne sont pas des méthodes de l'objet dreamweaver, dom ou site. • Elles ne sont significatives que dans le contexte des fichiers de traducteur de données. En d'autres termes, Dreamweaver n'appelle automatiquement la fonction translateMarkup() que si elle est définie dans un fichier de traducteur de données, tandis que dans tout autre fichier d'extension, une fonction nommée translateMarkup() se comporte comme une fonction utilisateur et vous devez l'appeler explicitement. • Il vous incombe d'écrire le corps de chaque fonction et de renvoyer une valeur, si nécessaire. Ce mode de fonctionnement est à l'opposé de celui des fonctions de l'API principale dans laquelle vous appelez les fonctions, leur transmettez des arguments, puis Dreamweaver génère des valeurs renvoyées, le cas échéant. Dans le cas de cette API spécifique, Dreamweaver appelle les fonctions et leur transmet des arguments et vous générez ensuite des valeurs renvoyées, le cas échéant. getTranslatorInfo() Description Affiche des informations sur le traducteur et sur les fichiers qu'il peut traiter. Conseil: UltraDev fournit une implémentation simplifiée des appels de getTranslatorInfo() et translateMarkup(), qui utilise le Gestionnaire de traduction d'UltraDev ainsi qu'un fichier participant XML. Pour obtenir une description de cette autre méthode de création de traducteurs, voir « Utilisation du gestionnaire de traduction », page 183. Vous y trouverez également des renseignements sur les fichiers participants XML d'UltraDev. Arguments Aucun. Traducteurs de données 295 Valeurs renvoyées Tableau de chaînes. Les éléments du tableau doivent apparaître dans l'ordre suivant : • translatorClass • title • nExtensions indique le nombre d'extensions de fichier qui suivent. Si nExtensions est égal à 0, le traducteur peut s'exécuter sur n'importe quel fichier. Si nExtensions est égal à 0, nRegExps est l'élément suivant du tableau. • extension indique une extension de fichier (par exemple, « htm » ou « SHTML ») que le traducteur peut exécuter. Cette chaîne ne respecte pas identifie le traducteur de façon unique. Cette chaîne doit commencer par une lettre et contenir uniquement des caractères alphanumériques, des traits d'union (-) et des caractères de soulignement (_). décrit le traducteur en 40 caractères maximum. Cette chaîne apparaît dans le menu Modifier > Traduire. la casse et ne doit pas commencer par un point. Le tableau doit contenir le même nombre d'éléments extension que celui spécifié dans nExtensions. • nRegExps indique le nombre d'expressions régulières qui suivent. Si nRegExps est égal à 0, runDefault est l'élément suivant du tableau. • regExps indique une expression régulière à rechercher. Le tableau doit contenir le même nombre d'éléments regExps que celui spécifié dans nRegExps, et au moins un des éléments regExps doit correspondre à une partie du code source HTML du document pour que le traducteur puisse traiter un fichier. 296 Chapitre 24 • runDefault indique la préférence par défaut pour l'exécution de ce traducteur. Les valeurs possibles sont « allFiles », « noFiles », « byExtension » et « byExpression ». Si vous définissez runDefault sur « byExtension » sans spécifier d'extension (voir extension, ci-dessus), l'effet produit est le même que celui obtenu avec la valeur « allFiles ». Si vous définissez runDefault sur "byExpression" sans spécifier d'expressions (voir regExps, ci-dessus), l'effet produit est le même que celui obtenu avec la valeur "noFiles". • indique la priorité par défaut pour l'exécution de ce traducteur. Cette priorité est un nombre compris entre 0 et 100. Si vous ne définissez pas ce paramètre, la priorité par défaut est 100. 0 est la priorité la plus haute et 100 la plus basse. Lorsque plusieurs traducteurs s'appliquent à un document, ce paramètre détermine l'ordre dans lequel ils sont appliqués. La priorité la plus haute est appliquée en premier. Lorsque plusieurs traducteurs ont la même priorité, ils sont appliqués dans l'ordre alphabétique par translatorClass. priority Exemple Dans l'exemple suivant, la fonction getTranslatorInfo() fournit des informations relatives à un traducteur pour SSI : 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; } translateMarkup() Description Exécute la traduction. Conseil: UltraDev fournit une implémentation simplifiée des appels de getTranslatorInfo() et translateMarkup(), qui utilise le Gestionnaire de traduction d'UltraDev ainsi qu'un fichier participant XML. Pour obtenir une description de cette autre méthode de création de traducteurs, voir « Utilisation du gestionnaire de traduction », page 183. Vous y trouverez également des renseignements sur les fichiers participants XML d'UltraDev. Arguments docName, siteRoot, docContent • Le premier argument est une chaîne contenant l'URL de type file:// du document à traduire. • Le deuxième argument est une chaîne contenant l'URL de type file:// de la racine du site sur lequel se trouve le document à traduire. Si le document se trouve en dehors d'un site, cette chaîne peut être vide. • Le troisième argument est une chaîne englobant le contenu du document. Valeurs renvoyées Chaîne contenant le document traduit. Traducteurs de données 297 Exemple Dans l'exemple suivant, la fonction translateMarkup() appelle la fonction C translateASP() contenue dans une DLL (Windows) ou dans une bibliothèque de code (Macintosh) appelée ASPTrans : function translateMarkup(docName, siteRoot, docContent){ var translatedString = ""; if (docContent.length > 0){ translatedString = ASPTrans.translateASP(docName, siteRoot, ¬ docContent); } return translatedString; } Pour obtenir un exemple entièrement JavaScript, voir « Exemple de traducteur d'attributs simple », page 301 ou « Exemple de traducteur de blocs/balises simple », page 307. liveDataTranslateMarkup function() Disponibilité Dreamweaver UltraDev 1.0 Description Traduit les documents lorsque l'utilisateur travaille dans la fenêtre Live Data. Lorsque l'utilisateur choisit Affichage > Live Data ou clique sur le bouton Actualiser, UltraDev appelle la fonction liveDataTranslateMarkup() au lieu de la fonction translateMarkup(). Arguments docName, siteRoot, docContent • Le premier argument est une chaîne contenant l'URL de type file:// du document à traduire. • Le deuxième argument est une chaîne contenant l'URL de type file:// de la racine du site sur lequel se trouve le document à traduire. Si le document se trouve en dehors d'un site, cette chaîne peut être vide. • Le troisième argument est une chaîne englobant le contenu du document. Valeurs renvoyées Chaîne contenant le document traduit. 298 Chapitre 24 Exemple L'instance suivante de liveDataTranslateMarkup() appelle la fonction C translateASP(), qui est contenue dans un fichier DLL (Windows) ou dans une bibliothèque de code (Macintosh) dont le nom est ASPTrans : function liveDataTranslateMarkup(docName, siteRoot, docContent){ var translatedString = ""; if (docContent.length > 0){ translatedString = ASPTrans.translateASP(docName, siteRoot, ¬ docContent); } return translatedString; } Choix du type de traducteur Tous les traducteurs sont identiques dans une certaine mesure : ils doivent contenir les fonctions getTranslatorInfo() et translateMarkup() et ils doivent résider dans le dossier Configuration/Translators. Ils se distinguent toutefois par le type de code qu'ils insèrent dans le document de l'utilisateur et par la façon dont ce code doit être contrôlé. • Pour traduire de petites parties de balises serveur qui déterminent 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 contrôlées à l'aide des inspecteurs de propriétés intégrés à Dreamweaver. Il n'est pas nécessaire de rédiger un inspecteur de propriétés personnalisé (voir « Ajout d'un attribut traduit à une balise », page 300). • Pour traduire une balise entière (une SSI, par exemple) ou un bloc de code (JavaScript, ColdFusion, PHP ou tout autre script), vous devez écrire un traducteur de blocs/balises. Le code généré par un traducteur de blocs/balises ne peut pas être contrôlé à l'aide des inspecteurs de propriétés intégrés à Dreamweaver. Vous devez rédiger un inspecteur personnalisé pour le contenu traduit si vous souhaitez que les utilisateurs puissent modifier les propriétés du code d'origine (voir « Verrouillage des balises ou des blocs de code traduits », page 306). Traducteurs de données 299 Ajout d'un attribut traduit à une balise La traduction des attributs est étroitement liée à la capacité de l'analyseur de Dreamweaver 3 à ignorer les balises serveur. Dreamweaver 3 ignore déjà les types de balises serveur les plus courants (tels que ASP, CFML et PHP) par défaut ; si vous utilisez des balises serveur dont les marqueurs de début et de fin sont différents, vous pouvez modifier la base de données de balises propriétaires (balises tierces) pour assurer le bon fonctionnement de votre traducteur. Pour plus d'informations sur la façon de modifier la base de données de balises propriétaires, voir le chapitre « Personnalisation de Dreamweaver » du manuel Utilisation de Dreamweaver. Du fait que Dreamweaver gère la conservation des balises serveur d'origine, la tâche du traducteur est de générer une valeur d'attribut valide pouvant s'afficher dans la fenêtre de document (donc, si vous utilisez des balises 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 crée une valeur d'attribut ayant un effet visible dans la fenêtre de document en ajoutant un attribut spécial, mmTranslatedValue, à la balise qui contient les balises de serveur. L'attribut mmTranslatedValue et sa valeur ne sont toutefois pas visibles dans l'inspecteur HTML et ils ne sont pas enregistrés avec le document. L'attribut mmTranslatedValue doit être unique à l'intérieur de la balise. Si vous pensez que votre traducteur devra probablement traduire plusieurs attributs dans une même balise, vous devez ajouter au traducteur une routine qui ajoute des numéros à l'attribut mmTranslatedValue (par exemple, mmTranslatedValue1, mmTranslatedValue2, etc.). La valeur de l'attribut mmTranslatedValue doit être une chaîne codée en URL contenant au moins une paire attribut/valeur valide. Cela signifie que mmTranslatedValue="src=%22open.jpg%22" est une traduction valide à la fois pour src="<? if (dayType == weekday) then open.jpg else closed.jpg" ?> et pour <? if (dayType == weekday) then src="open.jpg" else src="closed.jpg" ?>. La chaîne mmTranslatedValue="%22open.jpg%22" n'est valide pour aucun de ces deux exemples parce qu'elle contient uniquement la valeur, et non l'attribut. Traduction de plusieurs attributs à la fois L'attribut mmTranslatedValue peut contenir plusieurs paires attribut/valeur valides. Considérez ce qui suit comme du code non traduit : <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"> 300 Chapitre 24 Les balises traduites peuvent ressembler à ce qui suit : <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"> Notez que les espaces entre les paires attribut/valeur dans l'attribut mmTranslatedValue ne sont pas codés. Etant donné que l'application Dreamweaver recherche ces espaces lorsqu'elle essaie de restituer la valeur traduite, chaque paire attribut/valeur de l'attribut mmTranslatedValue doit être codée séparément, puis toutes les paires doivent être de nouveau regroupées pour former l'ensemble de l'attribut mmTranslatedValue. Pour avoir un exemple de la façon dont il faut procéder, voir la section « Exemple de traducteur d'attributs simple », page 301. Exemple de traducteur d'attributs simple Pour mieux comprendre le principe de la traduction d'attributs, il est utile d'examiner un exemple. Le traducteur suivant est un marqueur « Pound Conditional » (Poco), une syntaxe fictive quelque peu similaire à ASP ou PHP. La première étape pour assurer le bon fonctionnement de ce traducteur consiste à créer une balise tagspec pour le marqueur Poco ; cela évitera à Dreamweaver d'analyser les instructions Poco non traduites. La balise tagspec pour le marqueur Poco ressemble à ce qui suit : <tagspec tag_name="poco" start_string="<#" end_string="#>" detect_in_attribute="true" icon="poco.gif" icon_width="17" icon_height="15"></tagspec> Traducteurs de données 301 Le fichier poco.xml qui contient la balise tagspec est stocké dans le dossier Configuration/ThirdPartyTags, de même que l'icône des balises Poco. <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. * *************************************************************/ /************************************************************* * 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; 302 Chapitre 24 // 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; 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]); Traducteurs de données 303 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++; start = outStr.indexOf('<# if',end); } // Return the translated string. return outStr } function getTranslatorInfo(){ returnArray = new Array(7); returnArray[0] returnArray[1] returnArray[2] returnArray[3] returnArray[4] returnArray[5] returnArray[6] returnArray[0] returnArray[1] returnArray[2] returnArray[3] returnArray[4] returnArray[5] returnArray[6] = = = = = = = = = = = = = = "Pound_Conditional";//The translatorClass "Pound Conditional Translator";//The title "2"; //The number of extensions "html"; //The first extension "htm";//The second extension "1";// The number of expressions "<#";//The first expression "Pound_Conditional";//The translatorClass "Pound Conditional Translator";//The title "2"; //The number of extensions "html"; //The first extension "htm";//The second extension "1";// The number of expressions "<#";//The first expression return returnArray } 304 Chapitre 24 </script> </head> <body> </body> </html> Contrôle des attributs traduits Lorsque les balises de serveur sont utilisées pour spécifier un seul attribut et que cet attribut est représenté dans un inspecteur de propriétés, Dreamweaver affiche les balises de serveur dans l'inspecteur de propriétés. Le marqueur s'affiche, qu'il soit associé ou non à un traducteur. Si un traducteur est associé au marqueur, un éclair apparaît au-dessus de l'icône dans le panneau. Le traducteur s'exécute chaque fois que l'utilisateur modifie les balises serveur se trouvant dans le panneau. Remarque : l'icône en forme d'éclair n'apparaît pas lorsque du texte ou des cellules, des lignes ou des colonnes de tableau sont sélectionnés. La traduction se produit également si l'utilisateur modifie les balises de serveur se trouvant dans le panneau et s'il existe un traducteur traitant ce type de marqueur. Lorsque les balises de serveur sont utilisées pour contrôler plusieurs attributs dans une balise, elles n'apparaissent pas dans l'inspecteur de propriétés. Toutefois, l'éclair signale à l'utilisateur qu'il existe un marqueur traduit pour l'élément sélectionné. Les champs de l'inspecteur de propriétés sont toujours modifiables ; les utilisateurs peuvent entrer des valeurs pour les attributs susceptibles d'être contrôlés par les balises de serveur, ce qui peut entraîner l'existence d'attributs en double. Si une valeur traduite et une valeur régulière sont définies pour un attribut donné, Dreamweaver affiche la valeur traduite dans la fenêtre de document. Vous devez décider si votre traducteur va rechercher les attributs en double et les supprimer. Traducteurs de données 305 Verrouillage des balises ou des blocs de code traduits En règle générale, vous attendez d'un traducteur qu'il modifie les marqueurs de façon à ce que Dreamweaver puisse les afficher, mais vous souhaitez sauvegarder les marqueurs d'origine, et non les modifications. Pour répondre à ce besoin, Dreamweaver fournit des balises XML spécifiques qui entourent le contenu traduit et permettent de faire référence au code d'origine. La syntaxe des balises XML est la suivante : <MM:BeginLock translatorClass="translatorClass" ¬ type="tagNameOrType" depFiles="dependentFilesList" ¬ orig="encodedOrignalMarkup"> Translated content <MM:EndLock> où : est l'identifiant unique du traducteur (la première chaîne du tableau renvoyé par getTranslatorInfo()). translatorClass est une chaîne identifiant le type du marqueur (ou le nom de balise associé au marqueur) contenu dans le verrou. Cette chaîne ne peut contenir que des caractères alphanumériques, des traits d'union (-) ou des caractères de soulignement (_). Vous pouvez vérifier cette valeur dans la fonction canInspectSelection() d'un inspecteur de propriétés personnalisé pour déterminer si cet inspecteur est approprié pour le contenu. Pour plus d'informations, voir « Creation d'inspecteurs de propriétés pour contenu verrouillé », page 313. Un contenu verrouillé ne peut pas être contrôlé par les inspecteurs de propriétés intégrés de Dreamweaver. Par exemple, la spécification de type="IMG" n'entraîne pas l'affichage de l'inspecteur d'images. tagNameOrType est une chaîne contenant une liste de fichiers séparés par des virgules dont dépendent les marqueurs verrouillés. Les fichiers sont référencés à partir du disque dur (par exemple, C:\sites\avocado8\copyright.html sous Windows ou MyHD:sites:avocado8:copyright.html sur Macintosh). Si l'utilisateur met à jour l'un des fichiers de la liste dependentFilesList, Dreamweaver retraduit automatiquement le contenu dans le document contenant la liste. dependentFilesList est une chaîne contenant les marqueurs d'origine non traduits et codés à l'aide d'un extrait de code URL (utilisez %22 pour “, %3C pour <, %3E pour > et %25 pour %). La façon la plus rapide de coder une chaîne en URL consiste à utiliser la méthode escape(). Par exemple, si myString est égal à '<img src="foo.gif">', escape(myString) renvoie %3Cimg%20src=%22foo.gif%22%3E. encodedOriginalMarkup 306 Chapitre 24 L'exemple suivant montre la partie de code verrouillée pouvant être générée à partir de la traduction de la SSI <!--#include virtual="/footer.html" --> : <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> Exemple de traducteur de blocs/balises simple Pour mieux comprendre le principe de la traduction, il est utile d'examiner un traducteur entièrement écrit en JavaScript (c'est-à-dire, un traducteur dont aucune fonctionnalité ne dépend d'une bibliothèque C). Le traducteur suivant serait plus efficace écrit en C, mais la version JavaScript est plus simple et constitue un exemple idéal pour montrer comment fonctionnent les traducteurs. Traducteurs de données 307 A l'instar de la plupart des traducteurs, celui-ci est conçu 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 différent selon le jour de la semaine, l'heure de la journée ou la plate-forme de l'utilisateur. Le traducteur exécute la même opération, mais uniquement localement. <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, and the default Translation preference * * (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"// The translatorClass returnArray[1] = "Kent Tags"// The title returnArray[2] = "0" // The number of extensions returnArray[3] = "1"// The number of expressions returnArray[4] = "<kent"// Expression returnArray[5] = "byExpression"// Default Translation preference return returnArray; returnArray[0] = "DREAMWEAVER_TEAM"// The translatorClass returnArray[1] = "Kent Tags"// The title returnArray[2] = "0" // The number of extensions returnArray[3] = "1"// The number of expressions returnArray[4] = "<kent"// Expression returnArray[5] = "byExpression"// Default Translation preference 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) -- * 308 Chapitre 24 * and it's also extremely inefficient. It's a simple example, however, * * which is good for learning. * ***************************************************************** *********/ /********************************************************** * 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). It's not very * * efficient, but it's 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 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. //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 // locking tags. For more information on the replacement operation, see // the comments in the replaceKentTag() function. outStr = outStr + replCode; Traducteurs de données 309 // 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. * **************************************************************/ /********************************************************** * 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 var replCode = start replCode = replCode replCode = replCode replCode = replCode return replCode; } / 310 Chapitre 24 tags and the replacement HTML. + ' depFiles="' + depFiles + '"'; + ' orig="%3Ckent%3E">\n'; + imgTag; + end; ***************************************************************** * * 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. * ***************************************************************** */ /********************************************************** * 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. var hour = today.getUTCHours();// 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 machines // are identified by Dreamweaver as "Win32", // all Macs as "MacPPC". var imageRef;// The image reference to be returned. 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. var hour = today.getUTCHours();// 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 machines // 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. Traducteurs de données 311 // 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 workday 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"; }else{ imageRef = "images/kent_hardAtWorkOnMac.jpg"; } }else{ imageRef = "images/kent_sleeping.jpg"; } 312 Chapitre 24 //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> Creation d'inspecteurs de propriétés pour contenu verrouillé Une fois que vous avez créé un traducteur, vous devez créer un inspecteur de propriétés pour le contenu afin de permettre à l'utilisateur d'en modifier les propriétés (par exemple, le fichier à inclure ou l'une des conditions d'une instruction conditionnelle). Le contrôle d'un contenu traduit pose un problème particulier pour les raisons suivantes : • L'utilisateur peut décider de modifier les propriétés du contenu traduit et ces modifications doivent être répercutées dans le contenu non traduit. • Le DOM contient le contenu traduit (ce qui signifie que les balises de verrouillage et les balises qu'elles englobent sont des Nudss du DOM), mais la propriété outerHTML de documentElement ainsi que les fonctions dreamweaver.getSelection() et dreamweaver.nodeToOffsets() agissent sur la source non traduite. • Les balises que vous contrôlez sont différentes avant et après la traduction. S'il existe un risque que l'utilisateur désactive votre traducteur tandis qu'un autre inspecteur de propriétés n'a pas encore commencé à traiter les balises non traduites, vous devez créer deux inspecteurs de propriétés : un pour la ou les balises non traduites et un deuxième pour la région verrouillée générée par la traduction. Les deux inspecteurs peuvent avoir une interface identique, mais le commentaire figurant en tête du fichier et les fonctions canInspectSelection() et inspectSelection() doivent être différents. Par exemple, un commentaire de l'inspecteur de la balise HAPPY non traduite pourrait être : <!-- tag:HAPPY,priority:5,selection:exact,hline,vline --> Un commentaire de l'inspecteur de la balise HAPPY traduite pourrait alors être : <!-- tag:*LOCKED*,priority:5,selection:within,hline,vline --> Traducteurs de données 313 La fonction canInspectSelection() pour l'inspecteur de la balise HAPPY non traduite est simple : étant donné que le type de sélection est exact, elle peut renvoyer la valeur true sans analyse supplémentaire. Pour l'inspecteur de la balise HAPPY traduite, cette fonction est plus compliquée ; le mot clé *LOCKED* indique que l'inspecteur est approprié lorsque la sélection se trouve à l'intérieur d'une région verrouillée, mais étant donné qu'un document peut comporter plusieurs régions verrouillées, des vérifications supplémentaires doivent être effectuées pour déterminer si l'inspecteur correspond à cette région verrouillée en particulier. Le contrôle d'un contenu traduit présente encore un autre problème. Lorsque vous appelez la fonction dom.getSelection(), les valeurs renvoyées par défaut sont des décalages d'octets dans la source non traduite. Pour étendre la sélection de façon à sélectionner uniquement la région verrouillée, utilisez la méthode 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 deuxième argument permet de vous assurer que vous restez dans les limites de la balise de verrouillage de début lorsque vous traduisez les décalages d'octets en Nuds. Si vous utilisez offsets[1] comme deuxième argument, vous risquez de sélectionner le Nuds situé au-dessus du verrou. Une fois la sélection effectuée (après vous être assuré qu'elle est du type node.ELEMENT_NODE), vous pouvez vérifier l'attribut type pour vous assurer que la région verrouillée correspond à cet inspecteur. Exemple : if (theSelection.nodeType == node.ELEMENT_NODE && ¬ theSelection.getAttribute('type') == 'happy'){ return true; }else{ return false } 314 Chapitre 24 Pour renseigner les champs de l'inspecteur 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 de propriétés contient un champ libellé Time, vous devez extraire la valeur de l'attribut TIME à partir de la chaîne orig. 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 lower case 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; } Une fois l'attribut orig analysé en vue de renseigner les champs de l'inspecteur de propriétés pour la balise traduite, vous aurez probablement le réflexe de définir la valeur de l'attribut orig si l'utilisateur modifie cette valeur dans l'un des champs. Ce n'est pourtant pas la procédure conseillée étant donné que vous allez probablement vous heurter aux restrictions s'appliquant aux modifications d'une région verrouillée. Vous pouvez contourner ce problème en modifiant les marqueurs d'origine puis en retraduisant. Traducteurs de données 315 L'inspecteur de propriétés pour SSI traduites (Configuration/Inspectors/ ssi_translated.js) illustre cette technique avec sa fonction setComment(). Au lieu de réécrire l'attribut orig, l'inspecteur assemble un nouveau commentaire de SSI. Il insère ensuite ce commentaire dans le document à la place de l'ancien en réécrivant l'intégralité du contenu du document, ce qui a pour effet de générer un nouvel attribut orig. Le code suivant résume 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); Recherche de bogues dans le traducteur Si la fonction translateMarkup() contient certains types d'erreurs, le traducteur est chargé correctement, mais son exécution échoue sans que l'utilisateur en soit informé lorsqu'il est appelé. Bien que cette panne discrète empêche Dreamweaver de devenir instable, elle peut ralentir le développement, surtout lorsque vous essayez de rechercher une erreur de syntaxe mineure dans 10, 20 ou 30 lignes de code. Si l'exécution du traducteur échoue, une méthode de débogage efficace consiste à convertir le traducteur en commande, en procédant comme suit : 1 316 Chapitre 24 Copiez tout le contenu du fichier du traducteur dans un nouveau document, puis enregistrez-le dans le dossier Configuration/Commands du dossier de l'application Dreamweaver. 2 Au début 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(), supprimez du commentaire la ligne return whateverTheReturnValueIs (valeur renvoyée) et remplacez-la par dreamweaver.getDocumentDOM().documentElement.outerHTML = whateverTheReturnValueIs. Exemple : // return theCode; dreamweaver.getDocumentDOM().documentElement.outerHTML = ¬ theCode; } /* end of translateMarkup() */ 4 Dans la balise BODY du document, ajoutez un formulaire sans champs de saisie. Exemple : <body> <form> Hello. </form> </body> 5 Redémarrez Dreamweaver, puis choisissez votre « commande du traducteur » dans le menu Commandes. Lorsque vous cliquez sur OK, la fonction translateMarkup() est appelée et simule une traduction. Si aucun message d'erreur ne s'affiche et que la traduction continue à échouer, votre code contient probablement une erreur de logique. 6 Ajoutez des instructions alert() en des points stratégiques de la fonction translateMarkup() de façon à vous assurer que vous touchez les ramifications appropriées et vérifier ainsi les valeurs des variables et des propriétés en différents points. Exemple : 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() ajoutées, choisissez votre commande dans le menu Commandes, cliquez sur Annuler, puis choisissez-la de nouveau. Cette opération recharge le fichier de commande en intégrant vos modifications. Traducteurs de données 317 318 Chapitre 24 25 CHAPITRE 25 Extensions C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le mécanisme d'extension C vous permet d'utiliser les fichiers d'extension Dreamweaver en combinant un code JavaScript et votre propre code C. Créez des fonctions en langage C, intégrez-les à une DLL ou à une bibliothèque partagée, enregistrez la bibliothèque dans le dossier Configuration/JSExtensions du dossier de l'application Dreamweaver, puis appelez les fonctions à partir de JavaScript à l'aide de l'interpréteur JavaScript intégré à Dreamweaver. Par exemple, supposons que vous souhaitiez définir un objet Dreamweaver permettant d'insérer dans le document actif le contenu d'un fichier utilisateur. Etant donné que le code JavaScript côté client ne prend pas en charge les E/S de fichier, vous devez créer une fonction en C pour fournir cette fonctionnalité. 319 Vous pouvez utiliser le code HTML et JavaScript ci-dessous pour créer un objet Insérer le texte à partir d'un fichier simple. Notez que la fonction objectTag() appelle une fonction C nommée readContentsOfFile() qui est stockée dans une bibliothèque appelée myLibrary. <HTML> <HEAD> <SCRIPT> function objectTag() { fileName = document.forms[0].myFile.value; return myLibrary.readContentsOfFile(fileName); } </SCRIPT> </HEAD> <BODY> <FORM> Entrez le nom du fichier à insérer : <INPUT TYPE="file" NAME="myFile"> </FORM> </BODY> </HTML> 320 Chapitre 25 La fonction readContentsOfFile() accepte une liste d'arguments fournis par l'utilisateur, décompresse l'argument contenant le nom du fichier, lit le contenu du fichier et le compresse en guise de valeur renvoyée. Pour plus d'informations sur les structures de données et les fonctions JavaScript apparaissant dans readContentsOfFile(), voir la section « API d'extension C », page 322. 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'exécute correctement sans provoquer d'erreur JavaScript, vous devez l'enregistrer avec l'interpréteur JavaScript en incluant une fonction nommée MM_Init() dans votre bibliothèque. Lorsque l'application Dreamweaver charge la bibliothèque au démarrage, elle appelle la fonction MM_Init() pour extraire trois informations : • le nom JavaScript de la fonction ; • un pointeur vers la fonction ; • le nombre d'arguments attendus par la fonction. Extensions C 321 La fonction MM_Init() de myLibrary pourrait ressembler à ceci : void MM_Init() { JS_DefineFunction("readContentsOfFile", readContentsOfFile, 1); } Votre bibliothèque 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 Remarque : la bibliothèque peut être implémentée en C ou C++, mais le fichier contenant MM_Init() et MM_STATE doit être implémenté en C. Le compilateur C++ modifie les noms de fonction, ce qui rend impossible la détection de la fonction MM_Init() dans Dreamweaver. API d'extension C Dans votre bibliothèque, le code C doit interagir avec l'interpréteur JavaScript de Dreamweaver à trois moments distincts : • au démarrage, pour enregistrer les fonctions de la bibliothèque ; • lorsque la fonction est appelée, pour décompresser les arguments qui sont transmis de JavaScript à C ; • avant le retour de la fonction, pour compresser la valeur renvoyée. Pour accomplir ces tâches, l'interpréteur définit plusieurs types de données et affiche une API. Les définitions pour les types de données et les fonctions repertoriées dans cette section s'affichent dans le fichier mm_jsapi.h. Pour que votre bibliothèque puisse fonctionner correctement, vous devez insérer mm_jsapi.h en haut de chaque fichier de votre bibliothèque en utilisant la ligne suivante : #include "mm_jsapi.h" typedef struct JSContext JSContext Description Un pointeur vers ce type de données opaque est transmis à la fonction C. Certaines des fonctions de l'API utilisent ce pointeur comme argument. 322 Chapitre 25 typedef struct JSObject JSObject Description Un pointeur vers ce type de données opaque est transmis à la fonction C. Ce type de données représente un objet pouvant correspondre à un objet de tableau ou tout autre type d'objet. typedef struct jsval jsval Description Une structure de données opaque pouvant contenir un nombre entier ou un pointeur vers un nombre à virgule flottante, une chaîne ou un objet. Certaines des fonctions de l'API permettent de lire les valeurs des arguments de fonction à partir du contenu d'un jsval et d'autres permettent d'écrire la valeur renvoyée par la fonction en écrivant un jsval. typedef enum { JS_FALSE = 0, JS_TRUE = 1 } JSBool Description Un type de données simple utilisé pour stocker une valeur booléenne. typedef JSBool (*JSNative)(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) Description Signature permettant l'implémentation sous C de fonctions JavaScript, où : • cx • obj est un pointeur vers l'objet dans le contexte duquel le script s'exécute. Pendant l'exécution du script, le mot clé this désigne cet objet. • • argc correspond au nombre d'arguments transmis à la fonction. argv argc est un pointeur vers un tableau d'arguments jsval. Le tableau comporte éléments en longueur. • rval est un pointeur vers un jsval unique. La valeur renvoyée par la fonction doit être enregistrée dans *rval. est un pointeur vers une structure JSContext opaque qui doit être transmis à certaines fonctions de l'API JavaScript. Cette variable contient le contexte d'exécution de l'interpréteur. La fonction renvoie la valeur JS_TRUE en cas de succès ou JS_FALSE en cas d'échec. Si la valeur JS_FALSE est renvoyée, l'exécution du script en cours s'arrête. Extensions C 323 JSBool JS_DefineFunction() Description Enregistre une fonction C avec l'interpréteur JavaScript dans Dreamweaver. Après le renvoi de cette fonction, des scripts JavaScript appelant la fonction spécifiée dans name exécutent le code vers lequel pointe call. Normalement, vous appelez cette fonction à partir de la fonction MM_Init() que Dreamweaver appelle lors de son démarrage. Arguments char *name, JSNative call, unsigned int nargs • • • name est le nom de la fonction tel qu'il apparaît dans JavaScript. call est un pointeur vers une fonction C. La fonction doit accepter les mêmes arguments que readContentsOfFile et renvoyer une valeur JSBool indiquant le succès ou l'échec de l'exécution de la fonction. nargs est le nombre d'arguments que la fonction doit recevoir. Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. char *JS_ValueToString() Description Extrait un argument de fonction à partir d'un jsval, le convertit en chaîne (si possible) et renvoie la valeur convertie à l'appelant. Arguments JSContext *cx, jsval v, unsigned int *pLength • • • cx v est le pointeur JSContext opaque transmis à la fonction JavaScript. est le jsval à partir duquel la chaîne sera extraite. est un pointeur vers un nombre entier qui n'est pas signé. Cette fonction définit pour *plength une valeur égale à la longueur de la chaîne en octets. pLength Valeurs renvoyées Un pointeur vers une chaîne en cas de succès ou null en cas d'échec. JSBool JS_ValueToInteger() Description Extrait un argument de fonction à partir d'un jsval, le convertit en nombre entier (si possible) et renvoie la valeur convertie à l'appelant. 324 Chapitre 25 Arguments JSContext *cx, jsval v, long *lp • • • cx v est le pointeur JSContext opaque transmis à la fonction JavaScript. est le jsval à partir duquel la chaîne sera extraite. est un pointeur vers un nombre entier de 4 octets. Cette fonction stocke la valeur convertie dans *lp. lp Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. JSBool JS_ValueToDouble() Description Extrait un argument de fonction d'un jsval, le convertit en réel double (si possible) et renvoie la valeur convertie à l'appelant. Arguments JSContext *cx, jsval v, double *dp • • • cx v est le pointeur JSContext opaque transmis à la fonction JavaScript. est le jsval à partir duquel la chaîne sera extraite. est un pointeur vers un réel double de 8 octets. Cette fonction stocke la valeur convertie dans *dp. dp Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. JSBool JS_ValueToBoolean() Description Extrait un argument de fonction à partir d'un jsval, le convertit en valeur booléenne (si possible) et renvoie la valeur convertie à l'appelant. Arguments JSContext *cx, jsval v, JSBool *bp • • • cx v est le pointeur JSContext opaque transmis à la fonction JavaScript. est le jsval à partir duquel la chaîne sera extraite. est un pointeur vers un JSBool. Cette fonction stocke la valeur convertie dans *bp. bp Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. Extensions C 325 JSBool JS_ValueToObject() Description Extrait un argument de fonction à partir d'un 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 v est le pointeur JSContext opaque transmis à la fonction JavaScript. est le jsval à partir duquel la chaîne sera extraite. est un pointeur vers un (JSObject *). Cette fonction stocke la valeur convertie dans *op. op Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. JSBool JS_StringToValue() Description Stocke la valeur renvoyée d'une chaîne dans un jsval. Arguments JSContext *cx, char *bytes, size_t sz, jsval *vp • • cx est le pointeur JSContext opaque transmis à la fonction JavaScript. bytes est la chaîne à stocker dans le jsval. La chaîne est copiée de façon à ce que l'appelant puisse la libérer lorsqu'elle ne sera plus nécessaire. Si la taille de la chaîne n'est pas spécifiée (voir l'argument sz), alors la chaîne doit se terminer par un 0. • sz • vp est un pointeur vers le jsval dans lequel le contenu de la chaîne doit être copié. indique la taille de la chaîne en octets. Si sz est égal à 0, la longueur de la chaîne se terminant par 0 est calculée automatiquement. Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. JSBool JS_DoubleToValue() Description Stocke la valeur renvoyée d'un nombre à virgule flottante dans un jsval. 326 Chapitre 25 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. vp est un pointeur vers le jsval dans lequel le contenu du réel double doit être copié. Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. JSVal JS_BooleanToValue() Description Stocke la valeur renvoyée d'une valeur booléenne dans un jsval. Arguments JSBool bv Valeurs renvoyées Un argument JSVal contenant la valeur booléenne transmise. JSVal JS_IntegerToValue() Description Stocke la valeur renvoyée d'un nombre entier dans un jsval. Arguments long lv Valeurs renvoyées Un argument JSVal contenant le nombre entier transmis. JSVal JS_ObjectToValue() Description Stocke la valeur renvoyée d'un objet dans un jsval. Utilise la fonction JS_ NewArrayObject() pour créer un objet de tableau et utilise JS_SetElement() pour en définir le contenu. Arguments JSObject *obj Valeurs renvoyées Un JSVal contenant l'objet transmis. Extensions C 327 char *JS_ObjectType() Description A partir d'une référence d'objet, renvoie une chaîne décrivant le type de l'objet. Pour les objets de tableau, la valeur renvoyée est Array. Arguments JSObject *obj En principe, cet argument est transmis et converti à l'aide de JS_ValueToObject(). Valeurs renvoyées Pointeur vers une chaîne terminée par 0. L'appelant ne doit pas libérer cette chaîne une fois le traitement terminé. JSObject *JS_NewArrayObject() Description Crée 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'éléments que le tableau doit contenir. v est un pointeur facultatif vers les arguments jsval devant être stockés dans le tableau. Si la valeur renvoyée est différente de null, v correspond à un tableau contenant des éléments length. Si la valeur renvoyée est null, le contenu initial de l'objet de tableau est indéterminé (et il peut être défini à l'aide de JS_SetElement()). Valeurs renvoyées Un pointeur vers un nouvel objet de tableau (array) ou null en cas d'échec de l'exécution de la fonction. long JS_GetArrayLength() Description A partir d'un pointeur vers un objet de tableau, extrait le nombre d'éléments contenus dans le tableau. Arguments JSContext *cx, JSObject *obj • • 328 Chapitre 25 cx est le pointeur JSContext opaque transmis à la fonction JavaScript. obj est une référence à un objet de tableau. Valeurs renvoyées Nombre d'éléments contenus dans le tableau ou -1 en cas d'échec de l'exécution de la fonction. JSBool JS_GetElement() Description Lit un seul élément d'un objet de tableau. Arguments JSContext *cx, JSObject *obj, unsigned int index, jsval *v • • • cx • v est le pointeur JSContext opaque transmis à la fonction JavaScript. obj est un pointeur vers un objet de tableau. est un index des nombres entiers du tableau. Le premier élément est l'index 0, le dernier élément est l'index (length - 1). index est un pointeur vers un jsval dans lequel sera copié le contenu du jsval figurant dans le tableau. Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. JSBool JS_SetElement() Description Ecrit un seul élément d'un objet de tableau. Arguments JSContext *cx, JSObject *obj, unsigned int index, jsval *v • • • cx • v est le pointeur JSContext opaque transmis à la fonction JavaScript. obj est un pointeur vers un objet de tableau. est un index des nombres entiers du tableau. Le premier élément est l'index 0, le dernier élément est l'index (length - 1). index est un pointeur vers un jsval dont le contenu doit être copié dans le jsval du tableau. Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. Extensions C 329 JSBool JS_ExecuteScript() Description Compile et exécute une chaîne JavaScript. Si le script génère une valeur renvoyée, elle est renvoyée dans *rval. Arguments JSContext *cx, JSObject *obj, char *script, unsigned in sz, 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'exécute. Pendant l'exécution du script, le mot clé this désigne cet objet. En général, il s'agit du pointeur JSObject transmis à la fonction JavaScript. • script • sz • rval est un pointeur vers un jsval unique. La valeur renvoyée pour la fonction est stockée dans *rval. est une chaîne contenant le code JavaScript. Si la taille de la chaîne n'est pas spécifiée (voir l'argument sz), alors la chaîne doit se terminer par un 0. indique la taille de la chaîne en octets. Si sz est égal à 0, la longueur de la chaîne se terminant par 0 est calculée automatiquement. Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. JSBool JS_ReportError() Description Décrit la cause d'une erreur de script. Appelle cette fonction avant de renvoyer la valeur JS_FALSE pour expliquer à l'utilisateur les raisons pour lesquelles le script a échoué (« nombre d’arguments incorrect », par exemple). Arguments JSContext *cx, char *error, size_t sz 330 Chapitre 25 • • cx • sz est le pointeur JSContext opaque transmis à la fonction JavaScript. est une chaîne contenant le message d'erreur. La chaîne est copiée de façon à ce que l'appelant puisse la libérer lorsqu'elle ne sera plus nécessaire. Si la taille de la chaîne n'est pas spécifiée (voir l'argument sz ci-dessous), alors la chaîne doit se terminer par un 0. error indique la taille de la chaîne en octets. Si sz est égal à 0, la longueur de la chaîne se terminant par 0 est calculée automatiquement. Valeurs renvoyées Valeur booléenne indiquant le succès (JS_TRUE) ou l'échec (JS_FALSE) de l'exécution de la fonction. Appel d'une fonction C à partir de JavaScript Maintenant que vous savez comment les extensions C fonctionnent dans Dreamweaver et que vous connaissez les types de données et les fonctions sur lesquels reposent ces extensions, prenons un exemple pour montrer comment construire une bibliothèque et appeler une fonction. Cet exercice fait appel à trois fichiers qui se trouvent dans le dossier Extending/ c_files du dossier de l'application Dreamweaver : • mm_jsapi.h est un fichier d'en-tête contenant les définitions des types de données et des fonctions décrits dans « API d'extension C », page 322. • Sample.c est un exemple de fichier de définition de la fonction computeSum(). • Sample.mak est un fichier Make que vous pouvez utiliser pour créer un fichier de définition Sample.c dans une DLL à l'aide de Microsoft Visual C++ ; Sample.proj est le fichier équivalent permettant de créer une bibliothèque CFM à l'aide de Metrowerks CodeWarrior. Si vous utilisez d'autres outils, vous pouvez créer votre propre fichier Make. Pour créer la DLL sous Windows : 1 Dans Microsoft Visual C++, choisissez Fichier > Ouvrir un espace de travail, puis sélectionnez Sample.mak. 2 Choisissez Générer > Tout reconstruire. Une fois l'opération de génération terminée, le fichier Sample.dll apparaît dans le dossier contenant Sample.mak (ou dans l'un de ses sous-dossiers). Pour générer la bibliothèque partagée sur Macintosh : 1 Ouvrez le fichier Sample.proj dans Metrowerks CodeWarrior. 2 Générez le projet pour créer une bibliothèque CFM. Une fois l'opération de génération terminée, un fichier nommé Sample apparaît dans le dossier contenant Sample.proj (ou dans l'un de ses sous-dossiers). Pour appeler la fonction computeSum() à partir de l'objet Insérer barre horizontale : 1 Dans le dossier Configuration du dossier de l'application Dreamweaver, créez un dossier appelé JSExtensions. 2 Copiez le fichier Sample.dll (Windows) ou Sample (Macintosh) dans le dossier JSExtensions. Extensions C 331 3 Dans un éditeur de texte, ouvrez le fichier horizontal_rule.htm qui se trouve dans le dossier Configuration/Objects/Common. 4 Ajoutez la ligne alert(Sample.computeSum(2,2)); à la fonction objectTag() pour qu'elle apparaisse comme suit : function objectTag() { // Return the html tag that should be inserted alert(Sample.computeSum(2,2)); return "<HR>"; } 5 Enregistrez le fichier et redémarrez Dreamweaver. Pour exécuter la fonction computeSum() : Choisissez la commande Insertion > Barre horizontale. Une boîte de dialogue contenant le chiffre 4 (résultat de la somme de 2 plus 2) s'affiche. 332 Chapitre 25 26 CHAPITRE 26 API JavaScript de Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les objets, les propriétés et les méthodes décrites à la section « Modèle objet de document (DOM) et JavaScript », page 19, constituent une base solide pour étendre ou personnaliser Dreamweaver. Toutefois, un certain nombre d'opérations propres aux environnements de création de pages web ne peuvent pas être effectuées à l'aide des méthodes disponibles dans les DOM de Netscape, de Microsoft ou du W3C. La sélection, qui fait partie intégrante de l'expérience de l'utilisateur dans ce type d'environnement, en est l'exemple le plus flagrant : le DOM niveau 1 et les DOM du navigateur ne traitent pas la sélection car les utilisateurs ne peuvent pas sélectionner ni modifier le contenu (excepté dans les champs de formulaire) dans une fenêtre de navigateur. Pour permettre la création d'extensions Dreamweaver utiles et la personnalisation des menus Dreamweaver, Dreamweaver propose aux développeurs plus de 400 fonctions JavaScript en complément des méthodes de DOM standard, ce qui représente une amélioration considérable par rapport à Dreamweaver 3. En effet, il est à présent possible de réaliser en JavaScript presque toutes les opérations que l'utilisateur peut effectuer dans Dreamweaver à l'aide des menus, de panneaux flottants, des inspecteurs et des fenêtres de site ou de document. 333 Description des objets de l'API Toutes les fonctions personnalisées qui suivent sont des méthodes de l'objet dreamweaver, de l'objet site ou de l'objet représentant le DOM d'un document. Les méthodes appartenant à la dernière catégorie sont répertoriées ici sous la forme dom.functionName(). Pour obtenir les résultats souhaités, vous devez commencer par obtenir le DOM d'un document, puis appeler les fonctions en tant que méthodes de ce DOM. En effet, il ne suffit pas de taper dom.functionName(). Exemple : var currentDOM = dreamweaver.getDocumentDOM('document'); currentDOM.setSelection(100,200); currentDOM.clipCopy(); var otherDOM = dreamweaver.openDocument(dreamweaver.¬ getSiteRoot() + "html/foo.htm"); otherDOM.endOfDocument(); otherDOM.clipPaste(); Sauf indication contraire, les méthodes de l'objet dom ne peuvent être appliquées qu'à un document ouvert dans Dreamweaver ; si vous exécutez une fonction sur un document qui n'est pas ouvert, Dreamweaver affiche un message d’erreur. Lorsqu'une méthode de l'objet dom ne peut être appliquée qu'au document actif ou à des documents fermés, cette caractéristique est indiquée dans sa description. Dans Dreamweaver 4, dw est synonyme de dreamweaver. Par conséquent, toutes les méthodes de l'objet dreamweaver peuvent être désignées par la notation suivante : dw.functionName(). Cette notation est utilisée dans tous les exemples de code apparaissant dans ce chapitre et dans les autres chapitres. A propos des activateurs Dans Dreamweaver, chaque élément de menu est implémenté sous forme de fonction JavaScript ; il est donc nécessaire de disposer d'un mécanisme JavaScript permettant de déterminer quels éléments de menu doivent être activés. Ce mécanisme consiste en une série de fonctions appelées activateurs. Le rôle d'un activateur est de déterminer si la principale fonction qui lui est associée peut être exécutée dans le contexte en cours. Par exemple, site.canGet() détermine si Dreamweaver peut exécuter une opération Acquérir (site.get()). Chaque spécification de fonction de l'API indique l'activateur associé à la fonction, le cas échéant (certaines fonctions ne possèdent pas d'activateur, soit parce que l'élément de menu qui leur est associé est toujours activé, soit parce qu'elles ne sont pas en rapport avec les menus). Pour plus d'informations sur les activateurs, voir la section « Activateurs », page 569. 334 Chapitre 26 Organisation de ce chapitre Les méthodes de l'API JavaScript de Dreamweaver sont regroupées par fonctionnalité, puis classées par ordre alphabétique, d'abord par nom d'objet, puis par nom de méthode. Les méthodes relatives à la création, l'application et la suppression de styles CSS, par exemple, sont regroupées dans la catégorie Fonctions relatives aux styles CSS ; à l'intérieur de cette catégorie, les méthodes de l'objet dom sont répertoriées en premier, suivies des méthodes de l'objet dreamweaver. Une liste des anciennes fonctions et des activateurs est donnée à la fin de ce chapitre. Les arguments facultatifs sont indiqués entre accolades ({ }). Obtention de données de documents par l'intermédiaire du DOM Presque toutes les fonctions relatives à la modification d'un DOM exigent que vous indiquiez tout d'abord quel DOM vous souhaitez modifier. Vous utilisez pour cela la fonction dreamweaver.getDocumentDOM(), qui est la plus importante de toutes les fonctions de l'API. dreamweaver.getDocumentDOM() Disponibilité Dreamweaver 2.0 Description Permet d'accéder à l'arborescence des objets du document spécifié. Une fois celle-ci renvoyée à l'appelant, ce dernier peut la modifier pour changer le contenu du document. Arguments sourceDoc sourceDoc doit être "document", "parent", "parent.frames[number]", "parent.frames['frameName']" ou une URL. document désigne le document actif contenant la sélection en cours. parent désigne le jeu de cadres parent (si le document sélectionné se trouve dans un cadre) et parent.frames[number] et parent.frames['frameName'] désignent un document figurant dans un cadre spécifique du jeu de cadres contenant le document en cours. Si l'argument est une URL relative, celle-ci est relative au fichier d'extension. Dans Dreamweaver 4, l'argument sourceDoc, s'il n'est pas défini, prend par défaut la valeur document. Remarque : si l'argument a pour valeur "document", l'appelant doit être la fonction applyBehavior(), deleteBehavior(), objectTag() ou toute fonction d'un fichier de commande ou d'inspecteur de propriétés pour pouvoir modifier le document. Valeurs renvoyées Objet document JavaScript à la racine de l'arborescence. API JavaScript de Dreamweaver 335 Activateur Aucun. Exemple Le segment de code suivant utilise la fonction dreamweaver.getDocumentDOM() pour accéder à la couleur d'arrière-plan du document en cours : var theDOM = dreamweaver.getDocumentDOM("document"); theDOM.body.bgcolor = "#000000"; Fonctions du panneau Actifs Les fonctions du panneau Actifs (programmé dans l'API comme « palette des actifs ») vous permettent de gérer et d'utiliser les éléments contenus dans le panneau Actifs (ces éléments peuvent être des modèles, des bibliothèques, des images, des animations Shockwave et Flash, des URL, des couleurs, des animations et des scripts). dreamweaver.assetPalette.addToFavoritesFromDocument() Disponibilité Dreamweaver 4.0 Description Ajoute l'élément sélectionné dans la fenêtre de document à la liste des favoris. Cette fonction prend uniquement en charge les images, les animations, les fichiers Shockwave, les fichiers Flash, les couleurs de police et les URL. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.assetPalette.addToFavoritesFromSiteAssets() Disponibilité Dreamweaver 4.0 Description Ajoute les éléments sélectionnés dans la liste des sites à la liste des favoris et donne à chaque élément un surnom. Cette fonction ne supprime pas les éléments de la liste des sites. Arguments Aucun. Valeurs renvoyées Aucune. 336 Chapitre 26 dreamweaver.assetPalette.addToFavoritesFromSiteWindow () Disponibilité Dreamweaver 4.0 Description Ajoute les éléments sélectionnés dans la fenêtre Site ou dans la carte du site à la liste des favoris. Cette fonction prend uniquement en charge les images, les animations, les scripts, les fichiers Shockwave, les fichiers Flash et les URL (dans le cas de la carte du site). Si d'autres dossiers ou fichiers sont sélectionnés, ils sont ignorés. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.assetPalette.copyToSite() Disponibilité Dreamweaver 4.0 Description Copie les éléments sélectionnés dans un autre site et les place dans la liste des favoris de ce site. Si ces éléments sont des fichiers (autres que des couleurs ou des URL), le fichier réel est copié dans ce site. Arguments targetSite targetSite est le nom site.getSites(). du site de destination, tel qu'il est renvoyé par l'appel Valeurs renvoyées Aucune. dreamweaver.assetPalette.edit() Disponibilité Dreamweaver 4.0 Description Modifie les éléments sélectionnés à l'aide de l'éditeur externe principal ou de la commande d'édition personnalisée. Pour les couleurs, le sélecteur de couleur s'affiche. S'il s'agit d'URL, une boîte de dialogue invite l'utilisateur à entrer une URL et un surnom. Cette fonction n'est pas disponible pour la liste de couleurs et les URL du site. API JavaScript de Dreamweaver 337 Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.assetPalette.canEdit() dreamweaver.assetPalette.getSelectedCategory() Disponibilité Dreamweaver 4.0 Description Renvoie la catégorie sélectionnée, qui peut être l'une des suivantes : "templates", "library", "images", "movies", "shockwave", "flash", "scripts", "colors" ou "urls". Arguments Aucun. Valeurs renvoyées La catégorie sélectionnée. dreamweaver.assetPalette.getSelectedItems() Disponibilité Dreamweaver 4.0 Description Renvoie un tableau des éléments sélectionnés dans le panneau Actifs, soit dans la liste des sites, soit dans la liste des favoris. Arguments Aucun. Valeurs renvoyées Un tableau de trois chaînes pour chaque élément sélectionné : • name est le nom, le nom de fichier ou le surnom tel qu'il apparaît dans le panneau. • value • type peut être soit "folder", soit l'une des catégories suivantes : "templates", "library", "images", "movies", "shockwave", "flash", "scripts", "colors" ou "urls". est le chemin entier, l'URL complète ou la valeur chromatique, selon l'élément sélectionné. Remarque : si aucun élément n'est sélectionné dans le panneau Actifs, cette fonction renvoie un tableau contenant une seule chaîne vide. 338 Chapitre 26 Exemple Si « URL » est la catégorie et que le dossier « Mondossier » et l'URL « MonURLfavorite » sont sélectionnés dans la liste des favoris, la fonction renvoie : items[0] items[1] items[2] items[3] items[4] items[5] = = = = = = "Mondossier" " " "folder" "MonURLfavorite" "http://www.MonURLfavorite.com" "urls" dreamweaver.assetPalette.getSelectedView() Disponibilité Dreamweaver 4.0 Description Indique quelle liste est affichée dans le panneau Actifs. Arguments Aucun. Valeurs renvoyées Renvoie soit "site", soit "favorites". dreamweaver.assetPalette.insertOrApply() Disponibilité Dreamweaver 4.0 Description Insère les éléments sélectionnés ou applique l'élément à la sélection en cours. Applique des modèles, des couleurs et des URL à la sélection et insère des URL et d'autres éléments au point d'insertion. Si aucun document n'est ouvert, cette fonction n'est pas disponible. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.assetPalette.canEdit() dreamweaver.assetPalette.locateInSite() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 339 Description Sélectionne les fichiers associés aux éléments sélectionnés du côté local de la fenêtre Site. Cette fonction n'est pas applicable aux couleurs ni aux URL. Elle est disponible dans la liste des sites et la liste des favoris. Si un dossier est sélectionné dans la liste des favoris, il est ignoré. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.assetPalette.newAsset() Disponibilité Dreamweaver 4.0 Description Crée un nouvel élément correspondant à la catégorie en cours dans la liste des favoris. Dans le cas des bibliothèques et des modèles, l'élément créé est un nouveau fichier de bibliothèque ou de modèle vide auquel l'utilisateur peut immédiatement attribuer un nom. Pour les couleurs, le sélecteur de couleur s'affiche. S'il s'agit d'URL, une boîte de dialogue invite l'utilisateur à entrer une URL et un surnom. Cette fonction n'est pas disponible pour les images, les animations, les fichiers Shockwave, les fichiers Flash ni les scripts. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.assetPalette.newFolder() Disponibilité Dreamweaver 4.0 Description Crée un nouveau dossier ayant un nom par défaut (sans titre) dans la catégorie en cours et place une zone d'édition autour du nom. Cette fonction est uniquement disponible dans la liste des favoris. Arguments Aucun. Valeurs renvoyées Aucune. 340 Chapitre 26 dreamweaver.assetPalette.recreateLibraryFromDocument() Disponibilité Dreamweaver 4.0 Description Remplace l'ancienne fonction libraryPalette, recreateLibraryFromDocument(). Crée dans le document en cours un fichier LBI correspondant à l'occurrence sélectionnée d'un élément de bibliothèque. Revient à cliquer sur Créer à nouveau dans l'inspecteur de propriétés. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.assetPalette.refreshSiteAssets() Disponibilité Dreamweaver 4.0 Description Recherche les sites, affiche la liste des sites et y ajoute des données. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.assetPalette.removeFromFavorites() Disponibilité Dreamweaver 4.0 Description Supprime les éléments sélectionnés de la liste des favoris. Cette fonction ne supprime pas les fichiers du disque, sauf dans le cas d'une bibliothèque ou d'un modèle où l'utilisateur est invité à confirmer l'opération avant que le fichier ne soit supprimé. Cette fonction est uniquement disponible dans la liste des favoris ou si la catégorie est Library ou Templates. Arguments Aucun. Valeurs renvoyées Aucune. API JavaScript de Dreamweaver 341 dreamweaver.assetPalette.renameNickname() Disponibilité Dreamweaver 4.0 Description Affiche une zone d'édition autour du nom du dossier ou du surnom du fichier pour permettre de le modifier. Cette fonction est uniquement disponible dans la liste des favoris ou pour la catégorie Library ou Template. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.assetPalette.setSelectedCategory() Disponibilité Dreamweaver 4.0 Description Affiche une catégorie différente. Arguments categoryType categoryType peut être l'une des catégories suivantes : "templates", "library", "images", "movies", "shockwave", "flash", "scripts", "colors" ou "urls". Valeurs renvoyées Aucune. dreamweaver.assetPalette.setSelectedView() Disponibilité Dreamweaver 4.0 Description Passe de la liste des sites à la liste des favoris et vice versa. Arguments viewType viewType peut être site ou favorites. Valeurs renvoyées Aucune. 342 Chapitre 26 dreamweaver.referencePalette.getFontSize() Disponibilité Dreamweaver 4.0 Description Renvoie la taille de police actuelle de la zone d'affichage du panneau Référence. Arguments Aucun. Valeurs renvoyées Les tailles de police relatives exprimées par les valeurs small, medium ou large. dreamweaver.referencePalette.setFontSize() Disponibilité Dreamweaver 4.0 Description Modifie la taille de police affichée dans le panneau Référence. Arguments fontSize fontSize peut être l'une des tailles relatives suivantes : small, medium ou large. Valeurs renvoyées Aucune. Fonctions de comportements Ces fonctions vous permettent d'associer des comportements à un objet ou de les en dissocier, d'identifier les comportements associés à un objet, d'obtenir des informations sur un objet auquel est associé un comportement, etc. Les méthodes de l'objet dreamweaver.behaviorInspector contrôlent ou agissent sur la sélection dans le panneau Comportements et non dans le document en cours. dom.addBehavior() Disponibilité Dreamweaver 3.0 Description Associe un nouveau couple événement/action (comportement) à l'élément sélectionné. Cette fonction n'est valide que pour le document actif. Arguments event, action, {eventBasedIndex} API JavaScript de Dreamweaver 343 • event • action • eventBasedIndex eventBasedIndex est le gestionnaire d'événements JavaScript à utiliser pour associer le comportement à l'élément (par exemple, onClick, onMouseOver ou onLoad). est l'appel de fonction qui serait renvoyé par applyBehavior() si l'action était ajoutée à l'aide du panneau Comportements ; par exemple, "MM_popupMsg('Hello World')". est la position à laquelle cette action doit être ajoutée. est un index de référence zéro ; par conséquent, s'il existe déjà deux actions associées à l'événement en question et que vous spécifiez eventBasedIndex comme étant l'action 1, elle sera insérée et exécutée entre les deux autres. Si vous ne définissez pas cet argument, l'action est insérée à la suite des actions déjà associées à l'événement spécifié. Valeurs renvoyées Aucune. Activateur Aucun. dom.getBehavior() Disponibilité Dreamweaver 3.0 Description Obtient l'action qui se trouve à la position indiquée dans l'événement spécifié. Cette fonction agit sur la sélection en cours et n'est valide que pour le document actif. Arguments event, {eventBasedIndex} • event • eventBasedIndex est le gestionnaire d'événements JavaScript à utiliser pour associer le comportement à l'élément (par exemple, onClick, onMouseOver ou onLoad). est la position de l'action à obtenir. Par exemple, si deux actions sont associées à l'événement spécifié, 0 est la première et 1 la seconde. Si cet argument n'est pas défini, toutes les actions associées à l'événement spécifié sont renvoyées. Valeurs renvoyées Chaîne représentant l'appel de fonction (par exemple "MM_swapImage('document.Image1','document.Image1','foo.gif','#933 292969950')") ou tableau de chaînes, si vous n'avez pas défini l'argument eventBasedIndex. Activateur Aucun. 344 Chapitre 26 dom.reapplyBehaviors() Disponibilité Dreamweaver 3.0 Description Vérifie si les fonctions associées aux appels de comportement sur le nœud spécifié sont présentes dans la section HEAD du document, et dans le cas contraire, les y insère. Arguments {elementNode} est un nœud d'élément du document en cours. Si cet argument n'est pas défini, Dreamweaver recherche les appels de comportement orphelins sur tous les nœuds d'élément du document elementNode Valeurs renvoyées Aucune. Activateur Aucun. dom.removeBehavior() Disponibilité Dreamweaver 3.0 Description Supprime l'action qui se trouve à la position indiquée dans l'événement spécifié. Cette fonction agit sur la sélection en cours et n'est valide que pour le document actif. Arguments event, {eventBasedIndex} • event • eventBasedIndex est le gestionnaire d'événements JavaScript à utiliser pour associer le comportement à l'élément (par exemple, onClick, onMouseOver ou onLoad). Si cet argument n'est pas défini, toutes les actions sont supprimées de l'élément. est la position de l'action à supprimer. Par exemple, si deux actions sont associées à l'événement spécifié, 0 est la première et 1 la seconde. Si cet argument n'est pas défini, toutes les actions associées à l'événement sélectionné sont supprimées. Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 345 dreamweaver.getBehaviorElement() Disponibilité Dreamweaver 2.0 Description Obtient l'objet DOM correspondant à la balise à laquelle le comportement est appliqué. Cette fonction ne s'applique qu'aux fichiers d'action de comportement. Arguments Aucun. Valeurs renvoyées Objet DOM ou null. La valeur null est renvoyée dans les cas suivants : • lorsque le script en cours d'exécution n'est pas actif dans le contexte du panneau Comportements ; • lorsque le panneau Comportements est utilisé pour modifier un comportement dans un scénario ; • lorsque le script en cours d'exécution est appelé par la fonction dreamweaver.popupAction() ; • lorsque le panneau Comportements associe un événement à un empaqueteur de lien et que ce dernier n'existe pas ; • lorsque cette fonction se trouve en dehors d'un fichier d'action. Activateur Aucun. 346 Chapitre 26 Exemple La fonction dreamweaver.getBehaviorElement() peut être utilisée de la même manière que la fonction dreamweaver.getBehaviorTag() pour déterminer si l'action sélectionnée est adaptée à la balise HTML sélectionnée, mais elle vous permet en outre d'accéder à des informations complémentaires sur la balise et ses attributs. Par exemple, si vous créez une action qui ne peut être appliquée qu'à un lien hypertexte (A HREF) ne renvoyant pas à un autre cadre ou une autre fenêtre, utilisez la fonction getBehaviorElement() dans la fonction qui initialise l'interface utilisateur de la boîte de dialogue des paramètres. function initializeUI(){ var theTag = dreamweaver.getBehaviorElement(); var CANBEAPPLIED = (theTag.tagName == "A" && ¬ theTag.getAttribute("HREF") != null && ¬ theTag.getAttribute("TARGET") == null); if (CANBEAPPLIED) { // display the action UI } else{ // display a helpful message that tells the user // that this action can only be applied to a // hyperlink without an explicit target] } } dreamweaver.getBehaviorTag() Disponibilité Dreamweaver1.2 Description Obtient la source de la balise à laquelle le comportement est appliqué. Cette fonction ne s'applique qu'aux fichiers d'action. Arguments Aucun. Valeurs renvoyées Chaîne représentant la source de la balise. Il s'agit de la chaîne transmise à la fonction canAcceptBehavior() sous forme d'argument (HTMLelement). Si cette fonction apparaît en dehors d'un fichier d'action, la valeur renvoyée est une chaîne vide. Activateur Aucun. API JavaScript de Dreamweaver 347 Exemple Si vous créez une action qui ne peut être appliquée qu'à un lien hypertexte (A HREF), vous pouvez utiliser la fonction getBehaviorTag() dans la fonction qui initialise l'interface utilisateur de la boîte de dialogue des paramètres. function initializeUI(){ var theTag = dreamweaver.getBehaviorTag().toUpperCase(); var CANBEAPPLIED = (theTag.indexOf('HREF') != -1)); if (CANBEAPPLIED) { // display the action UI } else{ // display a helpful message that tells the user // that this action can only be applied to a // hyperlink } } dreamweaver.popupAction() Disponibilité Dreamweaver 2.0 Description Propose à l'utilisateur une boîte de dialogue de paramètres correspondant à l'action de comportement spécifiée. Pour l'utilisateur, cela revient à sélectionner l'action dans le menu déroulant des actions du panneau Comportements. Cette fonction permet aux fichiers d'extension autres que des actions d'associer des comportements aux objets dans le document de l'utilisateur. L'utilisateur ne peut effectuer aucune autre modification tant qu'il n'a pas fermé la boîte de dialogue. Remarque : cette fonction ne peut être appelée qu'à partir de la fonction objectTag() ou d'un script de fichier de commande ou d'inspecteur de propriétés. Arguments actionName, {funcCall} • actionName • funcCall est une chaîne contenant un appel de fonction pour l'action définie dans actionName ("MM_playTimeline(...)", par exemple). Cet argument, s'il est défini, est fourni par la fonction applyBehavior() du fichier d'action. correspond au nom d'un fichier du dossier Configuration/ Behaviors/Actions contenant une action de comportement JavaScript ("Timeline/Play Timeline.htm", par exemple). Valeurs renvoyées Appel de fonction de l'action de comportement. Lorsque l'utilisateur clique sur OK dans la boîte de dialogue des paramètres, le comportement est ajouté au document en cours (les fonctions appropriées sont ajoutées entre les balises HEAD du document, du code HTML peut être ajouté au début de la balise BODY et d'autres modifications peuvent être effectuées dans le document). L'appel de fonction ("MM_playTimeline(...)", par exemple) n'est pas ajouté au document ; il devient la valeur renvoyée par cette fonction. 348 Chapitre 26 Activateur Aucun. dreamweaver.behaviorInspector.getBehaviorAt() Disponibilité Dreamweaver 3.0 Description Obtient le couple événement/action (comportement) qui se trouve à la position indiquée dans le panneau Comportements. Arguments positionIndex Valeurs renvoyées Tableau constitué de deux éléments : • un gestionnaire d'événements ; • un appel de fonction ou une instruction JavaScript. Activateur Aucun. Exemple Du fait que positionIndex est un index de base zéro, si le panneau Comportements affiche la liste illustrée ci-après, un appel à la fonction dw.behaviorInspector.getBehaviorAt(2) renvoie un tableau constitué de deux chaînes : "onMouseOver" et "MM_changeProp('document.moon','document.moon','src','sun.gif', 'MG')". dreamweaver.behaviorInspector.getBehaviorCount() Disponibilité Dreamweaver 3.0 Description Compte le nombre d'actions associées à l'élément actuellement sélectionné à l'aide de gestionnaires d'événements. Arguments Aucun. Valeurs renvoyées Nombre entier représentant le nombre d'actions associées à l'élément. Ce nombre est équivalent au nombre d'actions visibles dans le panneau Comportements et comprend les actions de comportement Dreamweaver et le code JavaScript personnalisé. API JavaScript de Dreamweaver 349 Activateur Aucun. Exemple Un appel à la fonction dw.behaviorInspector.getBehaviorCount() pour le lien sélectionné <A HREF="javascript:setCookie()" onClick="MM_popupMsg('A cookie has been set.');parent.rightframe.location.href='aftercookie.html'"> renverrait le nombre 2. dreamweaver.behaviorInspector.getSelectedBehavior() Disponibilité Dreamweaver 3.0 Description Obtient la position de l'action sélectionnée dans le panneau Comportements. Arguments Aucun. Valeurs renvoyées Un nombre entier représentant la position de l'action sélectionnée dans le panneau Comportements, ou -1 si aucune action n'est sélectionnée. Activateur Aucun. Exemple Si la première action du panneau Comportements est sélectionnée, comme le montre l'illustration ci-après, un appel à la fonction dw.behaviorInspector.getSelectedBehavior() renvoie le nombre 0. dreamweaver.behaviorInspector.moveBehaviorDown() Disponibilité Dreamweaver 3.0 350 Chapitre 26 Description Déplace une action de comportement vers le bas, à l'intérieur d'une séquence, en modifiant son ordre d'exécution au sein d'un événement. Arguments positionIndex est la position de l'action dans le panneau Comportements. La première action de la liste est à la position 0. positionIndex Valeurs renvoyées Aucune. Activateur Aucun. Exemple En supposant que le panneau Comportements soit configuré comme dans l'illustration ci-après, l'appel de la fonction dw.behaviorInspector.moveBehaviorDown(2) aura pour effet d'intervertir les positions des actions Script personnalisé et Changer la propriété au sein de l'événement onMouseOver. Pour toute autre position, la fonction dw.behaviorInspector.moveBehaviorDown() n'aurait aucun effet car un seul comportement est associé aux événements onClick et onMouseOut et le comportement figurant à la position 3 se trouve déjà à la fin du groupe onMouseOver. dreamweaver.behaviorInspector.moveBehaviorUp() Disponibilité Dreamweaver 3.0 Description Déplace un comportement vers le haut, à l'intérieur d'une séquence, en modifiant son ordre d'exécution au sein d'un événement. Arguments positionIndex est la position de l'action dans le panneau Comportements. La première action de la liste est à la position 0. positionIndex API JavaScript de Dreamweaver 351 Valeurs renvoyées Aucune. Activateur Aucun. Exemple En supposant que le panneau Comportements soit configuré comme dans l'illustration ci-après, l'appel à la fonction dw.behaviorInspector.moveBehaviorUp(3) aura pour effet d'intervertir les positions des actions Script personnalisé et Changer la propriété au sein de l'événement onMouseOver. Pour toute autre position, la fonction dw.behaviorInspector.moveBehaviorUp() n'aurait aucun effet car un seul comportement est associé aux événements onClick et onMouseOut et le comportement figurant à la position 2 se trouve déjà au début du groupe onMouseOver. dreamweaver.behaviorInspector.setSelectedBehavior() Disponibilité Dreamweaver 3.0 Description Sélectionne l'action qui se trouve à la position indiquée dans le panneau Comportements. Arguments positionIndex est la position de l'action dans le panneau Comportements. La première action de la liste est à la position 0. Pour désélectionner toutes les actions, spécifiez l'index de position (positionIndex) sur –1. Spécifier une position à laquelle ne correspond aucune action revient à spécifier –1. positionIndex Valeurs renvoyées Aucune. Activateur Aucun. 352 Chapitre 26 Exemple En supposant que le panneau Comportements soit configuré comme dans l'exemple ci-après, l'appel de la fonction dw.behaviorInspector.setSelection (3) sélectionnera l'action Changer la propriété associée à l'événement onMouseOut. Fonctions relatives au Presse-papiers Ces fonctions permettent de copier, de couper et de coller des informations à l'aide du Presse-papiers. Sur Macintosh, certaines fonctions du Presse-papiers peuvent également être appliquées sur les champs modifiables des boîtes de dialogue et des panneaux flottants. Dans ce cas, elles peuvent être implémentées en tant que méthodes de l'objet dreamweaver ou en tant que méthodes de l'objet dom. La version dreamweaver de la fonction agit sur la sélection dans la fenêtre active, qu'il s'agisse de la fenêtre de document en cours, de la fenêtre de l'inspecteur de code ou de la fenêtre Site. Sur Macintosh, la fonction peut également être appliquée à la sélection dans le champ modifiable actif. La version dom de la fonction agit toujours sur la sélection dans le document spécifié. dom.clipCopy() Disponibilité Dreamweaver 3.0 Description Copie la sélection dans le Presse-papiers avec toutes les balises HTML correspondantes. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 353 dom.clipCopyText() Disponibilité Dreamweaver 3.0 Description Copie le texte sélectionné dans le Presse-papiers sans les balises HTML correspondantes. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canClipCopyText() dom.clipCut() Disponibilité Dreamweaver 3.0 Description Coupe la sélection et la place dans le Presse-papiers, avec toutes les balises HTML correspondantes. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.clipPaste() Disponibilité Dreamweaver 3.0 Description Colle le contenu du Presse-papiers dans le document en cours, au point d'insertion en cours ou par dessus la sélection en cours. Si le Presse-papiers contient des balises HTML, celles-ci sont interprétées comme telles. Arguments Aucun. Valeurs renvoyées Aucune. 354 Chapitre 26 Activateur dom.canClipPaste() Exemple Si le Presse-papiers contient ce qui suit : <code>return true;</code>, un appel à la fonction dw.getDocumentDOM().clipPaste() produira le résultat suivant : dom.clipPasteText() Disponibilité Dreamweaver 3.0 Description Colle le contenu du Presse-papiers dans le document en cours, au point d'insertion en cours ou par dessus la sélection en cours et remplace les sauts de ligne éventuels par des balises BR. Si le Presse-papiers contient des balises HTML, celles-ci ne sont pas interprétées et les séparateurs de balises (< >) sont remplacés par < et > respectivement. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canClipPasteText() API JavaScript de Dreamweaver 355 Exemple Si le Presse-papiers contient ce qui suit : <code>return true;</code>, un appel à la fonction dw.getDocumentDOM().clipPasteText() produira le résultat suivant : dreamweaver.clipCopy() Disponibilité Dreamweaver 3.0 Description Copie la sélection en cours de la fenêtre active (qu'il s'agisse de la fenêtre de document, d'une boîte de dialogue, d'un panneau flottant ou d'un volet de la fenêtre Site) dans le Presse-papiers. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canClipCopy() dreamweaver.clipCut() Disponibilité Dreamweaver 3.0 Description Supprime la sélection en cours de la fenêtre active (qu'il s'agisse de la fenêtre de document, d'une boîte de dialogue, d'un panneau flottant ou d'un volet de la fenêtre Site) et la place dans le Presse-papiers. Arguments Aucun. 356 Chapitre 26 Valeurs renvoyées Aucune. Activateur dreamweaver.canClipCut() dreamweaver.clipPaste() Disponibilité Dreamweaver 3.0 Description Colle le contenu du Presse-papiers dans la fenêtre de document, la boîte de dialogue, le panneau flottant ou le volet de la fenêtre Site en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canClipPaste() dreamweaver.getClipboardText() Disponibilité Dreamweaver 3.0 Description Obtient tout le texte mémorisé dans le Presse-papiers. Arguments [bAsText] est une valeur booléenne qui spécifie si le contenu du Presse-Papiers est extrait sous forme de texte. Si bAsText a la valeur true, le contenu du Pressepapiers est extrait sous forme de texte. Si bAsText a la valeur false, le comportement est le même que dans Dreamweaver 3. Par défaut, cet argument renvoie la valeur false. [bAsText] Valeurs renvoyées Chaîne représentant le contenu du Presse-papiers (il peut s'agir de balises HTML) ou rien, si le Presse-papiers est vide. Activateur Aucun. Exemple Si la fonction dw.getClipboardText() renvoie "text <b>bold</b> alors dw.getClipboardText(true) renvoie "text bold text". text", API JavaScript de Dreamweaver 357 Fonctions relatives aux commandes Ces fonctions permettent d'exploiter au mieux les fichiers figurant dans le dossier Configuration/Commands. Elles permettent de gérer le menu Commandes et d'appeler des commandes à partir d'autres types de fichiers d'extension. dreamweaver.editCommandList() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Modifier la liste de commandes. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.runCommand() Disponibilité Dreamweaver 3.0 Description Exécute la commande spécifiée. Pour l'utilisateur, cela revient à choisir la commande dans un menu ; si une boîte de dialogue est associée à la commande, elle s'affiche (et le script de commandes empêche toute autre modification jusqu'à ce que l'utilisateur ait fermé la boîte de dialogue). Cette fonction permet d'appeler une commande à partir d'un autre fichier d'extension. Remarque : cette fonction ne peut être appelée qu'à partir de la fonction objectTag() ou d'un script de fichier de commande, d'inspecteur de propriétés ou de menu. Arguments commandFile, {commandArg1}, {commandArg2},...{commandArgN} • commandFile est le nom d'un fichier contenu dans le dossier Configuration/ Commands. • Les arguments suivants sont transmis à commandFile sous forme d'arguments. Valeurs renvoyées Aucune. Activateur Aucun. 358 Chapitre 26 Exemple Vous pouvez créer un inspecteur de propriétés personnalisé pour les tableaux qui permettra à l'utilisateur d'accéder à la commande Formater le tableau à l'aide d'un bouton de l'inspecteur. Pour ce faire, appelez la fonction suivante à partir du gestionnaire d'événements onClick de ce bouton : function callFormatTable(){ dw.runCommand('Format Table.htm'); } Fonctions relatives aux conversions Ces fonctions permettent de convertir des tableaux en calques, des calques en tableaux et des feuilles de style en cascade (CSS) en balises HTML. Chacune de ces fonctions se comporte exactement comme une commande de conversion du menu Fichier ou Modifier. dom.convertLayersToTable() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Convertir les calques en tableau. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canConvertLayersToTable() dom.convertTablesToLayers() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Convertir les tableaux en calques. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canConvertTablesToLayers() API JavaScript de Dreamweaver 359 dom.convertTo30() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Convertir au format compatible avec les navigateurs 3.0. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. Fonctions relatives aux styles CSS Ces fonctions permettent d'appliquer, de retirer, de créer et de supprimer des styles CCS. Les méthodes de l'objet dreamweaver.cssStylePalette contrôlent ou agissent sur la sélection dans le panneau Style et non dans le document en cours. dom.applyCSSStyle() Disponibilité Dreamweaver 4.0 Description Applique le style spécifié à l'élément spécifié. Cette fonction n'est valide que pour le document actif. Arguments elementNode, styleName, [classOrID], [bForceNesting] • • • 360 Chapitre 26 elementNode désigne un nœud d'élément dans le DOM. Si l'argument elementNode a pour valeur NULL ou est exprimé sous forme d'une chaîne (''), la fonction agit sur la sélection en cours. styleName vide est le nom d'un style CSS. est l'attribut avec lequel le style doit être appliqué (« class » ou « id »). Si l'argument elementNode a pour valeur NULL ou s'il est exprimé sous forme d'une chaîne vide et qu'aucune balise n'entoure complètement la sélection, le style est appliqué avec des balises SPAN. Si la sélection est un point d'insertion, Dreamweaver utilise la méthode heuristique pour déterminer à quelle balise le style doit être appliqué. [classOrID] • est une valeur booléenne qui indique si l'imbrication est autorisée ou non. Si le drapeau bForceNesting est défini, Dreamweaver insère une nouvelle balise SPAN au lieu de tenter de modifier les balises existantes dans le document. S'il n'est pas défini, cet argument a la valeur false par défaut. [bForceNesting] Valeurs renvoyées Aucune. Activateur Aucun. Exemple Le code suivant applique le style red à la sélection, soit en entourant cette dernière de balises SPAN, soit en appliquant un attribut CLASS aux balises qui entourent la sélection : var theDOM = dreamweaver.getDocumentDOM('document'); theDOM.applyCSSStyle('','red'); dom.removeCSSStyle() Disponibilité Dreamweaver 3.0 Description Supprime l'attribut CLASS ou ID de l'élément spécifié, ou supprime les balises SPAN qui entourent complètement l'élément spécifié. Cette fonction n'est valide que pour le document actif. Arguments elementNode, {classOrID} • elementNode désigne un nœud d'élément dans le DOM. Si l'argument elementNode est une chaîne vide (‘'), la fonction est appliquée à la sélection en cours. • classOrID est l'attribut qui doit être supprimé (« class » ou « id »). Si l'attribut classOrID n'est pas spécifié, il prend par défaut la valeur "class" . Si aucun attribut CLASS n'est défini pour l'argument elementNode, les balises SPAN entourant elementNode sont supprimées. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.stylePalette.attachExternalStylesheet() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 361 Description Affiche une boîte de dialogue permettant à l'utilisateur de joindre une feuille de style externe. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.cssStylePalette.deleteSelectedStyle() Disponibilité Dreamweaver 3.0 Description Supprime du document le style sélectionné dans le panneau Style. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.cssStylePalette.duplicateSelectedStyle() Disponibilité Dreamweaver 3.0 Description Duplique le style actuellement sélectionné dans le panneau Style et affiche la boîte de dialogue Dupliquer le style afin de permettre à l'utilisateur d'attribuer un nom ou un sélecteur au nouveau style. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.cssStylePalette.editSelectedStyle() Disponibilité Dreamweaver 3.0 362 Chapitre 26 Description Ouvre la boîte de dialogue Définition du style correspondant au style sélectionné dans le panneau Style. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.cssStylePalette.editStyleSheet() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Modifier feuille de style. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.cssStylePalette.getSelectedStyle() Disponibilité Dreamweaver 3.0 Description Obtient le nom du style actuellement sélectionné dans le panneau Styles. Arguments Aucun. Valeurs renvoyées Chaîne représentant le nom du style, ou chaîne vide si aucun style n'est sélectionné. Activateur Aucun. API JavaScript de Dreamweaver 363 Exemple Si le style red est sélectionné, comme le montre l'illustration ci-après, un appel à la fonction dw.cssStylePalette.getSelectedStyle() renvoie "red". dreamweaver.cssStylePalette.getSelectedTarget() Disponibilité Dreamweaver 3.0 Description Obtient l'élément sélectionné dans le menu déroulant Appliquer à, en haut du panneau Styles. Arguments Aucun. Valeurs renvoyées Objet auquel le style doit être appliqué ou NULL si la cible est la sélection en cours. Activateur Aucun. Exemple Avant d'appliquer un style, utilisez dw.cssStylePalette.getSelectedTarget(), pour le cas où l'utilisateur changerait la cible, comme le montre l'illustration ci-après. 364 Chapitre 26 Exemple : var currDOM = dw.getDocumentDOM(); currDOM.applyCSSStyle(dw.cssStylePalette.getSelectedTarget(), ¬ "codeRed"); dreamweaver.cssStylePalette.getStyles() Disponibilité Dreamweaver 3.0 Description Obtient la liste de tous les styles de classe que contient le document actif. Arguments Aucun. Valeurs renvoyées Tableau de chaînes représentant les noms de tous les styles de classe que contient le document. Activateur Aucun. Exemple En supposant que le panneau Styles CSS soit configuré comme dans l'exemple illustré ci-après, un appel à la fonction dw.cssStylePalete.getStyles() renverra le tableau de chaînes suivant : • • • "bigCode" "red" "sectionHead" dreamweaver.cssStylePalette.newStyle() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 365 Description Ouvre la boîte de dialogue Nouveau style. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. Fonctions relatives aux applications externes Ces fonctions permettent d'effectuer des opérations relatives aux navigateurs et aux éditeurs externes, définis respectivement dans Préférences, catégorie Aperçu dans le navigateur, et dans Préférences, catégorie Editeurs externes. Elles permettent d'obtenir des informations sur les applications externes et d'ouvrir des fichiers dans ces applications. dreamweaver.browseDocument() Disponibilité Dreamweaver 2.0, améliorée dans les versions 3.0 et 4.0. Description Ouvre l'URL spécifiée dans le navigateur spécifié. Arguments fileName, {browser} • fileName • browser, est le nom du fichier à ouvrir, exprimé sous forme d'une URL absolue. rajouté à Dreamweaver 3, définit le navigateur à utiliser. Cet argument peut être le nom d'un navigateur tel qu'il est défini dans les préférences Aperçu dans le navigateur ou ’primary’ ou ’secondary’. S'il n'est pas défini, l'URL est ouverte dans le navigateur principal de l'utilisateur. Valeurs renvoyées Aucune. Activateur Aucun. 366 Chapitre 26 Exemple La fonction suivante utilise dreamweaver.browseDocument() pour ouvrir la page d'accueil Hotwired dans un navigateur : function goToHotwired(){ dreamweaver.browseDocument('http://www.hotwired.com/'); } Dans Dreamweaver 4, vous pouvez faire en sorte que cette opération ouvre le document dans Internet Explorer à l'aide du code suivant : function goToHotwired(){ var prevBrowsers = dw.getBrowserList(); var theBrowser = ""; for (var i=1; i < prevBrowsers.length; i+2){ if (prevBrowsers[i].indexOf('Iexplore.exe') != -1){ theBrowser = prevBrowsers[i]; break; } } dw.browseDocument('http://www.hotwired.com/',theBrowser); } Pour en savoir plus sur la fonction dw.getBrowserList(), voir la section « dreamweaver.getBrowserList() », page 367. dreamweaver.getBrowserList() Disponibilité Dreamweaver 3.0 Description Obtient la liste des navigateurs définis dans le sous-menu Aperçu dans le navigateur. Arguments Aucun. Valeurs renvoyées Tableau contenant autant de couples de chaînes que de navigateurs définis. La première chaîne de chaque couple représente le nom du navigateur, et la seconde son emplacement sur la machine de l'utilisateur, exprimé sous la forme d'une URL de type file://. Si aucun navigateur n'est défini, la fonction ne renvoie rien. Activateur Aucun. dreamweaver.getExtensionEditorList() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 367 Description Obtient la liste des éditeurs définis dans les préférences des éditeurs externes pour le fichier spécifié. Arguments fileURL peut être une URL de type file:// complète, un nom de fichier ou une extension de fichier (point compris). fileURL Valeurs renvoyées Tableau contenant autant de couples de chaînes que d'éditeurs définis. La première chaîne de chaque couple représente le nom de l'éditeur, et la seconde son emplacement sur la machine de l'utilisateur, exprimé sous la forme d'une URL de type file://. Si aucun éditeur n'est défini dans les préférences, la fonction renvoie un tableau contenant une chaîne vide. Activateur Aucun. Exemple Un appel à la fonction dw.getExtensionEditorList(".gif") pourrait renvoyer un tableau contenant les deux chaînes suivantes : • • "Fireworks 3" "file:///C|/Program Files/Macromedia/Fireworks 3/Fireworks 3.exe" dreamweaver.getExternalTextEditor() Disponibilité Dreamweaver 4.0 Description Affiche le nom de l'éditeur de texte externe actuellement configuré. Arguments Aucun. Valeurs renvoyées Une chaîne contenant le nom de l'éditeur de texte approprié pour l'interface utilisateur et non le chemin entier. Activateur Aucun. dreamweaver.getPrimaryBrowser() Disponibilité Dreamweaver 3.0 368 Chapitre 26 Description Obtient le chemin du navigateur principal. Arguments Aucun. Valeurs renvoyées Chaîne contenant le chemin du navigateur principal sur le disque dur de l'utilisateur, exprimé sous la forme d'une URL de type file://, ou rien, si aucun navigateur principal n'est défini. Activateur Aucun. dreamweaver.getPrimaryExtensionEditor() Disponibilité Dreamweaver 3.0 Description Obtient l'éditeur principal associé au fichier spécifié. Arguments fileURL Valeurs renvoyées Tableau contenant un couple de chaînes. La première chaîne de chaque couple représente le nom de l'éditeur, et la seconde son emplacement sur la machine de l'utilisateur, exprimé sous la forme d'une URL de type file://. Si aucun éditeur principal n'est défini, la fonction renvoie un tableau contenant une chaîne vide. Activateur Aucun. dreamweaver.getSecondaryBrowser() Disponibilité Dreamweaver 3.0 Description Obtient le chemin du navigateur secondaire. Arguments Aucun. Valeurs renvoyées Chaîne contenant le chemin du navigateur secondaire sur le disque dur de l'utilisateur, exprimé sous la forme d'une URL de type file://, ou rien, si aucun navigateur secondaire n'est défini. Activateur Aucun. API JavaScript de Dreamweaver 369 dreamweaver.openWithApp() Disponibilité Dreamweaver 3.0 Description Ouvre le fichier spécifié dans l'application spécifiée. Arguments fileURL, appURL • fileURL • appURL est le chemin du fichier à ouvrir, exprimé sous forme d'une URL de type file://. est le chemin de l'application dans lequel le fichier doit être ouvert, exprimé sous forme d'une URL de type file://. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.openWithBrowseDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Sélectionner un éditeur externe afin de permettre à l'utilisateur de choisir l'application dans laquelle le fichier spécifié doit s'ouvrir. Arguments fileURL Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.openWithExternalTextEditor() Disponibilité Dreamweaver 3.0 Description Ouvre le document en cours dans l'éditeur de texte externe défini dans les préférences des éditeurs externes. Arguments Aucun. 370 Chapitre 26 Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.openWithImageEditor() Disponibilité Dreamweaver 3.0 Description Ouvre le fichier spécifié dans l'éditeur d'image spécifié. Remarque : cette fonction fait appel à un mécanisme spécial d'intégration Fireworks qui renvoie les informations au document actif dans le cas où Fireworks est spécifié comme éditeur d'image. Pour éviter les erreurs lorsqu'aucun document n'est actif, n'appelez jamais cette fonction à partir de la fenêtre Site. Arguments fileURL, appURL • fileURL • appURL est le chemin du fichier à ouvrir, exprimé sous forme d'une URL de type file://. est le chemin de l'application dans laquelle le fichier doit être ouvert, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées Aucune. Activateur Aucun. Fonctions relatives aux manipulations de fichiers Ces fonctions permettent de créer, d'ouvrir et d'enregistrer des documents et d'exporter des feuilles de style en cascade vers des fichiers externes. Elles permettent également de rechercher des fichiers ou des dossiers, de créer des fichiers à partir de modèles, de fermer des documents et d'obtenir la liste des fichiers récemment ouverts. dreamweaver.browseForFileURL() Disponibilité Dreamweaver 1.0, améliorée dans les versions 2.0, 3.0 et 4.0 API JavaScript de Dreamweaver 371 Description Ouvre le type de boîte de dialogue spécifié ayant le libellé spécifié dans la barre de titre. Arguments openSelectOrSave, {titleBarLabel}, {bShowPreviewPane}, {bSupressSiteRootWarnings}, {arrayOfExtensions} • openSelectOrSave save. • titleBarLabel, rajouté à Dreamweaver 2, est le libellé qui doit figurer dans la barre de titre de la boîte de dialogue. Si cet argument n'est pas défini, Dreamweaver utilise par défaut le libellé fourni par le système d'exploitation. • bShowPreviewPane, rajouté à Dreamweaver 2, est une valeur booléenne indiquant si le volet d'aperçu de l'image doit être affiché dans la boîte de dialogue. Si l'argument a pour valeur true, la boîte de dialogue filtre les fichiers image ; s'il n'est pas défini, il prend par défaut la valeur false. • bSupressSiteRootWarnings, • arrayOfExtensions, rajouté à Dreamweaver 4, est un tableau de chaînes qui spécifie l'aspect par défaut du menu déroulant « Type » au bas de la boîte de dialogue. La syntaxe correcte est menuEntryText|.xxx[;.yyy;.zzz]|CCCC| où menuEntryText est le nom du type de fichier qui s'affiche. Les extensions peuvent être spécifiées sous la forme .xxx[;.yyy;.zzz] ou CCCC où .xxx définit l'extension du type de fichier (.yyy et .zzz peuvent également spécifier des extensions de fichier multiples) et CCCC est la constante du type de fichier à quatre caractères utilisée sur Macintosh. indique le type de boîte de dialogue : open, select ou rajouté à Dreamweaver 3, est une valeur booléenne indiquant s'il faut supprimer les avertissements indiquant que le fichier sélectionné se trouve hors du dossier racine du site. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Chaîne contenant le nom du fichier, exprimé sous la forme d'une URL de type file://. Activateur Aucun. dreamweaver.browseForFolderURL() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Choisir un dossier ayant le libellé spécifié dans la barre de titre. 372 Chapitre 26 Arguments {titleBarLabel}, {directoryToStartIn} • titleBarLabel est le libellé qui doit s'afficher dans la barre de titre de la boîte de dialogue. S'il n'est pas défini, l'argument titleBarLabel prend par défaut la valeur « Choose Folder ». • directoryToStartIn est le chemin du répertoire de démarrage, exprimé sous forme d'une URL de type file://. Valeurs renvoyées Une chaîne contenant le nom du dossier, exprimée sous forme d'une URL de type file://. Activateur Aucun. Exemple Le code suivant renvoie l'URL d'un dossier : return dw.browseForFolderURL('Select a Folder', ¬ dw.getSiteRoot()); dreamweaver.closeDocument() Disponibilité Dreamweaver 3.0 Description Ferme le document spécifié. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). Si documentObject fait référence au document actif, il se peut que la fenêtre du document ne se ferme pas tant que l'exécution du script qui appelle cette fonction n'est pas terminée. documentObject Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.createDocument() Disponibilité Dreamweaver 2.0 API JavaScript de Dreamweaver 373 Description Ouvre un nouveau document dans la même fenêtre ou dans une nouvelle. Le nouveau document devient le document actif. Remarque : cette fonction peut être appelée uniquement à partir du fichier menus.xml ou d'un fichier de commande ou d'inspecteur de propriétés. Si une action ou un objet tente d'appeler cette fonction, Dreamweaver affiche un message d'erreur. Arguments {bOpenInSameWindow} est une valeur booléenne indiquant si le nouveau document doit s'ouvrir dans la fenêtre en cours. Si l'argument bOpenInSameWindow a pour valeur false, qu'il n'est pas précisé ou que la fonction est appelée sur Macintosh, le nouveau document s'ouvre dans une nouvelle fenêtre. bOpenInSameWindow Valeurs renvoyées Objet document correspondant au nouveau document créé. Il s'agit de la valeur renvoyée par la fonction dreamweaver.getDocumentDOM(). Activateur Aucun. dreamweaver.exportCSS() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Exporter les styles dans un fichier CSS. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canExportCSS() dreamweaver.exportEditableRegionsAsXML() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Exporter les régions modifiables sous XML. Arguments Aucun. 374 Chapitre 26 Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.getRecentFileList() Disponibilité Dreamweaver 3.0 Description Obtient la liste de tous les fichiers récemment ouverts et répertoriés au bas du menu Fichier. Arguments Aucun. Valeurs renvoyées Tableau de chaînes représentant les chemins des derniers fichiers ouverts, exprimés sous la forme d'URL de type file://. Si aucun fichier n'a été ouvert récemment, la fonction ne renvoie aucune valeur. Activateur Aucun. dreamweaver.importXMLIntoTemplate() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Importer XML. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.newFromTemplate() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 375 Description Crée un nouveau document à partir du modèle spécifié. Si vous ne spécifiez aucun argument, la boîte de dialogue Sélectionner le modèle s'affiche. Arguments {templateURL}, bmaintain • templateURL • bmaintain est une valeur booléenne, pouvant être true ou false, indiquant si le lien vers le modèle d'origine doit être conservé ou pas. est le chemin d'un modèle disponible sur le site en cours, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.openDocument() Disponibilité Dreamweaver 2.0 Description Ouvre un document à modifier dans une nouvelle fenêtre Dreamweaver et en fait le document actif. Pour l'utilisateur, cela revient à choisir Fichier > Ouvrir et à sélectionner un fichier. Si le fichier spécifié est déjà ouvert, la fenêtre correspondante s'affiche au premier plan. La fenêtre contenant le fichier spécifié devient la fenêtre active et le fichier sélectionné devient le document en cours. Dans Dreamweaver 2, si la fonction d'archivage/extraction est activée, le fichier est extrait avant d'être ouvert. Dans Dreamweaver 4, vous devez utiliser la fonction dreamweaver.openDocumentFromSite() pour obtenir ce comportement. Remarque : cette fonction ne peut pas être appelée à partir d'un fichier d'objet ou d'action de comportement. Elle provoquerait une erreur. Arguments fileName fileName est le nom du fichier à ouvrir, exprimé sous forme d'une URL. S'il s'agit d'une URL relative, elle est relative au fichier contenant le script ayant appelé cette fonction. Valeurs renvoyées Objet document correspondant au fichier spécifié. Il s'agit de la valeur renvoyée par la fonction dreamweaver.getDocumentDOM(). Activateur Aucun. 376 Chapitre 26 dreamweaver.openDocumentFromSite() Disponibilité Dreamweaver 3.0 Description Ouvre un document à modifier dans une nouvelle fenêtre Dreamweaver et en fait le document actif. Pour l'utilisateur, cela revient à double-cliquer sur un fichier dans la fenêtre Site. Si le fichier spécifié est déjà ouvert, la fenêtre correspondante s'affiche au premier plan. La fenêtre contenant le fichier spécifié devient la fenêtre active et le fichier sélectionné devient le document en cours. Remarque : cette fonction ne peut pas être appelée à partir d'un fichier d'objet ou d'action de comportement. Elle provoquerait une erreur. Arguments fileName fileName est le nom du fichier à ouvrir, exprimé sous forme d'une URL. S'il s'agit d'une URL relative, elle est relative au fichier contenant le script ayant appelé cette fonction. Valeurs renvoyées Objet document correspondant au fichier spécifié. Il s'agit de la valeur renvoyée par la fonction dreamweaver.getDocumentDOM(). Activateur Aucun. dreamweaver.openInFrame() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Ouvrir dans un cadre. Lorsque l'utilisateur sélectionne un document, celui-ci s'ouvre dans le cadre actif. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canOpenInFrame() dreamweaver.releaseDocument() Disponibilité Dreamweaver 2.0 API JavaScript de Dreamweaver 377 Description Libère explicitement de la mémoire un document précédemment référencé. Les documents référencés par les fonctions dreamweaver.getObjectTags(), dreamweaver.getObjectRefs(), dreamweaver.getDocumentPath() et dreamweaver.getDocumentDOM() sont automatiquement libérés au terme de l'exécution du script contenant l'appel. Si le script ouvre un nombre important de documents, vous devez utiliser cette fonction pour en libérer certains explicitement avant la fin de l'exécution du script, ceci afin d'éviter de saturer la mémoire. Remarque : cette fonction ne s'applique qu'aux documents référencés par une URL, qui ne sont pas ouverts dans un cadre ou dans une fenêtre de document et qui ne correspondent pas à des fichiers d'extension (les fichiers d'extension sont chargés en mémoire au démarrage et n'en sont libérés que lorsque vous quittez Dreamweaver). Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.revertDocument() Disponibilité Dreamweaver 3.0 Description Rétablit la version précédemment enregistrée du fichier spécifié. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Aucune. Activateur dreamweaver.canRevertDocument() 378 Chapitre 26 dreamweaver.saveAll() Disponibilité Dreamweaver 3.0 Description Enregistre tous les documents ouverts et ouvre la boîte de dialogue Enregistrer sous pour tous ceux qui n'ont pas encore été enregistrés. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canSaveAll() dreamweaver.saveDocument() Disponibilité Dreamweaver 2.0 Description Enregistre le fichier spécifié sur un lecteur local. Remarque : dans Dreamweaver 2, si le fichier est accessible en lecture seule, Dreamweaver tente de l'extraire. Si le document reste en lecture seule après cette tentative ou qu'il ne peut pas être créé, un message d'erreur s'affiche. Arguments documentObject, {fileURL} • documentObject • fileURL est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). est une URL représentant un emplacement sur un lecteur local. S'il s'agit d'une URL relative, elle est relative au fichier d'extension. Dans Dreamweaver 2, cet argument est obligatoire. Dans Dreamweaver 4, si l'argument fileURL n'est pas défini et que le fichier a été enregistré précédemment, ce dernier est enregistré au même endroit ; sinon, une boîte de dialogue d'enregistrement s'affiche. Valeurs renvoyées Valeur booléenne indiquant le succès (true) ou l'échec (false) de l'opération. Activateur dreamweaver.canSaveDocument() API JavaScript de Dreamweaver 379 dreamweaver.saveDocumentAs() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Enregistrer sous. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.saveDocumentAsTemplate() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Enregistrer comme modèle. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Aucune. Activateur dreamweaver.canSaveDocumentAsTemplate() dreamweaver.saveFrameset() Disponibilité Dreamweaver 3.0 Description Enregistre le jeu de cadres spécifié ou, si ce dernier n'a pas encore été enregistré, ouvre la boîte de dialogue Enregistrer sous. 380 Chapitre 26 Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Aucune. Activateur dreamweaver.canSaveFrameset() dreamweaver.saveFramesetAs() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Enregistrer sous correspondant au fichier de jeu de cadres comprenant le DOM spécifié. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Aucune. Activateur dreamweaver.canSaveFramesetAs() Fonctions relatives à la recherche et au remplacement Comme leur nom l'indique, ces fonctions permettent d'effectuer des recherches et des remplacements. Elles vont de la simple recherche de l'occurrence suivante d'une chaîne donnée à des opérations plus complexes de remplacement automatique. dreamweaver.findNext() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 381 Description Recherche l'occurrence suivante de la chaîne de recherche précédemment définie par la fonction dreamweaver.setUpFind() ou dreamweaver.setUpComplexFind() ou par l'utilisateur (à l'aide de la boîte de dialogue Rechercher), puis la sélectionne dans le document. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canFindNext() dreamweaver.replace() Disponibilité Dreamweaver 3.0 Description S'assure que la sélection en cours correspond aux critères de recherche définis précédemment par la fonction dreamweaver.setUpFindReplace() ou dreamweaver.setUpComplexFindReplace() ou par l'utilisateur dans la boîte de dialogue Remplacer, puis la remplace par le contenu spécifié dans cette requête. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.replaceAll() Disponibilité Dreamweaver 3.0 Description Remplace chaque section du document en cours correspondant aux critères de recherche précédemment définis par la fonction dreamweaver.setUpFindReplace() ou dreamweaver.setUpComplexFindReplace() ou par l'utilisateur (dans la boîte de dialogue Remplacer) par le contenu spécifié dans cette requête. Arguments Aucun. 382 Chapitre 26 Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.setUpComplexFind() Disponibilité Dreamweaver 3.0 Description Prépare le terrain pour une recherche avancée de texte ou de balises en chargeant la requête XML spécifiée. Arguments xmlQueryString xmlQueryString est une chaîne de code XML commençant par <dwquery> et se terminant par </dwquery> (pour obtenir une chaîne ayant le format correct, vous devez définir la requête à l'aide de la boîte de dialogue Rechercher, cliquer sur le bouton Enregistrer la requête, ouvrir le fichier de requête dans un éditeur de texte et copier tout ce qui est compris entre le début de la balise <dwquery> et la fin de la balise </dwquery>). Valeurs renvoyées Aucune. Activateur Aucun. Exemple Dans l'exemple ci-après, la première ligne de code définit une recherche de balise et précise que la recherche doit porter sur le document en cours ; la deuxième ligne exécute la recherche : dw.setUpComplexFind('<dwquery><queryparams matchcase="false" ¬ ignorewhitespace="true" useregexp="false"/><find>¬ <qtag qname="a"><qattribute qname="href" qcompare="=" qvalue="#">¬ </qattribute><qattribute qname="onMouseOut" qcompare="=" qvalue="" ¬ qnegate="true"></qattribute></qtag></find></dwquery>'); dw.findNext(); dreamweaver.setUpComplexFindReplace() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 383 Description Prépare le terrain pour une recherche avancée de texte ou de balises en chargeant la requête XML spécifiée. Arguments xmlQueryString xmlQueryString est une chaîne de code XML commençant par <dwquery> et se terminant par </dwquery> (pour obtenir une chaîne ayant le format correct, vous devez définir la requête à l'aide de la boîte de dialogue Rechercher, cliquer sur le bouton Enregistrer la requête, ouvrir le fichier de requête dans un éditeur de texte et copier tout ce qui est compris entre le début de la balise <dwquery> et la fin de la balise </dwquery>). Valeurs renvoyées Aucune. Activateur Aucun. Exemple Dans l'exemple ci-après, la première ligne de code définit une recherche de balise et précise que la recherche doit porter sur quatre fichiers ; la deuxième ligne exécute la recherche et le remplacement : dw.setUpComplexFindReplace('<dwquery><queryparams ¬ matchcase="false" ignorewhitespace="true" useregexp="false"/>¬ <find><qtag qname="a"><qattribute qname="href" qcompare="=" ¬ qvalue="#"></qattribute><qattribute qname="onMouseOut" ¬ qcompare="=" qvalue="" qnegate="true"></qattribute></qtag>¬ </find><replace action="setAttribute" param1="onMouseOut" ¬ param2="this.style.color='#000000';this.style.¬ fontWeight='normal'"/></dwquery>'); dw.replaceAll(); dreamweaver.setUpFind() Disponibilité Dreamweaver 3.0 Description Prépare le terrain pour l'exécution d'une recherche de texte ou de code source HTML en définissant les critères de recherche de l'opération dw.findNext() qui va suivre. Arguments searchObject searchObject est un objet pour lequel les propriétés suivantes peuvent être définies : • 384 Chapitre 26 searchString est le texte à rechercher. • searchSource • {matchCase} • {ignoreWhitespace} • {useRegularExpressions} est une valeur booléenne indiquant si la chaîne de recherche (searchString) utilise des expressions régulières. Si cette propriété n'est pas définie, elle prend par défaut la valeur false. est une valeur booléenne indiquant si la recherche doit également porter sur le code source HTML. est une valeur booléenne indiquant si la recherche doit respecter les majuscules et les minuscules. Si cette propriété n'est pas définie, elle prend par défaut la valeur false. est une valeur booléenne indiquant si les différences entre les espaces blancs doivent être ignorées. ignoreWhitespace prend par défaut la valeur false si useRegularExpressions a pour valeur true et la valeur true si useRegularExpressions a pour valeur false. Valeurs renvoyées Aucune. Activateur Aucun. Exemple L'exemple de code suivant montre comment créer un objet à rechercher (searchObject) de trois façons différentes : var searchParams; searchParams.searchString = 'bgcolor="#FFCCFF"'; searchParams.searchSource = true; dw.setUpFind(searchParams); var searchParams = {searchString: 'bgcolor="#FFCCFF"', searchSource: true}; dw.setUpFind(searchParams); dw.setUpFind({searchString: 'bgcolor="#FFCCFF"', searchSource: ¬ true}); dreamweaver.setUpFindReplace() Disponibilité Dreamweaver 3.0 Description Prépare le terrain pour l'exécution d'une recherche de texte ou de code source HTML en définissant les critères de recherche et le cadre d'application de l'opération dw.replace() dw.replaceAll() qui va suivre. Arguments searchObject API JavaScript de Dreamweaver 385 searchObject est un objet pour lequel les propriétés suivantes peuvent être définies : • • • searchString • {matchCase} • {ignoreWhitespace} • {useRegularExpressions} est une valeur booléenne indiquant si la chaîne de recherche (searchString) utilise des expressions régulières. Si cette propriété n'est pas définie, elle prend par défaut la valeur false. est le texte à rechercher. replaceString est le texte à substituer au texte recherché. est une valeur booléenne indiquant si la recherche doit également porter sur le code source HTML. searchSource est une valeur booléenne indiquant si la recherche doit respecter les majuscules et les minuscules. Si cette propriété n'est pas définie, elle prend par défaut la valeur false. est une valeur booléenne indiquant si les différences entre les espaces blancs doivent être ignorées. ignoreWhitespace prend par défaut la valeur false si useRegularExpressions a pour valeur true et la valeur true si useRegularExpressions a pour valeur false. Valeurs renvoyées Aucune. Activateur Aucun. Exemple L'exemple de code suivant montre comment créer un objet à rechercher (searchObject) de trois façons différentes : var searchParams; searchParams.searchString = 'bgcolor="#FFCCFF"'; searchParams.searchString = 'bgcolor="#FFCCFF"'; searchParams.searchSource = true; dw.setUpFindReplace(searchParams); var searchParams = {searchString: 'bgcolor="#FFCCFF"', searchSource: 'bgcolor="#FFCCFF"', searchSource: true}; dw.setUpFindReplace(searchParams); dw.setUpFindReplace({searchString: 'bgcolor="#FFCCFF"', ¬ replaceString: 'bgcolor="#CCFFCC"', searchSource: true}); dreamweaver.showFindDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Rechercher. 386 Chapitre 26 Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canShowFindDialog() dreamweaver.showFindReplaceDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Remplacer. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canShowFindDialog() Fonctions relatives aux cadres et aux jeux de cadres Ces fonctions permettent uniquement d'effectuer les deux opérations suivantes : obtenir le nom des cadres constituant un jeu de cadres et diviser un cadre en deux. dom.getFrameNames() Disponibilité Dreamweaver 3.0 Description Obtient la liste de tous les cadres nommés du jeu de cadres. Arguments Aucun. Valeurs renvoyées Tableau de chaînes, chacune correspondant à un cadre du jeu de cadres en cours. La fonction ignore tous les cadres non nommés. Si aucun des cadres du jeu de cadres n'est nommé, un tableau vide est renvoyé. API JavaScript de Dreamweaver 387 Activateur Aucun. Exemple Pour un document contenant quatre cadres, dont deux sont nommés, un appel à la fonction dw.getDocumentDOM().getFrameNames() pourrait renvoyer un tableau contenant les chaînes suivantes : • • "navframe" "main_content" dom.isDocumentInFrame() Disponibilité Dreamweaver 4.0 Description Détermine si le document en cours est affiché à l'intérieur d'un jeu de cadres. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si le document est contenu dans un jeu de cadres. Renvoie la valeur false dans le cas contraire. Activateur Aucun. dom.saveAllFrames() Disponibilité Dreamweaver 4.0 Description Si le document donné est un jeu de cadres ou se situe à l'intérieur d'un jeu de cadres, cette fonction enregistre tous les cadres ou les jeux de cadres contenus dans la même fenêtre de document. Si un document donné n'est pas situé dans un jeu de cadres, elle enregistre uniquement le document. Ouvre la boîte de dialogue Enregistrer sous pour tous les documents qui n'ont pas été enregistrés précédemment. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. 388 Chapitre 26 dom.splitFrame() Disponibilité Dreamweaver 3.0 Description Fractionne le cadre sélectionné verticalement ou horizontalement. Arguments splitDirection splitDirection doit avoir l'une des valeurs suivantes : "up", "down", "left" ou "right". Valeurs renvoyées Aucune. Activateur dom.canSplitFrame() Fonctions de modifications générales Ces fonctions permettent d'effectuer des opérations de modification courantes dans la fenêtre de document. Elles permettent d'insérer du texte, du code HTML et des objets, d'appliquer, de modifier et de supprimer des marqueurs de police et de caractère, de modifier des balises et des attributs, etc. dom.applyCharacterMarkup() Disponibilité Dreamweaver 3.0 Description Applique à la sélection le type de marqueur de caractère spécifié. Si la sélection est un point d'insertion, applique les marqueurs de caractère spécifiés au texte saisi après le point d'insertion. Arguments tagName est le nom de la balise associé au marqueur de caractère. Il doit s'agir de l'une des chaînes suivantes : "b", "cite", "code", "dfn", "em", "i", "kbd", "samp", "s", "strong", "tt", "u", ou "var". tagName Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 389 dom.applyFontMarkup() Disponibilité Dreamweaver 3.0 Description Applique à la sélection en cours la balise FONT, ainsi que l'attribut spécifié et sa valeur. Arguments attribute, value • • attribute doit être "face", "size" ou "color". value est la valeur qui devrait être affectée à l'attribut, Helvetica, sans-serif", "5" ou "#FF0000". par exemple "Arial, Valeurs renvoyées Aucune. Activateur Aucun. dom.deleteSelection() Disponibilité Dreamweaver 3.0 Description Supprime la sélection du document. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.editAttribute() Disponibilité Dreamweaver 3.0 Description Affiche l'interface permettant de modifier l'attribut spécifié. Dans la plupart des cas, il s'agit d'une boîte de dialogue. Cette fonction n'est valide que pour le document actif. Arguments attribute 390 Chapitre 26 Valeurs renvoyées Aucune. Activateur Aucun. dom.exitBlock() Disponibilité Dreamweaver 3.0 Description Quitte le bloc de paragraphe ou d'en-tête en cours et place le curseur à l'extérieur de tous les éléments de bloc. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.getCharSet() Disponibilité Dreamweaver 4.0 Description Renvoie l'attribut du jeu de caractères dans la balise Meta du document. Arguments Aucun. Valeurs renvoyées L'identité de codage du document. Par exemple, dans un document Latin1, cette fonction renvoie iso-8859-1. dom.getFontMarkup() Disponibilité Dreamweaver 3.0 Description Obtient la valeur de l'attribut spécifié de la balise FONT pour la sélection en cours. Arguments attribute attribute doit être "face", "size" ou "color". API JavaScript de Dreamweaver 391 Valeurs renvoyées Chaîne contenant la valeur de l'attribut spécifié, ou chaîne vide si l'attribut n'est pas défini. Activateur Aucun. dom.getLinkHref() Disponibilité Dreamweaver 3.0 Description Obtient le lien qui entoure la sélection en cours. Revient à effectuer une boucle sur les parents et les grands-parents du nœud en cours jusqu'à ce qu'un lien soit rencontré, puis à appeler la fonction getAttribute('HREF') sur ce lien. Arguments Aucun. Valeurs renvoyées Chaîne contenant le nom du fichier lié, exprimé sous la forme d'une URL de type file://. Activateur Aucun. dom.getLinkTarget() Disponibilité Dreamweaver 3.0 Description Obtient la cible du lien qui entoure la sélection en cours. Revient à effectuer une boucle sur les parents et les grands-parents du nœud en cours jusqu'à ce qu'un lien soit rencontré, puis à appeler la fonction getAttribute('TARGET') sur ce lien. Arguments Aucun. Valeurs renvoyées Chaîne contenant la valeur de l'attribut TARGET spécifié pour le lien, ou chaîne vide si aucune cible n'est spécifiée. Activateur Aucun. 392 Chapitre 26 dom.getListTag() Disponibilité Dreamweaver 3.0 Description Obtient le style de la liste sélectionnée. Arguments Aucun. Valeurs renvoyées Chaîne contenant la balise associée à la liste ("ul", "ol" ou "dl"), ou chaîne vide si aucune balise n'est associée à la liste. Cette valeur est toujours renvoyée en minuscules. Activateur Aucun. dom.getTextAlignment() Disponibilité Dreamweaver 3.0 Description Obtient l'alignement du bloc contenant la sélection. Arguments Aucun. Valeurs renvoyées Une chaîne contenant la valeur de l'attribut ALIGN de la balise associée au bloc, ou une chaîne vide si l'attribut ALIGN n'est pas défini. Cette valeur est toujours renvoyée en minuscules. Activateur Aucun. dom.getTextFormat() Disponibilité Dreamweaver 3.0 Description Obtient le format du bloc contenant la sélection. Arguments Aucun. API JavaScript de Dreamweaver 393 Valeurs renvoyées Chaîne contenant la balise de bloc associée au texte (par exemple "p", "h1", "pre", etc.) ou chaîne vide si aucune balise de bloc n'est associée à la sélection. Cette valeur est toujours renvoyée en minuscules. Activateur Aucun. dom.hasCharacterMarkup() Disponibilité Dreamweaver 3.0 Description Vérifie si le marqueur de caractère spécifié est déjà associé à la sélection. Arguments markupTagName est le nom de la balise à rechercher. Il doit s'agir de l'une des chaînes suivantes : "b", "cite", "code", "dfn", "em", "i", "kbd", "samp", "s", "strong", "tt", "u", ou "var". markupTagName Valeurs renvoyées Valeur booléenne indiquant si le marqueur de caractère spécifié est associé à la sélection entière. Cette fonction renvoie la valeur false si le marqueur spécifié n'est associé qu'à une partie de la sélection. Activateur Aucun. dom.indent() Disponibilité Dreamweaver 3.0 Description Applique un retrait à la sélection à l'aide des balises BLOCKQUOTE. Si la sélection figure dans une liste, cette fonction lui applique un retrait en imbriquant une autre liste du même type dans la liste en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. 394 Chapitre 26 dom.insertHTML() Disponibilité Dreamweaver 3.0 Description Insère un contenu HTML dans le document, au point d'insertion en cours. Arguments contentToInsert, {bReplaceCurrentSelection} • • contentToInsert est le contenu à insérer. bReplaceCurrentSelection est une valeur booléenne indiquant si le contenu spécifié doit remplacer la sélection en cours. Si l'argument bReplaceCurrentSelection a pour valeur false, le contenu est inséré après la sélection en cours. Valeurs renvoyées Aucune. Activateur Aucun. Exemple Le code suivant insère <b>130</b> dans le document en cours : var theDOM = dw.getDocumentDOM(); theDOM.insertHTML('<b>130</b>'); Ceci se présente sous la forme suivante dans la fenêtre de document : dom.insertObject() Disponibilité Dreamweaver 3.0 Description Insère l'objet spécifié et invite l'utilisateur à définir des paramètres, le cas échéant. Arguments objectName objectName est le nom d'un objet dans le dossier Configuration/Objects. API JavaScript de Dreamweaver 395 Valeurs renvoyées Aucune. Activateur Aucun. Exemple Un appel à la fonction insère un bouton de formulaire dans le document, au point d'insertion ou après la sélection en cours. dreamweaver.getDocumentDOM().insertObject('Button'); Remarque : bien que les fichiers d'objet puissent être stockés dans des dossiers distincts, il est important que le nom de chaque fichier soit unique. En effet, si le dossier Forms et le dossier MyObjects contiennent chacun un fichier nommé Button.htm, par exemple, Dreamweaver n'est pas capable de faire la différence entre les deux. dom.insertText() Disponibilité Dreamweaver 3.0 Description Insère un contenu dans le document, au point d'insertion en cours. Arguments contentToInsert, {bReplaceCurrentSelection} • • contentToInsert est le contenu à insérer. bReplaceCurrentSelection est une valeur booléenne indiquant si le contenu spécifié doit remplacer la sélection en cours. Si l'argument bReplaceCurrentSelection a pour valeur false, le contenu est inséré après la sélection en cours. Valeurs renvoyées Aucune. Activateur Aucun. Exemple Le code suivant insère <b>130</b> dans le document en cours : var theDOM = dw.getDocumentDOM(); theDOM.insertText('<b>130</b>'); 396 Chapitre 26 Ceci se présente sous la forme suivante dans la fenêtre de document : dom.newBlock() Disponibilité Dreamweaver 3.0 Description Crée un nouveau bloc doté de la même balise et des mêmes attributs que le bloc contenant la sélection en cours, ou, si le curseur se trouve à l'extérieur de tous les blocs, crée un nouveau paragraphe. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. Exemple Si la sélection en cours se trouve à l'intérieur d'un paragraphe centré, un appel à la fonction dreamweaver.getDocumentDOM().newBlock() insère <p align="center"> après le paragraphe en cours. dom.notifyFlashObjectChanged() Disponibilité Dreamweaver 4.0 Description Indique à Dreamweaver que le fichier Flash en cours a été modifié. Dreamweaver met à jour la fenêtre d'aperçu, en la redimensionnant si nécessaire tout en conservant le rapport hauteur/largeur d'origine. Par exemple, le texte Flash utilise cette fonction pour mettre à jour le texte en mode Mise en forme à mesure que l'utilisateur change ses propriétés dans la boîte de dialogue Commande. Arguments Aucun. API JavaScript de Dreamweaver 397 Valeurs renvoyées Aucune. dom.outdent() Disponibilité Dreamweaver 3.0 Description Applique un retrait négatif à la sélection. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.removeCharacterMarkup() Disponibilité Dreamweaver 3.0 Description Supprime de la sélection le type de marqueur de caractère spécifié. Arguments tagName est le nom de la balise associé au marqueur de caractère. Il doit s'agir de l'une des chaînes suivantes : "b", "cite", "code", "dfn", "em", "i", "kbd", "samp", "s", "strong", "tt", "u", ou "var". tagName Valeurs renvoyées Aucune. Activateur Aucun. dom.removeFontMarkup() Disponibilité Dreamweaver 3.0 Description Supprime d'une balise FONT l'attribut spécifié, ainsi que sa valeur. Si, après la suppression de l'attribut, il ne reste que <FONT>, la balise FONT est également supprimée. 398 Chapitre 26 Arguments attribute attribute doit être "face", "size" ou "color". Valeurs renvoyées Aucune. Activateur Aucun. dom.removeLink() Disponibilité Dreamweaver 3.0 Description Supprime le lien hypertexte de la sélection. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.resizeSelection() Disponibilité Dreamweaver 3.0 Description Redimensionne l'objet sélectionné et lui applique les nouvelles dimensions spécifiées. Pour redimensionner un calque ou une zone réactive, utilisez la fonction dom.resizeSelectionBy(). Arguments newWidth, newHeight Valeurs renvoyées Aucune. Activateur Aucun. dom.setAttributeWithErrorChecking() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 399 Description Affecte à l'attribut spécifié la valeur indiquée pour la sélection en cours et affiche une invite utilisateur si le type de valeur est incorrect ou si la valeur n'est pas comprise dans la plage spécifiée. Cette fonction n'est valide que pour le document actif. Arguments attribute, value Valeurs renvoyées Aucune. Activateur Aucun. dom.setLinkHref() Disponibilité Dreamweaver 3.0 Description Transforme la sélection en lien hypertexte ou modifie la valeur du lien qui entoure la sélection en cours. Arguments linkHREF est une URL (chemin relatif au document ou à la racine, ou URL absolue) représentant la cible du lien. Si aucun argument n'est défini, la boîte de dialogue Sélectionner fichier HTML s'affiche. linkHREF Valeurs renvoyées Aucune. Activateur dom.canSetLinkHref() dom.setLinkTarget() Disponibilité Dreamweaver 3.0 Description Définit la cible du lien qui entoure la sélection en cours. Revient à effectuer une boucle sur les parents et les grands-parents du nœud en cours jusqu'à ce qu'un lien soit rencontré, puis à appeler la fonction setAttribute('TARGET') sur ce lien. 400 Chapitre 26 Arguments {linkTarget} est une chaîne représentant le nom d'un cadre ou d'une fenêtre, ou l'une des cibles réservées ("_self", "_parent", "_top" ou "_blank"). Si aucun argument n'est défini, la boîte de dialogue Définir la cible s'affiche. linkTarget Valeurs renvoyées Aucune. Activateur Aucun. dom.setListBoxKind() Disponibilité Dreamweaver 3.0 Description Modifie le type du menu SELECT sélectionné. Arguments kind kind doit être "menu" ou "list box". Valeurs renvoyées Aucune. Activateur Aucun. dom.showListPropertiesDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Propriétés de la liste. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canShowListPropertiesDialog() API JavaScript de Dreamweaver 401 dom.setListTag() Disponibilité Dreamweaver 3.0 Description Définit le style de la liste sélectionnée. Arguments listTag listTag est la balise associée à la liste. Il doit s'agir de "ol", "ul", "dl" ou d'une chaîne vide. Valeurs renvoyées Aucune. Activateur Aucun. dom.setTextAlignment() Disponibilité Dreamweaver 3.0 Description Affecte la valeur spécifiée à l'attribut ALIGN du bloc contenant la sélection. Arguments alignValue alignValue doit être "left", "center" ou "right". Valeurs renvoyées Aucune. Activateur Aucun. dom.setTextFieldKind() Disponibilité Dreamweaver 3.0 Description Définit le format du champ texte sélectionné. Arguments fieldType fieldType 402 Chapitre 26 doit être "input", "textarea" ou "password". Valeurs renvoyées Aucune. Activateur Aucun. dom.showFontColorDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue du sélecteur de couleur. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.deleteSelection() Disponibilité Dreamweaver 3.0 Description Supprime la sélection dans le document actif, dans la fenêtre Site ou, sur Macintosh, dans le champ modifiable actif d'une boîte de dialogue ou d'un panneau flottant. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canDeleteSelection() dreamweaver.editFontList() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Modifier la liste des polices. API JavaScript de Dreamweaver 403 Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.getFontList() Disponibilité Dreamweaver 3.0 Description Obtient la liste de tous les groupes de polices apparaissant dans l'inspecteur de propriétés de texte et la boîte de dialogue Définition du style. Arguments Aucun. Valeurs renvoyées Tableau de chaînes, chacune représentant un élément de la liste des polices. Activateur Aucun. Exemple Si vous avez effectué une installation par défaut de Dreamweaver, un appel à la fonction dw.getFontList() renverra un tableau contenant les éléments suivants : • • • • • "Arial, Helvetica, sans-serif" "Times New Roman, Times, serif" "Courier New, Courier, mono" "Georgia, Times New Roman, Times, serif" "Verdana, Arial, Helvetica, sans-serif" dreamweaver.getFontStyles() Disponibilité Dreamweaver 4.0 Description Renvoie les styles pris en charge par la police TrueType spécifiée. Arguments fontName fontName 404 Chapitre 26 est une chaîne contenant le nom de la police. Valeurs renvoyées Un tableau de trois valeurs booléennes indiquant les styles pris en charge par la police. La première valeur indique si la police prend en charge le style Gras, la deuxième Italique et la troisième à la fois les styles Gras et Italique. dreamweaver.getKeyState() Disponibilité Dreamweaver 3.0 Description Détermine si la touche de modification spécifiée est enfoncée. Arguments key doit avoir l'une des valeurs suivantes : "Cmd", "Ctrl", "Alt" ou "Shift". Sous Windows, "Cmd" et "Ctrl" désignent la touche Contrôle ; sur Macintosh, "Alt" désigne la touche Option. key Valeurs renvoyées Valeur booléenne indiquant si la touche est enfoncée. Activateur Aucun. Exemple Le code suivant vérifie si les touches Maj et Ctrl (Windows) ou Maj et Commande (Macintosh) sont enfoncées avant d'effectuer une opération. if (dw.getKeyState("Shift") && dw.getKeyState("Cmd")){ // execute code } dreamweaver.getSystemFontList() Disponibilité Dreamweaver 4.0 Description Renvoie une liste de polices à utiliser pour le système. Cette fonction peut appeler toutes les polices ou uniquement les polices TrueType. Ces polices sont requises pour l'objet Texte Flash. Arguments fontTypes fontTypes est une chaîne contenant soit "all" soit "TrueType". Valeurs renvoyées Un tableau de chaînes contenant le nom de toutes les polices ; renvoie null si aucune police n'est trouvée. API JavaScript de Dreamweaver 405 Fonctions globales relatives aux applications Ces fonctions agissent sur l'ensemble d'une application. Elles permettent, entre autres, de quitter une application et d'accéder aux préférences. dreamweaver.getShowDialogsOnInsert() Disponibilité Dreamweaver 3.0 Description Vérifie si l'option Afficher la boîte de dialogue lors de l'insertion d'objets est activée dans les préférences générales. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si cette option est activée. Activateur Aucun. dreamweaver.quitApplication() Disponibilité Dreamweaver 3.0 Description Quitte Dreamweaver lorsque l'exécution du script appelant cette fonction prend fin. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.showAboutBox() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue A propos de. 406 Chapitre 26 Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.showDynamicDataDialog() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche la boîte de dialogue Données dynamiques ou Texte dynamique, puis attend que l'utilisateur ferme la boîte de dialogue. Si l'utilisateur clique sur OK, la fonction showDynamicDataDialog() renvoie une chaîne à insérer dans le document de l'utilisateur (cette chaîne a été renvoyée par la fonction API de la source des données, c'est-à-dire generateDynamicDataRef(), et transmise à la fonction API du format de données, formatDynamicDataRef() ; la valeur renvoyée par formatDynamicDataRef() est la même que celle renvoyée par showDynamicDataDialog().) Arguments source, title • est une chaîne contenant le code HTML source, représentant l'objet de données dynamique. Il s'agit de la même chaîne que celle qui a été renvoyée après un appel précédent de la même fonction. Cette fonction utilise le contenu de la chaîne source pour initialiser toutes les commandes de la boîte de dialogue de façon à ce qu'elles apparaissent exactement telles qu'elles étaient au moment où l'utilisateur a cliqué sur OK pour créer cette chaîne. source UltraDev transmet cette chaîne à inspectDynamicDataRef(), afin de déterminer si la chaîne correspond à l'un des nœuds de l'arborescence. Si la chaîne correspond à un nœud, celui-ci est sélectionné lorsque la boîte de dialogue réapparaît. Vous pouvez également transmettre une chaîne vide qui n'initialise pas la boîte de dialogue. Par exemple, aucune boîte de dialogue n'est initialisée lorsqu'elle est utilisée pour créer un nouvel élément. • est une chaîne contenant le texte à afficher dans la barre de titre de la boîte de dialogue. Cet argument est facultatif. S'il n'est pas défini, UltraDev affiche Données dynamiques dans la barre de titre. title Valeurs renvoyées Une chaîne représentant l'objet de données dynamique, si l'utilisateur clique sur OK. API JavaScript de Dreamweaver 407 dreamweaver.showPreferencesDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Préférences. Arguments {whichTab} L'argument doit être l'une des chaînes suivantes : "general", "external editors", "floaters", "fonts", "highlighting", "html colors", "html format", "html rewriting", "invisible elements", "layers", "browsers", "quick tag editor", "site ftp", "status bar", "css styles" ou "translation". Si Dreamweaver ne reconnaît pas dans l'argument un nom de volet valide ou qu'aucun argument n'est défini, la boîte de dialogue ouvre le dernier volet actif. Valeurs renvoyées Aucune. Activateur Aucun. Fonctions globales relatives aux documents Ces fonctions agissent sur l'ensemble d'un document. Elles permettent d'effectuer des vérifications orthographiques, de vérifier les navigateurs cibles, de définir les propriétés des pages et de déterminer les références d'objet correctes des éléments du document. dom.checkSpelling() Disponibilité Dreamweaver 3.0 Description Vérifie l'orthographe sur l'ensemble du document (en ouvrant la boîte de dialogue Vérifier l'orthographe, si nécessaire) et prévient l'utilisateur lorsque la vérification est terminée. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. 408 Chapitre 26 dom.checkTargetBrowsers() Disponibilité Dreamweaver 3.0 Description Vérifie le navigateur cible du document. Pour vérifier le navigateur cible d'un dossier ou d'un groupe de fichiers, utilisez la fonction site.checkTargetBrowsers() Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.showPagePropertiesDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Propriétés de la page. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.getElementRef() Disponibilité Dreamweaver 2.0 Description Obtient la référence d'objet Netscape ou IE pour un objet balise spécifique de l'arborescence DOM. Arguments NSorIE, tagObject API JavaScript de Dreamweaver 409 • NSorIE • tagObject doit être "NS 4.0" ou "IE 4.0". En effet, le DOM et les règles relatives aux références imbriquées diffèrent dans Navigator 4.0 et Internet Explorer 4.0. Cet argument permet d'indiquer à quel navigateur doit correspondre la référence renvoyée. est un objet de balise dans l'arborescence DOM. Valeurs renvoyées Chaîne représentant une référence JavaScript valide à l'objet, telle que document.layers['myLayer']. • Dreamweaver renvoie des références Internet Explorer correctes pour les balises suivantes : A, AREA, APPLET, EMBED, DIV, SPAN, INPUT, SELECT, OPTION, TEXTAREA, OBJECT et IMG. • Dreamweaver renvoie des références Navigator correctes pour les balises suivantes : A, AREA, APPLET, EMBED, LAYER, ILAYER, SELECT, OPTION, TEXTAREA, OBJECT et IMG et pour les balises DIV et SPAN à positionnement absolu. Pour les balises DIV et SPAN dont le positionnement n'est pas absolu, Dreamweaver renvoie "cannot reference <tag>". • Dreamweaver ne renvoie pas de références pour les objets non nommés. Si un objet ne contient pas d'attribut NAME ou ID, Dreamweaver renvoie "unnamed Si le navigateur ne prend pas en charge une référence par nom, Dreamweaver fait référence à l'objet à l'aide de son index (par exemple document.myform.applets[3]). <tag>". • Dreamweaver renvoie les références des objets nommés figurant dans des formulaires ou des calques non nommés (par exemple document.forms[2].myCheckbox). Activateur Aucun. Fonctions relatives à l'historique Les fonctions d'historique permettent d'annuler, de refaire, d'enregistrer et de lire toutes les étapes qui s'affichent dans le panneau Historique (programmé dans l'API en tant que « palette »). Par étape, on entend une modification apportée à un document (ou à une sélection dans le document) pouvant être reproduite. Les méthodes de l'objet dreamweaver.historyPalette permettent de contrôler ou d'agir sur la sélection dans le panneau Historique et non dans le document en cours. dom.redo() Disponibilité Dreamweaver 3.0 410 Chapitre 26 Description Rétablit l'étape qui vient d'être annulée dans le document. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canRedo() dom.undo() Disponibilité Dreamweaver 3.0 Description Annule l'étape qui vient d'être exécutée dans le document. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canUndo() dreamweaver.getRedoText() Disponibilité Dreamweaver 3.0 Description Obtient le texte associé à l'opération de modification qui sera rétablie si l'utilisateur choisit Edition > Rétablir ou s'il appuie sur Ctrl+Y (Windows) ou sur Commande+Y (Macintosh). Arguments Aucun. Valeurs renvoyées Une chaîne contenant le texte associé à l'opération de modification qui sera rétablie. Activateur Aucun. API JavaScript de Dreamweaver 411 Exemple Si la dernière action de l'utilisateur a consisté à mettre la sélection en gras, un appel à la fonction dw.getRedoText() renverra « Repeat Apply Bold ». dreamweaver.getUndoText() Disponibilité Dreamweaver 3.0 Description Obtient le texte associé à l'opération de modification qui sera annulée si l'utilisateur choisit Edition > Annuler ou s'il appuie sur Ctrl+Z (Windows) ou sur Commande+Z (Macintosh). Arguments Aucun. Valeurs renvoyées Chaîne contenant le texte associé à l'opération de modification qui sera annulée. Activateur Aucun. Exemple Si la dernière action de l'utilisateur a consisté à appliquer un style CSS à un texte sélectionné, un appel à la fonction dw.getUndoText() renverra "Undo Apply <span>". dreamweaver.playRecordedCommand() Disponibilité Dreamweaver 3.0 Description Exécute la commande mémorisée dans le document actif. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canPlayRecordedCommand() dreamweaver.redo() Disponibilité Dreamweaver 3.0 412 Chapitre 26 Description Rétablit l'étape qui vient d'être annulée dans la fenêtre de document, la boîte de dialogue, le panneau flottant ou le volet de la fenêtre Site en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canRedo() dreamweaver.startRecording() Disponibilité Dreamweaver 3.0 Description Démarre la mémorisation des étapes dans le document actif. La commande précédemment mémorisée est immédiatement effacée. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.isRecording() (doit renvoyer false). dreamweaver.stopRecording() Disponibilité Dreamweaver 3.0 Description Arrête la mémorisation sans intervention de l'utilisateur. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.isRecording() (doit renvoyer true) API JavaScript de Dreamweaver 413 dreamweaver.undo() Disponibilité Dreamweaver 3.0 Description Annule l'étape précédente dans la fenêtre de document, la boîte de dialogue, le panneau flottant ou le volet de la fenêtre Site en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canUndo() dreamweaver.historyPalette.clearSteps() Disponibilité Dreamweaver 3.0 Description Efface toutes les étapes du panneau Historique et désactive les options de menu Annuler et Rétablir. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.historyPalette.copySteps() Disponibilité Dreamweaver 3.0 Description Copie les étapes spécifiées de l'historique dans le Presse-papiers. Dreamweaver prévient l'utilisateur de la possibilité de conséquences inattendues dans le cas où les étapes spécifiées contiendraient une action qui ne peut pas être reproduite. Arguments arrayOfIndices arrayOfIndices 414 Chapitre 26 est un tableau d'index de position dans le panneau Historique. Valeurs renvoyées Chaîne contenant le code JavaScript correspondant aux étapes sélectionnées. Activateur Aucun. Exemple Le code suivant copie les quatre premières étapes dans le panneau Historique : dw.historyPalette.copySteps([0,1,2,3]); dreamweaver.historyPalette.getSelectedSteps() Disponibilité Dreamweaver 3.0 Description Détermine quelle section du panneau Historique est sélectionnée. Arguments Aucun. Valeurs renvoyées Un tableau contenant les index de position de toutes les étapes sélectionnées. Activateur Aucun. Exemple Si la deuxième, la troisième et la quatrième étapes sont sélectionnées dans le panneau Historique, comme le montre l'illustration ci-après, un appel à la fonction dw.historyPalette.getSelectedSteps() renverra [1,2,3]. dreamweaver.historyPalette.getStepCount() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 415 Description Obtient le nombre d'étapes figurant dans le panneau Historique. Arguments Aucun. Valeurs renvoyées Un nombre entier représentant le nombre d'étapes actuellement répertoriées dans le panneau Historique. Activateur Aucun. dreamweaver.historyPalette.getStepsAsJavaScript() Disponibilité Dreamweaver 3.0 Description Obtient l'équivalent JavaScript des étapes sélectionnées. Arguments arrayOfIndices arrayOfIndices est un tableau d'index de position dans le panneau Historique. Valeurs renvoyées Chaîne contenant le code JavaScript correspondant aux étapes sélectionnées. Activateur Aucun. 416 Chapitre 26 Exemple Si les trois étapes indiquées dans l'illustration ci-après sont sélectionnées dans le panneau Historique, un appel à la fonction dw.historyPalette.getStepsAsJavaScript(dw.historyPalette.getSelec tedSteps()) renvoie "dw.getDocumentDOM().insertText('Hey diddle diddle, a cat and a fiddle, the cow jumped over the moon.');\ndw.getDocumentDOM().newBlock();\n dw.getDocumentDOM().insertHTML('<img src=\"../wdw99/50browsers/ images/sun.gif\">', true);\n" : dreamweaver.historyPalette.getUndoState() Disponibilité Dreamweaver 3.0 Description Obtient l'état d'annulation en cours. Arguments Aucun. Valeurs renvoyées La position du marqueur d'annulation dans le panneau Historique. Activateur Aucun. dreamweaver.historyPalette.replaySteps() Disponibilité Dreamweaver 3.0 Description Réexécute les étapes spécifiées de l'historique dans le document actif. Dreamweaver prévient l'utilisateur de la possibilité de conséquences inattendues dans le cas où les étapes spécifiées contiendraient une action qui ne peut pas être reproduite. API JavaScript de Dreamweaver 417 Arguments arrayOfIndices arrayOfIndices est un tableau d'index de position dans le panneau Historique. Valeurs renvoyées Chaîne contenant le code JavaScript correspondant aux étapes sélectionnées. Activateur Aucun. Exemple Un appel à la fonction dw.historyPalette.replaySteps([0,2,3]) réexécute la première, la troisième et la quatrième étapes du panneau Historique. dreamweaver.historyPalette.saveAsCommand() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Enregistrer comme commande et permet à l'utilisateur d'enregistrer les étapes spécifiées sous forme de commande. Dreamweaver prévient l'utilisateur de la possibilité de conséquences inattendues dans le cas où les étapes spécifiées contiendraient une action qui ne peut pas être reproduite. Arguments arrayOfIndices arrayOfIndices est un tableau d'index de position dans le panneau Historique. Valeurs renvoyées Chaîne contenant le code JavaScript correspondant aux étapes sélectionnées. Activateur Aucun. Exemple Le code suivant enregistre la quatrième, la sixième et la huitième commandes du panneau Historique comme une commande : dw.historyPalette.saveAsCommand([3,5,7]); dreamweaver.historyPalette.setSelectedSteps() Disponibilité Dreamweaver 3.0 Description Sélectionne les étapes spécifiées dans le panneau Historique. 418 Chapitre 26 Arguments arrayOfIndices est un tableau d'index de position dans le panneau Historique. Si aucun argument n'est défini, toutes les étapes sont désélectionnées. arrayOfIndices Valeurs renvoyées Aucun. Activateur Aucun. Exemple L'exemple de code suivant sélectionne la première, la deuxième et la troisième étapes du panneau Historique: dw.historyPalette.setSelectedStepts([0,1,2]); dreamweaver.historyPalette.getUndoState() Disponibilité Dreamweaver 3.0 Description Effectue le nombre d'annulations et de rétablissements nécessaire pour arriver à l'état d'annulation spécifié. Arguments undoState undoState est l'objet renvoyé par dw.historyPalette.getUndoState(). Valeurs renvoyées Aucune. Activateur Aucun. Fonctions relatives aux styles HTML Ces fonctions permettent d'appliquer, de créer et de supprimer des styles HTML. Les méthodes de l'objet dreamweaver.htmlStylePalette permettent de contrôler ou d'agir sur la sélection du panneau Styles HTML (programmé dans l'API en tant que « palette ») et non dans le document courant. dom.applyHTMLStyle() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 419 Description Applique le style HTML spécifié à la sélection en cours. Cette fonction n'est valide que pour le document actif. Arguments htmlStyleName Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.htmlStylePalette.deleteSelectedStyle() Disponibilité Dreamweaver 3.0 Description Supprime le style sélectionné du panneau Styles HTML. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.htmlStylePalette.canEditSelection() dreamweaver.htmlStylePalette.duplicateSelectedStyle() Disponibilité Dreamweaver 3.0 Description Duplique le style sélectionné et ouvre la boîte de dialogue Définir style HTML. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.htmlStylePalette.canEditSelection() dreamweaver.htmlStylePalette.editSelectedStyle() Disponibilité Dreamweaver 3.0 420 Chapitre 26 Description Ouvre la boîte de dialogue Définir style HTML pour le style sélectionné. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.htmlStylePalette.canEditSelection() dreamweaver.htmlStylePalette.getSelectedStyle() Disponibilité Dreamweaver 3.0 Description Obtient le nom du style sélectionné dans le panneau Styles HTML. Arguments Aucun. Valeurs renvoyées Chaîne contenant le nom du style sélectionné. Activateur Aucun. dreamweaver.htmlStylePalette.getStyles() Disponibilité Dreamweaver 3.0 Description Obtient la liste de tous les noms de styles HTML définis. Arguments Aucun. Valeurs renvoyées Tableau de chaînes, chacune représentant le nom d'un style HTML. Si aucun style HTML n'est défini, la fonction renvoie un tableau vide. Activateur Aucun. dreamweaver.htmlStylePalette.newStyle() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 421 Description Ouvre la boîte de dialogue Définir style HTML pour définir un nouveau style. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.htmlStylePalette.setSelectedStyle() Disponibilité Dreamweaver 3.0 Description Sélectionne le style spécifié du panneau Styles HTML. Arguments htmlStyleName Valeurs renvoyées Aucune. Activateur Aucun. Fonctions relatives au débogueur JavaScript Ces commandes permettent de personnaliser le comportement du débogueur JavaScript de Dreamweaver. Pour plus d'informations sur le débogueur JavaScript de Dreamweaver, voir la section « Modules de débogage JavaScript », page 67. dom.instrumentDocument () Disponibilité Dreamweaver 4.0 422 Chapitre 26 Description Crée la version de débogage du document et de tous les fichiers .js externes auxquels il fait référence. Cette fonction analyse le code JavaScript dans le document et appelle la fonction debuggerModule sur des segments de code à insérer à différents points du fichier JavaScript. La fonction debuggerModule est également informée des erreurs de syntaxe et des avertissements. Cette fonction échoue dans les conditions suivantes : erreurs de syntaxe, erreur de fichier ou si le document ne peut pas être débogué pour une raison quelconque. Les fichiers temporaires ne sont jamais supprimés immédiatement, même si la fonction échoue. Arguments debuggerModule, outputFileName • debuggerModule • est facultatif ; il s'agit du nom utilisé pour la version de débogage du fichier .htm. Si cet argument n'est pas défini, un fichier temporaire est créé. Ce fichier temporaire est supprimé quand vous quittez Dreamweaver. Si le fichier outputFileName existe déjà, le fichier existant est remplacé. Ce fichier est toujours placé dans le même répertoire que le document source ; par conséquent, il ne peut pas avoir le même nom. Si un chemin est indiqué, celui-ci est ignoré. Le nom de la version de débogage des fichiers .js externes référencés correspond au nom d'origine du fichier .js précédé de outputFileName. est le nom d'un module Dreamweaver spécial qui implémente l'API d'instrumentation. Ce module se situe dans le dossier Configuration/Debugger du dossier de l'application Dreamweaver. outputFileName Valeurs renvoyées Tableau de paires d'URL de fichier. Chaque paire consiste en l'URL du fichier source d'origine suivie de l'URL de la version de débogage créée. La première paire correspond toujours aux fichiers .htm et toutes les entrées suivantes sont les fichiers .js auxquels le fichier .htm fait référence. Si la fonction échoue, la valeur null est renvoyée. Notez qu'une paire d'URL consiste en deux entrées dans le tableau. Par exemple, si returnValue = dom.instrumentDocument(test.htm), alors returnValue[0] est l'URL de test.htm et returnValue[1] est l'URL de la version de débogage de test.htm. dreamweaver.debugDocument() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 423 Description Crée la version de débogage du document en cours et lance le débogueur. Cette fonction peut uniquement être utilisée avec l'un des navigateurs pour lesquels Dreamweaver prend en charge le débogage JavaScript (voir section « dreamweaver.getDebugBrowserList() », page 424 ). Cette fonction n'avertit pas l'utilisateur si elle n'arrive pas à déterminer le type de navigateur. Si des erreurs de syntaxe ou des avertissements se produisent, une fenêtre de résultats s'ouvre pour afficher les messages. Si aucune erreur ne se produit, la version de débogage du document HTML s'affiche dans le navigateur spécifié. Si des avertissements se produisent, mais pas d'erreurs, la fenêtre de résultats s'affiche et le débogage commence. La création de la version de débogage est effectuée par l'intermédiaire d'un appel de la fonction dom.instrumentDocument() à l'aide de l'un des modules d'instrumentation par défaut. La version de débogage du document est temporaire et est supprimée lors du redémarrage du débogueur ou de la fermeture de Dreamweaver. Arguments fileName, {browserName} • fileName • browserName est le nom du fichier à ouvrir, exprimé sous forme d'une URL absolue. est facultatif ; il spécifie le nom du navigateur de destination tel qu'il est défini dans les paramètres d'aperçu des préférences du navigateur. Il peut également être principal (primary) ou secondaire (secondary). Si cet argument n'est pas défini, le navigateur principal est utilisé par défaut. Valeurs renvoyées Aucune. dreamweaver.getDebugBrowserList() Disponibilité Dreamweaver 4.0 Description Renvoie les navigateurs définis pour lesquels Dreamweaver prend en charge le débogage JavaScript. Sous Windows, Dreamweaver prend en charge le débogage uniquement dans Internet Explorer 5.0 ou ultérieur et dans Netscape 4.5 ou ultérieur. Sur Macintosh, Dreamweaver prend en charge le débogage uniquement dans Netscape 4.5 ou ultérieur. Arguments Aucun. Valeurs renvoyées Un tableau de noms de navigateurs dans le même format que celui renvoyé par getBrowserList(). 424 Chapitre 26 dreamweaver.getIsAnyBreakpoints() Disponibilité Dreamweaver 4.0 Description Recherche d'éventuels points d'arrêt définis dans les fichiers. Arguments Aucun. Valeurs renvoyées bBreakpointsSet La valeur booléenne true est renvoyée si des points d'arrêt sont définis dans des fichiers. dreamweaver.removeAllBreakpoints() Disponibilité Dreamweaver 4.0 Description Supprime tous les points d'arrêt de tous les fichiers. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.startDebugger() Disponibilité Dreamweaver 4.0 Description Ouvre la fenêtre de débogueur ainsi que le fichier .htm source et les fichiers .js indiqués dans sourceFileList(), puis lance le navigateur avec la version de débogage spécifiée par debugFileName(). Cette fonction n'avertit pas l'utilisateur si elle n'arrive pas à déterminer le type de navigateur. La création de la version de débogage est effectuée par un appel de la fonction dom.instrumentDocument(). Arguments debugFileName, sourceFileList, isTempFiles, {browserName} • debugFileName est le nom de la version de débogage du fichier à lancer dans le navigateur. API JavaScript de Dreamweaver 425 • sourceFileList • isTempFiles est une valeur booléenne indiquant si un suivi des fichiers utilisés est un tableau de paires d'URL contenant le fichier source et le fichier utilisé ; la première paire est le fichier .htm et les paires suivantes sont les fichiers .js externes. Chaque URL est exprimée sous la forme d'une URL absolue. doit être effectué et si ces fichiers doivent être supprimés lors du lancement suivant du débogueur ou de la fermeture de Dreamweaver. • est facultatif ; il spécifie le nom du navigateur de destination tel qu'il est défini dans les paramètres d'aperçu des préférences du navigateur. Il peut également être principal (primary) ou secondaire (secondary). Si cet argument n'est pas défini, le navigateur principal est utilisé par défaut. browserName Valeurs renvoyées Aucune. Fonctions relatives au clavier Ces fonctions émulent les opérations de déplacement au sein d'un document à l'aide des touches de direction, RET. ARR, SUPPR., PG. PREC et PG. SUIV. Outre les fonctions générales telles que arrowLeft() (équivalent de la touche de direction Gauche) et backspaceKey() (équivalent de la touche RET. ARR), Dreamweaver offre également des méthodes permettant d'accéder au mot ou au paragraphe suivant ou précédent, et au début et à la fin d'une ligne ou d'un document. dom.arrowDown() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion vers le bas du nombre de lignes spécifié. Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de fois où le point d'insertion doit être déplacé vers le bas. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. 426 Chapitre 26 dom.arrowLeft() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion vers la gauche du nombre de colonnes spécifié. Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de fois où le point d'insertion doit être déplacé vers la gauche. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. dom.arrowRight() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion vers la droite du nombre de colonnes spécifié. Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de fois où le point d'insertion doit être déplacé vers la droite. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. dom.arrowUp() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 427 Description Déplace le point d'insertion vers le haut du nombre de lignes spécifié. Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de fois où le point d'insertion doit être déplacé vers le haut. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. dom.backspaceKey() Disponibilité Dreamweaver 3.0 Description Revient à appuyer sur la touche RET. ARR le nombre de fois spécifié. Le résultat obtenu sera différent selon qu'il y a une sélection en cours ou simplement un point d'insertion. Arguments {nTimes} nTimes est le nombre de fois où une opération de retour arrière doit avoir lieu. S'il n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. Activateur Aucun. dom.deleteKey() Disponibilité Dreamweaver 3.0 Description Revient à appuyer sur la touche SUPPR. le nombre de fois spécifié. Le résultat obtenu sera différent selon qu'il y a une sélection en cours ou simplement un point d'insertion. 428 Chapitre 26 Arguments {nTimes} est le nombre de fois où une opération de suppression doit avoir lieu. S'il n'est pas défini, il prend par défaut la valeur 1. nTimes Valeurs renvoyées Aucune. Activateur Aucun. dom.endOfDocument() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion à la fin du document, dans la fenêtre active (c'est-àdire après le dernier contenu visible de la fenêtre de document ou après la balise HTML de fermeture de l'inspecteur de code selon le cas). Arguments {bShiftIsDown} est une valeur booléenne indiquant si la sélection doit être étendue. S'il n'est pas défini, il prend par défaut la valeur false. bShiftIsDown Valeurs renvoyées Aucune. Activateur Aucun. dom.endOfLine() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion à la fin de la ligne. Arguments {bShiftIsDown} est une valeur booléenne indiquant si la sélection doit être étendue. S'il n'est pas défini, il prend par défaut la valeur false. bShiftIsDown Valeurs renvoyées Aucune. API JavaScript de Dreamweaver 429 Activateur Aucun. dom.nextParagraph() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion au début du paragraphe suivant (ou saute plusieurs paragraphes si l'argument nTimes est supérieur à 1). Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de paragraphes dont le point d'insertion doit avancer. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. dom.nextWord() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion au début du mot suivant (ou saute plusieurs mots si l'argument nTimes est supérieur à 1). Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de mots dont le point d'insertion doit avancer. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. 430 Chapitre 26 dom.pageDown() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion d'une page vers le bas (équivalent de la touche PG. SUIV). Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de pages dont le point d'insertion doit reculer. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. dom.pageUp() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion d'une page vers le haut (équivalent de la touche PG. PREC). Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de pages dont le point d'insertion doit avancer. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. dom.previousParagraph() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 431 Description Déplace le point d'insertion au début du paragraphe précédent (ou saute plusieurs paragraphes si l'argument nTimes est supérieur à 1). Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de paragraphes dont le point d'insertion doit reculer. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. dom.previousWord() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion au début du mot précédent (ou saute plusieurs mots si l'argument nTimes est supérieur à 1). Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est le nombre de mots dont le point d'insertion doit reculer. Si cet argument n'est pas défini, il prend par défaut la valeur 1. est une valeur booléenne indiquant si la sélection doit être étendue. Si cet argument n'est pas défini, il prend par défaut la valeur false. Valeurs renvoyées Aucune. Activateur Aucun. dom.startOfDocument() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion au début du document, dans la fenêtre active (c'est-àdire avant le premier contenu visible de la fenêtre de document ou avant la balise HTML d'ouverture de l'inspecteur de code, selon le cas). 432 Chapitre 26 Arguments {bShiftIsDown} est une valeur booléenne indiquant si la sélection doit être étendue. S'il n'est pas défini, il prend par défaut la valeur false. bShiftIsDown Valeurs renvoyées Aucune. Activateur Aucun. dom.startOfLine() Disponibilité Dreamweaver 3.0 Description Déplace le point d'insertion au début de la ligne. Arguments {bShiftIsDown} est une valeur booléenne indiquant si la sélection doit être étendue. S'il n'est pas défini, il prend par défaut la valeur false. bShiftIsDown Valeurs renvoyées Aucune. Activateur Aucun. mapKeyCodeToChar() Description Convertit un code de touche tel qu'il est indiqué dans le champ keyCode de l'objet événement en caractère. Vous devez d'abord vérifier si le code de touche est une touche spéciale telle que la touche ORIGINE, PAGE SUIVANTE, etc. S'il ne s'agit pas d'une touche spéciale, cette méthode doit être utilisée pour traduire le code en code de caractère pouvant être affiché. Arguments keyCode keyCode est le code de touche à traduire en caractère. Valeurs renvoyées Aucune. API JavaScript de Dreamweaver 433 Fonctions relatives aux calques et aux cartes graphiques Ces fonctions permettent d'aligner, de redimensionner et de déplacer des calques et des zones réactives de carte graphique. Il est indiqué, dans la description de chaque fonction, si cette dernière s'applique aux calques ou aux zones réactives. dom.align() Disponibilité Dreamweaver 3.0 Description Aligne à gauche, à droite, en haut ou en bas les calques ou zones réactives sélectionnés. Arguments alignDirection représente le bord sur lequel les calques ou les zones réactives doivent être alignés, à savoir "left", "right", "top" ou "bottom". alignDirection Valeurs renvoyées Aucune. Activateur dom.canAlign() dom.arrange() Disponibilité Dreamweaver 3.0 Description Déplace les zones réactives sélectionnées dans le sens indiqué. Arguments toBackOrFront toBackOrFront correspond "front" ou "back". Valeurs renvoyées Aucune. Activateur dom.canArrange() 434 Chapitre 26 au sens du déplacement des zones réactives, à savoir dom.makeSizesEqual() Disponibilité Dreamweaver 3.0 Description Affecte aux calques ou aux zones réactives sélectionnés la même hauteur ou la même largeur, ou les deux. Le dernier calque ou la dernière zone réactive sélectionnée sert de guide. Arguments bHoriz, bVert • bHoriz • bVert est une valeur booléenne indiquant si les calques ou les zones réactives doivent être redimensionnés horizontalement. est une valeur booléenne indiquant si les calques ou les zones réactives doivent être redimensionnés verticalement. Valeurs renvoyées Aucune. Activateur Aucun. dom.moveSelectionBy() Disponibilité Dreamweaver 3.0 Description Déplace les calques ou les zones réactives sélectionnés horizontalement et verticalement du nombre de pixels spécifiés. Arguments x, y • • x est le nombre de pixels dont la sélection doit être déplacée horizontalement. y est le nombre de pixels dont la sélection doit être déplacée verticalement. Valeurs renvoyées Aucune. Activateur Aucun. dom.resizeSelectionBy() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 435 Description Redimensionne le calque ou la zone réactive sélectionnée. Arguments left, top, bottom, right • left est la nouvelle position de la limite gauche du calque ou de la zone réactive. • top est la nouvelle position de la limite supérieure du calque ou de la zone réactive. • bottom • right est la nouvelle position de la limite inférieure du calque ou de la zone réactive. est la nouvelle position de la limite droite du calque ou de la zone réactive. Valeurs renvoyées Aucune. Activateur Aucun. Exemple Si le calque sélectionné possède les propriétés Left, Top, Width et Height indiquées, un appel à la fonction dw.getDocumentDOM().resizeSelectionBy(– 10,–30,30,10) revient à restaurer Left à 40, Hight à 20, Width à 240 et Height à 240. dom.setLayerTag() Disponibilité Dreamweaver 3.0 Description Spécifie la balise HTML définissant le ou les calques sélectionnés. Arguments tagName tagName doit être Valeurs renvoyées Aucune. 436 Chapitre 26 "layer", "ilayer", "div" ou "span". Activateur Aucun. Fonctions relatives aux éléments de bibliothèque et aux modèles Ces fonctions permettent de gérer les opérations relatives aux modèles et aux éléments de bibliothèque, telles que la création, la mise à jour et la rupture de liens entre un document et un modèle ou un élément de la bibliothèque. Les méthodes de l'objet dreamweaver.libraryPalette permettent d'avoir un contrôle ou d'agir sur la sélection contenue dans le panneau Bibliothèque (programmé dans l'API en tant que « palette ») et non sur le document courant. De même, les méthodes de l'objet dreamweaver.templatePalette contrôlent ou agissent sur la sélection dans le panneau Modèle. dom.applyTemplate() Disponibilité Dreamweaver 3.0 Description Applique un modèle au document en cours. Si vous ne spécifiez aucun argument, la boîte de dialogue Sélectionner le modèle s'affiche. Cette fonction n'est valide que pour le document actif. Arguments {templateURL}, bMaintainLink • templateURL • bMaintainLink est une valeur booléenne indiquant si le lien au modèle d'origine doit être conservé (true) ou pas (false). est le chemin d'un modèle disponible sur le site en cours, exprimé sous la forme d'une URL de type file://. Valeurs renvoyées Aucune. Activateur dom.canApplyTemplate() dom.detachFromLibrary() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 437 Description Rompt le lien entre l'occurrence actuellement sélectionnée d'un élément de bibliothèque et le fichier LBI qui lui est associé en supprimant les balises de verrouillage autour de la sélection. Revient à cliquer sur Détacher de l'original dans l'inspecteur de propriétés. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.detachFromTemplate() Disponibilité Dreamweaver 3.0 Description Détache le document en cours du modèle qui lui est associé. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.getAttachedTemplate() Disponibilité Dreamweaver 3.0 Description Obtient le chemin du modèle associé au document. Arguments Aucun. Valeurs renvoyées Chaîne contenant le chemin du modèle, exprimé sous la forme d'une URL de type file://. Activateur Aucun. 438 Chapitre 26 dom.getEditableRegionList() Disponibilité Dreamweaver 3.0 Description Obtient la liste des régions modifiables dans le corps du document. Arguments Aucun. Valeurs renvoyées Tableau de nœuds d'élément. Activateur Aucun. Exemple Voir « dom.getSelectedEditableRegion() », page 440. dom.getIsLibraryDocument() Disponibilité Dreamweaver 3.0 Description Détermine si le document est un élément de bibliothèque. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le document est un fichier LBI. Activateur Aucun. dom.getIsTemplateDocument() Disponibilité Dreamweaver 3.0 Description Détermine si le document est un modèle. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le document est un fichier DWT. API JavaScript de Dreamweaver 439 Activateur Aucun. dom.getSelectedEditableRegion() Disponibilité Dreamweaver 3.0 Description Si la sélection ou le point d'insertion se trouve à l'intérieur d'une région modifiable, obtient la position de cette dernière parmi toutes celles qui existent dans le corps du document. Arguments Aucun. Valeurs renvoyées Index de position dans le tableau renvoyé par la fonction dom.getEditableRegionList(). Activateur Aucun. Exemple Le code suivant affiche une boîte de dialogue affichant le contenu de la région modifiable sélectionnée : var theDOM = dw.getDocumentDOM(); var edRegs = theDOM.getEditableRegionList(); var selReg = theDOM.getSelectedEditableRegion(); alert(edRegs[selReg].innerHTML); dom.insertLibraryItem() Disponibilité Dreamweaver 3.0 Description Insère une occurrence d'un élément de bibliothèque dans le document. Arguments libraryItemURL est le chemin d'un fichier LBI, exprimé sous la forme d'une URL de type file://. libraryItemURL Valeurs renvoyées Aucune. Activateur Aucun. 440 Chapitre 26 dom.markSelectionAsEditable() Disponibilité Dreamweaver 3.0 Description Affiche la boîte de dialogue Nouvelle région modifiable. Lorsque l'utilisateur clique sur Nouvelle région, Dreamweaver marque la sélection comme étant modifiable et laisse le texte tel quel. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canMarkSelectionAsEditable() dom.newEditableRegion() Disponibilité Dreamweaver 3.0 Description Affiche la boîte de dialogue Nouvelle région modifiable. Lorsque l'utilisateur clique sur Nouvelle région, Dreamweaver insère le nom de la région dans le document, entre accolades, à l'emplacement du point d'insertion. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canMakeNewEditableRegion() dom.removeEditableRegion() Disponibilité Dreamweaver 3.0 Description Supprime une région modifiable du document. Si cette région possède un contenu, celui-ci est conservé ; seuls les marqueurs de région modifiable sont supprimés. Arguments Aucun. API JavaScript de Dreamweaver 441 Valeurs renvoyées Aucune. Activateur dom.canRemoveEditableRegion() dom.updateCurrentPage() Disponibilité Dreamweaver 3.0 Description Met à jour les modèles ou les éléments de bibliothèque du document, ou les deux. Cette fonction n'est valide que pour le document actif. Arguments {typeOfUpdate} typeOfUpdate doit être "library", il prend par défaut la valeur "both". "template" ou "both". S'il n'est pas défini, Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.updatePages() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Mettre à jour les pages et sélectionne les options spécifiées. Arguments {typeOfUpdate} typeOfUpdate doit être "library", "template" ou "both". S'il n'est pas défini, il prend par défaut la valeur "both". Valeurs renvoyées Aucune. Activateur Aucun. 442 Chapitre 26 dreamweaver.templatePalette.newBlankTemplate() Disponibilité Dreamweaver 3.0 Description Crée un nouveau modèle. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. Fonctions Live data Vous pouvez appeler les fonctions Live data suivantes pour reproduire les fonctionnalités de menu : • showLiveDataDialog() peut être utilisée pour l'option de menu Affichage > Paramètres Live Data • setLiveDataMode() peut être utilisée pour l'option de menu Affichage > Live Data et Affichage > Actualiser Live Data • getLiveDataMode() peut également être utilisée pour l'option Affichage > Live Data Les autres fonctions Live Data sont utilisées lors de la mise en œuvre de la fonction liveDataTranslateMarkup() de l'API du traducteur. dreamweaver.getLiveDataInitTags() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie les balises d'initialisation pour le document actif. Les balises d'initialisation sont les balises HTML que l'utilisateur a indiquées dans la boîte de dialogue Paramètres Live Data. Cette fonction est généralement appelée à partir de la fonction liveDataTranslateMarkup() d'un traducteur, de façon à ce que le traducteur puisse transmettre les balises à la fonction liveDataTranslate(). Arguments Aucun. Valeurs renvoyées Une chaîne contenant les balises d'initialisation. API JavaScript de Dreamweaver 443 dreamweaver.getLiveDataMode() Disponibilité Dreamweaver UltraDev 1.0 Description Détermine si la fenêtre Live Data est actuellement visible. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si la fenêtre Live Data est visible. dreamweaver.liveDataTranslate() Disponibilité Dreamweaver UltraDev 1.0 Description Envoie un document HTML entier à un serveur d'application, demande au serveur d'exécuter les scripts dans le document, puis renvoie le document HTML final. Cette fonction peut également être appelée à partir de la fonction liveDataTranslateMarkup() d'un traducteur ; si vous tentez de l'appeler à un autre moment, une erreur se produit. Cette fonction effectue les opérations suivantes : • Elle lit l'image animée (qui s'affiche à côté du bord droit de la fenêtre Live Data). • Elle analyse les données saisies par l'utilisateur. Si vous cliquez sur l'icône Arrêter, la fonction est immédiatement terminée. • Elle accepte un argument contenant une seule chaîne de l'appelant (cette chaîne représente généralement le code source HTML entier du document de l'utilisateur. Il s'agit de la même chaîne que celle utilisée dans l'opération suivante). • Elle enregistre la chaîne HTML du document de l'utilisateur dans un fichier temporaire stocké sur le serveur Live Data. • Elle envoie une requête HTTP au serveur Live Data, en utilisant les paramètres définis dans la boîte de dialogue Paramètres Live Data. • • • • 444 Chapitre 26 Elle reçoit la réponse HTML du serveur Live Data. Elle supprime le fichier temporaire du serveur Live Data. Elle arrête la lecture du fichier d'animation. Elle renvoie la réponse HTML à l'appelant. Arguments Une seule chaîne, représentant généralement le code source HTML entier du document en cours de l'utilisateur. Valeurs renvoyées Objet httpReply. Cet objet est le même que la valeur renvoyée par la fonction MMHttp.getText(). Si l'utilisateur clique sur l'icône Arrêter, le code httpReply.statusCode de la valeur de retour est égal à 200 (état OK) et son httpReply.data est égal à une chaîne vide. Voir la section « API HTTP », page 241 pour plus d'informations sur l'objet httpReply. dreamweaver.setLiveDataError() Disponibilité Dreamweaver UltraDev 1.0 Description Détermine le message d'erreur à afficher si une erreur se produit lors de l'exécution de la fonction liveDataTranslateMarkup() dans un traducteur. Si le document transmis par UltraDev à liveDataTranslate() contient des erreurs, le serveur retransmet un message d'erreur, en format HTML. Si le traducteur (code ayant appelé liveDataTranslate()) détermine que le serveur a renvoyé un message d'erreur, il appelle setLiveDataError() pour afficher le message d'erreur dans UltraDev. Ce message s'affiche une fois que la fonction liveDataTranslateMarkup() a été exécutée ; UltraDev affiche la description dans une boîte de dialogue d'erreurs. La fonction setLiveDataError() doit uniquement être appelée à partir de la fonction liveDataTranslateMarkup(). Arguments source est une chaîne contenant le code source HTML, qui est ensuite analysé et rendu dans la boîte de dialogue du message d'erreur. source Valeurs renvoyées Aucune. dreamweaver.setLiveDataMode() Disponibilité Dreamweaver UltraDev 1.0 Description Active ou désactive l'affichage de la fenêtre Live Data. API JavaScript de Dreamweaver 445 Arguments bIsVisible est une valeur booléenne indiquant si la fenêtre Live Data doit être visible. Si vous transmettez la valeur true à cette fonction et qu'UltraDev est configuré pour afficher la fenêtre Live Data, l'effet est le même que si l'utilisateur clique sur Actualiser. bIsVisible Valeurs renvoyées Aucune. dreamweaver.showLiveDataDialog() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche la boîte de dialogue Paramètres Live Data. Arguments Aucun. Valeurs renvoyées Aucune. Fonctions relatives aux menus Ces fonctions permettent d'optimiser et de recharger les menus dans Dreamweaver. Les fonctions dreamweaver.getMenuNeedsUpdating() et dreamweaver.notifyMenuUpdated() sont spécialement conçues pour empêcher l'exécution de routines de mise à jour superflues sur les menus dynamiques intégrés à Dreamweaver. dreamweaver.getMenuNeedsUpdating() Disponibilité Dreamweaver 3.0 Description Vérifie si le menu spécifié doit être mis à jour. Arguments menuId est une chaîne contenant la valeur de l'attribut id de l'élément de menu (tel qu'il est spécifié dans le fichier menus.xml). menuId 446 Chapitre 26 Valeurs renvoyées Valeur booléenne indiquant si le menu doit être mis à jour. Cette fonction renvoie la valeur false uniquement si la fonction dreamweaver.notifyMenuUpdated() a été appelée avec l'argument menuId et que la valeur renvoyée par menuListFunction n'a pas changé depuis. Reportez-vous à la section dreamweaver.notifyMenuUpdated() pour de plus amples informations. Activateur Aucun. dreamweaver.notifyMenuUpdated() Disponibilité Dreamweaver 3.0 Description Prévient Dreamweaver lorsque le menu spécifié doit être mis à jour. Arguments menuId, menuListFunction • menuId • menuListFunction doit être l'une des chaînes suivantes : "dw.cssStylePalette.getStyles()", "dw.getDocumentDOM().getFrameNames()", "dw.getDocumentDOM().getEditableRegionList", "dw.getBrowserList()", "dw.getRecentFileList()", "dw.getTranslatorList()", "dw.getFontList()", "dw.getDocumentList()", "dw.htmlStylePalette.getStyles()" "site.getSites()". est une chaîne contenant la valeur de l'attribut id de l'élément de menu (tel qu'il est spécifié dans le fichier menus.xml). ou Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.reloadMenus() Disponibilité Dreamweaver 3.0 Description Recharge la structure de menus à partir du fichier menus.xml du dossier Configuration. Arguments Aucun. API JavaScript de Dreamweaver 447 Valeurs renvoyées Aucune. Activateur Aucun. Fonctions relatives aux chemins Ces fonctions permettent d'obtenir et de manipuler les chemins d'accès aux fichiers et aux dossiers enregistrés sur le disque dur de l'utilisateur. Elles permettent, entre autres, de déterminer le chemin d'accès à la racine du site dans lequel réside le document en cours et de convertir des chemins relatifs en URL absolues. dreamweaver.getConfigurationPath() Disponibilité Dreamweaver 2.0 Description Obtient le chemin d'accès du dossier Configuration, exprimé sous la forme d'une URL de type file://. Arguments Aucun. Valeurs renvoyées Chaîne contenant le chemin d'accès du dossier Configuration. Activateur Aucun. Exemple Cette fonction est utile lorsque l'on souhaite faire référence à d'autres fichiers d'extension stockés dans le dossier Configuration à l'intérieur du dossier de l'application Dreamweaver. Exemple : var sortCmd = dreamweaver.getConfigurationPath() + ¬ "/Commands/Sort Table.htm" var sortDOM = dreamweaver.getDocumentDOM(sortCmd); dreamweaver.getDocumentPath() Disponibilité Dreamweaver1.2 448 Chapitre 26 Description Obtient le chemin d'accès du document spécifié, exprimé sous la forme d'une URL de type file://. Cette fonction revient à appeler la fonction dreamweaver.getDocumentDOM() et à lire la propriété URL de la valeur renvoyée. Arguments sourceDoc sourceDoc doit être "document", "parent", "parent.frames[number]" ou "parent.frames['frameName']". document désigne le document actif contenant la sélection en cours. parent désigne le jeu de cadres parent (si le document sélectionné se trouve dans un cadre) et "parent.frames[number]" "parent.frames['frameName']" désignent un document figurant dans un et cadre spécifique du jeu de cadres contenant le document en cours. Valeurs renvoyées L'une des valeurs suivantes : • Une chaîne contenant l'URL du document spécifié, si le fichier a été enregistré. • Une chaîne vide si le fichier n'a pas été enregistré. Activateur Aucun. dreamweaver.getSiteRoot() Disponibilité Dreamweaver 1.2 Description Obtient le dossier racine local (défini dans la boîte de dialogue Définition du site) du site associé au document sélectionné, exprimé sous la forme d'une URL de type file://. Arguments Aucun. Valeurs renvoyées L'une des valeurs suivantes : • Une chaîne contenant l'URL du dossier racine local du site dans lequel le fichier a été enregistré. • Une chaîne vide si le fichier n'est pas associé à un site. Activateur Aucun. API JavaScript de Dreamweaver 449 dreamweaver.relativeToAbsoluteURL() Disponibilité Dreamweaver 2.0 Description Si on lui fournit une URL relative et un point de référence donnés (chemin du document en cours ou racine du site), convertit l'URL relative en URL absolue (file://). Arguments relURL, docPath, siteRoot • • relURL • siteRoot est le chemin de la racine du site, exprimé sous forme d'une URL de type file:// ou d'une chaîne vide si relURL est une URL relative à un est l'URL à convertir. correspond au chemin du document sur le disque de l'utilisateur (le document en cours, par exemple), exprimé sous la forme d'une URL de type file://, ou à une chaîne vide si relURL est une URL relative à la racine. docPath document. Valeurs renvoyées URL absolue. La valeur renvoyée est générée comme suit : • Si relURL est une URL absolue, aucune conversion n'a lieu et la valeur renvoyée est identique à relURL. • Si relURL est une URL relative à un document, la valeur renvoyée est une combinaison de docPath + relURL. • Si relURL est une URL relative à la racine, la valeur renvoyée est une combinaison de siteRoot + relURL. Activateur Aucun. Fonctions relatives à Quick Tag Editor Ces fonctions permettent de se déplacer d'une balise à l'autre à l'intérieur et autour de la sélection en cours. Elles permettent de supprimer n'importe laquelle de ces balises, d'envelopper la sélection à l'intérieur d'une nouvelle balise et d'afficher Quick Tag Editor pour permettre à l'utilisateur de modifier certains attributs d'une balise. dom.selectChild() Disponibilité Dreamweaver 3.0 450 Chapitre 26 Description Sélectionne un enfant de la sélection en cours. Revient à sélectionner la balise située immédiatement à droite dans le sélecteur de balises, en bas de la fenêtre de document. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.selectParent() Disponibilité Dreamweaver 3.0 Description Sélectionne le parent de la sélection en cours. Revient à sélectionner la balise située immédiatement à gauche dans le sélecteur de balises, en bas de la fenêtre de document. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.stripTag() Disponibilité Dreamweaver 3.0 Description Supprime la balise entourant la sélection en cours, mais ne touche pas à son contenu, le cas échéant. Si la sélection contient plusieurs balises ou aucune, Dreamweaver affiche un message d'erreur. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 451 dom.wrapTag() Disponibilité Dreamweaver 3.0 Description Place la balise spécifiée autour de la sélection en cours. Si la balise n'est pas complète, Dreamweaver affiche un message d'erreur. Arguments startTag startTag est la source associée à la balise d'ouverture. Valeurs renvoyées Aucune. Activateur Aucun. Exemple Le code suivant enveloppe un lien autour de la sélection en cours. var theDOM = dw.getDocumentDOM(); var theSel = theDOM.getSelectedNode(); if (theSel.nodeType = = Node.TEXT_NODE){ theDOM.wrapTag('<a href="foo.html">'); } dreamweaver.showQuickTagEditor() Disponibilité Dreamweaver 3.0 Description Affiche Quick Tag Editor pour la sélection en cours. Arguments {nearWhat}, {mode} • nearWhat, s'il est défini, doit être "selection" ou "tag selector". S'il n'est pas défini, il prend par défaut la valeur "selection". • mode, s'il est défini, doit être "default", "wrap", "insert" ou "edit". Si l'argument mode a pour valeur "default" ou qu'il n'est pas défini, Dreamweaver utilise la méthode heuristique porur déterminer le mode à utiliser pour la sélection en cours. Si l'argument nearWhat a pour valeur "tag selector", l'argument mode est ignoré. Valeurs renvoyées Aucune. Activateur Aucun. 452 Chapitre 26 Fonctions relatives aux rapports Les fonctions de rapports permettent d'accéder aux fonctionnalités de création de rapports de Dreamweaver, c'est-à-dire de lancer, de contrôler et de personnaliser le processus de création de rapports. Pour plus d'informations, voir « Rapports », page 63. dreamweaver.isReporting() Disponibilité Dreamweaver 4.0 Description Vérifie si un processus de création de rapport est en cours. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si un processus est en cours (true) ou pas (false). dreamweaver.showReportsDialog() Disponibilité Dreamweaver 4.0 Description Ouvre la boîte de dialogue Rapports. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.results.setResultData() Disponibilité Dreamweaver 4.0 Description Ajoute de nouvelles entrées à la fenêtre de résultats qui est active durant le processus de création de rapports. Si aucun rapport n'est en cours de création, cette fonction n'a aucun effet. Arguments strFilePath, strIcon, strDisplay, strDesc, {iLineNo}, {iStartSel}, {iEndSel} API JavaScript de Dreamweaver 453 • • strFilePath est • strDisplay est • • • • strDesc est une description qui accompagne l'entrée. iLineNo est le nombre de lignes contenues dans le fichier, s'il est indiqué. l'URL complète du fichier. strIcon est le chemin complet de l'icône à utiliser pour l'entrée de résultats. Vous pouvez créer des références à des icônes intégrées en indiquant un chiffre compris entre 1 et 10. une chaîne à afficher dans la première colonne ; il s'agit généralement d'un nom de fichier. iStartSel est le début du décalage dans le fichier, s'il est indiqué. iEndSel est la fin du décalage dans requise si iStartSel est spécifié. le fichier ; cette valeur est uniquement Valeurs renvoyées Aucune. Fonctions de la fenêtre de résultats Les fonctions de la fenêtre de résultats vous permettent de créer une fenêtre contenant des données formatées. Vous pouvez utiliser ces fonctions pour créer des fenêtres personnalisées similaires à celle du débogueur JavaScript ou de la fenêtre de résultats de la création de rapports. dreamweaver.createResultsWindow() Disponibilité Dreamweaver 4.0 Description Crée une nouvelle fenêtre de résultats et renvoie une référence d'objet JavaScript à la fenêtre. Arguments strName, arrColumns • • strName est la chaîne à utiliser pour le titre de la fenêtre. arrColumns est un tableau de noms de colonnes à utiliser dans la commande. Valeurs renvoyées Une référence d'objet à la fenêtre créée. resWin.addItem() Disponibilité Dreamweaver 4.0 454 Chapitre 26 Description Ajoute un nouvel élément à la fenêtre de résultats. Arguments strIcon, strDesc, iStartSel, iEndSel, colNdata • • strIcon est l'icône à afficher. Définissez 0 pour n'afficher aucune icône. strDesc est une description détaillée de l'élément de police de code. Définissez police de code si vous ne voulez aucune description. • iStartSel • iEndSel • colNdata est le début du décalage de la sélection dans le fichier. Définissez null si vous ne voulez pas utiliser cette fonction. est la fin du décalage de la sélection dans le fichier. Définissez police de code si vous ne voulez pas utiliser cette fonction. est une chaîne à utiliser pour chaque colonne. Valeurs renvoyées Une valeur booléenne, définie sur true si l'élément a été correctement ajouté et sur false dans le cas contraire. resWin.setCallbackCommands() Disponibilité Dreamweaver 4.0 Description Indique à la fenêtre de résultats sur quelles commandes la méthode processFile() doit être appelée. Si cette fonction n'est pas appelée, la commande qui a créé la fenêtre de résultats est appelée. Arguments arrCmdNames arrCmdNames est un tableau de noms processFile() doit être appelée. de commandes sur lesquelles la méthode Valeurs renvoyées Aucune. resWin.setColumnWidths() Disponibilité Dreamweaver 4.0 Description Définit la largeur de chaque colonne. API JavaScript de Dreamweaver 455 Arguments arrWidth est un tableau de nombres entiers représentant les largeurs à utiliser pour chaque colonne de la commande. arrWidth Valeurs renvoyées Aucune. resWin.setFileList() Disponibilité Dreamweaver 4.0 Description Indique à la fenêtre de résultats une liste de fichiers, de répertoires ou des deux sur lesquels un ensemble de commandes doit être appelé. Arguments arrFilePaths, bRecursive • • arrFilePaths est un tableau de chemins de fichier ou de dossier à répéter. bRecursive est une valeur booléenne récurrente (true) ou pas (false). indiquant si la répétition doit être Valeurs renvoyées Aucune. resWin.setTitle() Disponibilité Dreamweaver 4.0 Description Définit le titre de la fenêtre. Arguments strTitle strTitle est le nouveau titre du panneau flottant. Valeurs renvoyées Aucune. resWin.startProcessing() Disponibilité Dreamweaver 4.0 Description Lance le traitement du fichier. 456 Chapitre 26 Arguments Aucun. Valeurs renvoyées Aucune. resWin.stopProcessing() Disponibilité Dreamweaver 4.0 Description Arrête le traitement du fichier. Arguments Aucun. Valeurs renvoyées Aucune. Fonctions relatives à la sélection Ces fonctions permettent d'obtenir et de définir la sélection dans les documents ouverts. Pour savoir comment obtenir et définir la sélection dans la fenêtre Site, voir « Fonctions relatives aux sites », page 466. dom.getSelectedNode() Disponibilité Dreamweaver 3.0 Description Obtient le nœud sélectionné. Revient à appeler la fonction dom.getSelection() puis à transmettre la valeur renvoyée à la fonction dom.offsetsToNode(). Arguments Aucun. Valeurs renvoyées Objet balise, texte ou commentaire contenant la série de caractères spécifiée. Activateur Aucun. dom.getSelection() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 457 Description Obtient la sélection en cours, exprimée en décalages de caractères dans le code source HTML du document. Arguments bAllowMultiple est une valeur booléenne indiquant si la fonction doit renvoyer plusieurs décalages lorsque plusieurs calques, cellules de tableaux ou zones réactives de carte graphique sont sélectionnés. Si cet argument n'est pas défini, il prend par défaut la valeur false. bAllowMultiple Valeurs renvoyées Pour les sélections simples, tableau contenant deux nombres entiers. Le premier entier correspond au décalage de caractères au début de la sélection. Le second correspond au décalage de caractères à la fin de la sélection. Si les deux valeurs sont identiques, la sélection en cours correspond à un point d'insertion. Pour les sélections complexes (lorsque la sélection consiste en plusieurs cellules de tableau, plusieurs calques ou plusieurs zones réactives), tableau contenant 2n nombres entiers, n représentant le nombre d'éléments sélectionnés. Le premier entier de chaque paire correspond au décalage de caractères du début de la sélection (balise d'ouverture TD, DIV, SPAN, LAYER, ILAYER ou MAP comprise) ; le second entier correspond au décalage de caractères à la fin de la sélection (balise de fermeture TD, DIV, SPAN, LAYER, ILAYER ou MAP comprise). Si plusieurs rangées d'un tableau sont sélectionnées, le décalage de chaque cellule de chaque rangée est renvoyé. La sélection n'inclut jamais les balises TR. Activateur Aucun. dom.nodeToOffsets() Disponibilité Dreamweaver 3.0 Description Obtient la position d'un nœud de l'arborescence DOM, exprimée en décalages de caractères dans le code source HTML du document. Valide pour n'importe quel document sur un lecteur local. Arguments node node doit être une balise, un commentaire ou un texte correspondant à un nœud de l'arborescence renvoyée par la fonction dreamweaver.getDocumentDOM(). 458 Chapitre 26 Valeurs renvoyées Tableau contenant deux entiers. Le premier nombre entier est le décalage de caractères du début de la balise, du texte ou du commentaire ; le deuxième nombre entier est le décalage de caractères de la fin du nœud, à partir du début du document HTML. Activateur Aucun. Exemple L'exemple de code suivant sélectionne le premier objet image du document en cours : var theDOM = dw.getDocumentDOM(); var theImg = theDOM.images[0]; var offsets = theDom.nodeToOffsets(theImg); theDom.setSelection(offsets[0], offsets[1]); dom.offsetsToNode() Disponibilité Dreamweaver 3.0 Description Obtient l'objet de l'arborescence DOM contenant la série de caractères située entre le début et la fin définis. Valide pour n'importe quel document sur un lecteur local. Arguments offsetBegin, offsetEnd Les arguments correspondent respectivement au début et à la fin d'une série de caractères, exprimés en décalages de caractères à partir du début du code source HTML du document. Valeurs renvoyées Objet balise, texte ou commentaire contenant la série de caractères spécifiée. Activateur Aucun. Exemple Le code suivant affiche une alerte si la sélection est une image. var offsets = dom.getSelection(); var theSelection = dreamweaver.offsetsToNode(offsets[0], ¬ offsets[1]); if (theSelection.nodeType == Node.ELEMENT_NODE && ¬ theSelection.tagName == 'IMG'){ alert('The current selection is an image.'); } API JavaScript de Dreamweaver 459 dom.selectAll() Disponibilité Dreamweaver 3.0 Description Effectue une opération Sélectionner tout. Remarque : dans la plupart des cas, cette fonction sélectionne le contenu entier du document actif. Dans certains cas toutefois (lorsque le point d'insertion se trouve dans un tableau, par exemple), elle ne sélectionne qu'une partie du document. Pour définir le document entier comme sélection, utilisez la fonction dom.setSelection(). Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.selectTable() Disponibilité Dreamweaver 3.0 Description Sélectionne un tableau entier. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canSelectTable() dom.setSelectedNode() Disponibilité Dreamweaver 3.0 Description Définit le nœud sélectionné. Revient à appeler la fonction dom.nodeToOffsets(), puis à transmettre la valeur renvoyée à la fonction dom.setSelection(). 460 Chapitre 26 Arguments node, {bSelectInside}, {bJumpToNode} • • • node est un nœud de texte, de commentaire ou d'élément du document. bSelectInside est une valeur booléenne indiquant s'il faut sélectionner la propriété innerHTML du nœud. Cet argument n'est pertinent que si node est un nœud d'élément et qu'il prend par défaut la valeur false lorsqu'il n'est pas défini. est une valeur booléenne indiquant s'il faut, le cas échéant, faire défiler la fenêtre de document pour rendre la sélection visible. Si cet argument n'est pas défini, il prend par défaut la valeur false. bJumpToNode Valeurs renvoyées Aucune. Activateur Aucun. dom.setSelection() Disponibilité Dreamweaver 3.0 Description Définit le début et la fin de la sélection dans le document. Arguments offsetBegin, offsetEnd Les arguments correspondent respectivement au début et à la fin de la nouvelle sélection, exprimés en décalages de caractères dans le code source HTML du document. Si les deux valeurs sont identiques, la nouvelle sélection correspond à un point d'insertion. Si la nouvelle sélection n'est pas une sélection HTML valide, elle inclut les caractères de la première sélection HTML valide. Par exemple, si offsetBegin et offsetEnd définissent SRC="myImage.gif" comme sélection dans <IMG SRC="myImage.gif">, la sélection est étendue pour inclure également la balise IMG. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.selectAll() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 461 Description Effectue une opération Sélectionner tout dans la fenêtre de document active, dans la fenêtre Site ou, sur Macintosh, dans le champ modifiable actif d'une boîte de dialogue ou d'un panneau flottant. Remarque : si l'opération est effectuée dans le document actif, elle sélectionne dans la plupart des cas le contenu entier du document actif. Dans certains cas toutefois (lorsque le point d'insertion se trouve dans un tableau, par exemple), elle ne sélectionne qu'une partie du document. Pour définir le document entier comme sélection, utilisez la fonction dom.setSelection(). Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.canSelectAll() Fonctions de comportement du serveur Les fonctions de comportement du serveur vous donnent la possibilité de manipuler le panneau Comportements du serveur que vous affichez en choisissant Fenêtre > Comportements de serveur. Vous pouvez utiliser ces fonctions pour rechercher tous les comportements du serveur sur une page ou appliquer un nouveau comportement au document ou modifier un document existant par le biais d'un programme. Remarque : vous pouvez abréger dw.serverBehaviorInspector en dw.sbi. dreamweaver.serverBehaviorInspector. findAllServerBehaviors() Disponibilité Dreamweaver UltraDev 1.0 Description Définit un drapeau rappelant à l'utilisateur d'appeler la fonction API de comportement du serveur findServerBehaviors() pour chaque comportement déjà installé. Arguments Aucun. Valeurs renvoyées Aucune. 462 Chapitre 26 dreamweaver.serverBehaviorInspector. getServerBehaviors() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche une liste de tous les comportements sur une page. Si UltraDev détermine que la liste interne des comportements du serveur n'est peut-être pas à jour, il appelle findServerBehaviors() pour chaque comportement installé. Chacune de ces fonctions renvoie un tableau. UltraDev fusionne tous les tableaux en un seul tableau et le trie dans l'ordre selon lequel l'objet selectedNode de chaque comportement apparaît dans le document. UltraDev stocke le tableau fusionné localement. La fonction getServerBehaviors() renvoie un pointeur au tableau fusionné. Arguments Aucun. Valeurs renvoyées Un tableau d'objets JavaScript. Les objets du tableau sont les mêmes que ceux renvoyés par la fonction findServerBehaviors(). Ils sont triés dans leur ordre d'apparition dans le panneau Comportements. dreamweaver.popupServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Applique un nouveau comportement de serveur au document ou modifie un comportement existant. Si l'utilisateur doit définir les paramètres du comportement, une boîte de dialogue s'affiche. Arguments {behaviorName ou behaviorObject} • behaviorName est une chaîne représentant le nom du comportement, la balise de titre d'un fichier ou un nom de fichier. • behaviorObject est un objet comportement. Si vous ne définissez pas cet argument, UltraDev exécute le comportement de serveur sélectionné. Si l'argument est le nom du comportement de serveur, UltraDev ajoute ce comportement à la page. Si l'argument est l'un des objets du tableau renvoyé par getServerBehaviors(), une boîte de dialogue s'affiche pour permettre à l'utilisateur de modifier les paramètres du comportement. Valeurs renvoyées Aucune. API JavaScript de Dreamweaver 463 Fonctions relatives à la source de données dreamweaver.dbi.getDataSources Disponibilité Dreamweaver UltraDev 4.0 Description Appelle la fonction findDynamicSources() pour chaque fichier contenu dans le dossier Configuration/DataSources. Vous pouvez utiliser cette fonction pour générer une liste de toutes les sources de données du document de l'utilisateur. Cette fonction est répétée sur tous les fichiers du dossier Configuration/ DataSources, appelle la fonction findDynamicSources() dans chaque fichier, fusionne tous les tableaux renvoyés et renvoie le tableau de sources de données fusionné. Arguments Aucun. Valeurs renvoyées Le tableau renvoyé par cette fonction contient une liste concaténée de toutes les sources de données contenues dans le document de l'utilisateur. Chaque élément du tableau est un objet et chaque objet a les propriétés suivantes : • La propriété title correspond au libellé qui apparaît à droite de l'icône de chaque nœud parent. La propriété title est obligatoire. • La propriété imageFile est le chemin d'accès à un fichier contenant l'icône (image GIF) qui représente le nœud parent dans le panneau Liaisons de données et les boîtes de dialogue Données dynamiques ou Texte dynamique. La propriété imageFile est obligatoire. • La propriété isallowDelete est facultative. Si cette propriété est définie sur false, lorsque l'utilisateur clique sur ce nœud dans le panneau Liaisons de données, le bouton moins (-) est désactivé. Si elle est définie sur true, le bouton moins (-) est activé. Si la propriété n'est pas définie, elle prend par défaut la valeur true. • La propriété dataSource est le nom du fichier dans lequel la fonction est définie. L'extension « .htm » n'est pas spécifiée. Par exemple, la fonction findDynamicSources() de Configuration/DataSources/ASP/session.htm définit la propriété dataSource sur session. Cette propriété est obligatoire. findDynamicSources() 464 Chapitre 26 • La propriété name est le nom du comportement de serveur associé à la source de données dataSource, s'il existe. Cette propriété est obligatoire. Certaines sources de données, telles que des jeux d'enregistrements, sont associées à des comportements de serveur. Lorsque vous créez un jeu d'enregistrements et que vous le nommez Auteurs, la propriété « name » doit être égale à Auteurs. D'autres sources de données, telles que les variables de session, ne sont pas associées à un comportement de serveur. Leur propriété « name » doit être une chaîne vide (" "). Fonctions de modèle de serveur Dans UltraDev, chaque site possède un modèle de serveur (par exemple ASP, JSP ou ColdFusion). Les modèles de serveur sont des techniques permettant d'exécuter des scripts sur un serveur. Lorsque l'utilisateur définit un modèle de serveur, UltraDev sait quel type de balises doivent être insérées dans les pages d'une application. Par exemple, si vous spécifiez un serveur ColdFusion, UltraDev insère les balises et les scripts ColdFusion appropriés dans la page. Les fonctions de modèle de serveur vous permettent de déterminer le modèle de serveur utilisé pour un site, les langages ainsi que la version pris en charge. dom.serverModel.getServerLanguage() Disponibilité Dreamweaver UltraDev 1.0 Description Détermine le site qui contient le document, puis renvoie le langage serveur pour ce site. Le langage serveur d'un site est la valeur choisie dans le paramètre Langage de script par défaut de l'onglet Infos du serveur d'application de la boîte de dialogue Définition du site. La valeur de retour de cette fonction est l'une des valeurs renvoyées par la fonction API du modèle de serveur getServerLanguages(). Pour ASP, la valeur de retour de cette fonction est soit JavaScript, soit VBScript, selon la valeur choisie par l'utilisateur. Arguments Aucun. Valeurs renvoyées Une chaîne contenant les langages de script pris en charge. Exemple Si le modèle de serveur en cours est ASP 2.0, la fonction dom.serverModel.getServerLanguage() renvoie ["VBScript", "JavaScript"]. API JavaScript de Dreamweaver 465 dom.serverModel.getServerName() Disponibilité Dreamweaver UltraDev 1.0 Description Détermine le site qui contient le document, puis renvoie le modèle de serveur de ce site. Les valeurs possibles sont ASP, JSP, Cold Fusion ou tous les fichiers supplémentaires contenus dans le dossier Configuration\ServerModels. Arguments Aucun. Valeurs renvoyées Une chaîne contenant le nom du serveur. dom.serverModel.getServerVersion() Disponibilité Dreamweaver UltraDev 1.0 Description Détermine le site qui contient le document, puis le modèle de serveur choisi pour ce site. Chaque modèle de serveur a une fonction getVersionArray() (dans l'API de modèle de serveur), qui renvoie un tableau de couples nom-version. Arguments name name est une chaîne représentant le nom d'une version. Valeurs renvoyées Une chaîne contenant le numéro de version. Par exemple, si vous avez transmis « ADODB » à dom.serverModel.getServerVersion(), UltraDev renvoie « 2.1 ». Fonctions relatives aux sites Ces fonctions permettent d'effectuer des opérations sur les fichiers de site ou sur la carte du site. Elles permettent de créer des liens entre les fichiers, d'obtenir, de placer, d'extraire et d'archiver des fichiers, de les sélectionner et de les désélectionner, de les créer et de les supprimer, d'obtenir des informations sur les sites définis par l'utilisateur, etc. dreamweaver.loadSitesFromPrefs() Disponibilité Dreamweaver 4.0 466 Chapitre 26 Description Charge les informations du site pour tous les sites de la base de registres du système (Windows) ou du fichier de préférences Dreamweaver (Macintosh) dans Dreamweaver. Si un site est connecté à un serveur distant lorsque cette fonction est appelée, il est automatiquement déconnecté. Arguments Aucun. Valeurs renvoyées Aucune. dreamweaver.saveSitesToPrefs() Disponibilité Dreamweaver 4.0 Description Enregistre toutes les informations pour chaque site que l'utilisateur a défini dans la base de registres du système (Windows) ou le fichier de préférences Dreamweaver (Macintosh). Arguments Aucun. Valeurs renvoyées Aucune. site.addLinkToExistingFile() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Sélectionner fichier HTML pour permettre à l'utilisateur de sélectionner un fichier, puis crée un lien entre ce dernier et le document sélectionné. Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canAddLink() API JavaScript de Dreamweaver 467 site.addLinkToNewFile() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Lier au nouveau fichier pour permettre à l'utilisateur de créer un fichier, puis crée un lien entre ce dernier et le document sélectionné. Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canAddLink() site.canEditColumns() Description Détermine si un site existe ou pas. Arguments Aucun. Valeurs renvoyées true si un site existe. site.changeLinkSitewide() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Modifier le lien au niveau du site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.changeLink() Disponibilité Dreamweaver 3.0 468 Chapitre 26 Description Ouvre la boîte de dialogue Sélectionner fichier HTML pour permettre à l'utilisateur de sélectionner le nouveau fichier à associer au lien. Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canChangeLink() site.checkIn() Disponibilité Dreamweaver 3.0 Description Archive les fichiers sélectionnés et traite les fichiers dépendants de l'une des façons suivantes : • Si l'utilisateur a activé l'option Invite lors de Placer/Archiver dans les préférences, catégorie FTP du site, la boîte de dialogue Fichiers dépendants s'affiche. • Si l'utilisateur a activé l'option Ne plus afficher ce message dans la boîte de dialogue Fichiers dépendants, puis qu'il a cliqué sur Oui, les fichiers dépendants sont téléchargés et aucune boîte de dialogue ne s'affiche. • Si l'utilisateur a activé l'option Ne plus afficher ce message dans la boîte de dialogue Fichiers dépendants, puis qu'il a cliqué sur Non, les fichiers dépendants ne sont pas téléchargés et aucune boîte de dialogue ne s'affiche. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Aucune. Activateur site.canCheckIn() site.checkLinks() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 469 Description Ouvre la boîte de dialogue Vérificateur de lien et vérifie les liens dans les fichiers spécifiés. Arguments scopeOfCheck scopeOfCheck définit à quel endroit les liens sont valeur "document", "selection" ou "site". vérifiés. Il doit avoir pour Valeurs renvoyées Aucune. Activateur Aucun. site.checkOut() Disponibilité Dreamweaver 3.0 Description Extrait les fichiers sélectionnés et traite les fichiers dépendants de l'une des façons suivantes : • Si l'utilisateur a activé l'option Invite lors de Acquérir/Extraire dans les préférences, catégorie FTP du site, la boîte de dialogue Fichiers dépendants s'affiche. • Si l'utilisateur a activé l'option Ne plus afficher ce message dans la boîte de dialogue Fichiers dépendants, puis qu'il a cliqué sur Oui, les fichiers dépendants sont téléchargés et aucune boîte de dialogue ne s'affiche. • Si l'utilisateur a activé l'option Ne plus afficher ce message dans la boîte de dialogue Fichiers dépendants, puis qu'il a cliqué sur Non, les fichiers dépendants ne sont pas téléchargés et aucune boîte de dialogue ne s'affiche. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Aucune. Activateur site.canCheckOut() site.checkTargetBrowsers() Disponibilité Dreamweaver 3.0 470 Chapitre 26 Description Vérifie le navigateur cible des documents sélectionnés. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.defineSites() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Définir les sites. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.deleteSelection() Disponibilité Dreamweaver 3.0 Description Supprime les fichiers sélectionnés. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.editColumns() Description Affiche la boîte de dialogue Définir les sites avec la section colonnes mode Fichier. API JavaScript de Dreamweaver 471 Arguments Aucun. Valeurs renvoyées Aucune. site.locateInSite() Disponibilité Dreamweaver 3.0 Description Recherche le ou les fichiers spécifiés dans le volet spécifié de la fenêtre Site et sélectionne les fichiers identifiés par la recherche. Arguments localOrRemote, siteOrURL • • localOrRemote doit être "local" ou "remote". siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Aucune. Activateur site.canLocateInSite() site.findLinkSource() Disponibilité Dreamweaver 3.0 Description Ouvre le fichier contenant le lien ou le fichier dépendant sélectionné et met en surbrillance, dans ce fichier, le texte du lien ou la référence au fichier dépendant. Cette fonction agit seulement sur les fichiers de l'affichage Carte du site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canFindLinkSource() site.get() Disponibilité Dreamweaver 3.0 472 Chapitre 26 Description Obtient les fichiers spécifiés et traite les fichiers dépendants comme suit : • Si l'utilisateur a activé l'option Invite lors de Acquérir/Extraire dans les préférences, catégorie FTP du site, la boîte de dialogue Fichiers dépendants s'affiche. • Si l'utilisateur a activé l'option Ne plus afficher ce message dans la boîte de dialogue Fichiers dépendants, puis qu'il a cliqué sur Oui, les fichiers dépendants sont téléchargés et aucune boîte de dialogue ne s'affiche. • Si l'utilisateur a activé l'option Ne plus afficher ce message dans la boîte de dialogue Fichiers dépendants, puis qu'il a cliqué sur Non, les fichiers dépendants ne sont pas téléchargés et aucune boîte de dialogue ne s'affiche. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Aucune. Activateur site.canGet() site.getCheckOutUser() Disponibilité Dreamweaver 3.0 Description Obtient le nom d'utilisateur et le nom d'extraction associés au site en cours. Arguments Aucun. Valeurs renvoyées Chaîne contenant un nom d'utilisateur et un nom d'extraction, le cas échéant, ou chaîne vide si la fonction d'archivage/extraction est désactivée. Activateur Aucun. Exemple Un appel à la fonction site.getCheckOutUser() pourrait renvoyer ceci : "lori Si aucun nom d'extraction n'est spécifié, seul le nom d'utilisateur est renvoyé ("lori", par exemple). (loriLaptop)". API JavaScript de Dreamweaver 473 site.getCheckOutUserForFile() Disponibilité Dreamweaver 3.0 Description Obtient le nom d'utilisateur et le nom d'extraction de l'utilisateur qui a extrait le fichier spécifié. Arguments fileName est le chemin du fichier sur lequel porte la requête, exprimé sous forme d'une URL de type file://. fileName Valeurs renvoyées Chaîne contenant le nom d'utilisateur et le nom d'extraction de l'utilisateur qui a extrait le fichier spécifié, ou chaîne vide si le fichier n'a pas été extrait. Activateur Aucun. Exemple Un appel à la fonction site.getCheckOutUserForFile("file://C:/sites/ avocado8/index.html") pourrait renvoyer ceci : "lori (loriLaptop)". Si aucun nom d'extraction n'est spécifié, seul le nom d'utilisateur est renvoyé ("lori", par exemple). site.getConnectionState() Disponibilité Dreamweaver 3.0 Description Obtient l'état de connexion en cours. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le site distant est connecté. Activateur site.canConnect() site.getCurrentSite() Disponibilité Dreamweaver 3.0 Description Obtient le site en cours. 474 Chapitre 26 Arguments Aucun. Valeurs renvoyées Chaîne contenant le nom du site en cours. Activateur Aucun. Exemple Si plusieurs sites sont définis, un appel à la fonction site.getCurrentSite() renvoie celui qui est actuellement affiché dans la liste des sites en cours de la fenêtre Site. site.getFocus() Disponibilité Dreamweaver 3.0 Description Détermine quel est le volet actif de la fenêtre Site. Arguments Aucun. Valeurs renvoyées L'une des chaînes suivantes : "local", "remote" ou "site map". Activateur Aucun. site.getLinkVisibility() Disponibilité Dreamweaver 3.0 Description Vérifie si tous les liens sélectionnés dans la carte du site sont visibles (c'est-à-dire s'ils ne sont pas marqués comme cachés). Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si tous les liens sélectionnés sont visibles. Activateur Aucun. API JavaScript de Dreamweaver 475 site.getSelection() Disponibilité Dreamweaver 3.0 Description Détermine quels sont les fichiers actuellement sélectionnés dans la fenêtre Site. Arguments Aucun. Valeurs renvoyées Tableau de chaînes représentant les chemins des fichiers et des dossiers sélectionnés, exprimés sous la forme d'URL de type file://, ou tableau vide si aucun fichier ni dossier n'est sélectionné. Activateur Aucun. site.getSites() Disponibilité Dreamweaver 3.0 Description Obtient la liste des sites définis. Arguments Aucun. Valeurs renvoyées Tableau de chaînes représentant les noms des sites définis, ou tableau vide si aucun site n'est défini. Activateur Aucun. site.invertSelection() Disponibilité Dreamweaver 3.0 Description Inverse la sélection dans la carte du site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. 476 Chapitre 26 site.makeEditable() Disponibilité Dreamweaver 3.0 Description Désactive le drapeau de lecture seule sur les fichiers sélectionnés. Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canMakeEditable() site.makeNewDreamweaverFile() Disponibilité Dreamweaver 3.0 Description Crée un nouveau fichier Dreamweaver dans la fenêtre Site (dans le même répertoire que le premier fichier ou dossier sélectionné). Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canMakeNewFileOrFolder() site.makeNewFolder() Disponibilité Dreamweaver 3.0 Description Crée un nouveau dossier Dreamweaver dans la fenêtre Site (dans le même répertoire que le premier fichier ou dossier sélectionné). Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canMakeNewFileOrFolder() API JavaScript de Dreamweaver 477 site.newHomePage() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Nouvelle page d'accueil pour permettre à l'utilisateur de créer une nouvelle page d'accueil. Remarque : cette fonction agit seulement sur les fichiers de l'affichage Carte du site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.newSite() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Définition du site pour définir un nouveau site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.open() Disponibilité Dreamweaver 3.0 Description Ouvre les fichiers actuellement sélectionnés dans la fenêtre Site. Si des dossiers sont sélectionnés, ils sont développés dans l'affichage Fichiers du site. Arguments Aucun. Valeurs renvoyées Aucune. 478 Chapitre 26 Activateur site.canOpen() site.put() Disponibilité Dreamweaver 3.0 Description Place les fichiers spécifiés et traite les fichiers dépendants comme suit : • Si l'utilisateur a activé l'option Invite lors de Placer/Archiver dans les préférences, catégorie FTP du site, la boîte de dialogue Fichiers dépendants s'affiche. • Si l'utilisateur a activé l'option Ne plus afficher ce message dans la boîte de dialogue Fichiers dépendants, puis qu'il a cliqué sur Oui, les fichiers dépendants sont téléchargés et aucune boîte de dialogue ne s'affiche. • Si l'utilisateur a activé l'option Ne plus afficher ce message dans la boîte de dialogue Fichiers dépendants, puis qu'il a cliqué sur Non, les fichiers dépendants ne sont pas téléchargés et aucune boîte de dialogue ne s'affiche. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Aucune. Activateur site.canPut() site.recreateCache() Disponibilité Dreamweaver 3.0 Description Recrée le cache du site en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canRecreateCache() API JavaScript de Dreamweaver 479 site.refresh() Disponibilité Dreamweaver 3.0 Description Actualise la liste des fichiers sur le côté spécifié de la fenêtre Site. Arguments whichSide whichSide whichSide doit être "local" ou "remote". Si la carte du site est active et que a pour valeur "local", la carte du site est actualisée. Valeurs renvoyées Aucune. Activateur site.canRefresh() site.remoteIsValid() Disponibilité Dreamweaver 3.0 Description Détermine si le site distant est valide. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si un site distant a été défini et, dans le cas où le type de serveur est Local/Réseau, si le lecteur est monté. Activateur Aucun. site.removeLink() Disponibilité Dreamweaver 3.0 Description Supprime le lien sélectionné du document situé au-dessus de lui dans la carte du site. Arguments Aucun. Valeurs renvoyées Aucune. 480 Chapitre 26 Activateur site.canRemoveLink() site.renameSelection() Disponibilité Dreamweaver 3.0 Description Transforme le nom du fichier sélectionné en champ modifiable et permet à l'utilisateur de renommer le fichier. Si plusieurs fichiers sont sélectionnés, cette fonction agit sur le dernier. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.saveAsImage() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Enregistrer sous pour permettre à l'utilisateur d'enregistrer la carte du site sous forme d'image. Arguments fileType est le type d'image qui doit être enregistré. Pour Windows, les valeurs autorisées sont "bmp" et "png", et pour Macintosh "pict" et "jpeg". Si cet argument n'est pas défini ou que sa valeur n'est pas valide sur la plate-forme en cours, il prend par défaut la valeur "bmp" pour Windows et "pict" pour Macintosh. fileType Valeurs renvoyées Aucune. Activateur Aucun. site.selectAll() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 481 Description Sélectionne tous les fichiers de l'affichage actif (à savoir soit la carte du site, soit les fichiers de site) Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.selectHomePage() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue d'ouverture de fichier pour permettre à l'utilisateur de choisir une nouvelle page d'accueil. Remarque : cette fonction agit seulement sur les fichiers de l'affichage Carte du site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.selectNewer() Disponibilité Dreamweaver 3.0 Description Sélectionne tous les fichiers les plus récents sur le côté spécifié de la fenêtre Site. Arguments whichSide whichSide doit être "local" ou "remote". Valeurs renvoyées Aucune. Activateur site.canSelectNewer() 482 Chapitre 26 site.setAsHomePage() Disponibilité Dreamweaver 3.0 Description Désigne le fichier sélectionné dans l'affichage Fichiers du site comme étant la page d'accueil du site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. site.setConnectionState() Disponibilité Dreamweaver 3.0 Description Définit l'état de connexion du site en cours. Arguments bConnected bConnected est une valeur booléenne cours (true) ou pas (false). indiquant si une connexion au site est en Valeurs renvoyées Aucune. Activateur Aucun. site.setCurrentSite() Disponibilité Dreamweaver 3.0 Description Ouvre le site spécifié dans le volet local de la fenêtre Site. Arguments whichSite est le nom d'un site défini (tel qu'il apparaît dans la liste des sites en cours, dans la fenêtre Site ou dans la boîte de dialogue Définir les sites. whichSite API JavaScript de Dreamweaver 483 Valeurs renvoyées Aucune. Activateur Aucun. Exemple Si trois sites sont définis (avocado8, dreamcentral et testsite, par exemple), un appel à la fonction site.setCurrentSite("dreamcentral") fait de dreamcentral le site en cours. site.setFocus() Disponibilité Dreamweaver 3.0 Description Active le volet spécifié de la fenêtre Site. Si le volet spécifié n'est pas affiché, la fonction l'affiche et l'active. Arguments whichPane whichPane map". doit être l'une des chaînes suivantes : "local", "remote" ou "site Valeurs renvoyées Aucune. Activateur Aucun. site.setLayout() Disponibilité Dreamweaver 3.0 Description Ouvre le volet Mise en forme de la carte du site de la boîte de dialogue Définition du site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canSetLayout() 484 Chapitre 26 site.setLinkVisibility() Disponibilité Dreamweaver 3.0 Description Affiche ou masque le lien en cours. Arguments bShow est une valeur booléenne indiquant si le lien en cours ne doit plus être marqué comme étant masqué. bShow Valeurs renvoyées Aucune. Activateur Aucun. site.setSelection() Disponibilité Dreamweaver 3.0 Description Sélectionne les fichiers ou les dossiers visibles dans le volet actif de la fenêtre Site. Arguments arrayOfURLs est un tableau de chaînes, chacune représentant le chemin d'accès à un fichier ou à un dossier du site en cours, exprimé sous la forme d'une URL de type file://. arrayOfURLs Remarque : pour les chemins de dossier, ne tapez pas la barre oblique (/) à la fin du chemin. Valeurs renvoyées Aucune. Activateur Aucun. site.synchronize() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Synchroniser les fichiers. API JavaScript de Dreamweaver 485 Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canSynchronize() site.undoCheckOut() Disponibilité Dreamweaver 3.0 Description Retire des sites locaux et distants les fichiers verrouillés associés aux fichiers sélectionnés et remplace leur copie locale par la copie distante. Arguments siteorURL siteorURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Aucune. Activateur site.canUndoCheckOut() site.viewAsRoot() Disponibilité Dreamweaver 3.0 Description Place provisoirement le fichier sélectionné en première position sur la carte du site. Arguments Aucun. Valeurs renvoyées Aucune. Activateur site.canViewAsRoot() 486 Chapitre 26 Fonctions du mode Source Les fonctions du mode Source incluent les opérations relatives à l'édition du code source du document (et tous les changements résultants sur le mode Création). Les fonctions de cette section permettent d'ajouter des commandes de navigation aux fenêtres d'affichage de code source à l'intérieur d'une fenêtre de document divisée en deux, de l'inspecteur de code et de la fenêtre du débogueur JavaScript. dom.isDesignViewUpdated() Disponibilité Dreamweaver 4.0 Description Détermine si le contenu des modes Création et Texte est synchronisé pour les opérations Dreamweaver qui requièrent un état de document correct. Arguments Aucun. Valeurs renvoyées true si le mode Création (WYSIWIG) est synchronisée avec le texte du mode Texte et false dans le cas contraire. dom.isSelectionValid() Disponibilité Dreamweaver 4.0 Description Détermine si une sélection est valide ou pas ou si elle doit être déplacée avant que l'opération ne soit effectuée. Arguments Aucun. Valeurs renvoyées true si la sélection en cours contient un segment de code correct. Si le document n'a pas encore été synchronisé, cette fonction renvoie la valeur false (étant donné que la sélection n'a pas été mise à jour). dom.source.arrowDown() Disponibilité Dreamweaver 4.0 Description Déplace le point d'insertion vers le bas du document affiché en mode Source, ligne par ligne. Si le contenu est déjà sélectionné, cette fonction étend la sélection ligne par ligne. API JavaScript de Dreamweaver 487 Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de lignes dont le point d'insertion se déplace. Si nTimes n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. dom.source.arrowLeft() Disponibilité Dreamweaver 4.0 Description Déplace le point d'insertion vers la gauche de la ligne courante dans le mode Source. Si le contenu est déjà sélectionné, cette fonction étend la sélection vers la gauche. Arguments {nTimes}, {bShiftIsDown} • nTimes nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de caractères dont le point d'insertion se déplace. Si n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. dom.source.arrowRight() Disponibilité Dreamweaver 4.0 Description Déplace le point d'insertion vers la droite de la ligne en cours du mode Source. Si le contenu est déjà sélectionné, cette fonction étend la sélection vers la droite. Arguments {nTimes}, {bShiftIsDown} 488 Chapitre 26 • nTimes nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de caractères dont le point d'insertion se déplace. Si n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. dom.source.arrowUp() Disponibilité Dreamweaver 4.0 Description Déplace le point d'insertion vers le haut du document affiché en mode Source, ligne par ligne. Si le contenu est déjà sélectionné, cette fonction étend la sélection ligne par ligne. Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de lignes dont le point d'insertion se déplace. Si nTimes n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. dom.source.balanceBracesTextView() Disponibilité Dreamweaver 4.0 Description Extension de la sélection en mode Source qui permet d'équilibrer les parenthèses. Vous pouvez appeler dom.source.balanceBracesTextView() pour étendre la sélection mise en surbrillance ou le point d'insertion du début de l'instruction entre parenthèses jusqu'à la fin de l'instruction afin d'équilibrer les caractères suivants : [], {} et (). Les appels suivants étendent la sélection vers des niveaux supplémentaires de ponctuation imbriquée. Arguments Aucun. Valeurs renvoyées Aucune. dom.source.endOfDocument() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 489 Description Place le point d'insertion à la fin du document en cours affiché en mode Source. Si le contenu est déjà sélectionné, cette fonction étend la sélection à la fin du document. Arguments bShiftIsDown Valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. Valeurs renvoyées Aucune. dom.source.endOfLine() Disponibilité Dreamweaver 4.0 Description Place le point d'insertion à la fin de la ligne courante. Si le contenu est déjà sélectionné, cette fonction étend la sélection jusqu'à la fin de la ligne courante. Arguments bShiftIsDown Valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. Valeurs renvoyées Aucune. dom.source.endPage() Disponibilité Dreamweaver 4.0 Description Place le point d'insertion à la fin de la page en cours ou à la fin de la page suivante (si le point d'insertion est déjà à la fin d'une page). Si le contenu est déjà sélectionné, cette fonction étend la sélection page par page. Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de pages dont le point d'insertion se déplace. Si nTimes n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. 490 Chapitre 26 dom.source.getCurrentLines() Disponibilité Dreamweaver 4.0 Description Renvoie les numéros de ligne des décalages spécifiés à partir du début du document. Arguments startOffset, endOffset • • startOffset endOffset est un nombre entier représentant la ligne de début du texte. est un nombre entier représentant la ligne de fin du texte. Valeurs renvoyées Un tableau de deux chiffres représentant les lignes de début et de fin du texte compris entre (et incluant) startOffset et endOffset. Si startOffset et endOffset ne sont pas corrects, cette fonction renvoie -1. dom.source.getSelection() Description Obtient la sélection en cours, exprimée en décalages de caractères dans le mode Affichage de code du document. Arguments Aucun. Valeurs renvoyées Une paire de nombres entiers représentant les décalages à partir du début du document source. Le premier nombre entier est le début de la sélection et le second est la fin. Si les deux nombres sont égaux, la sélection est un IP. Si aucun élément n'est sélectionné dans la source, les deux nombres sont -1. dom.source.getText() Disponibilité Dreamweaver 4.0 Description Renvoie la chaîne de texte de la source comprise entre les décalages définis. Arguments start, end • start • end est un nombre entier représentant le décalage à partir du début du document. est un nombre entier représentant la fin du document. API JavaScript de Dreamweaver 491 Valeurs renvoyées Une chaîne représentant le texte du code source HTML compris entre les décalages start et end. dom.source.indentTextView() Disponibilité Dreamweaver 4.0 Description Déplace le texte source sélectionné d'une marque de tabulation vers la droite. Arguments Aucun Valeurs renvoyées Aucune. dom.source.insert() Description Insère la chaîne spécifiée dans le code source HTML au point de décalage défini à partir du début du fichier source. Si le décalage n'est pas supérieur ou égal à zéro, l'insertion échoue et la fonction renvoie la valeur false. Arguments offset, string • • offset est le décalage à partir du début du fichier où la chaîne doit être insérée. string est la chaîne à insérer. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. dom.source.nextWord() Disponibilité Dreamweaver 4.0 Description Déplace le point d'insertion vers le début du mot suivant (ou des mots suivants si spécifié) en mode Source. Si le contenu est déjà sélectionné, cette fonction étend la sélection vers la droite. Arguments {nTimes}, {bShiftIsDown} • 492 Chapitre 26 est le nombre de mots dont le point d'insertion se déplace. Si nTimes n'est pas défini, il prend par défaut la valeur 1. nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. Valeurs renvoyées Aucune. dom.source.outdentTextView() Disponibilité Dreamweaver 4.0 Description Déplace le texte source sélectionné d'une marque de tabulation vers la gauche. Arguments Aucun Valeurs renvoyées Aucune. dom.source.pageDown() Disponibilité Dreamweaver 4.0 Description Déplace le point d'insertion vers le bas du document affiché en mode Source, page par page. Si le contenu est déjà sélectionné, cette fonction étend la sélection page par page. Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de pages dont le point d'insertion se déplace. Si nTimes n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. dom.source.pageUp() Disponibilité Dreamweaver 4.0 Description Déplace le point d'insertion vers le haut du document affiché en mode Source, page par page. Si le contenu est déjà sélectionné, cette fonction étend la sélection page par page. API JavaScript de Dreamweaver 493 Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de pages dont le point d'insertion se déplace. Si nTimes n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. dom.source.previousWord() Disponibilité Dreamweaver 4.0 Description Déplace le point d'insertion vers le début du mot précédent (ou des mots suivants si spécifié) en mode Source. Si le contenu est déjà sélectionné, cette fonction étend la sélection vers la gauche. Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de mots dont le point d'insertion se déplace. Si nTimes n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. dom.source.replaceRange() Disponibilité Dreamweaver 4.0 Description Remplace la plage de texte source comprise entre startOffset et endOffset par string. Si startOffset est supérieur à endOffset ou si l'un des décalages n'est pas un nombre entier positif, cette fonction n'a aucun effet et renvoie la valeur false. Si endOffset est supérieur au nombre de caractères du fichier, cette fonction remplace la plage de texte comprise entre startOffset et la fin du fichier. Si startOffset et endOffset sont supérieurs au nombre de caractères du fichier, cette fonction insère le texte à la fin du fichier. 494 Chapitre 26 Arguments startOffset, endOffset, string • • • startOffset endOffset string est le décalage indiquant le début du bloc à remplacer. est le décalage indiquant la fin du bloc à remplacer. est la chaîne à insérer. Valeurs renvoyées true si l'insertion réussit, false si elle échoue. dom.source.scrollEndFile() Disponibilité Dreamweaver 4.0 Description Fait défiler la fenêtre Source vers le bas du document sans déplacer le point d'insertion. Arguments Aucun. Valeurs renvoyées Aucune. dom.source.scrollLineDown() Disponibilité Dreamweaver 4.0 Description Fait défiler la fenêtre Source vers le bas ligne par ligne sans déplacer le point d'insertion. Arguments nTimes est le nombre de lignes à faire défiler. Si nTimes n'est pas défini, il prend par défaut la valeur 1. nTimes Valeurs renvoyées Aucune. dom.source.scrollLineUp() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 495 Description Fait défiler la fenêtre Source vers le haut ligne par ligne sans déplacer le point d'insertion. Arguments nTimes est le nombre de lignes à faire défiler. Si nTimes n'est pas défini, il prend par défaut la valeur 1. nTimes Valeurs renvoyées Aucune. dom.source.scrollPageDown() Disponibilité Dreamweaver 4.0 Description Fait défiler la fenêtre Source vers le bas page par page sans déplacer le point d'insertion. Arguments nTimes est le nombre de pages à faire défiler. Si nTimes n'est pas défini, il prend par défaut la valeur 1. nTimes Valeurs renvoyées Aucune. dom.source.scrollPageUp() Disponibilité Dreamweaver 4.0 Description Fait défiler la fenêtre Source vers le haut page par page sans déplacer le point d'insertion. Arguments nTimes est le nombre de pages à faire défiler. Si nTimes n'est pas défini, il prend par défaut la valeur 1. nTimes Valeurs renvoyées Aucune. 496 Chapitre 26 dom.source.scrollTopFile() Disponibilité Dreamweaver 4.0 Description Fait défiler la fenêtre Source vers le haut du document sans déplacer le point d'insertion. Arguments Aucun. Valeurs renvoyées Aucune. dom.source.selectParentTag() Disponibilité Dreamweaver 4.0 Description Extension de la sélection en mode Source qui permet d'équilibrer les balises. Vous pouvez appeler dom.source.selectParentTag() pour étendre la sélection ou le point d'insertion courant de la balise d'ouverture à la balise de fermeture. Les appels suivants étendent la sélection à des balises supplémentaires jusqu'à ce qu'il n'y ait plus de balises de fermeture. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.source.setCurrentLine() Disponibilité Dreamweaver 4.0 Description Place le point d'insertion au début de la ligne indiquée. Si lineNumber n'est pas un nombre entier positif, cette fonction n'a aucun effet et renvoie la valeur false. Place le point d'insertion au début de la dernière ligne si lineNumber est supérieur au nombre de lignes de la source. Arguments lineNumber lineNumber est la ligne au début de laquelle le point d'insertion est placé. API JavaScript de Dreamweaver 497 Valeurs renvoyées true si l'insertion réussit, false si elle échoue. dom.source.startOfDocument() Disponibilité Dreamweaver 4.0 Description Place le point d'insertion au début du document affiché en mode Source. Si le contenu est déjà sélectionné, cette fonction étend la sélection au début du document. Arguments bShiftIsDown Valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. Valeurs renvoyées Aucune. dom.source.startOfLine() Disponibilité Dreamweaver 4.0 Description Place le point d'insertion au début de la ligne courante. Si le contenu est déjà sélectionné, cette fonction étend la sélection au début de la ligne courante. Arguments bShiftIsDown Valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. Valeurs renvoyées Aucune. dom.source.topPage() Disponibilité Dreamweaver 4.0 Description Place le point d'insertion en haut de la page courante ou de la page précédente (si le point d'insertion est déjà en haut de la page). Si le contenu est déjà sélectionné, cette fonction étend la sélection page par page. 498 Chapitre 26 Arguments {nTimes}, {bShiftIsDown} • nTimes • bShiftIsDown est une valeur booléenne indiquant si le contenu est sélectionné ou pas. Si bShiftIsDown a la valeur true, le contenu est sélectionné. est le nombre de pages dont le point d'insertion se déplace. Si nTimes n'est pas défini, il prend par défaut la valeur 1. Valeurs renvoyées Aucune. dom.source.wrapSelection() Disponibilité Dreamweaver 4.0 Description Insère le texte de startTag avant la sélection en cours et le texte de endTag après la sélection en cours. La fonction sélectionne ensuite le bloc entier inséré. Si la sélection en cours est un point d'insertion, la fonction place le point d'insertion entre startTag et endTag. startTag et endTag ne doivent pas nécessairement être des balises ; il peut s'agir de tout segment de texte de votre choix. Arguments startTag, endTag • • startTag endTag est le texte à insérer au début de la sélection. est le texte à insérer à la fin de la sélection. Valeurs renvoyées Aucune. dom.synchronizeDocument() Disponibilité Dreamweaver 4.0 Description Synchronise les modes Source et Création. Arguments Aucun. Valeurs renvoyées Aucune. API JavaScript de Dreamweaver 499 Fonctions de manipulation de chaînes Ces fonctions vous permettent d'obtenir des informations sur une chaîne et de convertir une chaîne Latin1 en code national sur la plate-forme de l'utilisateur et vice versa. dreamweaver.doURLEncoding() Disponibilité Dreamweaver 1.0 Description Cette fonction prend une chaîne et renvoie une chaîne convertie en URL en remplaçant tous les espaces et caractères spéciaux par les entités spécifiées. Arguments stringToConvert Valeurs renvoyées Une chaîne convertie en format d'URL. Activateur Aucun. Exemple Si la valeur de l'URL est "My URL-encoded string" : var URL = dw.doURLEncoding(theURL.value); renvoie "My%20URL-encoded%20string" dreamweaver.getTokens() Disponibilité Dreamweaver 1.0 Description Accepte une chaîne et la divise en expressions. Arguments searchString, separatorCharacters • • searchString est la chaîne à diviser en expressions. est le ou les caractères indiquant la fin d'une expression. Les séparateurs figurant dans des chaînes entre guillemets sont ignorés. Si separatorCharacters contient un espace, tous les espaces (les tabulations, par exemple) sont traités comme des séparateurs, comme si vous les aviez définis explicitement. Deux espaces consécutifs ou plus sont traités comme un seul séparateur. separatorCharacters Valeurs renvoyées Tableau d'expressions. 500 Chapitre 26 Activateur Aucun. Exemple dreamweaver.getTokens('foo("my arg1", 34)', '(),') renvoie les expressions suivantes : • • • foo "my arg 1" 34 dreamweaver.latin1ToNative() Disponibilité Dreamweaver 2.0 Description Convertit une chaîne Latin 1 en code national sur la machine de l'utilisateur. Cette fonction permet d'afficher l'interface utilisateur d'un fichier d'extension dans une autre langue. Remarque : sous Windows, cette fonction n'a aucun effet car le code Windows repose sur Latin 1. Arguments stringToConvert correspond à la chaîne (déjà traduite) à convertir du code Latin 1 en code national. stringToConvert Valeurs renvoyées Chaîne convertie. Activateur Aucun. dreamweaver.nativeToLatin1() Disponibilité Dreamweaver 2.0 Description Convertit une chaîne de code national en code Latin 1. Remarque : sous Windows, cette fonction n'a aucun effet car le code Windows repose sur Latin 1. Arguments stringToConvert stringToConvert est la chaîne à convertir du code national en code Latin 1. API JavaScript de Dreamweaver 501 Valeurs renvoyées Chaîne convertie. Activateur Aucun. La fonction dreamweaver.scanSourceString() est un utilitaire qui analyse une chaîne et déchiffre l'endroit où les balises, les attributs et les directives HTML sont situés. Voici un exemple d'utilisation de la fonction dreamweaver.scanSourceString() : 1 Créez une implémentation pour une ou plusieurs des sept fonctions de rappel. 2 Ecrivez un script qui appelle la fonction dreamweaver.scanSourceString(). 3 Une chaîne contenant le code HTML et les pointeurs des fonctions de rappel que vous avez écrits sont transmis à la fonction dreamweaver.scanSourceString() . Par exemple, supposons que la chaîne HTML soit "<font size=2>bonjour</font>". 4 Dreamweaver analyse la chaîne et détermine si elle contient une balise de police. Dreamweaver appelle ensuite les fonctions de rappel dans l'ordre suivant : • • • • • fonction openTagBegin() fonction attribute() (pour l'attribut de taille) fonction openTagEnd() fonction text() (pour la chaîne « bonjour ») fonctions closeTagBegin() et closeTagEnd() fonctions de rappel dreamweaver.scanSourceString Comme mentionné plus haut, il existe sept fonctions de rappel appelées par Dreamweaver : 502 Chapitre 26 1 Dreamweaver appelle openTagBegin() pour chaque balise d'ouverture (par exemple <font>, et non </font>) et chaque balise vide (par exemple, <img> ou <hr>). La fonction openTagBegin() accepte deux arguments : le nom de la balise (par exemple, font ou img) et le décalage du document, qui est le nombre d'octets contenus dans le document avant le début de la balise. La fonction renvoie la valeur true si l'analyse doit continuer et false si elle doit s'arrêter. 2 Une fois openTagBegin() exécutée, Dreamweaver appelle attribute() pour chaque attribut HTML. La fonction attribute() accepte deux arguments : une chaîne contenant le nom de l'attribut (par exemple, color ou src) et une chaîne contenant la valeur de l'attribut (par exemple #000000 ou foo.gif). La fonction attribute() renvoie une valeur booléenne indiquant si l'analyse doit continuer ou pas. 3 Une fois que tous les attributs de la balise ont été recherchés, Dreamweaver appelle openTagEnd(). La fonction openTagEnd() accepte un argument : le décalage du document, qui est le nombre d'octets contenus dans le document avant la fin de la balise d'ouverture. Elle renvoie une valeur booléenne indiquant si l'analyse doit continuer ou pas. 4 Dreamweaver appelle closeTagBegin() pour chaque balise de fermeture (par exemple, </font>). Cette fonction accepte deux arguments : le nom de la balise à fermer (par exemple, font) et le décalage du document, qui est le nombre d'octets contenus dans le document avant le début de la balise de fermeture. La fonction attribute() renvoie une valeur booléenne indiquant si l'analyse doit continuer ou pas. 5 Une fois closeTagBegin() terminée, Dreamweaver appelle la fonction closeTagEnd(). La fonction closeTagEnd() accepte un argument : le décalage du document, qui est le nombre d'octets contenus dans le document avant la fin de la balise de fermeture. Elle renvoie une valeur booléenne indiquant si l'analyse doit continuer ou pas. 6 Dreamweaver appelle la fonction directive() pour chaque commentaire HTML, script ASP, script JSP ou script PHP. La fonction directive() accepte deux arguments : une chaîne contenant la directive et le décalage du document, qui est le nombre d'octets contenus dans le document avant la fin de la balise de fermeture. La fonction attribute() renvoie une valeur booléenne indiquant si l'analyse doit continuer ou pas. 7 Dreamweaver appelle la fonction text() pour chaque portion de texte du document, c'est-à-dire tout ce qui n'est pas une balise ni une directive. Les portions de texte incluent le texte qui n'est pas visible pour l'utilisateur, par exemple le texte contenu à l'intérieur d'une balise <title> ou <option>. La fonction text() accepte deux arguments : une chaîne contenant le texte et le décalage du document, qui est le nombre d'octets contenus dans le document avant la fin de la balise de fermeture. La fonction text() renvoie une valeur booléenne indiquant si l'analyse doit continuer ou pas. dreamweaver.scanSourceString() Disponibilité Dreamweaver UltraDev 1.0 Description Analyse une chaîne de code HTML et recherche les balises, les attributs, les directives et le texte. Pour chaque balise, attribut, directive et texte trouvé, scanSourceString() appelle une fonction de rappel fournie par l'appelant. Dreamweaver prend en charge les fonctions de rappel suivantes : openTagBegin(), openTagEnd(), closeTagBegin(), closeTagEnd(), directive(), attribute() et text(). API JavaScript de Dreamweaver 503 Arguments HTMLstr, parserCallbackObj • • HTMLstr est une chaîne contenant le code HTML. parserCallbackObj est un objet JavaScript qui a une ou plusieurs des méthodes suivantes : openTagBegin(), openTagEnd(), closeTagBegin(), closeTagEnd(), directive(), attribute() et text(). Pour de meilleurs résultats, parserCallbackObj doit être une bibliothèque partagée définie à l'aide de l'interface Extension C. Vous obtiendrez également de meilleures performances si la fonction parserCallbackObj définit uniquement les fonctions de rappel dont elle a besoin. Valeurs renvoyées Une valeur booléenne indiquant si l'opération a réussi ou pas. Fonctions de modification des tableaux Ces fonctions permettent d'insérer et de supprimer des lignes et des colonnes dans des tableaux, de modifier la largeur des colonnes et la hauteur des lignes, de convertir en pourcentage des mesures exprimées en pixels (et vice versa) et d'effectuer d'autres opérations standard de modification des tableaux. dom.convertWidthsToPercent() Disponibilité Dreamweaver 3.0 Description Convertit en pourcentage tous les attributs WIDTH exprimés en pixels du tableau en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.convertWidthsToPixels() Disponibilité Dreamweaver 4.0 Description Convertit en pixels tous les attributs WIDTH exprimés en pourcentage du tableau en cours. 504 Chapitre 26 Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.decreaseColspan() Disponibilité Dreamweaver 3.0 Description Diminue l'étendue de colonnes de 1. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canDecreaseColspan() dom.decreaseRowspan() Disponibilité Dreamweaver 3.0 Description Diminue l'étendue de lignes de 1. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canDecreaseRowspan() dom.deleteTableColumn() Disponibilité Dreamweaver 3.0 Description Supprime du tableau la ou les colonnes sélectionnées. API JavaScript de Dreamweaver 505 Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canDeleteTableColumn() dom.deleteTableRow() Disponibilité Dreamweaver 3.0 Description Supprime du tableau la ou les lignes sélectionnées. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canDeleteTableRow() dom.doDeferredTableUpdate() Disponibilité Dreamweaver 3.0 Description Si l'option Modification de tableau plus rapide est activée dans les préférences, catégorie Général, force l'application des modifications apportées à la mise en forme du tableau sans déplacer le point d'insertion à l'extérieur de celui-ci. Cette fonction n'a aucun effet si l'option Modification de tableau plus rapide n'est pas activée. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.getTableExtent() Disponibilité Dreamweaver 3.0 506 Chapitre 26 Description Obtient le nombre de colonnes et de lignes du tableau sélectionné. Arguments Aucun. Valeurs renvoyées Tableau contenant deux nombres entiers. Le premier entier correspond au nombre de colonnes, et le second au nombre de lignes. Si aucun tableau n'était sélectionné, aucune valeur n'est renvoyée. Activateur Aucun. dom.increaseColspan() Disponibilité Dreamweaver 3.0 Description Augmente l'étendue de colonnes de 1. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canIncreaseColspan() dom.increaseRowspan() Disponibilité Dreamweaver 3.0 Description Augmente l'étendue de lignes de 1. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canIncreaseRowspan() dom.insertTableColumns() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 507 Description Insère le nombre de colonnes spécifié dans le tableau en cours. Arguments numberOfCols, bBeforeSelection • • numberOfCols est le nombre de colonnes à insérer. est une valeur booléenne indiquant si les colonnes doivent être insérées avant la colonne contenant la sélection. bBeforeSelection Valeurs renvoyées Aucune. Activateur dom.canInsertTableColumns() dom.insertTableRows() Disponibilité Dreamweaver 3.0 Description Insère le nombre de lignes spécifié dans le tableau en cours. Arguments numberOfRows, bBeforeSelection • • numberOfRows est le nombre de lignes à insérer. est une valeur booléenne indiquant si les lignes doivent être insérées avant la ligne contenant la sélection. bBeforeSelection Valeurs renvoyées Aucune. Activateur dom.canInsertTableRows() dom.mergeTableCells() Disponibilité Dreamweaver 3.0 Description Fusionne les cellules de tableau sélectionnées. Arguments Aucun. Valeurs renvoyées Aucune. 508 Chapitre 26 Activateur dom.canMergeTableCells() dom.removeAllTableHeights() Disponibilité Dreamweaver 3.0 Description Supprime tous les attributs HEIGHT du tableau sélectionné. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.removeAllTableWidths() Disponibilité Dreamweaver 3.0 Description Supprime tous les attributs WIDTH du tableau sélectionné. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.setTableCellTag() Disponibilité Dreamweaver 3.0 Description Définit la balise de la cellule sélectionnée. Arguments tdOrTh tdOrTh doit être "td" ou "th". Valeurs renvoyées Aucune. API JavaScript de Dreamweaver 509 Activateur Aucun. dom.setTableColumns() Disponibilité Dreamweaver 3.0 Description Définit le nombre de colonnes du tableau sélectionné. Arguments numberOfCols Valeurs renvoyées Aucune. Activateur Aucun. dom.setTableRows() Disponibilité Dreamweaver 3.0 Description Définit le nombre de lignes du tableau sélectionné. Arguments numberOfRows Valeurs renvoyées Aucune. Activateur Aucun. dom.showInsertTableRowsOrColumnsDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Insérer des lignes ou des colonnes. Arguments Aucun. Valeurs renvoyées Aucune. 510 Chapitre 26 Activateur dom.canInsertTableColumns() ou dom.canInsertTableRows() dom.splitTableCell() Disponibilité Dreamweaver 3.0 Description Fractionne la cellule de tableau en cours en un nombre de lignes ou de colonnes donné. Si vous ne définissez pas l'un des deux arguments, ou les deux, la boîte de dialogue Fractionner la cellule s'affiche. Arguments {colsOrRows}, {numberToSplitInto} • • colsOrRows, s'il est défini, doit être "columns" ou "rows". numberToSplitInto, s'il est défini, indique en combien de lignes ou de colonnes la cellule doit être fractionnée. Valeurs renvoyées Aucune. Activateur dom.canSplitTableCell() Fonctions relatives aux scénarios Comme leur nom l'indique, ces fonctions agissent sur les scénarios. Elles permettent d'ajouter des objets, des comportements, des cadres et des images-clés à un scénario, de supprimer ou de modifier les objets d'un scénario, de stipuler si un scénario doit être lu automatiquement ou exécuté en boucle automatiquement, etc. Toutes les fonctions décrites dans cette section sont des méthodes de dreamweaver.timelineInspector car elles agissent sur le contenu du panneau Scénarios. dreamweaver.timelineInspector.addBehavior() Disponibilité Dreamweaver 3.0 Description Ouvre le panneau Comportements et applique automatiquement l'événement onFrameN approprié (N étant le cadre contenant la tête de lecture) lorsque l'utilisateur choisit une action et clique sur OK. Arguments Aucun. API JavaScript de Dreamweaver 511 Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.timelineInspector.addFrame() Disponibilité Dreamweaver 3.0 Description Ajoute un cadre au scénario en cours, au niveau du cadre contenant la tête de lecture. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.timelineInspector.canAddFrame() dreamweaver.timelineInspector.addKeyframe() Disponibilité Dreamweaver 3.0 Description Ajoute une image-clé à la barre d'animation sélectionnée au niveau du cadre contenant la tête de lecture. Argum ents Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.timelineInspector.canAddKeyFrame() dreamweaver.timelineInspector.addObject() Disponibilité Dreamweaver 3.0 Description Ajoute l'objet actuellement sélectionné au scénario. Arguments Aucun. 512 Chapitre 26 Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.timelineInspector.addTimeline() Disponibilité Dreamweaver 3.0 Description Ajoute un nouveau scénario au document en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.timelineInspector.changeObject() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Modifier l'objet. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.timelineInspector.canChangeObject() dreamweaver.timelineInspector.getAutoplay() Disponibilité Dreamweaver 3.0 Description Obtient l'état de l'option Lecture auto pour le scénario en cours. Arguments Aucun. API JavaScript de Dreamweaver 513 Valeurs renvoyées Valeur booléenne indiquant si l'option Lecture auto est activée. Activateur Aucun. dreamweaver.timelineInspector.getCurrentFrame() Disponibilité Dreamweaver 3.0 Description Obtient l’image en cours du scénario en cours. Arguments Aucun. Valeurs renvoyées Numéro d’image. Activateur Aucun. dreamweaver.timelineInspector.getLoop() Disponibilité Dreamweaver 3.0 Description Obtient l'état de l'option Boucle pour le scénario en cours. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si l'option Boucle est activée. Activateur Aucun. dreamweaver.timelineInspector.recordPathOfLayer() Disponibilité Dreamweaver 3.0 Description Enregistre le chemin d'un calque tandis que l'utilisateur fait glisser celui-ci. Arguments Aucun. 514 Chapitre 26 Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.timelineInspector.removeBehavior() Disponibilité Dreamweaver 3.0 Description Supprime du scénario le comportement sélectionné. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.timelineInspector.canRemoveBehavior() dreamweaver.timelineInspector.removeFrame() Disponibilité Dreamweaver 3.0 Description Supprime du scénario l’image sélectionnée. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.timelineInspector.canRemoveFrame() dreamweaver.timelineInspector.removeKeyframe() Disponibilité Dreamweaver 3.0 Description Supprime d'une barre d'animation l'image-clé sélectionnée. Arguments Aucun. API JavaScript de Dreamweaver 515 Valeurs renvoyées Aucune. Activateur dreamweaver.timelineInspector.canRemoveKeyFrame() dreamweaver.timelineInspector.removeObject() Disponibilité Dreamweaver 3.0 Description Supprime du scénario l'objet actuellement sélectionné. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dreamweaver.timelineInspector.canRemoveObject() dreamweaver.timelineInspector.removeTimeline() Disponibilité Dreamweaver 3.0 Description Supprime du document le scénario en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.timelineInspector.renameTimeline() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Renommer le scénario pour le scénario en cours. Arguments Aucun. 516 Chapitre 26 Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.timelineInspector.setAutoplay() Disponibilité Dreamweaver 3.0 Description Définit l'option Lecture auto pour le scénario en cours. Arguments bAutoplay bAutoplay est une valeur booléenne indiquant si l'option Lecture auto doit être activée. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.timelineInspector.setCurrentFrame() Disponibilité Dreamweaver 3.0 Description Déplace la tête de lecture vers l’image spécifiée. Arguments frameNumber Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.timelineInspector.setLoop() Disponibilité Dreamweaver 3.0 Description Définit l'option Boucle pour le scénario en cours. API JavaScript de Dreamweaver 517 Arguments bLoop bLoop est une valeur booléenne indiquant si l'option Boucle doit être activée. Valeurs renvoyées Aucune. Activateur Aucun. Fonctions de bascule Ces fonctions permettent d'obtenir et de définir un certain nombre d'options qui peuvent, selon le cas, être activées ou désactivées. dom.getEditNoFramesContent() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Modifier > Jeu de cadres > Modifier le contenu sans cadres. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le contenu de NOFRAMES est l'affichage actif (true) ou pas (false). Activateur Aucun. dom.getHideAllVisualAids() Disponibilité Dreamweaver 4.0 Description Détermine si des assistances visuelles doivent être masquées ou pas. Arguments Aucun. Valeurs renvoyées Une valeur booléenne, définie sur true si l'option « Masquer toutes les assistances visuelles » est activée et sur false dans le cas contraire. 518 Chapitre 26 Activateur Aucun. dom.getPreventLayerOverlaps() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Empêcher le chevauchement des calques. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si l'option est activée (true) ou désactivée (false). Activateur Aucun. dom.getShowAutoIndent() Description Détermine si le retrait automatique est activé dans le mode Affichage de code de la fenêtre de document. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si Retrait auto est activé. dom.getShowFrameBorders() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Bordures de cadre. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les bordures de cadre sont visibles (true) ou invisibles (false). Activateur Aucun. API JavaScript de Dreamweaver 519 dom.getShowGrid() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Grille > Afficher. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si la grille est visible (true) ou invisible (false). Activateur Aucun. dom.getShowHeadView() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Contenu de l'en-tête. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le contenu de l'en-tête est visible (true) ou invisible (false). Activateur Aucun. dom.getShowHighlightInvalidHTML() Disponibilité Dreamweaver 4.0 Description Détermine si le code HTML valide est mis en surbrillance ou pas dans le mode Affichage de code de la fenêtre de document. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si du code HTML incorrect est mis en surbrillance. 520 Chapitre 26 dom.getShowImageMaps() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Cartes graphiques. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les cartes graphiques sont visibles (true) ou invisibles (false). Activateur Aucun. dom.getShowInvisibleElements() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Eléments invisibles. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les marqueurs d'éléments invisibles sont visibles (true) ou invisibles (false). Activateur Aucun. dom.getShowLayerBorders() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Bordures de calque. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les bordures du calque sont visibles (true) ou invisibles (false). Activateur Aucun. API JavaScript de Dreamweaver 521 dom.getShowLineNumbers() Disponibilité Dreamweaver 4.0 Description Détermine si les numéros de ligne sont affichés dans le mode Affichage de code. Arguments Aucun. Valeurs renvoyées Renvoie une valeur booléenne indiquant si les numéros de ligne sont affichés (true) ou pas (false). dom.getShowRulers() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Règles > Afficher. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les règles sont visibles (true) ou invisibles (false). Activateur Aucun. dom.getShowSyntaxColoring() Disponibilité Dreamweaver 4.0 Description Détermine si la coloration de la syntaxe est activée dans le mode Affichage de code de la fenêtre de document. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si la coloration de la syntaxe est activée. dom.getShowTableBorders() Disponibilité Dreamweaver 3.0 522 Chapitre 26 Description Obtient l'état en cours de l'option Affichage > Bordures de tableau. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les bordures de tableau sont visibles (true) ou invisibles (false). Activateur Aucun. dom.getShowToolbar() Disponibilité Dreamweaver 4.0 Description Détermine si la barre d'outils est affichée ou pas. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si la barre d'outils est affichée et false si elle est masquée. dom.getShowTracingImage() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Tracé de l'image > Afficher. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si l'option est activée (true) ou désactivée (false). Activateur Aucun. dom.getShowWordWrap() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 523 Description Détermine si la fonction de retour automatique à la ligne est activée dans le mode Affichage de code de la fenêtre de document. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si le retour automatique à la ligne est activé. dom.getSnapToGrid() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Grille > Aligner sur. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si l'alignement sur la grille est activé (true) ou désactivé (false). Activateur Aucun. dom.setEditNoFramesContent() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Modifier > Jeu de cadres > Modifier le contenu sans cadres. Arguments bEditNoFrames Valeurs renvoyées Aucune. Activateur dom.canEditNoFramesContent() dom.setHideAllVisualAids() Disponibilité Dreamweaver 4.0 524 Chapitre 26 Description Désactive l'affichage de toutes les bordures, cartes graphiques et éléments invisibles, quel que soit leur paramètre individuel dans le menu Affichage. Arguments bSet est une valeur booléenne ; lorsqu'elle est définie sur false, les paramètres précédents sont restaurés. bSet Valeurs renvoyées Aucune. Activateur Aucun. dom.setPreventLayerOverlaps() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Empêcher le chevauchement des calques. Arguments bPreventLayerOverlaps Valeurs renvoyées Aucune. Activateur Aucun. dom.setShowFrameBorders() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Bordures de cadre. Arguments bShowFrameBorders Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 525 dom.setShowGrid() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Grille > Afficher. Arguments bShowGrid Valeurs renvoyées Aucune. Activateur Aucun. dom.setShowHeadView() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Contenu de l'en-tête. Arguments bShowHead Valeurs renvoyées Aucune. Activateur Aucun. dom.setShowHighlightInvalidHTML() Disponibilité Dreamweaver 4.0 Description Active ou désactive la mise en surbrillance du code HTML incorrect dans le mode Affichage de code de la fenêtre de document. Arguments bShow est une valeur booléenne indiquant si la mise en surbrillance du code HTML incorrect doit être visible (true) ou pas (false). bShow Valeurs renvoyées Aucune. 526 Chapitre 26 dom.setShowImageMaps() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Cartes graphiques. Arguments bShowImageMaps Valeurs renvoyées Aucune. Activateur Aucun. dom.setShowInvisibleElements() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Eléments invisibles. Arguments bViewInvisibleElements Valeurs renvoyées Aucune. Activateur Aucun. dom.setShowLayerBorders() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Bordures de calque. Arguments bShowLayerBorders Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 527 dom.setShowLineNumbers() Disponibilité Dreamweaver 4.0 Description Affiche ou masque les numéros de ligne dans le mode Affichage de code de la fenêtre de document. Arguments bShow est une valeur booléenne indiquant si les numéros de ligne doivent être visibles (true) ou pas (false). bShow Valeurs renvoyées Aucune. dom.setShowRulers() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Règles > Afficher. Arguments bShowRulers Valeurs renvoyées Aucune. Activateur Aucun. dom.setShowSyntaxColoring() Disponibilité Dreamweaver 4.0 Description Active ou désactive la coloration de la syntaxe dans le mode Affichage de code de la fenêtre de document. Arguments bShow est une valeur booléenne indiquant si la coloration de la syntaxe doit être visible (true) ou pas (false). bShow Valeurs renvoyées Aucune. 528 Chapitre 26 dom.setShowTableBorders() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Bordures de tableau. Arguments bShowTableBorders Valeurs renvoyées Aucune. Activateur Aucun. dom.setShowToolbar() Disponibilité Dreamweaver 4.0 Description Affiche ou masque la barre d'outils. Arguments bShow bShow est une valeur booléenne (true) ou pas (false). indiquant si la barre d'outils doit être visible Valeurs renvoyées Aucune. dom.setShowTracingImage() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Tracé de l'image > Afficher. Arguments bShowTracingImage Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 529 dom.setShowWordWrap() Disponibilité Dreamweaver 4.0 Description Active ou désactive le retour automatique à la ligne dans le mode Affichage de code de la fenêtre de document. Arguments bShow est une valeur booléenne indiquant si les numéros de ligne doivent être visibles (true) ou pas (false). bShow Valeurs renvoyées Aucune. dom.setSnapToGrid() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Grille > Aligner sur. Arguments bSnapToGrid Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.getHideAllFloaters() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Masquer les panneaux flottants. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si l'option de menu Masquer les panneaux flottants (true) ou Afficher les panneaux flottants (false) est disponible. Activateur Aucun. 530 Chapitre 26 dreamweaver.getShowStatusBar() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Affichage > Barre d'état. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la barre d'état est visible (true) ou invisible (false). Activateur Aucun. dreamweaver.htmlInspector.getShowAutoIndent() Disponibilité Dreamweaver 4.0 Description Détermine si le retrait automatique est activé dans le mode Affichage de code de l'inspecteur de code. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si Retrait auto est activé. dreamweaver.htmlInspector.getShowHighlightInvalidHTML() Description Détermine si le code HTML incorrect est actuellement mis en surbrillance dans le mode Affichage de code de l'inspecteur de code. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si du code HTML incorrect est mis en surbrillance. dreamweaver.htmlInspector.getShowLineNumbers() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 531 Description Détermine si les numéros de ligne sont affichés dans le mode Affichage de code de l'inspecteur de code. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si les numéros de ligne sont affichés. dreamweaver.htmlInspector.getShowSyntaxColoring() Disponibilité Dreamweaver 4.0 Description Détermine si la coloration de la syntaxe est activée dans le mode Affichage de code de l'inspecteur de code. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si la coloration de la syntaxe est activée. dreamweaver.htmlInspector.getShowWordWrap() Disponibilité Dreamweaver 4.0 Description Détermine si la fonction de retour automatique à la ligne est activée dans le mode Affichage de code de l'inspecteur de code. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si le retour automatique à la ligne est activé. dreamweaver.htmlInspector.setShowAutoIndent() Disponibilité Dreamweaver 4.0 Description Active ou désactive le retrait automatique dans le mode Affichage de code de l'inspecteur de code. 532 Chapitre 26 Arguments bShow est une valeur booléenne indiquant si la mise en retrait automatique doit être activée (true) ou pas (false). bShow Valeurs renvoyées Aucune. dreamweaver.htmlInspector.setShowHighlightInvalidHTML() Disponibilité Dreamweaver 4.0 Description Active ou désactive la mise en surbrillance du code HTML incorrect dans le mode Affichage de code de l'inspecteur de code. Arguments bShow est une valeur booléenne indiquant si la mise en surbrillance du code HTML incorrect doit être visible (true) ou pas (false). bShow Valeurs renvoyées Aucune. dreamweaver.htmlInspector.setShowLineNumbers() Disponibilité Dreamweaver 4.0 Description Affiche ou masque les numéros de ligne dans le mode Affichage de code de l'inspecteur de code. Arguments bShow est une valeur booléenne indiquant si les numéros de ligne doivent être visibles (true) ou pas (false). bShow Valeurs renvoyées Aucune. dreamweaver.htmlInspector.setShowSyntaxColoring() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 533 Description Active ou désactive la coloration de la syntaxe dans le mode Affichage de code de l'inspecteur de code. Arguments bShow est une valeur booléenne indiquant si la coloration de la syntaxe doit être visible (true) ou pas (false). bShow Valeurs renvoyées Aucune. dreamweaver.htmlInspector.setShowWordWrap() Disponibilité Dreamweaver 4.0 Description Active ou désactive le retour automatique à la ligne dans le mode Affichage de code de l'inspecteur de code. Arguments bShow est une valeur booléenne indiquant si le retour automatique à la ligne doit être activé (true) ou désactivé (false). bShow Valeurs renvoyées Aucune. dreamweaver.setHideAllFloaters() Disponibilité Dreamweaver 3.0 Description Active l'option Masquer les panneaux flottants (true) ou l'option Afficher les panneaux flottants (false). Arguments bShowFloatingPalettes Valeurs renvoyées Aucune. Activateur Aucun. 534 Chapitre 26 dreamweaver.setShowStatusBar() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Affichage > Barre d'état. Arguments bShowStatusBar Valeurs renvoyées Aucune. Activateur Aucun. site.getShowDependents() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Afficher les fichiers dépendants. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les fichiers dépendants sont visibles dans la carte du site (true) ou invisibles (false). Activateur Aucun. site.getShowHiddenFiles() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Afficher les fichiers marqués comme cachés. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les fichiers cachés sont visibles dans la carte du site (true) ou invisibles (false). Activateur Aucun. API JavaScript de Dreamweaver 535 site.getShowPageTitles() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Afficher les titres de page. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les titres de page sont visibles dans la carte du site (true) ou invisibles (false). Activateur Aucun. site.getShowToolTips() Disponibilité Dreamweaver 3.0 Description Obtient l'état en cours de l'option Info-bulles. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si les info-bulles sont visibles dans la carte du site (true) ou invisibles (false). Activateur Aucun. site.setShowDependents() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Afficher les fichiers dépendants dans la carte du site. Arguments bShowDependentFiles Valeurs renvoyées Aucune. Activateur Aucun. 536 Chapitre 26 site.setShowHiddenFiles() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Afficher les fichiers marqués comme cachés dans la carte du site. Arguments bShowHiddenFiles Valeurs renvoyées Aucune. Activateur Aucun. site.setShowPageTitles() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Afficher les titres de page dans la carte du site. Arguments bShowPageTitles Valeurs renvoyées Aucune. Activateur site.canShowPageTitles() site.setShowToolTips() Disponibilité Dreamweaver 3.0 Description Active (true) ou désactive (false) l'option Info-bulles. Arguments bShowToolTips Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 537 Fonctions relatives à la traduction (conversion) de données Ces fonctions permettent d'agir directement sur les traducteurs de données ou sur les résultats de la traduction. Elles permettent d'exécuter ou d'obtenir des informations sur un traducteur, de modifier le contenu d'une région verrouillée et de stipuler que le code traduit doit être utilisé lors de l'obtention et de la définition de décalages de sélection. dom.runTranslator() Disponibilité Dreamweaver 3.0 Description Exécute le traducteur spécifié sur le document. Cette fonction n'est valide que pour le document actif. Arguments translatorName translatorName est le nom d'un traducteur tel qu'il apparaît dans les préférences de traduction. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.editLockedRegions() Disponibilité Dreamweaver 2.0 Description Selon la valeur de l'argument, autorise ou n'autorise pas la modification des régions verrouillées. Par défaut, les régions verrouillées ne peuvent pas être modifiées. Si vous tentez de modifier une région verrouillée avant de la rendre modifiable, Dreamweaver émet un bip et interdit la modification. Remarque : la modification de régions verrouillées peut avoir des conséquences inattendues sur les éléments de bibliothèque et les modèles. Il est déconseillé d'utiliser cette fonction en dehors du contexte des traducteurs de données. 538 Chapitre 26 Arguments bAllowEdits bAllowEdits est une valeur booléenne indiquant que autorisées (true) ou interdites (false). Dreamweaver les modifications sont restaure automatiquement l'état par défaut (non modifiable) des régions verrouillées lorsque l'exécution du script qui appelle la fonction prend fin. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.getTranslatorList() Disponibilité Dreamweaver 3.0 Description Obtient la liste des traducteurs de données installés. Arguments Aucun. Valeurs renvoyées Tableau de chaînes, chacune représentant le nom d'un traducteur tel qu'il apparaît dans les préférences de traduction. Activateur Aucun. dreamweaver.useTranslatedSource() Disponibilité Dreamweaver 2.0 Description Indique que les valeurs renvoyées par les fonctions dom.nodeToOffsets() et dom.getSelection() et utilisées par les fonctions dom.offsetsToNode() et dom.setSelection() doivent être décalées dans le code source converti (code HTML contenu dans l'arborescence DOM après exécution d'un traducteur) et non dans le code source non converti. Remarque : cette fonction ne s'applique qu'aux fichiers d'inspecteur de propriétés. API JavaScript de Dreamweaver 539 Arguments bUseTranslatedSource La valeur par défaut de l'argument est false. Lorsque le script appelant la fonction dw.useTranslatedSource() prend fin, Dreamweaver utilise automatiquement le code source non converti pour les appels suivants de dw.getSelection(), dw.setSelection(), dw.nodeToOffsets() et dw.offsetsToNode(), sauf si la fonction dw.useTranslatedSource() est appelée explicitement avec l'argument false avant la fin de l'exécution du script. Valeurs renvoyées Aucune. Activateur Aucun. Fonctions d'environnement de mise en forme Les fonctions d'environnement de mise en forme permettent d'effectuer des opérations relatives aux paramètres d'utilisation d'un document. Elles permettent de modifier la source, la position et l'opacité du tracé de l'image, d'obtenir et de définir l'origine et les unités de mesure de la règle, d'activer et de désactiver la grille et de modifier ses paramètres, de démarrer et d'arrêter l'exécution des plug-ins. dom.getRulerOrigin() Disponibilité Dreamweaver 3.0 Description Obtient l'origine de la règle. Arguments Aucun. Valeurs renvoyées Tableau contenant deux nombres entiers. Le premier entier correspond à la coordonnée x de l'origine, et le second à la coordonnée y. Les deux valeurs sont exprimées en pixels. Activateur Aucun. 540 Chapitre 26 dom.getRulerUnits() Disponibilité Dreamweaver 3.0 Description Obtient les unités de mesure actuelles de la règle. Arguments Aucun. Valeurs renvoyées Chaîne contenant l'une des valeurs suivantes : • • • "in" "cm" "px" Activateur Aucun. dom.getTracingImageOpacity() Disponibilité Dreamweaver 3.0 Description Obtient le paramètre d'opacité du tracé de l'image dans le document en cours. Arguments Aucun. Valeurs renvoyées Valeur comprise entre 0 et 100, ou rien si l'opacité n'est pas définie. Activateur dom.hasTracingImage() dom.loadTracingImage() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Sélectionner source de l'image. Si l'utilisateur sélectionne une image et clique sur OK, la boîte de dialogue Propriétés de la page s'ouvre et le champ Tracé de l'image contient une valeur. Arguments Aucun. API JavaScript de Dreamweaver 541 Valeurs renvoyées Aucune. Activateur Aucun. dom.playAllPlugins() Disponibilité Dreamweaver 3.0 Description Exécute tous les plug-ins dans le document. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dom.playPlugin() Disponibilité Dreamweaver 3.0 Description Exécute le plug-in sélectionné. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.canPlayPlugin() dom.setRulerOrigin() Disponibilité Dreamweaver 3.0 Description Définit l'origine de la règle. 542 Chapitre 26 Arguments xCoordinate, yCoordinate • • xCoordinate est une valeur, exprimée en pixels, sur l'axe horizontal. yCoordinate est une valeur, exprimée en pixels, sur l'axe vertical. Valeurs renvoyées Aucune. Activateur Aucun. dom.setRulerUnits() Disponibilité Dreamweaver 3.0 Description Définit les unités de mesure de la règle. Arguments units units doit être "px", "in" ou "cm". Valeurs renvoyées Aucune. Activateur Aucun. dom.setTracingImagePosition() Disponibilité Dreamweaver 3.0 Description Déplace le coin supérieur gauche du tracé de l'image vers les coordonnées spécifiées. Si les arguments ne sont pas définis, la boîte de dialogue Ajuster la position du tracé de l'image s'affiche. Arguments x, y Valeurs renvoyées Aucune. Activateur dom.hasTracingImage() API JavaScript de Dreamweaver 543 dom.setTracingImageOpacity() Disponibilité Dreamweaver 3.0 Description Définit le pourcentage d'opacité du tracé de l'image. Arguments opacityPercentage opacityPercentage doit être un nombre compris entre 0 et 100. Valeurs renvoyées Aucune. Activateur dom.hasTracingImage() Exemple L'exemple de code suivant règle l'opacité du tracé de l'image sur 30 %. dw.getDocumentDOM().setTracingOpacity('30'); dom.snapTracingImageToSelection() Disponibilité Dreamweaver 3.0 Description Aligne le coin supérieur gauche du tracé de l'image avec le coin supérieur gauche de la sélection en cours. Arguments Aucun. Valeurs renvoyées Aucune. Activateur dom.hasTracingImage() dom.stopAllPlugins() Disponibilité Dreamweaver 3.0 Description Arrête l'exécution de tous les plug-ins en cours dans le document. Arguments Aucun. 544 Chapitre 26 Valeurs renvoyées Aucune. Activateur Aucun. dom.stopPlugin() Disponibilité Dreamweaver 3.0 Description Arrête l'exécution du plug-in sélectionné. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection est actuellement exécutée avec un plug-in. Activateur dom.canStopPlugin() dreamweaver.arrangeFloatingPalettes() Disponibilité Dreamweaver 3.0 Description Déplace les panneaux flottants visibles vers leur position par défaut. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.showGridSettingsDialog() Disponibilité Dreamweaver 3.0 Description Ouvre la boîte de dialogue Paramètres de la grille. Arguments Aucun. API JavaScript de Dreamweaver 545 Valeurs renvoyées Aucune. Activateur Aucun. Fonctions relatives au mode Mise en forme Les fonctions du mode Mise en forme permettent de modifier les éléments de mise en forme d'un document. Elles s'appliquent aux paramètres de tableau, colonnes et cellules, y compris leur position, propriétés et aspect. dom.addSpacerToColumn() Disponibilité Dreamweaver 4.0 Description Crée une image d'espacement transparente d'un pixel de hauteur au bas d'une colonne donnée du tableau sélectionné. Cette fonction échoue si la sélection en cours n'est pas un tableau ou si l'opération n'a pas réussi. Arguments colNum colNum est la colonne au bas de laquelle l'image d'espacement est créée. Valeurs renvoyées Aucune. dom.createLayoutCell() Disponibilité Dreamweaver 4.0 Description Crée une cellule de Mise en forme dans le document courant à la position et aux dimensions spécifiées, soit à l'intérieur d'un tableau de Mise en forme existant, soit dans une zone située sous le contenu existant sur la page. Si la cellule est créée dans un tableau de Mise en forme existant, elle ne doit pas chevaucher ni contenir d'autres cellules de Mise en forme ni des tableaux de Mise en forme imbriqués. Si le rectangle n'est pas à l'intérieur d'un tableau de Mise en forme existant, Dreamweaver tente de créer un tableau de Mise en forme devant contenir la nouvelle cellule. Cette fonction ne place pas le document en mode Mise en forme. Elle échoue si la cellule ne peut pas être créée. 546 Chapitre 26 Arguments left, top, width, height • • • • left top est la position x de la bordure gauche de la cellule. est la position y de la bordure supérieure de la cellule. width est la largeur de la cellule en pixels. height est la hauteur de la cellule en pixels. Valeurs renvoyées Aucune. dom.createLayoutTable() Disponibilité Dreamweaver 4.0 Description Crée un tableau de Mise en forme dans le document en cours à la position et aux dimensions spécifiées, soit à l'intérieur d'un tableau de mise en forme existant, soit dans une zone située sous le contenu existant sur la page. Si le tableau est créé dans un tableau de Mise en forme existant, il ne peut pas chevaucher d'autres cellules ou tableaux de Mise en forme mais il peut contenir d'autres cellules ou tableaux de Mise en forme imbriqués. Cette fonction ne place pas le document en mode Mise en forme. Cette fonction échoue si le tableau ne peut pas être créé. Arguments left, top, width, height • • • • left top est la position x de la bordure gauche du tableau. est la position y de la bordure supérieure du tableau. width est la largeur du tableau en pixels. height est la hauteur du tableau en pixels. Valeurs renvoyées Aucune. dom.doesColumnHaveSpacer() Disponibilité Dreamweaver 4.0 Description Détermine si une colonne contient ou pas une image d'espacement générée par Dreamweaver. Cette fonction échoue si la sélection en cours n'est pas un tableau. API JavaScript de Dreamweaver 547 Arguments colNum colNum est la colonne à vérifier pour une image d'espacement. Valeurs renvoyées Renvoie la valeur true si la colonne définie dans le tableau sélectionné contient une image d'espacement générée par Dreamweaver et false dans le cas contraire. dom.doesGroupHaveSpacers() Disponibilité Dreamweaver 4.0 Description Détermine si le tableau sélectionné contient ou pas une ligne d'images d'espacement générées par Dreamweaver. Cette fonction échoue si la sélection en cours n'est pas un tableau. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si le tableau contient une ligne d'images d'espacement et false dans le cas contraire. dom.getClickedHeaderColumn() Disponibilité Dreamweaver 4.0 Description Si l'utilisateur vient de cliquer sur un bouton de menu dans l'en-tête d'un tableau du mode Mise en forme, faisant ainsi apparaître le menu d'en-tête du tableau, cette fonction renvoie l'index de la colonne sur laquelle l'utilisateur a cliqué. Le résultat n'est pas défini si le menu d'en-tête du tableau n'est pas visible. Arguments Aucun. Valeurs renvoyées Nombre entier représentant l'index de la colonne. dom.getShowLayoutTableTabs() Description Détermine si le document en cours affiche ou pas les tabulations des tableaux de Mise en forme en mode Mise en forme. 548 Chapitre 26 Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si le document en cours affiche les tabulations des tableaux de Mise en forme en mode Mise en forme et false dans le cas contraire. dom.getShowLayoutView() Description Détermine le mode d'affichage du document en cours, Mise en forme ou Standard. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si le document en cours est en mode Mise en forme et false s'il est en mode Standard. dom.isColumnAutostretch() Disponibilité Dreamweaver 4.0 Description Détermine si une colonne doit être agrandie ou réduite automatiquement selon la taille du document. Cette fonction échoue si la sélection en cours n'est pas un tableau. Arguments colNum colNum est la colonne à redimensionner automatiquement ou dont la largeur est fixée. Valeurs renvoyées Renvoie la valeur true si la colonne située à l'index donné du tableau sélectionné doit s'étendre automatiquement et false dans le cas contraire. dom.makeCellWidthsConsistent() Disponibilité Dreamweaver 4.0 Description Dans le tableau sélectionné, définit la largeur de chaque colonne de code HTML pour qu'elle corresponde à la largeur de rendu de la colonne. Cette fonction échoue si la sélection courante n'est pas un tableau ou si l'opération n'a pas réussi. API JavaScript de Dreamweaver 549 Arguments Aucun. Valeurs renvoyées Aucune. dom.removeAllSpacers() Disponibilité Dreamweaver 4.0 Description Supprime toutes les images d'espacement générées par Dreamweaver à partir du tableau sélectionné. Cette fonction échoue si la sélection courante n'est pas un tableau ou si l'opération n'a pas réussi. Arguments Aucun. Valeurs renvoyées Aucune. dom.removeSpacerFromColumn() Disponibilité Dreamweaver 4.0 Description Supprime l'image d'espacement d'une colonne donnée et supprime la ligne d'espacement s'il n'y a plus d'images d'espacement générées par Dreamweaver. Cette fonction échoue si la sélection courante n'est pas un tableau ou si l'opération n'a pas réussi. Arguments colNum colNum est la colonne dans laquelle l'image d'espacement doit être supprimée. Valeurs renvoyées Aucune. dom.setColumnAutostretch() Disponibilité Dreamweaver 4.0 550 Chapitre 26 Description Passe d'une colonne automatiquement dimensionnée à une colonne d'une largeur fixe et vice versa. Si bAutostretch est défini sur true, la colonne située à l'index donné du tableau sélectionné est définie pour s'agrandir automatiquement ; dans le cas contraire, elle est définie sur une largeur fixe qui est celle du rendu en cours. Cette fonction échoue si la sélection en cours n'est pas un tableau ou si l'opération n'a pas réussi. Arguments colNum, bAutostretch • colNum • bAutostretch indique si la colonne est (true) ou sur une largeur fixe (false). est la colonne à redimensionner automatiquement ou définie sur une largeur fixe. définie pour être autodimensionnée Valeurs renvoyées Aucune. dom.setShowLayoutTableTabs() Disponibilité Dreamweaver 4.0 Description Définit le document en cours pour qu'il affiche les tabulations des tableaux de Mise en forme chaque fois qu'il est en mode Mise en forme. Cette fonction ne place pas le document en mode Mise en forme. Arguments bShow indique si les tabulations des tableaux de Mise en forme doivent s'afficher lorsque le document est en mode Mise en forme. Si bShow a la valeur true, les tabulations sont affichées et s'il a la valeur false, les tabulations sont masquées. bShow Valeurs renvoyées Aucune. dom.setShowLayoutView() Disponibilité Dreamweaver 4.0 Description Met le document en cours en mode Mise en forme si bShow a la valeur true. API JavaScript de Dreamweaver 551 Arguments bShow est une valeur booléenne qui fait passer le document du mode Mise en forme au mode Standard et vice versa. Si bShow correspond à « true », le document passe au mode Mise en forme. bShow Valeurs renvoyées Aucune. Fonctions relatives aux fenêtres Ces fonctions permettent d'agir sur la fenêtre de document et sur les panneaux flottants. Elles permettent d'afficher et de masquer les panneaux flottants, de déterminer quelle est la partie active de la fenêtre de document et de définir le document actif. Pour les opérations relatives à la fenêtre Site, voir « Fonctions relatives aux sites », page 466. dom.getFocus() Disponibilité Dreamweaver 3.0 Description Détermine quelle partie du document est actuellement active. Arguments Aucun. Valeurs renvoyées L'une des chaînes suivantes : • • • "head" si la zone HEAD est active ; "body" si la zone BODY ou NOFRAMES est active ; • "none" si un jeu de cadres ou l'un quelconque des cadres qui le composent est sélectionné ; "frameset" si la zone active n'est pas dans le document (si elle se trouve dans l'inspecteur de propriétés, par exemple, ou dans un autre panneau flottant). Activateur Aucun. dom.getView() Disponibilité Dreamweaver 4.0 552 Chapitre 26 Description Détermine quel mode est visible. Arguments Aucun. Valeurs renvoyées "design", "code", ou "split", selon le mode d'affichage visible. dom.getWindowTitle() Disponibilité Dreamweaver 3.0 Description Obtient le titre de la fenêtre contenant le document. Arguments Aucun. Valeurs renvoyées Chaîne contenant le texte qui apparaît entre les balises TITLE du document, ou rien si le document ne figure pas dans une fenêtre ouverte. Activateur Aucun. dom.setView() Disponibilité Dreamweaver 4.0 Description Affiche ou masque le mode Création ou le mode Affichage de code pour produire un affichage contenant uniquement le mode Création ou Affichage de code ou les deux. Arguments viewString viewString est le mode à afficher design", "code" ou "split". ; il doit être l'une des valeurs suivantes : Valeurs renvoyées Aucune. dreamweaver.getActiveWindow() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 553 Description Obtient le document figurant dans la fenêtre active. Arguments Aucun. Valeurs renvoyées Objet document correspondant au document qui figure dans la fenêtre active, ou, si le document figure dans un cadre, objet document correspondant au jeu de cadres. Activateur Aucun. dreamweaver.getDocumentList() Disponibilité Dreamweaver 3.0 Description Obtient la liste de tous les documents ouverts. Arguments Aucun. Valeurs renvoyées Tableau d'objets document, chacun correspondant à une fenêtre de document ouverte. Si une fenêtre de document contient un jeu de cadres, l'objet document désigne le jeu de cadres et non le contenu des cadres. Activateur Aucun. dreamweaver.getFloaterVisibility() Disponibilité Dreamweaver 3.0 Description Vérifie si le panneau ou l'inspecteur spécifié est visible. 554 Chapitre 26 Arguments floaterName est le nom du panneau flottant. Les panneaux intégrés doivent être référencés à l'aide de l'une des chaînes suivantes : "objects", "properties", "launcher", "site files", "site map", "library", "css styles", "html styles", "behaviors", "timelines", "html", "layers", "frames", "templates", "history", "data bindings" ou "server behaviors". Si floaterName ne correspond pas au nom d'un panneau intégré, Dreamweaver recherche dans le dossier Configuration/Floaters un fichier nommé floaterName.htm. floaterName Valeurs renvoyées si le panneau flottant est visible et se trouve au premier plan, false si ce n'est pas le cas ou que Dreamweaver ne trouve pas de panneau flottant nommé floaterName. true Activateur Aucun. dreamweaver.getFocus() Disponibilité Dreamweaver 4.0 Description Détermine quelle partie de l'application est actuellement active. Arguments bAllowFloaters Valeurs renvoyées L'une des chaînes suivantes : • • • • • "document" "site" si la fenêtre Site est active. "textView" "html" si la fenêtre de document est active. si le mode Texte est actif. si l'inspecteur de code est actif. floaterName si bAllowFloaters est true et qu'un panneau flottant est actif, floaterName correspondant à "objects", "properties", "launcher", "library", "css styles", "html styles", "behaviors", "timelines", "layers", "frames", "templates" ou "history". • (Macintosh) "none" si ni la fenêtre Site, ni une fenêtre de document n'est ouverte. Activateur Aucun. API JavaScript de Dreamweaver 555 dreamweaver.getPrimaryView() Disponibilité Dreamweaver 4.0 Description Détermine le mode d'affichage défini comme fenêtre principale (placé au-dessus). Arguments Aucun. Valeurs renvoyées "design" ou "code", selon le mode qui est visible ou le volet situé sur le dessus dans un affichage à deux volets. dreamweaver.getSnapDistance() Disponibilité Dreamweaver 4.0 Description Renvoie la distance d'alignement en pixels. Arguments Aucun. Valeurs renvoyées Un nombre entier représentant la distance d'alignement en pixels. La distance par défaut est 10 pixels ; 0 indique que la fonction d'alignement est désactivée. dreamweaver.minimizeRestoreAll() Disponibilité Dreamweaver 4.0 Description Réduit en icône ou restaure toutes les fenêtres dans Dreamweaver. Arguments bMinimize est une valeur booléenne. true indique que les fenêtres doivent être réduites en icônes et false qu'elles doivent être restaurées. bMinimize Valeurs renvoyées Aucune. dreamweaver.setActiveWindow() Disponibilité Dreamweaver 3.0 556 Chapitre 26 Description Active la fenêtre contenant le document spécifié. Arguments documentObject, {bActivateFrame} • documentObject • bActivateFrame, applicable uniquement si documentObject se trouve à l'intérieur d'un jeu de cadres, est une valeur booléenne indiquant s'il faut activer non seulement la fenêtre contenant le jeu de cadres, mais également le cadre contenant le document. est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.setFloaterVisibility() Disponibilité Dreamweaver 3.0 Description Indique s'il faut rendre visible un panneau flottant ou un inspecteur spécifique. Arguments floaterName, bIsVisible • est le nom du panneau flottant. Les panneaux intégrés doivent être référencés à l'aide de l'une des chaînes suivantes : "objects", "properties", "launcher", "site files", "site map", "library", "css styles", "html styles", "behaviors", "timelines", "html", "layers", "frames", "templates", "history", "data bindings" ou "server behaviors". Si floaterName ne correspond pas au nom d'un panneau intégré, Dreamweaver recherche dans le dossier Configuration/Floaters un fichier nommé floaterName.htm. Si Dreamweaver ne trouve aucun fichier ayant le nom floaterName, cette fonction n'a aucun effet. • bIsVisible est une valeur booléenne indiquant si le panneau flottant doit être floaterName visible. Valeurs renvoyées Aucune. Activateur Aucun. API JavaScript de Dreamweaver 557 dreamweaver.setPrimaryView() Disponibilité Dreamweaver 4.0 Description Affiche la fenêtre spécifiée au-dessus de la fenêtre de document. Arguments viewString est la fenêtre devant se placer au-dessus de la fenêtre de document ; cet argument peut être l'une des valeurs suivantes : "design" ou "code". viewString Valeurs renvoyées Aucune. dreamweaver.setSnapDistance() Disponibilité Dreamweaver 4.0 Description Définit la distance d'alignement en pixels (0 pour la désactiver ; 10 pixels par défaut) Arguments snapDistance est un nombre entier représentant la distance d'alignement en pixels. La valeur par défaut est 10 pixels. Définissez 0 pour désactiver la fonction d'alignement. snapDistance Valeurs renvoyées Aucune. dreamweaver.showProperties() Disponibilité Dreamweaver 3.0 Description Rend l'inspecteur de propriétés visible et l'active. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. 558 Chapitre 26 dreamweaver.toggleFloater() Disponibilité Dreamweaver 3.0 Description Affiche, masque ou place au premier plan le panneau ou l'inspecteur spécifié. Remarque : cette fonction n'a de sens que dans le fichier menus.xml. Pour afficher, placer au premier plan ou masquer un panneau flottant, utilisez la fonction dw.setFloaterVisibility(). Arguments floaterName floaterName est le nom de la fenêtre. Si le nom de la fenêtre flottante est reference, l'état de visibilité du panneau Référence peut être mis à jour par l'utilisateur dans le mode Affichage de code. Tous les autres panneaux effectuent toujours un suivi de la sélection, mais le panneau Référence n'analyse la sélection dans le mode Affichage de code que lorsque l'utilisateur appelle un suivi. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.updateReference() Disponibilité Dreamweaver 4.0 Description Met à jour le panneau flottant Référence. Si le panneau Référence n'est pas visible, il est affiché puis mis à jour. Arguments Aucun. Valeurs renvoyées Aucune. Fonctions déconseillées Ces fonctions existent toujours, mais des fonctions plus récentes les ont remplacées dans la présente version de Dreamweaver. Nous vous recommandons d'utiliser ces dernières, car il est possible que les anciennes fonctions soient supprimées des futures versions de Dreamweaver. API JavaScript de Dreamweaver 559 dreamweaver.getBehaviorEvent() Disponibilité Dreamweaver 1.2, déconseillée dans la version 2.0 car les actions sont désormais choisies avant les événements. Description Dans un fichier d'action de comportement, obtient l'événement qui déclenche l'action. Arguments Aucun. Valeurs renvoyées Chaîne représentant l'événement. Il s'agit de la chaîne transmise à la fonction canAcceptBehavior() sous la forme d'un argument (event). Exemple Dans l'exemple suivant, la fonction getBehaviorEvent() provient de la fonction initializeUI() du fichier d'action Drag Layer (Faire glisser le calque). Le rôle du segment de code suivant est similaire à celui de canAcceptBehavior(), c'està-dire qu'il vérifie si l'événement sélectionné est adapté à l'action sélectionnée. Ce type de construction est plus utile que canAcceptBehavior(), car il vous permet d'indiquer à l'utilisateur quels sont les événements permettant d'appeler l'action sélectionnée. canAcceptBehavior() rend l'action indisponible dans le menu déroulant des actions uniquement si l'utilisateur choisit un événement inadapté. theEvent = dreamweaver.getBehaviorEvent().toLowerCase(); CANBEAPPLIED = (theEvent != "onmousedown" && theEvent != ¬ "onmousemove"); if (CANBEAPPLIED) { [display the Drag Layer UI] } else{ [display a helpful message that tells the user which events ¬ are appropriate for the Drag Layer action.] } dreamweaver.getObjectRefs() Disponibilité Dreamweaver 1.0 Description Recherche, dans les documents indiqués, les occurrences des balises spécifiées (ou, si aucune balise n'est spécifiée, toutes les balises du document) et fournit des références aux balises en fonction du navigateur. Cette fonction revient à appeler la fonction getElementsByTagName(), puis la fonction dreamweaver.getElementRef() pour chaque balise de la nodelist. 560 Chapitre 26 Arguments NSorIE, sourceDoc, {tag1}, {tag2},...{tagN} • NSorIE • sourceDoc doit être "document", "parent", "parent.frames[number]", "parent.frames['frameName']" ou une URL. document désigne le document actif contenant la sélection en cours. parent désigne le jeu de cadres doit être "NS 4.0" ou "IE 4.0". En effet, le DOM et les règles relatives aux références imbriquées diffèrent dans Navigator 4.0 et Internet Explorer 4.0. Cet argument permet d'indiquer à quel navigateur doit correspondre la référence renvoyée. parent (si le document sélectionné se trouve dans un cadre) et parent.frames[number] et parent.frames['frameName'] désignent un document figurant dans un cadre spécifique du jeu de cadres contenant le document en cours. Si l'argument est une URL relative, celle-ci est relative au fichier d'extension. • Le troisième argument et les arguments suivants, s'ils sont définis, correspondent aux noms de balises (par exemple "IMG", "FORM", "HR"). Valeurs renvoyées Tableau de chaînes, chacune représentant une référence JavaScript valide à une occurrence nommée du type de balise demandé dans le document spécifié (par exemple "document.myLayer.document.myImage") pour le navigateur spécifié. • Dreamweaver renvoie des références Internet Explorer correctes pour les balises suivantes : A, AREA, APPLET, EMBED, DIV, SPAN, INPUT, SELECT, OPTION, TEXTAREA, OBJECT et IMG. • Dreamweaver renvoie des références Navigator correctes pour les balises suivantes : A, AREA, APPLET, EMBED, LAYER, ILAYER, SELECT, OPTION, TEXTAREA, OBJECT et IMG et pour les balises DIV et SPAN à positionnement absolu. Pour les balises DIV et SPAN dont le positionnement n'est pas absolu, Dreamweaver renvoie "cannot reference <tag>". • Dreamweaver ne renvoie pas de références pour les objets non nommés. Si un objet ne contient pas d'attribut NAME ou ID, Dreamweaver renvoie "unnamed Si le navigateur ne prend pas en charge une référence par nom, Dreamweaver fait référence à l'objet à l'aide de son index (par exemple document.myform.applets[3]). <tag>". • Dreamweaver ne renvoie pas de références pour les objets nommés figurant dans des formulaires ou des calques non nommés (par exemple document.forms[2].myCheckbox). Lorsque la même liste d'arguments est transmise à la fonction getObjectTags(), les deux fonctions renvoient des tableaux de même longueur et de contenus identiques. API JavaScript de Dreamweaver 561 Exemple Selon le contenu du document actif, dreamweaver.getObjectRefs("NS 4.0", pourrait renvoyer un tableau contenant les éléments suivants : "document", "IMG") • • • "document.bullet" "document.layers['headerLayer'].document.header" "document.photoLayer.document.headshot" dreamweaver.getObjectTags() Disponibilité Dreamweaver 1.0 Description Recherche, dans le document indiqué, les occurrences des balises spécifiées ou, si aucune balise n'est spécifiée, toutes les balises du document. Cette fonction revient à appeler la fonction getElementsByTagName(), puis la fonction outerHTML() pour chaque balise de la nodelist. Arguments sourceDoc, {tag1}, {tag2},...{tagN} • sourceDoc doit être "document", "parent", "parent.frames[number]", "parent.frames['frameName']" ou une URL. document désigne le document actif contenant la sélection en cours. parent désigne le jeu de cadres parent (si le document sélectionné se trouve dans un cadre) et parent.frames[number] et parent.frames['frameName'] désignent un document figurant dans un cadre spécifique du jeu de cadres contenant le document en cours. Si l'argument est une URL relative, celle-ci est relative au fichier d'extension. • Le second argument et les arguments suivants, s'il en existe, correspondent aux noms de balises (par exemple "IMG", "FORM", "HR"). Valeurs renvoyées Tableau de chaînes, chacune correspondant au code source HTML d'une occurrence du type de balise demandé dans le document spécifié. • Si l'un des arguments de tag est LAYER, la fonction renvoie toutes les balises LAYER et ILAYER et toutes les balises DIV et SPAN à positionnement absolu. • Si l'un des arguments de tag est INPUT, la fonction renvoie tous les éléments du formulaire. Pour obtenir un type d'élément particulier du formulaire, définissez INPUT/TYPE, TYPE correspondant à button, text, radio, checkbox, password, textarea, select, hidden, reset ou submit. Lorsque la même liste d'arguments est transmise à la fonction getObjectRefs(), les deux fonctions renvoient des tableaux de même longueur. 562 Chapitre 26 Exemple Selon le contenu du document actif, dreamweaver.getObjectTags("document", "IMG") pourrait renvoyer un tableau contenant les éléments suivants : • '<IMG SRC="/images/dot.gif" WIDTH="10" HEIGHT="10" NAME="bullet">' • • '<IMG SRC="header.gif" WIDTH="400" HEIGHT="32" NAME="header">' '<IMG SRC="971208_nj.jpg" WIDTH="119" HEIGHT="119" NAME="headshot">' dreamweaver.getSelection() Disponibilité Dreamweaver 2.0, déconseillée dans la version 3.0 ; utiliser à la place dom.getSelection(). Description Obtient la sélection en cours, exprimée en décalages d'octets dans le code source HTML du document. Arguments Aucun. Valeurs renvoyées Tableau contenant deux nombres entiers. Le premier entier correspond au décalage d'octets au début de la sélection, le second au décalage d'octets à la fin de la sélection. Si les deux valeurs sont identiques, la sélection en cours correspond à un point d'insertion. dreamweaver.libraryPalette.deleteSelectedItem() Disponibilité Dreamweaver 3.0, déconseillée dans Dreamweaver 4.0 ; utiliser à la place dw.assetPalette.setSelectedCategory(“library”), puis appeler dw.assetPalette.removeFromFavorites. Description Supprime l'élément de bibliothèque sélectionné du panneau Bibliothèque et supprime le fichier LBI qui lui est associé du dossier Library à la racine du site en cours. Il peut rester des occurrences de l'élément supprimé sur certaines pages du site. Arguments Aucun. Valeurs renvoyées Aucune. API JavaScript de Dreamweaver 563 Activateur Aucun. dreamweaver.libraryPalette.getSelectedItem() Disponibilité Dreamweaver 3.0, déconseillée dans la version 4.0 ; utiliser à la place dw.assetPalette.getSelectedItems(). Description Obtient le chemin de l'élément de bibliothèque sélectionné. Arguments Aucun. Valeurs renvoyées Chaîne contenant le nom de l'élément de bibliothèque, exprimé sous la forme d'une URL de type file://. Activateur Aucun. dreamweaver.libraryPalette.newFromDocument() Disponibilité Dreamweaver 3.0, déconseillée dans Dreamweaver 4.0 ; utiliser à la place dw.assetPalette.setSelectedCategory("library"), puis appeler dw.assetPalette.newAsset(). Description Crée un nouvel élément de bibliothèque basé sur l'élément sélectionné dans le document en cours. Arguments bReplaceCurrent est une valeur booléenne indiquant si la sélection doit être remplacée par une occurrence du nouvel élément de bibliothèque créé. bReplaceCurrent Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.libraryPalette.recreateFromDocument() Disponibilité Dreamweaver 3.0, déconseillée dans Dreamweaver 4.0 ; utiliser à la place dw.assetPalette.recreateLibraryFromDocument(). 564 Chapitre 26 Description Crée dans le document en cours un fichier LBI correspondant à l'occurrence sélectionnée d'un élément de bibliothèque. Revient à cliquer sur Créer à nouveau dans l'inspecteur de propriétés. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.libraryPalette.renameSelectedItem() Disponibilité Dreamweaver 3.0, déconseillée dans Dreamweaver 4.0 ; utiliser à la place dw.assetPalette.setSelectedCategory("library"), puis appeler dw.assetPalette.renameNickname(). Description Transforme le nom de l'élément de bibliothèque sélectionné en champ modifiable et permet à l'utilisateur de renommer la sélection. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.nodeToOffsets() Disponibilité Dreamweaver 2.0, déconseillée dans la version 3.0 ; utiliser à la place dom.nodeToOffsets(). Description Obtient la position d'un nœud de l'arborescence DOM, exprimée en décalages d'octets dans le code source HTML du document. Arguments node node doit être une balise, un commentaire ou un texte correspondant à un nœud de l'arborescence renvoyée par la fonction dreamweaver.getDocumentDOM(). API JavaScript de Dreamweaver 565 Valeurs renvoyées Tableau contenant deux nombres entiers. Le premier correspond au décalage d'octets au début de la balise, du texte ou du commentaire, le second au décalage d'octets à la fin du nœud. Exemple L'exemple de code suivant sélectionne le premier objet image du document en cours : var theDOM = dreamweaver.getDocumentDOM("document"); var theImg = theDOM.images[0]; var offsets = dom.nodeToOffsets(theImg); dom.setSelection(offsets[0], offsets[1]); dreamweaver.templatePalette.getSelectedTemplate() Disponibilité Dreamweaver 3.0, déconseillée dans la version 4.0 ; utiliser à la place dw.assetPalette.getSelectedItems(). Description Obtient le chemin du modèle sélectionné. Arguments Aucun. Valeurs renvoyées Chaîne contenant le chemin du modèle, exprimé sous la forme d'une URL de type file://. Activateur Aucun. dreamweaver.offsetsToNode() Disponibilité Dreamweaver 2.0, déconseillée dans la version 3.0 ; utiliser à la place dom.offsetsToNode(). Description Obtient l'objet de l'arborescence DOM contenant la série de caractères située entre le début et la fin définis. Arguments offsetBegin, offsetEnd Les arguments correspondent respectivement au début et à la fin d'une série de caractères, exprimés en décalages d'octets dans le code source HTML du document. 566 Chapitre 26 Valeurs renvoyées Objet balise, texte ou commentaire contenant la série de caractères spécifiée. Exemple Le code suivant affiche une alerte si la sélection est une image. var offsets = dreamweaver.getSelection(); var theSelection = dreamweaver.offsetsToNode(offsets[0], ¬ offsets[1]); if (theSelection.nodeType == Node.ELEMENT_NODE && ¬ theSelection.tagName == 'IMG'){ alert('The current selection is an image.'); } dreamweaver.popupCommand() Disponibilité Dreamweaver 2.0, déconseillée dans la version 3.0 ; utiliser à la place dreamweaver.runCommand(). Description Exécute la commande spécifiée. Pour l'utilisateur, cela revient à choisir la commande dans un menu ; si une boîte de dialogue est associée à la commande, elle s'affiche. Cette fonction permet d'appeler une commande à partir d'un autre fichier d'extension. L'utilisateur ne peut effectuer aucune autre modification tant qu'il n'a pas fermé la boîte de dialogue. Remarque : cette fonction ne peut être appelée qu'à partir de la fonction objectTag() ou d'un script de fichier de commande ou d'inspecteur de propriétés. Arguments commandFile correspond au nom d'un fichier de commande du dossier Configuration/Commands ("Format Table.htm", par exemple). commandFile Valeurs renvoyées Aucune. dreamweaver.setSelection() Disponibilité Dreamweaver 2.0, déconseillée dans la version 3.0 ; utiliser à la place dom.setSelection(). Description Définit la sélection dans le document en cours. Cette fonction ne peut déplacer la sélection qu'à l'intérieur du document en cours. Elle ne peut pas rendre un autre document actif. API JavaScript de Dreamweaver 567 Arguments offsetBegin, offsetEnd Les arguments correspondent respectivement au début et à la fin de la nouvelle sélection, exprimés en décalages d'octets dans le code source HTML du document. Si les deux valeurs sont identiques, la nouvelle sélection correspond à un point d'insertion. Si la nouvelle sélection n'est pas une sélection HTML valide, elle inclut les caractères de la première sélection HTML valide. Par exemple, si offsetBegin et offsetEnd définissent SRC="myImage.gif" comme sélection dans <IMG SRC="myImage.gif">, la sélection est étendue pour inclure également la balise IMG. Valeurs renvoyées Aucune. dreamweaver.templatePalette.deleteSelectedTemplate() Disponibilité Dreamweaver 3.0, déconseillée dans Dreamweaver 4.0 ; utiliser à la place dw.assetPalette.setSelectedCategory("templates"), puis appeler dw.assetPalette.removeFromFavorites(). Description Supprime le modèle sélectionné du dossier des modèles. Arguments Aucun. Valeurs renvoyées Aucune. Activateur Aucun. dreamweaver.templatePalette.renameSelectedTemplate() Disponibilité Dreamweaver 3.0, déconseillée dans Dreamweaver 4.0 ; utiliser à la place dw.assetPalette.setSelectedCategory("templates"), puis appeler dw.assetPalette.renameNickname(). Description Transforme le nom du modèle sélectionné en champ modifiable et permet à l'utilisateur de renommer la sélection. Arguments Aucun. Valeurs renvoyées Aucune. 568 Chapitre 26 Activateur Aucun. Activateurs Les activateurs sont des fonctions qui déterminent si les éléments de menu doivent être activés ou pas, selon que Dreamweaver peut effectuer ou non l'opération correspondante dans le contexte en cours. Les circonstances générales dans lesquelles chaque fonction renvoie la valeur true sont décrites dans la spécification de fonction correspondante. Toutefois, ces descriptions ne prétendent pas être exhaustives et ne couvrent pas nécessairement tous les cas où la fonction renverrait la valeur false. dom.canAlign() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Aligner à gauche, Aligner à droite, Aligner en haut ou Aligner en bas. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si deux calques ou zones réactives, ou plus, sont sélectionnés. dom.canApplyTemplate() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Appliquer à la page. Cette fonction n'est valide que pour le document actif. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le document n'est pas un élément de bibliothèque ni un modèle, et si la sélection n'est pas comprise entre les balises NOFRAMES. dom.canArrange() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 569 Description Vérifie si Dreamweaver peut effectuer une opération Mettre au premier plan ou Mettre en arrière-plan. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si une zone réactive est sélectionnée. dom.canClipCopyText() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Copier comme texte. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection est une plage (par opposition à un point d'insertion). dom.canClipPaste() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Coller. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le Presse-papiers contient un élément pouvant être collé dans Dreamweaver. dom.canClipPasteText() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Coller comme texte. Arguments Aucun. 570 Chapitre 26 Valeurs renvoyées Une valeur booléenne indiquant si le Presse-papiers contient un élément pouvant être collé dans Dreamweaver comme texte. dom.canConvertLayersToTable() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Convertir les calques en tableau. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si tout le contenu de la section BODY du document figure dans des calques. dom.canConvertTablesToLayers() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Convertir les tableaux en calques. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si tout le contenu de la section BODY du document figure dans des tableaux, et si le document n'est pas basé sur un modèle. dom.canDecreaseColspan() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Réduire l'étendue de colonnes. Arguments Aucun. API JavaScript de Dreamweaver 571 Valeurs renvoyées Valeur booléenne indiquant si la cellule en cours possède un attribut COLSPAN et si la valeur de cet attribut est supérieure ou égale à 2. dom.canDecreaseRowspan() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Réduire l'étendue de lignes. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la cellule en cours possède un attribut ROWSPAN et si la valeur de cet attribut est supérieure ou égale à 2. dom.canDeleteTableColumn() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer la colonne. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le point d'insertion se trouve dans une cellule ou si une cellule ou une colonne est sélectionnée. dom.canDeleteTableRow() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer la ligne. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le point d'insertion se trouve dans une cellule ou si une cellule ou une ligne est sélectionnée. 572 Chapitre 26 dom.canEditNoFramesContent() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Modifier le contenu sans cadres. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le document en cours est un jeu de cadres ou s'il figure dans un jeu de cadres. dom.canIncreaseColspan() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Augmenter l'étendue de colonnes. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il existe des cellules à droite de la cellule en cours. dom.canIncreaseRowspan() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Augmenter l'étendue de lignes. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il existe des cellules au dessous de la cellule en cours. dom.canInsertTableColumns() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 573 Description Détermine si Dreamweaver peut effectuer une opération Insérer une colonne. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection se trouve dans un tableau. Si la sélection consiste en un tableau entier, cette fonction renvoie la valeur false. dom.canInsertTableRows() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Insérer une ligne. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection se trouve dans un tableau. Si la sélection consiste en un tableau entier, cette fonction renvoie la valeur false. dom.canMakeNewEditableRegion() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Nouvelle région modifiable. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le document en cours est un fichier de modèle (.dwt). dom.canMarkSelectionAsEditable() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Marquer la sélection comme modifiable. 574 Chapitre 26 Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il existe une sélection et si le document en cours est un fichier de modèle (.dwt). dom.canMergeTableCells() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Fusionner les cellules. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection est un groupement rectangulaire de cellules de tableaux. dom.canPlayPlugin() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Exécuter. Cette fonction n'est valide que pour le document actif. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection peut être exécutée avec un plug-in. dom.canRedo() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rétablir. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il reste des opérations à rétablir. API JavaScript de Dreamweaver 575 dom.canRemoveEditableRegion() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rendre la région non modifiable. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le document en cours est un modèle. dom.canSelectTable() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Sélectionner le tableau. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection ou le point d'insertion se trouve dans un tableau. dom.canSetLinkHref() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut modifier le lien qui entoure la sélection en cours ou en créer un si nécessaire. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection est une image, un texte ou un point d'insertion à l'intérieur d'un lien. Une sélection de texte se définit comme une sélection pour laquelle l'inspecteur de propriétés de texte s'ouvrirait. dom.canShowListPropertiesDialog() Disponibilité Dreamweaver 3.0 576 Chapitre 26 Description Détermine si Dreamweaver peut afficher la boîte de dialogue Propriétés de la liste. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection est comprise entre des balises LI. Activateur Aucun. dom.canSplitFrame() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Fractionner le cadre [à gauche | à droite | vers le haut | vers le bas] Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection se trouve dans un cadre. dom.canSplitTableCell() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Fractionner la cellule. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le point d'insertion se trouve dans un tableau ou si la sélection est une cellule de tableau. dom.canStopPlugin() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Arrêter. Arguments Aucun. API JavaScript de Dreamweaver 577 Valeurs renvoyées Valeur booléenne indiquant si la sélection est actuellement exécutée avec un plug-in. dom.canUndo() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Annuler. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il reste des opérations à annuler. dom.hasTracingImage() Disponibilité Dreamweaver 3.0 Description Détermine si le document possède un tracé d'image. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le document possède un tracé d'image. dreamweaver.assetPalette.canEdit() Disponibilité Dreamweaver 4.0 Description Active les options de menu du panneau Actifs pour permettre leur modification. Arguments Aucun. Valeurs renvoyées Renvoie la valeur true si l'actif peut être modifié et false dans le cas contraire. Renvoie la valeur false pour les couleurs et les URL de la liste des sites et renvoie false pour une sélection de plusieurs couleurs et URL dans la liste des favoris. 578 Chapitre 26 dreamweaver.assetPalette.canInsertOrApply() Disponibilité Dreamweaver 4.0 Description Détermine si les options sélectionnées peuvent être insérées ou appliquées. Renvoie true ou false pour que l'insertion ou l'application des options de menu puissent être activées ou désactivées. Arguments Aucun. Valeurs renvoyées Renvoie la valeur false si la page en cours est un modèle et que la catégorie en cours est « Templates », si aucun document n'est ouvert ou si un élément de bibliothèque est sélectionné dans le document et que la catégorie en cours est « Library ». Renvoie la valeur true dans tous les autres cas. dreamweaver.canClipCopy() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Copier. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il existe un élément sélectionné pouvant être copié dans le Presse-papiers. dreamweaver.canClipCut() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Couper. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il existe un élément sélectionné pouvant être coupé et placé dans le Presse-papiers. API JavaScript de Dreamweaver 579 dreamweaver.canClipPaste() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Coller. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le contenu du Presse-papiers, le cas échéant, peut être collé dans le document en cours, dans le volet actif de la fenêtre Site ou, sur Macintosh, dans un champ modifiable d'un panneau flottant ou d'une boîte de dialogue. dreamweaver.canDeleteSelection() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut supprimer la sélection en cours. Celle-ci peut se trouver, selon le cas, dans la fenêtre de document, dans la fenêtre Site ou dans un champ modifiable d'un panneau flottant ou d'une boîte de dialogue (Macintosh). Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection est une plage (par opposition à un point d'insertion). dreamweaver.canExportCSS() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Exporter les styles CSS. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si des styles de classe sont définis dans la section HEAD du document. 580 Chapitre 26 dreamweaver.canFindNext() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rechercher suivant. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si un modèle de recherche a été défini. dreamweaver.canOpenInFrame() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Ouvrir dans un cadre. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la sélection ou le point d'insertion se trouve dans un cadre. dreamweaver.canPlayRecordedCommand() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Reproduire la commande enregistrée. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il existe un document actif et une commande mémorisée pouvant être exécutée. dreamweaver.canRedo() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 581 Description Vérifie si Dreamweaver peut effectuer une opération Rétablir dans le contexte en cours. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il existe des opérations pouvant être annulées. dreamweaver.canRevertDocument() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Rétablir (revenir au dernier état enregistré). Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Valeur booléenne indiquant si le document est à l'état non enregistré et s'il en existe une version enregistrée sur un lecteur local. dreamweaver.canSaveAll() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Enregistrer tout. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si deux documents non enregistrés, ou plus, sont ouverts. dreamweaver.canSaveDocument() Disponibilité Dreamweaver 3.0 582 Chapitre 26 Description Vérifie si Dreamweaver peut effectuer une opération Enregistrer sur le document spécifié. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Valeur booléenne indiquant si le document contient des modifications non enregistrées. dreamweaver.canSaveDocumentAsTemplate() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Enregistrer comme modèle sur le document spécifié. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Valeur booléenne indiquant si le document peut être enregistré comme modèle. dreamweaver.canSaveFrameset() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Enregistrer le jeu de cadres sur le document spécifié. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Valeur booléenne indiquant si le document est un jeu de cadres comportant des modifications non enregistrées. API JavaScript de Dreamweaver 583 dreamweaver.canSaveFramesetAs() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Enregistrer le jeu de cadres sous sur le document spécifié. Arguments documentObject est l'objet situé à la racine de l'arborescence DOM d'un document (c'est-à-dire la valeur renvoyée par dreamweaver.getDocumentDOM()). documentObject Valeurs renvoyées Valeur booléenne indiquant si le document est un jeu de cadres. dreamweaver.canSelectAll() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Sélectionner tout. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il est possible d'effectuer une opération Sélectionner tout. dreamweaver.canShowFindDialog() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rechercher. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si une fenêtre Site ou une fenêtre de document est ouverte. Cette fonction renvoie la valeur false lorsque la sélection se trouve dans la section HEAD. 584 Chapitre 26 dreamweaver.canUndo() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Annuler dans le contexte en cours. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant s'il existe des opérations pouvant être annulées. dreamweaver.isRecording() Disponibilité Dreamweaver 3.0 Description Indique si Dreamweaver est en train de mémoriser une commande. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si Dreamweaver est en train de mémoriser une commande. dreamweaver.htmlStylePalette.canEditSelection() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut modifier, supprimer ou dupliquer la sélection dans le panneau Styles HTML. Arguments Aucun. Valeurs renvoyées Valeur booléenne. Cette fonction renvoie la valeur false si aucun style n'est sélectionné ou que l'un des styles « indéterminés » est sélectionné. dreamweaver.timelineInspector.canAddFrame() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 585 Description Détermine si Dreamweaver peut effectuer une opération Ajouter une image. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le panneau Scénarios comprend des barres d'animation ou des comportements. dreamweaver.timelineInspector.canAddKeyFrame() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Ajouter une image-clé. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si l'élément sélectionné dans le panneau Scénarios fait partie d'une barre d'animation. dreamweaver.timelineInspector.canChangeObject() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Modifier l'objet. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si l'élément sélectionné dans le panneau Scénarios fait partie d'une barre d'animation. dreamweaver.timelineInspector.canRemoveBehavior() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer le comportement. Arguments Aucun. 586 Chapitre 26 Valeurs renvoyées Une valeur booléenne indiquant si la sélection dans le panneau Comportements est un comportement. dreamweaver.timelineInspector.canRemoveFrame() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer l'image. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le panneau Scénarios comprend des barres d'animation ou des comportements. dreamweaver.timelineInspector.canRemoveKeyFrame() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer l'image-clé. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le cadre en cours dans le panneau Comportements est une image-clé. dreamweaver.timelineInspector.canRemoveObject() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer l'objet. Arguments Aucun. Valeurs renvoyées Une valeur booléenne indiquant si le panneau Scénarios comporte des barres d'animation. API JavaScript de Dreamweaver 587 site.browseDocument() Disponibilité Dreamweaver 4.0 Description Ouvre tous les documents sélectionnés dans une fenêtre de navigateur, de la même façon que la commande Aperçu dans le navigateur. Arguments browserName est le nom du navigateur tel qu'il est défini dans les préférences Aperçu dans le navigateur. Si cet argument n'est pas défini, le navigateur principal de l'utilisateur est utilisé par défaut. browserName Valeurs renvoyées Aucune. site.canAddLink() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Lier au [ fichier existant | nouveau fichier ]. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant que le document sélectionné dans la carte du site est un fichier HTML. site.canChangeLink() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Modifier le lien. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant qu'un fichier HTML ou Flash est lié au fichier sélectionné dans la carte du site. 588 Chapitre 26 site.canCheckIn() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Archiver. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Valeur booléenne indiquant si toutes les conditions suivantes sont vraies : • un site distant a été défini ; • dans le cas où une fenêtre de document est active, le fichier a été enregistré sur un site local ou, dans le cas où la fenêtre Site est active, un ou plusieurs fichiers ou dossiers sont sélectionnés ; • l'option archivage/extraction est activée. site.canCheckOut() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Extraire sur le ou les fichiers spécifiés. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Valeur booléenne indiquant si toutes les conditions suivantes sont vraies : • un site distant a été défini ; • dans le cas où une fenêtre de document est active, le fichier appartient à un site local et il n'est pas déjà extrait, ou, dans le cas où la fenêtre Site est active, plusieurs fichiers ou dossiers sont sélectionnés et au moins un des fichiers sélectionnés n'a pas déjà été extrait ; • l'option archivage/extraction est activée. API JavaScript de Dreamweaver 589 site.canConnect() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut se connecter au site distant. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le site distant en cours est un site FTP. site.canFindLinkSource() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rechercher la source du lien. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant que le lien sélectionné dans la carte du site n'est pas la page d'accueil. site.canGet() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Acquérir. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Si l'argument est "site", valeur booléenne indiquant si un ou plusieurs fichiers ou dossiers sont sélectionnés dans la fenêtre Site et si un site distant a été défini. Si l'argument est une URL, valeur booléenne indiquant si le document appartient à un site pour lequel un site distant a été défini. 590 Chapitre 26 site.canLocateInSite() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Retrouver sur le site local ou Retrouver sur le site distant (en fonction de l'argument) Arguments localOrRemote, siteOrURL • • localOrRemote doit être "local" ou "remote". siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées L'une des valeurs suivantes : • Si le premier argument est "local" et le second une URL, une valeur booléenne indiquant si le document appartient à un site. • Si le premier argument est "remote" et le second une URL, une valeur booléenne indiquant si le document appartient à un site pour lequel un site local a été défini et, si le type de serveur est Local/Réseau, si le lecteur est monté. • Si le second argument est "site", valeur booléenne indiquant si les deux volets contiennent des fichiers de site (pas la carte du site) et si la sélection se trouve dans le volet opposé à l'argument. site.canMakeEditable() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Désactiver le mode Lecture seule. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si un ou plusieurs des fichiers sélectionnés sont verrouillés. site.canMakeNewFileOrFolder() Disponibilité Dreamweaver 3.0 API JavaScript de Dreamweaver 591 Description Vérifie si Dreamweaver peut effectuer une opération Nouveau fichier ou Nouveau dossier dans la fenêtre Site. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si des fichiers sont visibles dans le volet sélectionné de la fenêtre Site. site.canOpen() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut ouvrir les fichiers ou les dossiers actuellement sélectionnés dans la fenêtre Site. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si des fichiers ou des dossiers sont sélectionnés dans la fenêtre Site. site.canPut() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Placer. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Si l'argument est "site", valeur booléenne indiquant si des fichiers ou des dossiers sont sélectionnés dans la fenêtre Site et si un site distant a été défini. Si l'argument est une URL, valeur booléenne indiquant si le document appartient à un site pour lequel un site distant a été défini. site.canRecreateCache() Disponibilité Dreamweaver 3.0 592 Chapitre 26 Description Détermine si Dreamweaver peut effectuer une opération Recréer le cache du site. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si l'option Utiliser le cache pour accélérer les mises à jour des liens est activée pour le site en cours. site.canRefresh() Disponibilité Dreamweaver 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Actualiser [local | distant]. Arguments localOrRemote localOrRemote doit être "local" ou "remote". Valeurs renvoyées si localOrRemote est "local" ; sinon, une valeur booléenne indiquant si un site distant a été défini. true site.canRemoveLink() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer le lien. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant qu'un fichier HTML ou Flash est lié au fichier sélectionné dans la carte du site. site.canSetLayout() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Mise en forme. Arguments Aucun. API JavaScript de Dreamweaver 593 Valeurs renvoyées Valeur booléenne indiquant si la carte du site est visible. site.canSelectAllCheckedOutFiles() Disponibilité Dreamweaver 4.0 Description Détermine si la fonction Archiver/Extraire est activée sur le site en cours. Arguments Aucun. Valeurs renvoyées Une valeur booléenne définie sur true si le site autorise l'archivage et l'extraction et false dans le cas contraire. site.canSelectNewer() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Sélectionner [distants | locaux] plus récents. Arguments localOrRemote localOrRemote doit être "local" ou "remote". Valeurs renvoyées Valeur booléenne indiquant si le document appartient à un site pour lequel un site distant a été défini. site.canShowPageTitles() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Afficher les titres de page. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si la carte du site est visible. 594 Chapitre 26 site.canSynchronize() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Synchroniser. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si un site distant a été défini. site.canUndoCheckOut() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Annuler extraction. Arguments siteOrURL siteOrURL doit être soit le mot-clé "site", indiquant que la fonction doit agir sur l'élément sélectionné dans la fenêtre Site, soit l'URL d'un fichier. Valeurs renvoyées Valeur booléenne indiquant si le fichier spécifié ou l'un des fichiers sélectionnés, au moins, a été extrait (par n'importe quel utilisateur). site.canViewAsRoot() Disponibilité Dreamweaver 3.0 Description Détermine si Dreamweaver peut effectuer une opération Afficher comme racine. Arguments Aucun. Valeurs renvoyées Valeur booléenne indiquant si le fichier spécifié est un fichier HTML ou Flash. site.SelectAllCheckedOutFiles() Disponibilité Dreamweaver 4.0 API JavaScript de Dreamweaver 595 Description Sélectionne tous les fichiers extraits sur le site local. Arguments Aucun. Valeurs renvoyées Aucune. 596 Chapitre 26 INDEX A activateurs utilisation 334 valeur de renvoi 569 addBehavior() dom.addBehavior() 343 dreamweaver.timelineInspector.addBehavior() 511 addDynamicSource() 190 addFrame() 512 addKeyframe() 512 addLinkToExistingFile() 467 addLinkToNewFile() 468 addObject() 512 addSpacerToColumn() 546 addTimeline() 513 affichage des tableaux 259 alert() 19 align() 434 analyzeServerBehavior() 138 API du module de débogage JavaScript 70 applyBehavior() 96 applyCharacterMarkup() 389 applyCSSStyle() 360 applyFontMarkup() 390 applyFormat() 199 applyFormatDefinition() 200 applyHTMLStyle() 419 applySB() 133 applyServerBehavior() 140 applyTemplate() 437 appName, propriété 23 appVersion, propriété 23 arguments facultatifs 335 fournis à partir d'un élément de menu 53 receiveArguments() 57 arrange() 434 arrangeFloatingPalettes() 545 arrêt, commandes 29 arrowDown() 426, 487 arrowLeft() 427, 488 arrowRight() 427, 488 arrowUp() 427, 489 assetPalette.addToFavoritesFromDocument() dreamweaver.assetPalette.addToFavoritesFrom Document() 336 assetPalette.addToFavoritesFromSiteAssets() dreamweaver.assetPalette.addToFavoritesFromSi teAssets() 336 assetPalette.addToFavoritesFromSiteWindow() dreamweaver.assetPalette.addToFavoritesFromSi teWindow() 337 assetPalette.canEdit() dreamweaver.assetPalette.canEdit() 578 assetPalette.canInsertOrApply() dreamweaver.assetPalette.canInsertOrApply() 579 assetPalette.copyToSite() dreamweaver.assetPalette.copyToSite() 337 assetPalette.edit() dreamweaver.assetPalette.edit() 337 assetPalette.getSelectedCategory() dreamweaver.assetPalette.getSelectedCategory() 338 assetPalette.getSelectedItems() dreamweaver.assetPalette.getSelectedItems() 338 assetPalette.getSelectedView() dreamweaver.assetPalette.getSelectedView() 339 assetPalette.insertOrApply() dreamweaver.assetPalette.insertOrApply() 339 assetPalette.locateInSite() dreamweaver.assetPalette.locateInSite() 339 assetPalette.newAsset() dreamweaver.assetPalette.newAsset() 340 assetPalette.newFolder() dreamweaver.assetPalette.newFolder() 340 assetPalette.recreateLibraryFromDocument() 597 dreamweaver.assetPalette.recreateLibraryFromDo cument() 341 assetPalette.refreshSiteAssets() dreamweaver.assetPalette.refreshSiteAssets() 341 assetPalette.removeFromFavorites() dreamweaver.assetPalette.removeFromFavorites() 341 assetPalette.renameNickname() dreamweaver.assetPalette.renameNickname() 342 assetPalette.setSelectedCategory() dreamweaver.assetPalette.setSelectedCategory() 342 assetPalette.setSelectedView() dreamweaver.assetPalette.setSelectedView() 342 assistance, fonctions dans les comportements 95 attachExternalStylesheet() 361 Attribut dataSource 154 location 161 name 157 partType 157 selectParticipant 156 serverBehavior 153 serverModel 159 subType 155 attributs traduits individuels 300 inspection 305 plusieurs 300 recherche dans les balises 26 attributs, propriété 26 B backspaceKey() 428 balanceBracesTextView() 489 balise XML group 153 groupParticipant 157 groupParticipants 156 implementation 159 insertText 160 participant 158 quickSearch 159 searchPatterns 164 title 155 balise, objet 26 balises traduites, inspection 313 598 Index base de données, commande d'arborescence 35 beginReporting() 65 behaviorFunction() 98 blocs de code dépendants 153 blur() 19 body, propriété 25 booléen, objet 19 bouton de couleur, commande 37 bouton, objet 19 bringDWToFront() 207 bringFWToFront() 208 browseDocument() 366, 588 browseForFileURL() 371 browseForFolderURL() 372 C C, fonctions appel à partir de JavaScript 331 calque, objet 19 canAcceptBehavior() 99 canAcceptCommand() dans les commandes de menu 55 dans les commandes régulières 47 canAddFrame() 585 canAddKeyFrame() 586 canAddLinkToFile() 588 canAlign() 569 canApplyServerBehavior() 140 canArrange() 569 canChangeLink() 588 canChangeObject() 586 canCheckIn() 589 canCheckOut() 589 canClipCopy() 579 canClipCopyText() 570 canClipCut() 579 canClipPaste() dom.canClipPaste() 570 dreamweaver.canClipPaste() 580 canClipPasteText() 570 canConnect() 590 canConvertLayersToTable() 571 canConvertTablesToLayers() 571 canDecreaseColspan() 571 canDecreaseRowspan() 572 canDeleteTableColumn() 572 canDeleteTableRow() 572 canEditNoFramesContent() 573 canEditSelection() 585 canExportCSS() 580 canFindLinkSource() 590 canFindNext() 581 canGet() 590 canIncreaseColspan() 573 canIncreaseRowspan() 573 canInsertTableColumns() 573 canInsertTableRows() 574 canInspectSelection() 77 canLocateInSite() 591 canMakeEditable() 591 canMakeNewEditableRegion() 574 canMakeNewFileOrFolder() 591 canMarkSelectionAsEditable() 574 canMergeTableCells() 575 canOpen() 592 canOpenInFrame() 581 canPlayPlugin() 575 canPlayRecordedCommand() 581 canPut() 592 canRecreateCache() 592 canRedo() dom.canRedo() 575 dreamweaver.canRedo() 581 canRefresh() 593 canRemoveEditableRegion() 576 canRemoveFrame() 587 canRemoveKeyFrame() 587 canRemoveLink() 593 canRemoveObject() 587 canRevertDocument() 582 canSaveAll() 582 canSaveDocument() 582 canSaveDocumentAsTemplate() 583 canSaveFrameset() 583 canSaveFramesetAs() 584 canSelectAll() 584 canSelectAllCheckedOutFiles() 594 canSelectNewer() 594 canSelectTable() 576 canSetLayout() 593 canSetLinkHref() 576 canShowFindDialog() 584 canShowListPropertiesDialog() 576 canSplitFrame() 577 canSplitTableCell() 577 canStopPlugin() 577 canSynchronize() 595 canUndo() dom.canUndo() 578 dreamweaver.canUndo() 585 canUndoCheckOut() 595 canViewAsRoot() 595 carte graphique, fonctions 434 case à cocher, objet 19 case d'options, objet 19 chaîne, objet 19 changeLink() 468 changeLinkSitewide() 468 changeObject() 513 checkIn() 469 checkLinks() 469 checkOut() 470 checkSpelling() 408 checkTargetBrowsers() dom.checkTargetBrowsers() 409 site.checkTargetBrowsers() 470 childNodes, propriété des objets balise 26 des objets commentaire 28 des objets de document 25 des objets texte 27 clearInterval() 19 clearSteps() 414 clearTemp() 242 clearTimeout() 19 clipCopy() dom.clipCopy() 353 dreamweaver.clipCopy() 356 clipCopyText() 354 clipCut() dom.clipCut() 354 dreamweaver.clipCut() 356 clipPaste() dom.clipPasteText() 354 dreamweaver.clipPaste() 357 clipPasteText() 355 close() MMNotes.close() 220 window.close() 19 closeDocument() 373 CloseNotesFile() 225 Index 599 codes d'état 241 colonnes 251 acquisition à partir des procédures stockées 256, 257 commandButtons() 65 dans les commandes de menu 55 dans les commandes régulières 48 commande d'arborescence, base de données 35 commande de grille, variables 35 commandes ajout aux menus 52 API 47 exemple de code 51 expérience de l'utilisateur 46 commandes d'arborescence 30 commandes de menu API 55 exemple de code 59 expérience de l'utilisateur 53 commentaire, objet 28 comportements API 96 exemple de code 104 expérience de l'utilisateur 94 fonctions d'assistance 95 fonctions requises 96 insertion de plusieurs fonctions 95 configureSettings() 66 confirm() 19 connexions 253, 254, 255 acquisition de la liste 253 noms 250 constantes de nœud 24 contenu de commande d'arborescence, manipulation 34 contenu verrouillé, inspection 313 convertLayersToTable() 359 convertTablesToLayers() 359 convertTo30() 360 convertWidthsToPercent() 504 convertWidthsToPixels() 504 copy() 234 copyServerBehavior() 141 copySteps() 414 createDocument() 373 createFile() pour des objets Flash 215 600 Index createFolder() 234 createLayoutCell() 546 createLayoutTable() 547 createResultsWindow() 454 D date, objet 19 débogueur JavaScript fonctionnement du module de débogage JavaScript 67 debugDocument() 423 decreaseColspan() 505 decreaseRowspan() 505 defineSites() 471 deleteBehavior() 100 deleteDynamicSource() 190 deleteFormat() 200 deleteKey() 428 deleteParticipant() 182 deleteSB() 134 deleteSelectedItem() 563 deleteSelectedStyle() dreamweaver.cssStylePalette.deleteSelectedStyle() 362 dreamweaver.htmlStylePalette.deleteSelectedStyle( ) 420 dw.htmlStylePalette.deleteSelectedStyle() 420 deleteSelectedTemplate() 568 deleteSelection() dom.deleteSelection() 390 dreamweaver.deleteSelection() 403 site.deleteSelection() 471 deleteServerBehavior() 141 deleteTableColumn() 505 deleteTableRow() 506 démarrage, commandes 29 Design Notes API C 225 API JavaScript 220 expérience de l'utilisateur 219 structure des fichiers 219 detachFromLibrary() 437 detachFromTemplate() 438 displayHelp() dans les actions de comportement 100 dans les comportements de serveur 135 dans les fichiers d'objet 41 dans les fichiers de l'inspecteur de propriétés 78 dans les modèles de serveur 203 dans les panneaux flottants 86 dans les sources de données 191 document, objet DOM Netscape, propriétés et méthodes 19 DOM niveau 1, propriétés et méthodes 25 documentEdited() 86 documentElement, propriété 25 doDeferredTableUpdate() 506 doesColumnHaveSpacer() 547 doesGroupHaveSpacers() 548 DOM dans Dreamweaver 19 DOM niveau 1, spécification 19 objet dom 334 dom.addBehavior() 343 dom.addSpacerToColumn() 546 dom.align() 434 dom.applyCharacterMarkup() 389 dom.applyCSSStyle() 360 dom.applyFontMarkup() 390 dom.applyHTMLStyle() 419 dom.applyTemplate() 437 dom.arrange() 434 dom.arrowDown() 426 dom.arrowLeft() 427 dom.arrowRight() 427 dom.arrowUp() 427 dom.backspaceKey() 428 dom.canAlign() 569 dom.canArrange() 569 dom.canClipCopyText() 570 dom.canClipPaste() 570 dom.canClipPasteText() 570 dom.canConvertLayersToTable() 571 dom.canConvertTablesToLayers() 571 dom.canDecreaseColspan() 571 dom.canDecreaseRowspan() 572 dom.canDeleteTableColumn() 572 dom.canDeleteTableRow() 572 dom.canEditNoFramesContent() 573 dom.canIncreaseColspan() 573 dom.canIncreaseRowspan() 573 dom.canInsertTableColumns() 573 dom.canInsertTableRows() 574 dom.canMakeNewEditableRegion() 574 dom.canMarkSelectionAsEditable() 574 dom.canMergeTableCells() 575 dom.canPlayPlugin() 575 dom.canRedo() 575 dom.canRemoveEditableRegion() 576 dom.canSelectTable() 576 dom.canSetLinkHref() 576 dom.canShowListPropertiesDialog() 576 dom.canSplitFrame() 577 dom.canSplitTableCell() 577 dom.canStopPlugin() 577 dom.canUndo() 578 dom.checkSpelling() 408 dom.checkTargetBrowsers() 409 dom.clipCopy 353 dom.clipCopyText() 354 dom.clipCut() 354 dom.clipPaste 354 dom.clipPasteText() 355 dom.convertLayersToTable() 359 dom.convertTablesToLayers() 359 dom.convertTo30() 360 dom.convertWidthsToPercent() 504 dom.convertWidthsToPixels() 504 dom.createLayoutCell() 546 dom.createLayoutTable() 547 dom.decreaseColspan() 505 dom.decreaseRowspan() 505 dom.deleteKey() 428 dom.deleteSelection() 390 dom.deleteTableColumn() 505 dom.deleteTableRow() 506 dom.detachFromLibrary() 437 dom.detachFromTemplate() 438 dom.doDeferredTableUpdate() 506 dom.doesColumnHaveSpacer() 547 dom.doesGroupHaveSpacers() 548 dom.editAttribute() 390 dom.endOfDocument() 429 dom.endOfLine() 429 dom.exitBlock() 391 dom.getAttachedTemplate() 438 dom.getBehavior() 344 dom.getCharSet() 391 dom.getClickedHeaderColumn() 548 dom.getEditableRegionList() 439 dom.getEditableRetionList() 440 Index 601 dom.getEditNoFramesContent() 518 dom.getFocus() 552 dom.getFontMarkup() 391 dom.getFrameNames() 387 dom.getIsLibraryDocument() 439 dom.getIsTemplateDocument() 439 dom.getLinkHref() 392 dom.getLinkTarget() 392 dom.getListTag() 393 dom.getPreventLayerOverlaps() 519 dom.getRulerOrigin() 540 dom.getRulerUnits() 541 dom.getSelectedEditableRegion() 440 dom.getSelectedNode() 457 dom.getSelection() 457 dom.getShowAutoIndent() 519 dom.getShowFrameBorders() 519 dom.getShowGrid() 520 dom.getShowHeadView() 520 dom.getShowHighlightInvalidHTML() 520 dom.getShowImageMaps() 521 dom.getShowInvisibleElements() 521 dom.getShowLayerBorders() 521, 528 dom.getShowLayoutTableTabs() 548 dom.getShowLayoutView() 549 dom.getShowLineNumbers() 522 dom.getShowRulers() 522 dom.getShowSyntaxColoring() 522 dom.getShowTableBorders() 522 dom.getShowToolbar() 523 dom.getShowTracingImage() 523 dom.getShowWordWrap() 523 dom.getSnapToGrid() 524 dom.getTableExtent() 506 dom.getTextAlignment() 393 dom.getTextFormat() 393 dom.getTracingImageOpacity() 541 dom.getView() 552 dom.getWindowTitle() 553 dom.hasCharacterMarkup() 394 dom.hasTracingImage() 578 dom.increaseColspan() 507 dom.increaseRowspan() 507 dom.indent() 394 dom.insertHTML() 395 dom.insertLibraryItem() 440 dom.insertObject() 395 602 Index dom.insertTableColumns() 507 dom.insertTableRows() 508 dom.insertText() 396 dom.instrumentDocument() 422 dom.isColumnAutostretch() 549 dom.isDesignViewUpdated() 487 dom.isDocumentInFrame() 388 dom.isSelectionValid() 487 dom.loadTracingImage() 541 dom.makeCellWidthsConsistent() 549 dom.makeSizesEqual() 435 dom.markSelectionAsEditable() 441 dom.mergeTableCells() 508 dom.moveSelectionBy() 435 dom.newBlock() 397 dom.newEditableRegion() 441 dom.nextParagraph() 430 dom.nextWord() 430 dom.nodeToOffsets() 458 dom.notifyFlashObjectChanged() 397 dom.offsetsToNode() 459 dom.outdent() 398 dom.pageDown() 431 dom.pageUp() 431 dom.playAllPlugins() 542 dom.playPlugin() 542 dom.previousParagraph() 431 dom.previousWord() 432 dom.reapplyBehaviors() 345 dom.redo() 410 dom.removeAllSpacers() 550 dom.removeAllTableHeights() 509 dom.removeAllTableWidths() 509 dom.removeBehavior() 345 dom.removeCharacterMarkup() 398 dom.removeCSSStyle() 361 dom.removeEditableRegion() 441 dom.removeFontMarkup() 398 dom.removeLink() 399 dom.removeSpacerFromColumn() 550 dom.resizeSelection() 399 dom.resizeSelectionBy() 435 dom.runTranslator() 538 dom.saveAllFrames() 388 dom.selectAll() 460 dom.selectChild() 450 dom.selectParent() 451 dom.selectTable() 460 dom.serverModel.getServerLanguage() 465 dom.serverModel.getServerName() 466 dom.serverModel.getServerVersion() 466 dom.setAttributeWithErrorChecking() 399 dom.setColumnAutostretch() 550 dom.setEditNoFramesContent() 524 dom.setHideAllVisualAids() 524 dom.setLayerTag() 436 dom.setLinkHref() 400 dom.setLinkTarget() 400 dom.setListBoxKind() 401 dom.setListTag() 402 dom.setPreventLayerOverlaps() 525 dom.setRulerOrigin() 542 dom.setRulerUnits() 543 dom.setSelectedNode() 460 dom.setSelection() 461 dom.setShowFrameBorders() 525 dom.setShowGrid() 526 dom.setShowHeadView() 526 dom.setShowHighlightInvalidHTML() 526 dom.setShowImageMaps() 527 dom.setShowInvisibleElements() 527 dom.setShowLayerBorders() 527 dom.setShowLayoutTableTabs() 551 dom.setShowLayoutView() 551 dom.setShowLineNumbers() 528 dom.setShowRulers() 528 dom.setShowTableBorders() 529 dom.setShowToolbar() 529 dom.setShowTracingImage() 529 dom.setShowWordWrap() 530 dom.setSnapToGrid() 530 dom.setTableCellTag() 509 dom.setTableColumns() 510 dom.setTableRows() 510 dom.setTextAlignment() 402 dom.setTextFieldKind() 402 dom.setTracingImageOpacity() 544 dom.setTracingImagePosition() 543 dom.setView() 553 dom.showFontColorDialog() 403 dom.showInsertTableRowsOrColumnsDialog() 510 dom.showListPropertiesDialog() 401 dom.showPagePropertiesDialog() 409 dom.snapTracingImageToSelection() 544 dom.source.arrowDown() 487 dom.source.arrowLeft() 488 dom.source.arrowRight() 488 dom.source.arrowUp() 489 dom.source.balanceBracesTextView() 489 dom.source.endOfDocument() 489 dom.source.endOfLine() 490 dom.source.endPage() 490 dom.source.getCurrentLines() 491 dom.source.getSelection() 491 dom.source.getText() 491 dom.source.indentTextView() 492 dom.source.insert() 492 dom.source.nextWord() 492 dom.source.outdentTextView() 493 dom.source.pageDown() 493 dom.source.pageUp() 493 dom.source.previousWord() 494 dom.source.replaceRange() 494 dom.source.scrollLineDown() 495, 497 dom.source.scrollLineUp() 495 dom.source.scrollPageDown() 496 dom.source.scrollPageUp() 496 dom.source.selectParentTag() 497 dom.source.setCurrentLine() 497 dom.source.startOfDocument() 498 dom.source.startOfLine() 498 dom.source.synchronizeDocument() 499 dom.source.topPage() 498 dom.source.wrapSelection() 499 dom.splitFrame() 389 dom.splitTableCell() 511 dom.startOfDocument() 432 dom.startOfLine() 433 dom.stopAllPlugins() 544 dom.stopPlugin() 545 dom.stripTag() 451 dom.undo() 411 dom.updateCurrentPage() 442 dom.wrapTag() 452 Données dynamiques, boîte de dialogue 187 données, propriété des objets commentaire 28 des objets httpReply 241 des objets texte 27 _notes, dossier 219 doURLEncoding() 500 Index 603 dreamweaver, objet méthodes 334 propriétés 23 dreamweaver.arrangeFloatingPalettes() 545 dreamweaver.behaviorInspector, objet 343 dreamweaver.behaviorInspector.getBehaviorAt() 349 dreamweaver.behaviorInspector.getBehaviorCount() 349 dreamweaver.behaviorInspector.getSelectedBehavior() 350 dreamweaver.behaviorInspector.moveBehaviorDown() 350 dreamweaver.behaviorInspector.moveBehaviorUp() 351 dreamweaver.behaviorInspector.setSelectedBehavior() 352 dreamweaver.browseDocument() 366 dreamweaver.browseForFileURL() 371 dreamweaver.browseForFolderURL() 372 dreamweaver.canClipCopy() 579 dreamweaver.canClipCut() 579 dreamweaver.canClipPaste() 580 dreamweaver.canExportCSS() 580 dreamweaver.canFindNext() 581 dreamweaver.canOpenInFrame() 581 dreamweaver.canPlayRecordedCommand() 581 dreamweaver.canRedo() 581 dreamweaver.canRevertDocument() 582 dreamweaver.canSaveAll() 582 dreamweaver.canSaveDocument() 582 dreamweaver.canSaveDocumentAsTemplate() 583 dreamweaver.canSaveFrameset() 583 dreamweaver.canSaveFramesetAs() 584 dreamweaver.canSelectAll() 584 dreamweaver.canShowFindDialog() 584 dreamweaver.canUndo() 585 dreamweaver.clipCopy() 356 dreamweaver.clipCut() 356 dreamweaver.clipPaste() 357 dreamweaver.closeDocument() 373 dreamweaver.createDocument() 373 dreamweaver.createResultsWindow() 454 dreamweaver.cssStylePalette, objet 360 dreamweaver.cssStylePalette.deleteSelectedStyle() 362 dreamweaver.cssStylePalette.duplicateSelectedStyle() 362 dreamweaver.cssStylePalette.editSelectedStyle() 362 604 Index dreamweaver.cssStylePalette.editStyleSheet() 363 dreamweaver.cssStylePalette.getSelectedStyle() 363 dreamweaver.cssStylePalette.getSelectedTarget() 364 dreamweaver.cssStylePalette.getStyles() 365 dreamweaver.cssStylePalette.newStyle() 365 dreamweaver.dbi.getDataSources() 464 dreamweaver.debugDocument() 423 dreamweaver.deleteSelection() 403 dreamweaver.doURLEncoding() 500 dreamweaver.editCommandList() 358 dreamweaver.editFontList() 403 dreamweaver.editLockedRegions() 538 dreamweaver.exportCSS() 374 dreamweaver.exportEditableRegionsAsXML() 374 dreamweaver.findNext() 381 dreamweaver.getActiveWindow() 553 dreamweaver.getBehaviorElement() 346 dreamweaver.getBehaviorEvent() 560 dreamweaver.getBehaviorTag() 347 dreamweaver.getBrowserList() 367 dreamweaver.getClipboardText() 357 dreamweaver.getConfigurationPath() 448 dreamweaver.getDebugBrowserList() 424 dreamweaver.getDocumentDOM() 335 dreamweaver.getDocumentList() 554 dreamweaver.getDocumentPath() 448 dreamweaver.getElementRef() 409 dreamweaver.getExtensionEditorList() 367 dreamweaver.getExternalTextEditor() 368 dreamweaver.getFloaterVisibility() 554 dreamweaver.getFocus() 555 dreamweaver.getFontList() 404 dreamweaver.getFontStyles() 404 dreamweaver.getHideAllFloaters() 530 dreamweaver.getIsAnyBreakpoints() 425 dreamweaver.getKeyState() 405 dreamweaver.getLiveDataInitTags() 443 dreamweaver.getLiveDataMode() 444 dreamweaver.getMenuNeedsUpdating() 446 dreamweaver.getObjectRefs() 560 dreamweaver.getObjectTags() 562 dreamweaver.getPrimaryBrowser() 368 dreamweaver.getPrimaryExtensionEditor() 369 dreamweaver.getPrimaryView() 556 dreamweaver.getRecentFileList() 375 dreamweaver.getRedoText() 411 dreamweaver.getSecondaryBrowser() 369 dreamweaver.getShowDialogsOnInsert() 406 dreamweaver.getShowStatusBar() 531 dreamweaver.getSiteRoot() 449 dreamweaver.getSnapDistance() 556 dreamweaver.getSystemFontList() 405 dreamweaver.getTokens() 500 dreamweaver.getTranslatorList() 539 dreamweaver.getUndoText() 412 dreamweaver.historyPalette, objet 410 dreamweaver.historyPalette.clearSteps() 414 dreamweaver.historyPalette.copySteps() 414 dreamweaver.historyPalette.getSelectedSteps() 415 dreamweaver.historyPalette.getStepCount() 415 dreamweaver.historyPalette.getStepsAsJavaScript() 416 dreamweaver.historyPalette.getUndoState() 417 dreamweaver.historyPalette.replaySteps() 417 dreamweaver.historyPalette.saveAsCommand() 418 dreamweaver.historyPalette.setSelectedSteps() 418 dreamweaver.historyPalette.setUndoState() 419 dreamweaver.htmlInspector.getShowAutoIndent() 531 dreamweaver.htmlInspector.getShowHighlightInvalid HTML() 531 dreamweaver.htmlInspector.getShowLineNumbers() 531 dreamweaver.htmlInspector.getShowSyntaxColoring() 532 dreamweaver.htmlInspector.getShowWordWrap() 532 dreamweaver.htmlInspector.setShowAutoIndent() 532 dreamweaver.htmlInspector.setShowHighightInvalidH TML() 533 dreamweaver.htmlInspector.setShowLineNumbers() 533 dreamweaver.htmlInspector.setShowSyntaxColoring() 533 dreamweaver.htmlInspector.setShowWordWrap() 534 dreamweaver.htmlStylePalette, objet 419 dreamweaver.htmlStylePalette.canEditSelection() 585 dreamweaver.htmlStylePalette.deleteSelectedStyle() 420 dreamweaver.htmlStylePalette.duplicateSelectedStyle() 420 dreamweaver.htmlStylePalette.editSelectedStyle() 420 dreamweaver.htmlStylePalette.getSelectedStyle() 421 dreamweaver.htmlStylePalette.getStyles() 421 dreamweaver.htmlStylePalette.newStyle() 421 dreamweaver.htmlStylePalette.setSelectedStyle() 422 dreamweaver.importXMLIntoTemplate() 375 dreamweaver.isRecording() 585 dreamweaver.isReporting() 453 dreamweaver.latin1ToNative() 501 dreamweaver.libraryPalette, objet 437 dreamweaver.libraryPalette.deleteSelectedItem() 563 dreamweaver.libraryPalette.getSelectedItem() 564 dreamweaver.libraryPalette.newFromDocument() 564 dreamweaver.libraryPalette.recreateFromDocument() 564 dreamweaver.libraryPalette.renameSelectedItem() 565 dreamweaver.liveDataTranslate() 444 dreamweaver.loadSitesFromPrefs() 466 dreamweaver.minimizeRestoreAll() 556 dreamweaver.nativeToLatin1() 501 dreamweaver.newFromTemplate() 375 dreamweaver.nodeToOffsets() 565 dreamweaver.notifyMenuUpdated() 447 dreamweaver.offsetsToNode() 566 dreamweaver.openDocument() 376 dreamweaver.openDocumentFromSite() 377 dreamweaver.openInFrame() 377 dreamweaver.openWithApp() 370 dreamweaver.openWithBrowseDialog() 370 dreamweaver.openWithExternalTextEditor() 370 dreamweaver.openWithImageEditor() 371 dreamweaver.playRecordedCommand() 412 dreamweaver.popupAction() 348 dreamweaver.popupCommand() 567 dreamweaver.popupServerBehavior() 463 dreamweaver.quitApplication() 406 dreamweaver.redo() 412 dreamweaver.relativeToAbsoluteURL() 450 dreamweaver.releaseDocument() 377 dreamweaver.reloadMenus() 447 dreamweaver.removeAllBreakpoints() 425 dreamweaver.replace() 382 dreamweaver.replaceAll() 382 dreamweaver.results.setResultData() 453 dreamweaver.revertDocument() 378 dreamweaver.runCommand() 358 dreamweaver.saveAll() 379 dreamweaver.saveDocument() 379 dreamweaver.saveDocumentAs() 380 dreamweaver.saveDocumentAsTemplate() 380 dreamweaver.saveFrameset() 380 dreamweaver.saveFramesetAs() 381 dreamweaver.saveSitesToPrefs() 467 Index 605 dreamweaver.selectAll() 461 dreamweaver.serverBehaviorInspector.findAllServerBeh aviors() 462 dreamweaver.serverBehaviorInspector.getServerBehavio rs() 463 dreamweaver.setActiveWindow() 556 dreamweaver.setFloaterVisibility() 557 dreamweaver.setHideAllFloaters() 534 dreamweaver.setLiveDataError() 445 dreamweaver.setLiveDataMode() 445 dreamweaver.setPrimaryView() 558 dreamweaver.setSelection() 567 dreamweaver.setShowStatusBar() 535 dreamweaver.setSnapDistance() 558 dreamweaver.setUpComplexFind() 383 dreamweaver.setUpComplexFindReplace() 383 dreamweaver.setUpFind() 384 dreamweaver.setUpFindReplace() 385 dreamweaver.showAboutBox() 406 dreamweaver.showDynamicData() 407 dreamweaver.showFindDialog() 386 dreamweaver.showFindReplaceDialog() 387 dreamweaver.showGridSettingsDialog() 545 dreamweaver.showLiveDataDialog() 446 dreamweaver.showPreferencesDialog() 408 dreamweaver.showProperties() 558 dreamweaver.showQuickTagEditor() 452 dreamweaver.showReportsDialog() 453 dreamweaver.startDebugger() 425 dreamweaver.startRecording() 413 dreamweaver.stopRecording() 413 dreamweaver.stylePalette.attachExternalStylesheet() 361 dreamweaver.templatePalette, objet 437 dreamweaver.templatePalette.deleteSelectedTemplate() 568 dreamweaver.templatePalette.getSelectedTemplate() 566 dreamweaver.templatePalette.newBlankTemplate() 443 dreamweaver.templatePalette.renameSelectedTemplate( ) 568 dreamweaver.timelineInspector, objet 511 dreamweaver.timelineInspector.addBehavior() 511 dreamweaver.timelineInspector.addFrame() 512 dreamweaver.timelineInspector.addKeyframe() 512 dreamweaver.timelineInspector.addObject() 512 dreamweaver.timelineInspector.addTimeline() 513 606 Index dreamweaver.timelineInspector.canAddFrame() 585 dreamweaver.timelineInspector.canAddKeyFrame() 586 dreamweaver.timelineInspector.canChangeObject() 586 dreamweaver.timelineInspector.canRemoveFrame() 587 dreamweaver.timelineInspector.canRemoveKeyFrame() 587 dreamweaver.timelineInspector.canRemoveObject() 587 dreamweaver.timelineInspector.changeObject() 513 dreamweaver.timelineInspector.getAutoplay() 513 dreamweaver.timelineInspector.getCurrentFrame() 514 dreamweaver.timelineInspector.getLoop() 514 dreamweaver.timelineInspector.recordPathOfLayer() 514 dreamweaver.timelineInspector.removeBehavior() 515 dreamweaver.timelineInspector.removeFrame() 515 dreamweaver.timelineInspector.removeKeyframe() 515 dreamweaver.timelineInspector.removeObject() 516 dreamweaver.timelineInspector.removeTimeline() 516 dreamweaver.timelineInspector.renameTimeline() 516 dreamweaver.timelineInspector.setAutoplay() 517 dreamweaver.timelineInspector.setCurrentFrame() 517 dreamweaver.timelineInspector.setLoop() 517 dreamweaver.toggleFloater() 559 dreamweaver.undo() 414 dreamweaver.updatePages() 442 dreamweaver.updateReference() 559 dreamweaver.useTranslatedSource() 539 duplicateSelectedStyle() dreamweaver.cssStylePalette.duplicateSelectedStyl e() 362 dreamweaver.htmlStylePalette.duplicateSelectedSt yle() 420 dw, objet 334 dw.arrangeFloatingPalettes() 545 dw.assetPalette.addToFavoritesFromDocument() 336 dw.assetPalette.addToFavoritesFromSiteAssets() 336 dw.assetPalette.addToFavoritesFromSiteWindow() 337 dw.assetPalette.canEdit() 578 dw.assetPalette.canInsertOrApply() 579 dw.assetPalette.copyToSite() 337 dw.assetPalette.edit() 337 dw.assetPalette.getSelectedCategory() 338 dw.assetPalette.getSelectedItems() 338 dw.assetPalette.getSelectedView() 339 dw.assetPalette.insertOrApply() 339 dw.assetPalette.locateInSite() 339 dw.assetPalette.newAsset() 340 dw.assetPalette.newFolder() 340 dw.assetPaletterecreateLibraryFromDocument() 341 dw.assetPalette.refreshSiteAssets() 341 dw.assetPalette.removeFromFavorites() 341 dw.assetPalette.renameNickname() 342 dw.assetPalette.setSelectedCategory() 342 dw.assetPalette.setSelectedView() 342 dw.behaviorInspector.getBehaviorAt() 349 dw.behaviorInspector.getBehaviorCount() 349 dw.behaviorInspector.getSelectedBehavior() 350 dw.behaviorInspector.moveBehaviorDown() 350 dw.behaviorInspector.moveBehaviorUp() 351 dw.behaviorInspector.setSelectedBehavior() 352 dw.browseDocument() 366 dw.browseForFileURL() 371 dw.browseForFolderURL() 372 dw.canClipCopy() 579 dw.canClipCut() 579 dw.canClipPaste() 580 dw.canExportCSS() 580 dw.canFindNext() 581 dw.canOpenInFrame() 581 dw.canPlayRecordedCommand() 581 dw.canRedo() 581 dw.canRevertDocument() 582 dw.canSaveAll() 582 dw.canSaveDocument() 582 dw.canSaveDocumentAsTemplate() 583 dw.canSaveFrameset() 583 dw.canSaveFramesetAs() 584 dw.canSelectAll() 584 dw.canShowFindDialog() 584 dw.canUndo() 585 dw.clipCopy() 356 dw.clipCut() 356 dw.clipPaste() 357 dw.closeDocument() 373 dw.createDocument() 373 dw.createResultsWindow() 454 dw.cssStylePalette.deleteSelectedStyle() 362 dw.cssStylePalette.duplicateSelectedStyle() 362 dw.cssStylePalette.editSelectedStyle() 362 dw.cssStylePalette.editStyleSheet() 363 dw.cssStylePalette.getSelectedStyle() 363 dw.cssStylePalette.getSelectedTarget() 364 dw.cssStylePalette.getStyles() 365 dw.cssStylePalette.newStyle() 365 dw.dbi.getDataSources() 464 dw.debugDocument() 423 dw.deleteSelection() 403 dw.doURLEncoding() 500 dw.editCommandList() 358 dw.editFontList() 403 dw.editLockedRegions() 538 dw.exportCSS() 374 dw.exportEditableRegionsAsXML() 374 DWfile, DLL API 234 vérification 233 DWfile.copy() 234 DWfile.createFolder() 234 DWfile.exists() 235 DWfile.getAttributes() 235 DWfile.getCreationDate() 237 DWfile.getModificationDate() 236 DWfile.listFolder() 238 DWfile.read() 239 DWfile.remove() 239 DWfile.write() 239 dw.findNext() 381 dw.getActiveWindow() 553 dw.getBehaviorElement() 346 dw.getBehaviorTag() 347 dw.getBrowserList() 367 dw.getConfigurationPath() 448 dw.getDebugBrowserList() 424 dw.getDocumentDOM() 335 dw.getDocumentList() 554 dw.getDocumentPath() 448 dw.getElementRef() 409 dw.getExtensionEditorList() 367 dw.getExternalTextEditor() 368 dw.getFloaterVisibility() 554 dw.getFocus() 555 dw.getFontList() 404 dw.getFontStyles() 404 dw.getHideAllFloaters() 530 dw.getIsAnyBreakpoints() 425 dw.getKeyState() 405 dw.getLiveDataInitTags() 443 Index 607 dw.getLiveDataMode() 444 dw.getMenuNeedsUpdating() 446 dw.getParticipants() 143 dw.getPrimaryBrowser() 368 dw.getPrimaryExtensionEditor() 369 dw.getPrimaryView() 556 dw.getRecentFileList() 375 dw.getRedoText() 411 dw.getSecondaryBrowser() 369 dw.getShowDialogsOnInsert() 406 dw.getShowStatusBar() 531 dw.getSiteRoot() 449 dw.getSnapDistance() 556 dw.getSystemFontList() 405 dw.getTokens() 500 dw.getTranslatorList() 539 dw.getUndoText() 412 dw.historyPalette.clearSteps() 414 dw.historyPalette.copySteps() 414 dw.historyPalette.getSelectedSteps() 415 dw.historyPalette.getStepCount() 415 dw.historyPalette.getStepsAsJavaScript() 416 dw.historyPalette.getUndoState() 417 dw.historyPalette.replaySteps() 417 dw.historyPalette.saveAsCommand() 418 dw.historyPalette.setSelectedSteps() 418 dw.historyPalette.setUndoState() 419 dw.htmlInspector.getShowAutoIndent() 531 dw.htmlInspector.getShowHighlightInvalidHTML() 531 dw.htmlInspector.getShowLineNumbers() 531 dw.htmlInspector.getShowSyntaxColoring() 532 dw.htmlInspector.getShowWordWrap() 532 dw.htmlInspector.setShowAutoIndent() 532 dw.htmlInspector.setShowHighlightInvalidHTML() 533 dw.htmlInspector.setShowLineNumbers() 533 dw.htmlInspector.setShowSyntaxColoring() 533 dw.htmlInspector.setShowWordWrap() 534 dw.htmlStylePalette.canEditSelection() 585 dw.htmlStylePalette.deleteSelectedStyle() 420 dw.htmlStylePalette.duplicateSelectedStyle() 420 dw.htmlStylePalette.editSelectedStyle() 420 dw.htmlStylePalette.getSelectedStyle() 421 dw.htmlStylePalette.getStyles() 421 dw.htmlStylePalette.newStyle() 421 dw.htmlStylePalette.setSelectedStyle() 422 608 Index dw.importXMLIntoTemplate() 375 dw.isRecording() 585 dw.isReporting() 453 dw.latin1ToNative() 501 dw.libraryPalette.deleteSelectedItem() 563 dw.libraryPalette.getSelectedItem() 564 dw.libraryPalette.newFromDocument() 564 dw.libraryPalette.recreateFromDocument() 564 dw.libraryPalette.renameSelectedItem() 565 dw.liveDataTranslate() 444 dw.loadSitesFromPrefs() 466 dw.minimizeRestoreAll() 556 dw.nativeToLatin1() 501 dw.newFromTemplate() 375 dw.notifyMenuUpdated() 447 dw.openDocument() 376 dw.openDocumentFromSite() 377 dw.openInFrame() 377 dw.openWithApp() 370 dw.openWithBrowseDialog() 370 dw.openWithExternalTextEditor() 370 dw.openWithImageEditor() 371 dw.playRecordedCommand() 412 dw.popupAction() 348 dw.popupServerBehavior() 463 dw.quitApplication() 406 dw.redo() 412 dw.referencePalette.getFontSize() 343 dw.referencePalette.setFontSize() 343 dw.relativeToAbsoluteURL() 450 dw.releaseDocument() 377 dw.reloadMenus() 447 dw.removeAllBreakpoints() 425 dw.replace() 382 dw.replaceAll() 382 dw.results.setResultData() 453 dw.revertDocument() 378 dw.runCommand() 358 dw.saveAll() 379 dw.saveDocument() 379 dw.saveDocumentAs() 380 dw.saveDocumentAsTemplate() 380 dw.saveFrameset() 380 dw.saveFramesetAs() 381 dw.saveSitesToPrefs() 467 dw.selectAll() 461 dw.serverBehaviorInspector.findAllServerBehaviors() 462 dw.serverBehaviorInspector.getServerBehaviors() 463 dw.setActiveWindow() 556 dw.setFloaterVisibility() 557 dw.setHideAllFloaters() 534 dw.setLiveDataError() 445 dw.setLiveDataMode() 445 dw.setPrimaryView() 558 dw.setShowStatusBar() 535 dw.setSnapDistance() 558 dw.setUpComplexFind() 383 dw.setUpComplexFindReplace() 383 dw.setUpFind() 384 dw.setUpFindReplace() 385 dw.showAboutBox() 406 dw.showDynamicData() 407 dw.showFindDialog() 386 dw.showFindReplaceDialog() 387 dw.showGridSettingsDialog() 545 dw.showLiveDataDialog() 446 dw.showPreferencesDialog() 408 dw.showProperties() 558 dw.showQuickTagEditor() 452 dw.showReportsDialog() 453 dw.startDebugger() 425 dw.startRecording() 413 dw.stopRecording() 413 dw.stylePalette.attachExternalStylesheet() 361 dw.templatePalette.deleteSelectedTemplate() 568 dw.templatePalette.getSelectedTemplate() 566 dw.templatePalette.newBlankTemplate() 443 dw.templatePalette.renameSelectedTemplate() 568 dw.timelineInspector.addBehavior() 511 dw.timelineInspector.addFrame() 512 dw.timelineInspector.addKeyframe() 512 dw.timelineInspector.addObject() 512 dw.timelineInspector.addTimeline() 513 dw.timelineInspector.canAddFrame() 585 dw.timelineInspector.canAddKeyFrame() 586 dw.timelineInspector.canChangeObject() 586 dw.timelineInspector.canRemoveFrame() 587 dw.timelineInspector.canRemoveKeyFrame() 587 dw.timelineInspector.canRemoveObject() 587 dw.timelineInspector.changeObject() 513 dw.timelineInspector.getAutoplay() 513 dw.timelineInspector.getCurrentFrame() 514 dw.timelineInspector.getLoop() 514 dw.timelineInspector.recordPathOfLayer() 514 dw.timelineInspector.removeBehavior() 515 dw.timelineInspector.removeFrame() 515 dw.timelineInspector.removeKeyframe() 515 dw.timelineInspector.removeObject() 516 dw.timelineInspector.removeTimeline() 516 dw.timelineInspector.renameTimeline() 516 dw.timelineInspector.setAutoplay() 517 dw.timelineInspector.setCurrentFrame() 517 dw.timelineInspector.setLoop() 517 dw.toggleFloater() 559 dw.undo() 414 dw.updatePages() 442 dw.updateReference() 559 dw.useTranslatedSource() 539 E e/s de fichier 234 editAttribute() 390 editColumns() site.editColumns() 471 editCommandList() 358 editFontList() 403 editLockedRegions() 538 editSelectedStyle() dreamweaver.cssStylePalette.editSelectedStyle() 362 dreamweaver.htmlStylePalette.editSelectedStyle() 420 editStyleSheet() 363 emplacement-menu 137 endOfDocument() 429, 489, 490 endOfLine() 429 endPage() 490 endReporting() 65 envoyer, objet 19 escape() 19 événements dans les fichiers d'extension 19 execJsInFireworks() 208 exists() 235 exitBlock() 391 exportCSS() 374 exportEditableRegionsAsXML() 374 expressions régulières 150 extensibilité de niveau C Index 609 dans les boîtes de dialogue de comportement 94 dans les fichiers d'extension 28 renvoi d'une valeur 95 dans les traducteurs 293 F fenêtre, objet 19 fichier (champ), objet 19 fichiers Groupe 148 fichiers JavaScript externes 28 fichiers Participant 148 fichiers sur disque copie 234 création (fichiers HTML) 373 création (fichiers non HTML) 239 écriture 239 lecture 239 suppression 239 FilePathToLocalURL() 225 filePathToLocalURL() 220 findAllServerBehaviors() 462 findDynamicSources() 192 findLinkSource() 472 findNext() 381 findSBs() 132 findServerBehaviors() 142 Fireworks exemple d'intégration 213 Flash, objets création 215 focus() 19 fonction, objet 19 fonctions C dans mm_jsapi.h 322 formatDynamicDataRef() 201 formulaire, objet 19 FWLaunch.bringDWToFront() 207 FWLaunch.bringFWToFront() 208 FWLaunch.execJsInFireworks() 208 FWLaunch.getJsResponse() 209 FWLaunch.mayLaunchFireworks() 210 FWLaunch.optimizeInFireworks() 211 FWLaunch.validateFireworks() 212 G generateDynamicSourceBindings() 193 gestion des versions 23 gestionnaire de traduction 183 gestionnaires d'événements 610 Index get() MMNotes.get() 221 site.get() 472 getActiveWindow() 553 getAttachedTemplate() 438 getAttribute() 26 getAttributes() 235 getAutoplay() 513 getBehavior() 344 getBehaviorAt() 349 getBehaviorCount() 349 getBehaviorElement() 346 getBehaviorEvent() 560 getBehaviorTag() 347 getBodyInstrument() 71 getBrowserList() 367 getCharSet() 391 getCheckOutUser() 473 getCheckOutUserForFile() 474 getClickedHeaderColumn() 548 getClipboardText() dreamweaver.getClipboardText() 357 getColdFusionDsnList() 251 getColumnAndTypeList() 251 getColumnList() 251 getColumnsOfTable() 252 getConfigurationPath() 448 getConnectionList() 253 getConnectionName() 253 getConnectionState() 474 getConnectionString() 254 getCurrentFrame() 514 getCurrentLines() 491 getCurrentSite() 474 getDataSources() 464 getDate() 237 getDebugBrowserList() 424 getDocumentDOM() dreamweaver.getDocumentDOM() 335 importance 335 getDocumentList() 554 getDocumentPath() 448 getDriverName() 254 getDynamicContent() 56 getEditableRegionList() 439 getEditableRetionList() 440 getEditNoFramesContent() 518 getElementRef() 409 getElementsByTagName() pour les objets balise 26 pour les objets de document 25 getExtensionEditorList() 367 getExternalTextEditor() 368 getFile() 242 getFileCallback() 244 getFileExtensions() 204 getFloaterVisibility() 554 getFocus() dom.getFocus() 552 dreamweaver.getFocus() 555 site.getFocus() 475 getFontList() 404 getFontMarkup() 391 getFontStyles() 404 getFrameNames() 387 getFunctionEndInstrument() 70 getFunctionStartInstrument() 71 getGroup() 180 getHeadInstrument() 71 getHideAllFloaters() 530 getIncludedFileList() 71 getIsAnyBreakpoints() 425 getIsLibraryDocument() 439 getIsTemplateDocument() 439 getJsResponse() 209 getKeyCount() 221 getKeys() 221 getKeyState() 405 getLinkHref() 392 getLinkTarget() 392 getLinkVisibility() 475 getListTag() 393 getLiveDataInitTags() 443 getLiveDataMode() 444 getLoop() 514 getMenuNeedsUpdating() 446 getModificationDate() 236 getNaturalSize() pour des objets Flash 217 GetNote() 226 GetNoteLength() 227 GetNotesKeyCount() 227 GetNotesKeys() 227 getObjectRefs() 560 getObjectTags() 562 getObjectType() pour des objets Flash 217 getOnUnloadInstrument() 72 getPassword() 255 getPreventLayerOverlaps() 519 getPrimaryBrowser() 368 getPrimaryExtensionEditor() 369 getPrimaryView() 556 getRecentFileList() 375 getRedoText() 411 getRulerOrigin() 540 getRulerUnits() 541 getRuntimeConnectionType() 255 getSecondaryBrowser() 369 getSelectedBehavior() 350 getSelectedEditableRegion() 440 getSelectedItem() 564 getSelectedNode() 457 getSelectedStyle() dreamweaver.cssStylePalette.getSelectedStyle() 363 dreamweaver.htmlStylePalette.getSelectedStyle() 421 getSelectedTarget() 364 getSelectedTemplate() 566 getSelection() 491 dom.getSelection() 457 dreamweaver.getSelection() 563 site.getSelection() 476 getServerBehaviors() 463 getServerExtension() 205 getServerLanguage() 465 getServerLanguages() 204 getServerName() 466 getServerVersion() 466 getShowAutoIndent() 519 getShowDependents() 535 getShowDialogsOnInsert() 406 getShowFrameBorders() 519 getShowGrid() 520 getShowHeadView() 520 getShowHiddenFiles() 535 getShowHighlightInvalidHTML() 520 Index 611 getShowImageMaps() 521 getShowInvisibleElements() 521 getShowLayerBorders() 521, 528 getShowLayoutTableTabs() 548 getShowLayoutView() 549 getShowLineNumbers() 522 getShowPageTitles() 536 getShowRulers() 522 getShowStatusBar() 531 getShowSyntaxColoring() 522 getShowTableBorders() 522 getShowToolbar() 523 getShowToolTips() 536 getShowTracingImage() 523 getShowWordWrap() 523 getSiteRoot() 449 GetSiteRootForFile() 228 getSiteRootForFile() 222 getSites() 476 getSnapDistance() 556 getSnapToGrid() 524 getSPColumnList() 256 getSPColumnListNamedParams() 257 getSPParamsAsString() 258 getStepCount() 415 getStepInstrument() 72 getStepsAsJavaScript() 416 getStyles() dreamweaver.cssStylePalette.getStyles() 365 dreamweaver.htmlStylePalette.getStyles() 421 getSystemFontList() 405 getTableExtent() 506 getTables() 258 getText() 245, 491 getTextAlignment() 393 getTextCallback() 245 getTextFormat() 393 getTokens() 500 getTracingImageOpacity() 541 getTranslatedAttribute() 26 getTranslatorInfo() 295 getTranslatorList() 539 getUndoState() 417 getUndoText() 412 getUserName() 259 getVersionArray() 205 GetVersionName() 229 612 Index getVersionName() 222 getVersionNum() 223, 229 getView() 552 getViews() 259 getWindowTitle() 553 grille de variables, commandes 35, 36 H hasCharacterMarkup() 394 hasChildNodes() pour les objets balise 26 pour les objets commentaire 28 pour les objets de document 25 pour les objets texte 27 hasTracingImage() 578 hasTranslatedAttributes() 26 htmlInspector.getShowAutoIndent() 531 htmlInspector.getShowHighlightInvalidHTML() 531 htmlInspector.getShowLineNumbers() 531 htmlInspector.getShowSyntaxColoring() 532 htmlInspector.getShowWordWrap() 532 htmlInspector.setShowAutoIndent() 532 htmlInspector.setShowHighlightInvalidHTML() 533 htmlInspector.setShowLineNumbers() 533 htmlInspector.setShowSyntaxColoring() 533 htmlInspector.setShowWordWrap() 534 I identifyBehaviorArguments() 101 image (champ), objet 19 image, objet 19 importXMLIntoTemplate() 375 increaseColspan() 507 increaseRowspan() 507 indent() 394 indentTextView() 492 InfoPrefs 228 informations sur la langue 23 initialPosition() 87 initialTabs() 88 innerHTML, propriété 26 insert() 492 insertHTML() 395 insertLibraryItem() 440 insertObject() 395 insertTableColumns() 507 insertTableRows() 508 insertText() 396 inspectBehavior() 103 inspectDynamicDataRef() 194 inspecteur de liaisons de données 187 inspecteurs de propriétés API 77 attributs traduits 305 éclair au-dessus de l'icône 305 exemple de code 80 expérience de l'utilisateur 76 fonctions requises 77 mot-clé *LOCKED* 313 pour le contenu verrouillé 313 inspectFormatDefinition() 202 inspectSelection() 78 inspectServerBehavior() 142 instructions SQL acquisition de colonnes à partir de 251 affichage des résultats 260 instrumentDocument() 422 invertSelection() 476 isColumnAutostretch() 549 isCommandChecked() 56 isDesignViewUpdated() 487 isDocumentInFrame() 388 isDomRequired() 41, 49 isRecording() 585 isReporting() 453 isSelectionValid() 487 item() 19 J JavaBeans 265 JavaScript, commandes 29 JavaScript, commandes personnalisées 29 JS_BooleanToValue() 327 JS_DefineFunction() 324 JS_DoubleToValue() 326 JS_ExecuteScript() 330 JS_GetArrayLength() 328 JS_GetElement() 329 JS_IntegerToValue() 327 JS_NewArrayObject() 328 JS_ObjectToValue() 327 JS_ObjectType() 328 JS_ReportError() 330 JS_SetElement() 329 JS_StringToValue() 326 JS_ValueToBoolean() 325 JS_ValueToDouble() 325 JS_ValueToInteger() 324 JS_ValueToObject() 326 JS_ValueToString() 324 JSBool 323 JSContext 322 JSNative 323 JSObject 323 jsval 323 L langage-script 137, 204 latin1ToNative() 501 listFolder() 238 liveDataTranslate() 444 liveDataTranslateMarkup function() 298 loadSitesFromPrefs() 466 loadTracingImage() 541 LocalURLToFilePath() 229 localURLToFilePath() 223 locateInSite() 472 M makeCellWidthsConsistent() 549 makeEditable() 477 makeNewDreamweaverFile() 477 makeNewFolder() 477 makeSizesEqual() 435 manipulation du contenu de commande d'arborescence 34 markSelectionAsEditable() 441 masqué (champ), objet 19 math, objet 19 mayLaunchFireworks() 210 menus dynamiques exemple de code 61 expérience de l'utilisateur 53 mergeTableCells() 508 minimizeRestoreAll() 556 MM TREECOLUMN 31 TREECONTROL 31 TREENODE 31 mm_jsapi.h Index 613 exemple de fichier 331 inclusion 322 MM_returnValue 95 mmcolorbutton 37 MMDB.getColumnAndTypeList() 251 MMDB.getColumnList() 251 MMDB.getColumnsOfTable() 252 MMDB.getConnectionList() 253 MMDB.getConnectionName() 253 MMDB.getConnectionString() 254 MMDB.getDriverName() 254 MMDB.getPassword() 255 MMDB.getRuntimeConnectionType() 255 MMDB.getSPColumnList() 256 MMDB.getSPColumnListNamedParams() 257 MMDB.getSPParamsAsString() 258 MMDB.getTables() 258 MMDB.getUserName() 259 MMDB.getViews() 259 MMDB.showConnectionMgrDialog() 260 MMDB.showResultset() 260 MMDB.showSPResultset() 261 MMDB.showSPResultsetNamedParams() 262 MMHttp.clearTemp() 242 MMHttp.getFile() 242 MMHttp.getFileCallback() 244 MMHttp.getText() 245 MMHttp.getTextCallback() 245 MMHttp.postText() 246 MMHttp.postTextCallback() 247 MMInfo.h 225 MMJB*(), fonctions 265 MMJB.getClasses() 267 MMJB.getClassesFromPackage() 267 MMJB.getErrorMessage() 267 MMJB.getEvents() 266 MMJB.getIndexedProperties() 266 MMJB.getMethods() 266 MMJB.getProperties() 265 MMNotes, objet 220 MMNotes.close() 220 MMNotes.filePathToLocalURL() 220 MMNotes.get() 221 MMNotes.getKeyCount() 221 MMNotes.getKeys() 221 MMNotes.getSiteRootForFile() 222 MMNotes.getVersionName() 222 MMNotes.getVersionNum() 223 614 Index MMNotes.localURLToFilePath() 223 MMNotes.open() 223 MMNotes.remove() 224 MMNotes.set() 224 mmparameterlist 36 modèle d'objet de document dans Dreamweaver 19 spécification DOM niveau 1 19 Modifier la liste de formats, menu contextuel Plus (+) 197 mot de passe (champ), objet 19 *LOCKED*, mot-clé 313 mots de passe 255 moveBehaviorDown() 350 moveBehaviorUp() 351 moveSelectionBy() 435 N nativeToLatin1() 501 navigateur, objet de 19 newBlankTemplate() 443 newBlock() 397 newEditableRegion() 441 newFromDocument() 564 newFromTemplate() 375 newHomePage() 478 newSite() 478 newStyle() dreamweaver.cssStylePalette.newStyle() 365 dreamweaver.htmlStylePalette.newStyle() 421 nextParagraph() 430 nextWord() 430, 492 Node.COMMENT_NODE 24 Node.DOCUMENT_NODE 24 Node.ELEMENT_NODE 24 nodelist objet 19 Node.TEXT_NODE 24 nodeToOffsets() dom.nodeToOffsets() 458 dreamweaver.nodeToOffsets() 565 nodeType, propriété des objets balise 26 des objets commentaire 28 des objets de document 25 des objets texte 27 nœud d'élément 26 nœud de document 25 nœud de texte 27 nœuds 24 nombre, objet 19 noms d'utilisateur 259 notifyFlashObjectChanged() 397 notifyMenuUpdated() 447 O objectExistsWithName() 182 objectTag() 42 objet, objet 19 objets ajout au menu Insertion 43 ajout au panneau Objets 43 API 40 expérience de l'utilisateur 40 offsetsToNode() dom.offsetsToNode() 459 dreamweaver.offsetsToNode() 566 onBlur 19 onChange 19 onClick 19 onFocus 19 onLoad 19 onMouseDown 19 onMouseOut 19 onMouseOver 19 onMouseUp 19 onResize 19 open() MMNotes.open() 223 site.open() 478 openDocument() 376 openDocumentFromSite() 377 openInFrame() 377 OpenNotesFile() 230 OpenNotesFilewithOpenFlags() 230 openWithApp() 370 openWithBrowseDialog() 370 openWithExternalTextEditor() 370 openWithImageEditor() 371 optimizeInFireworks() 211 option, objet 19 outdent() 398 outdentTextView() 493 outerHTML, propriété 26 P pageDown() 431, 493 pageUp() 431, 493 panneaux flottants API 85 exemple de code 91 expérience de l'utilisateur 84 questions liées aux performances 89 parentNode, propriété des objets balise 26 des objets commentaire 28 des objets de document 25 des objets texte 27 parentWindow, propriété 25 pasteServerBehavior() 143 pilotes 254 playAllPlugins() 542 playPlugin() 542 playRecordedCommand() 412 popupAction() 348 popupCommand() 567 popupServerBehavior() 463 postText() 246 postTextCallback() 247 previousParagraph() 431 previousWord() 432, 494 procédures stockées 250 acquisition des colonnes à partir de 256, 257 acquisition des paramètres 258 affichage des résultats 261, 262 processFile() 64 put() 479 Q quitApplication() 406 R read() 239 readFile() pour des objets Flash 218 reapplyBehaviors() 345 receiveArguments() dans les commandes de menu 57 dans les commandes régulières 49 recordPathOfLayer() 514 recreateCache() 479 Index 615 recreateFromDocument() 564 redo() dom.redo() 410 dreamweaver.redo() 412 referencePalette.getFontSize() dreamweaver.referencePalette.getFontSize() 343 referencePalette.setFontSize() dreamweaver.referencePalette.setFontSize() 343 refresh() 480 refreshExtData() 183 regexp, objet 19 relativeToAbsoluteURL() 450 releaseDocument() 377 reloadMenus() 447 remoteIsValid() 480 remove() 224, 239 removeAllBreakpoints() 425 removeAllSpacers() 550 removeAllTableHeights() 509 removeAllTableWidths() 509 removeAttribute() 26 removeBehavior() dom.removeBehavior() 345 dreamweaver.timelineInspector.removeBehavior() 515 removeCharacterMarkup() 398 removeCSSStyle() 361 removeEditableRegion() 441 removeFontMarkup() 398 removeFrame() 515 removeKeyframe() 515 removeLink() dom.removeLink() 399 site.removeLink() 480 RemoveNote() 230 removeObject() 516 removeSpacerFromColumn() 550 removeTimeline() 516 renameSelectedItem() 565 renameSelectedTemplate() 568 renameSelection() 481 renameTimeline() 516 replace() 382 replaceAll() 382 replaceRange() 494 replaySteps() 417 reportError() 73 reportWarning() 73 616 Index resizeSelection() 399 resizeSelectionBy() 435 resizeTo() 19 results.setResultData() 453 resWin.addItem() 454 resWin.setColumnWidths() 455 resWin.setFileList() 456 resWin.setTitle() 456 resWin.startProcessing() 456 resWin.stopProcessing() 457 rétablir, objet 19 revertDocument() 378 runCommand() 358 runTranslator() 538 S saveAll() 379 saveAllFrames() 388 saveAsCommand() 418 saveAsImage() 481 saveDocument() 379 saveDocumentAs() 380 saveDocumentAsTemplate() 380 saveFrameset() 380 saveFramesetAs() 381 saveSitesToPrefs() 467 scrollLineDown() 495, 497 scrollLineUp() 495 scrollPageDown() 496 scrollPageUp() 496 SCS 286 SCS_AfterGet() 290 SCS_AfterPut() 291 SCS_BeforeGet() 289 SCS_BeforePut() 290 SCS_canCheckin() 287 SCS_canCheckout() 286 SCS_canConnect() 285 SCS_canDelete() 288 SCS_canGet() 286 SCS_canNewFolder() 288 SCS_canPut() 286 SCS_canRename() 288 SCS_CanUndoCheckout() 287 SCS_Checkin() 279 SCS_Checkout() 279 SCS_Connect() 271 SCS_Delete() 275 SCS_Disconnect() 272 SCS_Get() 274 SCS_GetAgentInfo() 271 SCS_GetCheckoutName() 278 SCS_GetConnectionInfo() 276 SCS_GetDesignNotes() 283 SCS_GetErrorMessage() 282 SCS_GetErrorMessageLength() 281 SCS_GetFileCheckoutList() 281 SCS_GetFolderList() 273 SCS_GetFolderListLength() 273 SCS_GetMaxNoteLength() 283 SCS_GetNewFeatures() 278 SCS_GetNoteCount() 282 SCS_GetNumCheckedOut() 280 SCS_GetNumNewFeatures() 277 SCS_GetRootFolder() 272 SCS_GetRootFolderLength() 272 SCS_IsConnected() 272 SCS_IsRemoteNewer() 285 SCS_ItemExists() 276 SCS_NewFolder() 274 SCS_Put() 274 SCS_Rename() 275 SCS_SetDesignNotes() 284 SCS_SiteDeleted() 277 SCS_SiteRenamed() 277 SCS_UndoCheckout() 280 select() 19 selectAll() dom.selectAll() 460 dreamweaver.selectAll() 461 site.selectAll() 481 SelectAllCheckedOutFiles 595 selectChild() 450 selectHomePage() 482 sélection de commande de couleur pour les extensions Javascript 37 sélection, objet 19 selectionChanged() 88 selectNewer() 482 selectParent() 451 selectParentTag() 497 selectTable() 460 set() 224 setActiveWindow() 556 setAsHomePage() 483 setAttribute() 26 setAttributeWithErrorChecking() 399 setAutoplay() 517 setColumnAutostretch() 550 setConnectionState() 483 setCurrentFrame() 517 setCurrentLine() 497 setCurrentSite() 483 setEditNoFramesContent() 524 setFloaterVisibility() 557 setFocus() 484 setHideAllFloaters() 534 setHideAllVisualAidst() 524 setInterval() 19 setLayerTag() 436 setLayout() 484 setLinkHref() 400 setLinkTarget() 400 setLinkVisibility() 485 setListBoxKind() 401 setListTag() 402 setLiveDataError() 445 setLiveDataMode() 445 setLoop() 517 setMenuText() 57 SetNote() 231 setPreventLayerOverlaps() 525 setPrimaryView() 558 setRulerOrigin() 542 setRulerUnits() 543 setSelectedBehavior() 352 setSelectedNode() 460 setSelection() dom.setSelection() 461 dreamweaver.setSelection() 567 site.setSelection() 485 setShowDependents() 536 setShowFrameBorders() 525 setShowGrid() 526 setShowHeadView() 526 setShowHiddenFiles() 537 setShowHighlightInvalidHTML() 526 setShowImageMaps() 527 setShowInvisibleElements() 527 setShowLayerBorders() 527 setShowLayoutTableTabs() 551 setShowLayoutView() 551 setShowLineNumbers() 528 setShowPageTitles() 537 Index 617 setShowRulers() 528 setShowStatusBar() 535 setShowTableBorders() 529 setShowToolbar() 529 setShowToolTips() 537 setShowTracingImage() 529 setShowWordWrap() 530 setSnapDistance() 558 setSnapToGrid() 530 setTableCellTag() 509 setTableColumns() 510 setTableRows() 510 setTextAlignment() 402 setTextFieldKind() 402 setTimeout() 19 dans les panneaux flottants 89 utilisation avec FWLaunch 213 setTracingImageOpacity() 544 setTracingImagePosition() 543 setUndoState() 419 setUpComplexFind() 383 setUpComplexFindReplace() 383 setUpFind() 384 setUpFindReplace() 385 setView() 553 showAboutBox() 406 showConnectionMgrDialog() 260 showDynamicData() 407 showFindDialog() 386 showFindReplaceDialog() 387 showFontColorDialog() 403 showGridSettingsDialog() 545 showInsertTableRowsOrColumnsDialog() 510 showListPropertiesDialog() 401 showLiveDataDialog() 446 showPagePropertiesDialog() 409 showPreferencesDialog() 408 showProperties() 558 showQuickTagEditor() 452 showReportsDialog() 453 showResultset() 260 showSPResultset() 261 showSPResultsetNamedParams() 262 Shutdown, dossier 29 site, objet méthodes 334 propriétés 23 618 Index site.addLinkToExistingFile() 467 site.addLinkToNewFile() 468 site.browseDocument() 588 site.canAddLinkToFile() 588 site.canChangeLink() 588 site.canCheckIn() 589 site.canCheckOut() 589 site.canConnect() 590 site.canFindLinkSource() 590 site.canGet() 590 site.canLocateInSite() 591 site.canMakeEditable() 591 site.canMakeNewFileOrFolder() 591 site.canOpen() 592 site.canPut() 592 site.canRecreateCache() 592 site.canRefresh() 593 site.canRemoveLink() 593 site.canSelectAllCheckedOutFiles() 594 site.canSelectNewer() 594 site.canSetLayout() 593 site.canSynchronize() 595 site.canUndoCheckOut() 595 site.canViewAsRoot() 595 site.changeLink() 468 site.changeLinkSitewide() 468 site.checkIn() 469 site.checkLinks() 469 site.checkOut() 470 site.checkTargetBrowsers() 470 site.defineSites() 471 site.deleteSelection() 471 site.findLinkSource() 472 site.get() 472 site.getCheckOutUser() 473 site.getCheckOutUserForFile() 474 site.getConnectionState() 474 site.getCurrentSite() 474 site.getFocus() 475 site.getLinkVisibility() 475 site.getSelection() 476 site.getShowDependents() 535 site.getShowHiddenFiles() 535 site.getShowPageTitles() 536 site.getShowToolTips() 536 site.getSites() 476 site.invertSelection() 476 site.locateInSite() 472 site.makeEditable() 477 site.makeNewDreamweaverFile() 477 site.makeNewFolder() 477 site.newHomePage() 478 site.newSite() 478 site.open() 478 site.put() 479 site.recreateCache() 479 site.refresh() 480 site.remoteIsValid() 480 site.removeLink() 480 site.renameSelection() 481 site.saveAsImage() 481 site.selectAll() 481 site.SelectAllCheckedOutFiles() 595 site.selectHomePage() 482 site.selectNewer() 482 site.setAsHomePage() 483 site.setConnectionState() 483 site.setCurrentSite() 483 site.setFocus() 484 site.setLayout() 484 site.setLinkVisibility() 485 site.setSelection() 485 site.setShowDependents() 536 site.setShowHiddenFiles() 537 site.setShowPageTitles() 537 site.setShowToolTips() 537 site.synchronize() 485 site.undoCheckOut() 486 site.viewAsRoot() 486 snapTracingImageToSelection() 544 splitFrame() 389 splitTableCell() 511 startBlock() 74 startDebugger() 425 startOfDocument() 432, 498 startOfLine() 433, 498 startRecording() 413 Startup, dossier 29 statusCode, propriété 241 stopAllPlugins() 544 stopPlugin() 545 stopRecording() 413 stripTag() 451 structure de itemInfo 289 structure XML 152 SWFFile.createFile() 215 SWFFile.getNaturalSize() 217 SWFFile.getObjectType() 217 SWFFile.readFile() 218 synchronize() 485 synchronizeDocument() 499 T tableau, objet 19 tables 258 acquisition des colonnes 252 tagName, propriété 26 textarea, objet 19 texte (champ) objet 19 Texte dynamique, boîte de dialogue 187 texte, objet 27 toggleFloater() 559 topPage() 498 traducteurs attribut 300 blocs/balises 306 débogage 316 traducteurs d'attributs 299 création 300 débogage 316 exemple de code 301 traducteurs de blocs/balises 299 débogage 316 exemple de code 307 traducteurs de données API 295 débogage 316 expérience de l'utilisateur 294 fonctions requises 295 pour les attributs 300 pour les balises ou les blocs de code 306 types 299 translateMarkup() 297 type d'opérateur 233 U undo() dom.undo() 411 dreamweaver.undo() 414 undoCheckOut() 486 unescape() 19 updateCurrentPage() 442 Index 619 updatePages() 442 updateParticipant() 182 updateReference() 559 URL javascript 28 URL, propriété 25 useTranslatedSource() 539 utilisation du gestionnaire de traduction 183 V validateFireworks() 212 viewAsRoot() 486 W W3C 19 windowDimensions() 66 dans les actions de comportement 103 dans les commandes de menu 58 dans les commandes régulières 49 dans les fichiers d'objet 42 wrapSelection() 499 wrapTag() 452 write() 239 Z zones réactives, fonctions 434 620 Index
Documents pareils
"Bien démarrer avec Dreamweaver MX" (PDF - 4,4
FreeHand, FreeHand Graphics Studio, Generator, Generator Developer’s Studio, Generator Dynamic Graphics Server, Knowledge
Objects, Knowledge Stream, Knowledge Track, Lingo, Live Effects, Macromedia...