macromedia
Transcription
macromedia
000ExtendingDWU.book Page 1 Thursday, June 8, 2000 3:38 PM macromedia ® DREAMWEAVER 3 ™ Extension de Dreamweaver et Dreamweaver UltraDev ™ macromedia 000ExtendingDWU.book Page 2 Thursday, June 8, 2000 3:38 PM 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 certains pays. Les autres noms de produits, ainsi que les autres 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 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 CIDESSUS 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 ZUD10M200F Remerciements Gestion de projet : Sheila McGinn Rédaction : Lori Hylan et Denise Lee Production de l’aide et de la documentation imprimée : Chris Basmajian et Masayo Noda Directeur de localisation : Kristin Conradi Remerciements spéciaux à Heidi Bauer, Margaret Dumas, Jean Fitzgerald, Karen Gee, Jed Hartman, Steven Johnson, Sho Kuwamoto, Jay London, Joe Marini, Lisa Miller, Justin Palm, Bob Tartar, Scott Richards, Raymond Lim, Yoko Vogt, Chris Bank, Peter Von Dem Hagen, Vincent Truong, Katja Sommer, Veronica Luongo, Kazue Watanabe, Luciano Arruda, Daniela Nigrelli-Harding, Sabine Hathaway, Gwenhaël Jacq, Karen Catlin, Mike Sundermeyer, Victor Grigorieff et SDL International. Première édition : Mai 2000 Macromedia, Inc. 600 Townsend St. San Francisco, CA 94103 2 000ExtendingDWU.book Page 3 Thursday, June 8, 2000 3:38 PM TABLE DES MATIERES Extension de Dreamweaver - Présentation. . . . . . . 23 Conditions préalables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 Errata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 Le Modèle Objet de Document (DOM) . . . . . . . . . . 25 Modèle Objet de Document dans Dreamweaver . . . . . . . . . . . . . . . . . .25 L’objet dreamweaver et ses propriétés . . . . . . . . . . . . . . . . . . . . . . .29 Informations sur le DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Propriétés et méthodes de l’objet document . . . . . . . . . . . . . . . . . .30 Propriétés et méthodes des objets tag HTML . . . . . . . . . . . . . . . . .31 Propriétés et méthodes des objets text. . . . . . . . . . . . . . . . . . . . . . .33 Propriétés et méthodes des objets comment . . . . . . . . . . . . . . . . . .33 Commandes de l’arborescence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Fonctionnement de JavaScript dans les fichiers d’extension . . . . . . . . . .36 Exécution des scripts au démarrage ou à la fermeture . . . . . . . . . . .37 API JavaScript de Dreamweaver . . . . . . . . . . . . . . . . 39 Description des objets de l’API. . . . . . . . . . . . . . . . . . . . . . . . . . . .40 A propos des activateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 Organisation de ce chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41 La fonction la plus importante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41 dreamweaver.getDocumentDOM() . . . . . . . . . . . . . . . . . . . . . . . .41 Fonctions relatives aux comportements . . . . . . . . . . . . . . . . . . . . . . . . .42 dom.addBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 dom.getBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 dom.reapplyBehaviors() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 dom.removeBehavior(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 dreamweaver.getBehaviorElement() . . . . . . . . . . . . . . . . . . . . . . . .43 dreamweaver.getBehaviorTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 dreamweaver.popupAction() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 dreamweaver.behaviorInspector.getBehaviorAt() . . . . . . . . . . . . . .46 3 000ExtendingDWU.book Page 4 Thursday, June 8, 2000 3:38 PM dreamweaver.behaviorInspector.getBehaviorCount() . . . . . . . . . . .47 dreamweaver.behaviorInspector.getSelectedBehavior() . . . . . . . . . .47 dreamweaver.behaviorInspector.moveBehaviorDown(). . . . . . . . . .48 dreamweaver.behaviorInspector.moveBehaviorUp() . . . . . . . . . . . .48 dreamweaver.behaviorInspector.setSelectedBehavior() . . . . . . . . . .49 Fonctions relatives au Presse-papiers . . . . . . . . . . . . . . . . . . . . . . . . . . .50 dom.clipCopy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50 dom.clipCopyText(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50 dom.clipCut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50 dom.clipPaste() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 dom.clipPasteText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52 dreamweaver.clipCopy(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52 dreamweaver.clipCut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 dreamweaver.clipPaste() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 dreamweaver.getClipboardText() . . . . . . . . . . . . . . . . . . . . . . . . . .53 Fonctions relatives aux commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 dreamweaver.editCommandList() . . . . . . . . . . . . . . . . . . . . . . . . .53 dreamweaver.runCommand() . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Fonctions relatives aux conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 dom.convertLayersToTable() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 dom.convertTablesToLayers() . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 dom.convertTo30() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 Fonctions relatives aux styles CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 dom.applyCSSStyle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 dom.removeCSSStyle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 dreamweaver.cssStylePalette.deleteSelectedStyle() . . . . . . . . . . . . . .56 dreamweaver.cssStylePalette.duplicateSelectedStyle() . . . . . . . . . . .57 dreamweaver.cssStylePalette.editSelectedStyle() . . . . . . . . . . . . . . .57 dreamweaver.cssStylePalette.editStyleSheet() . . . . . . . . . . . . . . . . .57 dreamweaver.cssStylePalette.getSelectedStyle() . . . . . . . . . . . . . . . .57 dreamweaver.cssStylePalette.getSelectedTarget() . . . . . . . . . . . . . . .58 dreamweaver.cssStylePalette.getStyles(). . . . . . . . . . . . . . . . . . . . . .59 dreamweaver.cssStylePalette.newStyle() . . . . . . . . . . . . . . . . . . . . .59 Fonctions relatives aux applications externes . . . . . . . . . . . . . . . . . . . . .60 dreamweaver.browseDocument() . . . . . . . . . . . . . . . . . . . . . . . . . .60 dreamweaver.getBrowserList() . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 dreamweaver.getExtensionEditorList() . . . . . . . . . . . . . . . . . . . . . .61 dreamweaver.getPrimaryBrowser() . . . . . . . . . . . . . . . . . . . . . . . . .61 dreamweaver.getPrimaryExtensionEditor(). . . . . . . . . . . . . . . . . . .62 dreamweaver.getSecondaryBrowser() . . . . . . . . . . . . . . . . . . . . . . .62 4 Table des matières 000ExtendingDWU.book Page 5 Thursday, June 8, 2000 3:38 PM dreamweaver.openWithApp() . . . . . . . . . . . . . . . . . . . . . . . . . . . .62 dreamweaver.openWithBrowseDialog() . . . . . . . . . . . . . . . . . . . . .62 dreamweaver.openWithExternalTextEditor() . . . . . . . . . . . . . . . . .63 dreamweaver.openWithImageEditor() . . . . . . . . . . . . . . . . . . . . . .63 Fonctions relatives aux manipulations de fichiers. . . . . . . . . . . . . . . . . .63 dreamweaver.browseForFileURL() . . . . . . . . . . . . . . . . . . . . . . . . .64 dreamweaver.browseForFolderURL() . . . . . . . . . . . . . . . . . . . . . . .64 dreamweaver.closeDocument(). . . . . . . . . . . . . . . . . . . . . . . . . . . .65 dreamweaver.createDocument() . . . . . . . . . . . . . . . . . . . . . . . . . . .65 dreamweaver.exportCSS() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 dreamweaver.exportEditableRegionsAsXML() . . . . . . . . . . . . . . . .65 dreamweaver.getRecentFileList() . . . . . . . . . . . . . . . . . . . . . . . . . .66 dreamweaver.importXMLIntoTemplate(). . . . . . . . . . . . . . . . . . . .66 dreamweaver.newFromTemplate() . . . . . . . . . . . . . . . . . . . . . . . . .66 dreamweaver.openDocument() . . . . . . . . . . . . . . . . . . . . . . . . . . .66 dreamweaver.openDocumentFromSite() . . . . . . . . . . . . . . . . . . . .68 dreamweaver.openInFrame() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68 dreamweaver.releaseDocument() . . . . . . . . . . . . . . . . . . . . . . . . . .68 dreamweaver.revertDocument() . . . . . . . . . . . . . . . . . . . . . . . . . . .69 dreamweaver.saveAll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 dreamweaver.saveDocument() . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 dreamweaver.saveDocumentAs() . . . . . . . . . . . . . . . . . . . . . . . . . .70 dreamweaver.saveDocumentAsTemplate() . . . . . . . . . . . . . . . . . . .70 dreamweaver.saveFrameset(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 dreamweaver.saveFramesetAs() . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 Fonctions relatives à la recherche et au remplacement . . . . . . . . . . . . . .71 dreamweaver.findNext() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 dreamweaver.replace() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 dreamweaver.replaceAll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 dreamweaver.setUpComplexFind() . . . . . . . . . . . . . . . . . . . . . . . .72 dreamweaver.setUpComplexFindReplace() . . . . . . . . . . . . . . . . . .73 dreamweaver.setUpFind(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 dreamweaver.setUpFindReplace(). . . . . . . . . . . . . . . . . . . . . . . . . .74 dreamweaver.showFindDialog() . . . . . . . . . . . . . . . . . . . . . . . . . . .75 dreamweaver.showFindReplaceDialog() . . . . . . . . . . . . . . . . . . . . .76 Fonctions relatives aux cadres et aux jeux de cadres . . . . . . . . . . . . . . . .76 dom.getFrameNames(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76 dom.splitFrame() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76 Fonctions de modification générales . . . . . . . . . . . . . . . . . . . . . . . . . . .77 dom.applyCharacterMarkup() . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Table des matières 5 000ExtendingDWU.book Page 6 Thursday, June 8, 2000 3:38 PM dom.applyFontMarkup() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 dom.deleteSelection(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 dom.editAttribute() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 dom.exitBlock() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 dom.getFontMarkup() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 dom.getLinkHref() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 dom.getLinkTarget() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 dom.getListTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 dom.getTextAlignment() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 dom.getTextFormat() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 dom.hasCharacterMarkup(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 dom.indent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 dom.insertHTML() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 dom.insertObject() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 dom.insertText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 dom.newBlock() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 dom.outdent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 dom.removeCharacterMarkup(). . . . . . . . . . . . . . . . . . . . . . . . . . .83 dom.removeFontMarkup(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83 dom.removeLink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83 dom.resizeSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 dom.setAttributeWithErrorChecking() . . . . . . . . . . . . . . . . . . . . .84 dom.setLinkHref(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 dom.setLinkTarget() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 dom.setListBoxKind() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85 dom.showListPropertiesDialog() . . . . . . . . . . . . . . . . . . . . . . . . . .85 dom.setListTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85 dom.setTextAlignment() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 dom.setTextFieldKind() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 dom.showFontColorDialog() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 dreamweaver.deleteSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 dreamweaver.editFontList() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 dreamweaver.getFontList() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 dreamweaver.getKeyState(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 Fonctions globales relatives aux applications . . . . . . . . . . . . . . . . . . . . .88 dreamweaver.getShowDialogsOnInsert() . . . . . . . . . . . . . . . . . . . .88 dreamweaver.quitApplication() . . . . . . . . . . . . . . . . . . . . . . . . . . .88 dreamweaver.showAboutBox() . . . . . . . . . . . . . . . . . . . . . . . . . . . .88 dreamweaver.showDynamicDataDialog(). . . . . . . . . . . . . . . . . . . .88 dreamweaver.showPreferencesDialog() . . . . . . . . . . . . . . . . . . . . . .89 6 Table des matières 000ExtendingDWU.book Page 7 Thursday, June 8, 2000 3:38 PM Fonctions globales relatives aux documents. . . . . . . . . . . . . . . . . . . . . .90 dom.checkSpelling() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 dom.checkTargetBrowsers() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 dom.showPagePropertiesDialog(). . . . . . . . . . . . . . . . . . . . . . . . . .90 dreamweaver.getElementRef() . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 Fonctions relatives à l’historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 dom.redo(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 dom.undo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 dreamweaver.getRedoText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 dreamweaver.getUndoText(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 dreamweaver.playRecordedCommand() . . . . . . . . . . . . . . . . . . . . .93 dreamweaver.redo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 dreamweaver.startRecording() . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 dreamweaver.stopRecording() . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 dreamweaver.undo(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94 dreamweaver.historyPalette.clearSteps() . . . . . . . . . . . . . . . . . . . . .94 dreamweaver.historyPalette.copySteps() . . . . . . . . . . . . . . . . . . . . .94 dreamweaver.historyPalette.getSelectedSteps() . . . . . . . . . . . . . . . .94 dreamweaver.historyPalette.getStepCount() . . . . . . . . . . . . . . . . . .95 dreamweaver.historyPalette.getStepsAsJavaScript() . . . . . . . . . . . . .95 dreamweaver.historyPalette.getUndoState() . . . . . . . . . . . . . . . . . .96 dreamweaver.historyPalette.replaySteps() . . . . . . . . . . . . . . . . . . . .96 dreamweaver.historyPalette.saveAsCommand() . . . . . . . . . . . . . . .97 dreamweaver.historyPalette.setSelectedSteps() . . . . . . . . . . . . . . . .97 dreamweaver.historyPalette.getUndoState() . . . . . . . . . . . . . . . . . .97 Fonctions relatives aux styles HTML. . . . . . . . . . . . . . . . . . . . . . . . . . .98 dom.applyHTMLStyle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98 dreamweaver.htmlStylePalette.deleteSelectedStyle() . . . . . . . . . . . .98 dreamweaver.htmlStylePalette.duplicateSelectedStyle(). . . . . . . . . .98 dreamweaver.htmlStylePalette.editSelectedStyle(). . . . . . . . . . . . . .98 dreamweaver.htmlStylePalette.getSelectedStyle() . . . . . . . . . . . . . .99 dreamweaver.htmlStylePalette.getStyles() . . . . . . . . . . . . . . . . . . . .99 dreamweaver.htmlStylePalette.newStyle() . . . . . . . . . . . . . . . . . . . .99 dreamweaver.htmlStylePalette.setSelectedStyle(). . . . . . . . . . . . . . .99 Fonctions relatives au clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 dom.arrowDown() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 dom.arrowLeft(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 dom.arrowRight() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 dom.arrowUp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 dom.backspaceKey() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 Table des matières 7 000ExtendingDWU.book Page 8 Thursday, June 8, 2000 3:38 PM dom.deleteKey() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 dom.endOfDocument(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 dom.endOfLine(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 dom.nextParagraph() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 dom.nextWord() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 dom.pageDown(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 dom.pageUp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 dom.previousParagraph() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 dom.previousWord() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 dom.startOfDocument() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 dom.startOfLine() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 Fonctions relatives aux calques et aux cartes graphiques. . . . . . . . . . . .105 dom.align() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 dom.arrange() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 dom.makeSizesEqual() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 dom.moveSelectionBy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 dom.resizeSelectionBy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 dom.setLayerTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107 Fonctions relatives aux éléments de bibliothèque et aux modèles . . . . .108 dom.applyTemplate(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 dom.detachFromLibrary() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 dom.detachFromTemplate(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 dom.getAttachedTemplate(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 dom.getEditableRegionList() . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 dom.getIsLibraryDocument() . . . . . . . . . . . . . . . . . . . . . . . . . . .109 dom.getIsTemplateDocument() . . . . . . . . . . . . . . . . . . . . . . . . . .109 dom.getSelectedEditableRegion(). . . . . . . . . . . . . . . . . . . . . . . . .110 dom.insertLibraryItem() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 dom.markSelectionAsEditable() . . . . . . . . . . . . . . . . . . . . . . . . . .110 dom.newEditableRegion() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 dom.removeEditableRegion(). . . . . . . . . . . . . . . . . . . . . . . . . . . .111 dom.updateCurrentPage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 dreamweaver.updatePages() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 dreamweaver.libraryPalette.deleteSelectedItem(). . . . . . . . . . . . . .112 dreamweaver.libraryPalette.getSelectedItem() . . . . . . . . . . . . . . . .112 dreamweaver.libraryPalette.newFromDocument() . . . . . . . . . . . .112 dreamweaver.libraryPalette.recreateFromDocument(). . . . . . . . . .112 dreamweaver.libraryPalette.renameSelectedItem() . . . . . . . . . . . .113 dreamweaver.templatePalette.deleteSelectedTemplate() . . . . . . . .113 dreamweaver.templatePalette.getSelectedTemplate(). . . . . . . . . . .113 8 Table des matières 000ExtendingDWU.book Page 9 Thursday, June 8, 2000 3:38 PM dreamweaver.templatePalette.newBlankTemplate() . . . . . . . . . . .113 dreamweaver.templatePalette.renameSelectedTemplate() . . . . . . .114 Fonctions Live Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 dreamweaver.getLiveDataInitTags() . . . . . . . . . . . . . . . . . . . . . . .114 dreamweaver.getLiveDataMode() . . . . . . . . . . . . . . . . . . . . . . . . .114 dreamweaver.liveDataTranslate() . . . . . . . . . . . . . . . . . . . . . . . . .115 dreamweaver.setLiveDataError() . . . . . . . . . . . . . . . . . . . . . . . . .115 dreamweaver.setLiveDataMode() . . . . . . . . . . . . . . . . . . . . . . . . .116 dreamweaver.showLiveDataDialog() . . . . . . . . . . . . . . . . . . . . . .116 Fonctions relatives aux menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 dreamweaver.getMenuNeedsUpdating(). . . . . . . . . . . . . . . . . . . .117 dreamweaver.notifyMenuUpdated(). . . . . . . . . . . . . . . . . . . . . . .117 dreamweaver.reloadMenus(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 Fonctions relatives aux chemins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 dreamweaver.getConfigurationPath() . . . . . . . . . . . . . . . . . . . . . .118 dreamweaver.getDocumentPath(). . . . . . . . . . . . . . . . . . . . . . . . .118 dreamweaver.getSiteRoot(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 dreamweaver.relativeToAbsoluteURL() . . . . . . . . . . . . . . . . . . . .119 Fonctions relatives à Quick Tag Editor . . . . . . . . . . . . . . . . . . . . . . . .120 dom.selectChild() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 dom.selectParent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 dom.stripTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 dom.wrapTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 dreamweaver.showQuickTagEditor() . . . . . . . . . . . . . . . . . . . . . .121 Fonctions relatives à la sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 dom.getSelectedNode() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 dom.getSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 dom.nodeToOffsets(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 dom.offsetsToNode() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 dom.selectAll(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 dom.selectTable(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 dom.setSelectedNode() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 dom.setSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 dreamweaver.selectAll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 Fonctions de comportement de serveur . . . . . . . . . . . . . . . . . . . . . . . .125 dreamweaver.serverBehaviorInspector.findAllServerBehaviors() . .126 dreamweaver.serverBehaviorInspector.getServerBehaviors() . . . . .126 dreamweaver.popupServerBehavior() . . . . . . . . . . . . . . . . . . . . . .126 Fonctions modèle de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 dom.serverModel.getServerLanguage(). . . . . . . . . . . . . . . . . . . . .127 Table des matières 9 000ExtendingDWU.book Page 10 Thursday, June 8, 2000 3:38 PM dom.serverModel.getServerName() . . . . . . . . . . . . . . . . . . . . . . .127 dom.serverModel.getServerVersion() . . . . . . . . . . . . . . . . . . . . . .128 Fonctions relatives aux sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128 site.addLinkToExistingFile() . . . . . . . . . . . . . . . . . . . . . . . . . . . .128 site.addLinkToNewFile() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128 site.changeLinkSitewide() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 site.changeLink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 site.checkIn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 site.checkLinks() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130 site.checkOut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130 site.checkTargetBrowsers() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130 site.defineSites() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 site.deleteSelection(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 site.locateInSite() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 site.findLinkSource() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 site.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 site.getCheckOutUser() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 site.getCheckOutUserForFile(). . . . . . . . . . . . . . . . . . . . . . . . . . .132 site.getConnectionState() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 site.getCurrentSite(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 site.getFocus() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 site.getLinkVisibility() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 site.getSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 site.getSites() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 site.invertSelection(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 site.makeEditable() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 site.makeNewDreamweaverFile() . . . . . . . . . . . . . . . . . . . . . . . . .135 site.makeNewFolder() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 site.newHomePage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 site.newSite() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 site.open() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 site.put() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 site.recreateCache() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 site.refresh() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 site.remoteIsValid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 site.removeLink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 site.renameSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 site.saveAsImage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 site.selectAll(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 site.selectHomePage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 10 Table des matières 000ExtendingDWU.book Page 11 Thursday, June 8, 2000 3:38 PM site.selectNewer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 site.setAsHomePage(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 site.setConnectionState() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 site.setCurrentSite() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 site.setFocus(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 site.setLayout(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 site.setLinkVisibility() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 site.setSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 site.synchronize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 site.undoCheckOut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 site.viewAsRoot() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Fonctions de manipulation de chaînes. . . . . . . . . . . . . . . . . . . . . . . . .141 dreamweaver.getTokens() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 dreamweaver.latin1ToNative() . . . . . . . . . . . . . . . . . . . . . . . . . . .142 dreamweaver.nativeToLatin1() . . . . . . . . . . . . . . . . . . . . . . . . . . .142 dreamweaver.scanSourceString() . . . . . . . . . . . . . . . . . . . . . . . . .144 Fonctions de modification des tableaux . . . . . . . . . . . . . . . . . . . . . . . .145 dom.convertWidthsToPercent() . . . . . . . . . . . . . . . . . . . . . . . . . .145 dom.convertWidthsToPixels() . . . . . . . . . . . . . . . . . . . . . . . . . . .145 dom.decreaseColspan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145 dom.decreaseRowspan(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 dom.deleteTableColumn() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 dom.deleteTableRow() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 dom.doDeferredTableUpdate() . . . . . . . . . . . . . . . . . . . . . . . . . .146 dom.getTableExtent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 dom.increaseColspan(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 dom.increaseRowspan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 dom.insertTableColumns() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 dom.insertTableRows() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 dom.mergeTableCells() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 dom.removeAllTableHeights() . . . . . . . . . . . . . . . . . . . . . . . . . . .148 dom.removeAllTableWidths() . . . . . . . . . . . . . . . . . . . . . . . . . . .148 dom.setTableCellTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 dom.setTableColumns(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 dom.setTableRows(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 dom.showInsertTableRowsOrColumnsDialog(). . . . . . . . . . . . . .149 dom.splitTableCell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 Fonctions relatives aux scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 dreamweaver.timelineInspector.addBehavior() . . . . . . . . . . . . . . .150 dreamweaver.timelineInspector.addFrame() . . . . . . . . . . . . . . . . .150 Table des matières 11 000ExtendingDWU.book Page 12 Thursday, June 8, 2000 3:38 PM dreamweaver.timelineInspector.addKeyframe() . . . . . . . . . . . . . .151 dreamweaver.timelineInspector.addObject(). . . . . . . . . . . . . . . . .151 dreamweaver.timelineInspector.addTimeline() . . . . . . . . . . . . . . .151 dreamweaver.timelineInspector.changeObject() . . . . . . . . . . . . . .151 dreamweaver.timelineInspector.getAutoplay() . . . . . . . . . . . . . . .152 dreamweaver.timelineInspector.getCurrentFrame() . . . . . . . . . . .152 dreamweaver.timelineInspector.getLoop() . . . . . . . . . . . . . . . . . .152 dreamweaver.timelineInspector.recordPathOfLayer() . . . . . . . . . .152 dreamweaver.timelineInspector.removeBehavior() . . . . . . . . . . . .152 dreamweaver.timelineInspector.removeFrame() . . . . . . . . . . . . . .153 dreamweaver.timelineInspector.removeKeyframe(). . . . . . . . . . . .153 dreamweaver.timelineInspector.removeObject() . . . . . . . . . . . . . .153 dreamweaver.timelineInspector.removeTimeline() . . . . . . . . . . . .153 dreamweaver.timelineInspector.renameTimeline() . . . . . . . . . . . .153 dreamweaver.timelineInspector.setAutoplay(). . . . . . . . . . . . . . . .154 dreamweaver.timelineInspector.setCurrentFrame(). . . . . . . . . . . .154 dreamweaver.timelineInspector.setLoop(). . . . . . . . . . . . . . . . . . .154 Fonctions à bascule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 dom.getEditNoFramesContent() . . . . . . . . . . . . . . . . . . . . . . . . .155 dom.getPreventLayerOverlaps() . . . . . . . . . . . . . . . . . . . . . . . . . .155 dom.getShowFrameBorders(). . . . . . . . . . . . . . . . . . . . . . . . . . . .155 dom.getShowGrid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 dom.getShowHeadView() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 dom.getShowImageMaps() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156 dom.getShowLayerBorders() . . . . . . . . . . . . . . . . . . . . . . . . . . . .156 dom.getShowRulers(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156 dom.getShowTableBorders() . . . . . . . . . . . . . . . . . . . . . . . . . . . .156 dom.getShowTracingImage() . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 dom.getSnapToGrid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 dom.setEditNoFramesContent() . . . . . . . . . . . . . . . . . . . . . . . . .157 dom.setPreventLayerOverlaps() . . . . . . . . . . . . . . . . . . . . . . . . . .158 dom.setShowFrameBorders() . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 dom.setShowGrid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 dom.setShowHeadView(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 dom.setShowImageMaps() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 dom.setShowLayerBorders(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 dom.setShowRulers() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 dom.setShowTableBorders(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 dom.setShowTracingImage() . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 dom.setSnapToGrid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 12 Table des matières 000ExtendingDWU.book Page 13 Thursday, June 8, 2000 3:38 PM dreamweaver.getHideAllFloaters() . . . . . . . . . . . . . . . . . . . . . . . .160 dreamweaver.getShowInvisibleElements() . . . . . . . . . . . . . . . . . .160 dreamweaver.getShowStatusBar() . . . . . . . . . . . . . . . . . . . . . . . . .160 dreamweaver.setHideAllFloaters() . . . . . . . . . . . . . . . . . . . . . . . .161 dreamweaver.setShowInvisibleElements() . . . . . . . . . . . . . . . . . . .161 dreamweaver.setShowStatusBar() . . . . . . . . . . . . . . . . . . . . . . . . .161 site.getShowDependents() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161 site.getShowHiddenFiles() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161 site.getShowPageTitles(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 site.getShowToolTips(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 site.setShowDependents() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 site.setShowHiddenFiles() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 site.setShowPageTitles() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 site.setShowToolTips() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 Fonctions relatives à la traduction (conversion) de données . . . . . . . . .163 dom.runTranslator() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 dreamweaver.editLockedRegions() . . . . . . . . . . . . . . . . . . . . . . . .164 dreamweaver.getTranslatorList(). . . . . . . . . . . . . . . . . . . . . . . . . .164 dreamweaver.useTranslatedSource() . . . . . . . . . . . . . . . . . . . . . . .164 Fonctions relatives à la mise en forme visuelle . . . . . . . . . . . . . . . . . . .165 dom.getRulerOrigin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165 dom.getRulerUnits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165 dom.getTracingImageOpacity() . . . . . . . . . . . . . . . . . . . . . . . . . .166 dom.loadTracingImage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 dom.playAllPlugins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 dom.playPlugin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 dom.setRulerOrigin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 dom.setRulerUnits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 dom.setTracingImagePosition() . . . . . . . . . . . . . . . . . . . . . . . . . .167 dom.setTracingImageOpacity() . . . . . . . . . . . . . . . . . . . . . . . . . .167 dom.snapTracingImageToSelection() . . . . . . . . . . . . . . . . . . . . . .168 dom.stopAllPlugins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 dom.stopPlugin(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 dreamweaver.arrangeFloatingPalettes() . . . . . . . . . . . . . . . . . . . . .168 dreamweaver.showGridSettingsDialog() . . . . . . . . . . . . . . . . . . . .169 Fonctions relatives aux fenêtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 dom.getFocus() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 dom.getWindowTitle() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 dreamweaver.getActiveWindow() . . . . . . . . . . . . . . . . . . . . . . . . .170 dreamweaver.getDocumentList() . . . . . . . . . . . . . . . . . . . . . . . . .170 Table des matières 13 000ExtendingDWU.book Page 14 Thursday, June 8, 2000 3:38 PM dreamweaver.getFocus() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170 dreamweaver.getFloaterVisibility() . . . . . . . . . . . . . . . . . . . . . . . .171 dreamweaver.setActiveWindow() . . . . . . . . . . . . . . . . . . . . . . . . .171 dreamweaver.setFloaterVisibility() . . . . . . . . . . . . . . . . . . . . . . . .171 dreamweaver.showProperties() . . . . . . . . . . . . . . . . . . . . . . . . . . .172 dreamweaver.toggleFloater(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .172 Fonctions déconseillées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172 dreamweaver.getBehaviorEvent() . . . . . . . . . . . . . . . . . . . . . . . . .173 dreamweaver.getObjectRefs() . . . . . . . . . . . . . . . . . . . . . . . . . . . .173 dreamweaver.getObjectTags(). . . . . . . . . . . . . . . . . . . . . . . . . . . .174 dreamweaver.getSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 dreamweaver.nodeToOffsets() . . . . . . . . . . . . . . . . . . . . . . . . . . .176 dreamweaver.offsetsToNode() . . . . . . . . . . . . . . . . . . . . . . . . . . .176 dreamweaver.popupCommand() . . . . . . . . . . . . . . . . . . . . . . . . .176 dreamweaver.setSelection(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 Activateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 dom.canAlign() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 dom.canApplyTemplate(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178 dom.canArrange() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178 dom.canClipCopyText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178 dom.canClipPaste() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178 dom.canClipPasteText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 dom.canConvertLayersToTable() . . . . . . . . . . . . . . . . . . . . . . . . .179 dom.canConvertTablesToLayers() . . . . . . . . . . . . . . . . . . . . . . . .179 dom.canDecreaseColspan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 dom.canDecreaseRowspan() . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 dom.canDeleteTableColumn(). . . . . . . . . . . . . . . . . . . . . . . . . . .180 dom.canDeleteTableRow(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 dom.canEditNoFramesContent(). . . . . . . . . . . . . . . . . . . . . . . . .180 dom.canIncreaseColspan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 dom.canIncreaseRowspan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 dom.canInsertTableColumns(). . . . . . . . . . . . . . . . . . . . . . . . . . .181 dom.canInsertTableRows(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 dom.canMakeNewEditableRegion() . . . . . . . . . . . . . . . . . . . . . .181 dom.canMarkSelectionAsEditable() . . . . . . . . . . . . . . . . . . . . . . .182 dom.canMergeTableCells() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182 dom.canPlayPlugin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182 dom.canRedo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182 dom.canRemoveEditableRegion() . . . . . . . . . . . . . . . . . . . . . . . .182 dom.canSelectTable() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 14 Table des matières 000ExtendingDWU.book Page 15 Thursday, June 8, 2000 3:38 PM dom.canSetLinkHref() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 dom.canShowListPropertiesDialog() . . . . . . . . . . . . . . . . . . . . . .183 dom.canSplitFrame() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 dom.canSplitTableCell() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 dom.canStopPlugin() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 dom.canUndo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 dom.hasTracingImage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 dreamweaver.canClipCopy() . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 dreamweaver.canClipCut(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 dreamweaver.canClipPaste(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .185 dreamweaver.canDeleteSelection() . . . . . . . . . . . . . . . . . . . . . . . .185 dreamweaver.canExportCSS() . . . . . . . . . . . . . . . . . . . . . . . . . . .185 dreamweaver.canFindNext(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .185 dreamweaver.canOpenInFrame() . . . . . . . . . . . . . . . . . . . . . . . . .186 dreamweaver.canPlayRecordedCommand() . . . . . . . . . . . . . . . . .186 dreamweaver.canRedo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186 dreamweaver.canRevertDocument(). . . . . . . . . . . . . . . . . . . . . . .186 dreamweaver.canSaveAll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187 dreamweaver.canSaveDocument() . . . . . . . . . . . . . . . . . . . . . . . .187 dreamweaver.canSaveDocumentAsTemplate() . . . . . . . . . . . . . . .187 dreamweaver.canSaveFrameset(). . . . . . . . . . . . . . . . . . . . . . . . . .187 dreamweaver.canSaveFramesetAs() . . . . . . . . . . . . . . . . . . . . . . . .188 dreamweaver.canSelectAll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 dreamweaver.canShowFindDialog() . . . . . . . . . . . . . . . . . . . . . . .188 dreamweaver.canUndo(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 dreamweaver.isRecording(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 dreamweaver.htmlStylePalette.canEditSelection(). . . . . . . . . . . . .189 dreamweaver.timelineInspector.canAddFrame() . . . . . . . . . . . . . .189 dreamweaver.timelineInspector.canAddKeyFrame() . . . . . . . . . . .189 dreamweaver.timelineInspector.canChangeObject() . . . . . . . . . . .189 dreamweaver.timelineInspector.canRemoveBehavior() . . . . . . . . .190 dreamweaver.timelineInspector.canRemoveFrame() . . . . . . . . . . .190 dreamweaver.timelineInspector.canRemoveKeyFrame() . . . . . . . .190 dreamweaver.timelineInspector.canRemoveObject(). . . . . . . . . . .190 site.canAddLink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 site.canChangeLink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191 site.canCheckIn(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191 site.canCheckOut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191 site.canConnect(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192 site.canFindLinkSource() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192 Table des matières 15 000ExtendingDWU.book Page 16 Thursday, June 8, 2000 3:38 PM site.canGet() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192 site.canLocateInSite(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192 site.canMakeEditable(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193 site.canMakeNewFileOrFolder() . . . . . . . . . . . . . . . . . . . . . . . . .193 site.canOpen() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193 site.canPut(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193 site.canRecreateCache() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194 site.canRefresh(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194 site.canRemoveLink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194 site.canSetLayout(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194 site.canSelectNewer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195 site.canShowPageTitles() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195 site.canSynchronize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195 site.canUndoCheckOut(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195 site.canViewAsRoot(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196 API d’E/S de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Vérification de l’installation de DWfile . . . . . . . . . . . . . . . . . . . . . . . .197 API d’E/S de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 DWfile.copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 DWfile.createFolder() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 DWfile.exists() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 DWfile.getAttributes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 DWfile.getModificationDate(). . . . . . . . . . . . . . . . . . . . . . . . . . .200 DWfile.listFolder(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200 DWfile.read(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 DWfile.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 DWfile.write() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 API Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Fonctionnement de Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 API JavaScript Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 MMNotes.open(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 MMNotes.close(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 MMNotes.set() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 MMNotes.remove() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 MMNotes.get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 MMNotes.getKeyCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 MMNotes.getKeys() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 MMNotes.getSiteRootForFile() . . . . . . . . . . . . . . . . . . . . . . . . . .206 MMNotes.getVersionNum() . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 16 Table des matières 000ExtendingDWU.book Page 17 Thursday, June 8, 2000 3:38 PM MMNotes.getVersionName(). . . . . . . . . . . . . . . . . . . . . . . . . . . .206 MMNotes.filePathToLocalURL() . . . . . . . . . . . . . . . . . . . . . . . .207 MMNotes.localURLToFilePath() . . . . . . . . . . . . . . . . . . . . . . . . .207 API C Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207 FileHandle OpenNotesFile() . . . . . . . . . . . . . . . . . . . . . . . . . . . .208 void CloseNotesFile(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208 BOOL SetNote() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208 BOOL RemoveNote() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209 int GetNoteLength() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209 BOOL GetNote() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209 int GetNotesKeyCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210 BOOL GetNotesKeys() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210 BOOL GetSiteRootForFile() . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 BOOL GetVersionNum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 BOOL GetVersionName() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 BOOL FilePathToLocalURL(). . . . . . . . . . . . . . . . . . . . . . . . . . .212 BOOL LocalURLToFilePath() . . . . . . . . . . . . . . . . . . . . . . . . . . .212 API d’intégration de Fireworks . . . . . . . . . . . . . . . . . 213 API d’intégration de Fireworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 FWLaunch.bringDWToFront() . . . . . . . . . . . . . . . . . . . . . . . . . .213 FWLaunch.bringFWToFront() . . . . . . . . . . . . . . . . . . . . . . . . . .213 FWLaunch.execJsInFireworks() . . . . . . . . . . . . . . . . . . . . . . . . . .214 FWLaunch.getJsResponse() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214 FWLaunch.mayLaunchFireworks() . . . . . . . . . . . . . . . . . . . . . . .215 FWLaunch.optimizeInFireworks() . . . . . . . . . . . . . . . . . . . . . . . .215 FWLaunch.validateFireworks() . . . . . . . . . . . . . . . . . . . . . . . . . .216 Exemple simple d’intégration de Fireworks . . . . . . . . . . . . . . . . . . . . .217 API HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 API HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219 MMHttp.clearTemp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220 MMHttp.getFile() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220 MMHttp.getFileCallback() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222 MMHttp.getText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223 MMHttp.getTextCallback(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .223 MMHttp.postText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 MMHttp.postTextCallback() . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Table des matières 17 000ExtendingDWU.book Page 18 Thursday, June 8, 2000 3:38 PM API de base de données . . . . . . . . . . . . . . . . . . . . . . 225 Fonctions de l'API de base de données . . . . . . . . . . . . . . . . . . . . . . . .226 MMDB.getColumnAndTypeList() . . . . . . . . . . . . . . . . . . . . . . .227 MMDB.getColumnList() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 MMDB.getColumnsOfTable() . . . . . . . . . . . . . . . . . . . . . . . . . .227 MMDB.getConnectionList() . . . . . . . . . . . . . . . . . . . . . . . . . . . .228 MMDB.getConnectionName() . . . . . . . . . . . . . . . . . . . . . . . . . .228 MMDB.getConnectionString() . . . . . . . . . . . . . . . . . . . . . . . . . .229 MMDB.getDriverName() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 MMDB.getPassword() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 MMDB.getRuntimeConnectionType() . . . . . . . . . . . . . . . . . . . .230 MMDB.getSPColumnList() . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 MMDB.getSPColumnListNamedParams() . . . . . . . . . . . . . . . . .231 MMDB.getSPParamsAsString() . . . . . . . . . . . . . . . . . . . . . . . . . .232 MMDB.getTables() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 MMDB.getUserName(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 MMDB.showConnectionMgrDialog() . . . . . . . . . . . . . . . . . . . .233 MMDB.showResultset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 MMDB.showSPResultset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 MMDB.showSPResultsetNamedParams() . . . . . . . . . . . . . . . . . .235 Extensions C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237 API d’extension C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239 typedef struct JSContext JSContext . . . . . . . . . . . . . . . . . . . . . . .239 typedef struct JSObject JSObject . . . . . . . . . . . . . . . . . . . . . . . . .239 typedef struct jsval jsval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240 typedef enum { JS_FALSE = 0, JS_TRUE = 1 } JSBool . . . . . . . .240 typedef JSBool (*JSNative)(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) . . . . . . . . . . . . . . . . . . .240 JSBool JS_DefineFunction() . . . . . . . . . . . . . . . . . . . . . . . . . . . .240 char *JS_ValueToString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241 JSBool JS_ValueToInteger() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241 JSBool JS_ValueToDouble() . . . . . . . . . . . . . . . . . . . . . . . . . . . .241 JSBool JS_ValueToBoolean() . . . . . . . . . . . . . . . . . . . . . . . . . . . .242 JSBool JS_ValueToObject() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242 JSBool JS_StringToValue(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242 JSBool JS_DoubleToValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 JSBool JS_IntegerToValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 JSBool JS_BooleanToValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 JSBool JS_ObjectToValue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 18 Table des matières 000ExtendingDWU.book Page 19 Thursday, June 8, 2000 3:38 PM char *JS_ObjectType() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244 JSObject *JS_NewArrayObject() . . . . . . . . . . . . . . . . . . . . . . . . .244 long JS_GetArrayLength() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244 JSBool JS_GetElement() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244 JSBool JS_SetElement() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245 JSBool JS_ExecuteScript() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245 JSBool JS_ReportError() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246 Appel d’une fonction C à partir de JavaScript . . . . . . . . . . . . . . .246 Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Fonctionnement des fichiers d’objet . . . . . . . . . . . . . . . . . . . . . . . . . .249 API d’objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .250 displayHelp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .250 objectTag(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251 windowDimensions(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251 Ajout d’objets à la palette d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . .252 Ajout d’objets au menu Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . .252 Commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Fonctionnement des commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . .253 API de commande. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .254 canAcceptCommand() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255 commandButtons() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255 receiveArguments() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255 windowDimensions(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256 Exemple de commande simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256 Ajout de commandes au menu Commandes . . . . . . . . . . . . . . . . . . . .258 Commandes de menu . . . . . . . . . . . . . . . . . . . . . . . . 259 Fonctionnement des commandes de menu . . . . . . . . . . . . . . . . . . . . .259 API de commande de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261 canAcceptCommand() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261 commandButtons() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261 getDynamicContent() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262 isCommandChecked() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262 receiveArguments() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262 setMenuText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263 windowDimensions(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263 Exemple de commande de menu simple . . . . . . . . . . . . . . . . . . . . . . .264 Exemple de menu dynamique simple . . . . . . . . . . . . . . . . . . . . . . . . .266 Table des matières 19 000ExtendingDWU.book Page 20 Thursday, June 8, 2000 3:38 PM Inspecteurs de propriétés . . . . . . . . . . . . . . . . . . . . . 269 Fonctionnement des fichiers d’inspecteur de propriétés . . . . . . . . . . . .270 API d’inspecteur de propriétés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271 canInspectSelection() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271 displayHelp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272 inspectSelection(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272 Exemple d’inspecteur de propriétés simple . . . . . . . . . . . . . . . . . . . . .273 Palettes flottantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 Fonctionnement des fichiers de palette flottante . . . . . . . . . . . . . . . . .275 API de palette flottante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 documentEdited() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 selectionChanged() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 initialPosition() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279 initialTabs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279 A propos des performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280 Exemple de palette flottante simple . . . . . . . . . . . . . . . . . . . . . . . . . . .281 Comportements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Fonctionnement des comportements. . . . . . . . . . . . . . . . . . . . . . . . . .284 Insertion de plusieurs fonctions dans le fichier de l’utilisateur . . .285 Procédure à suivre lorsqu’une action exige une valeur renvoyée . .285 API de comportement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286 applyBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286 behaviorFunction() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287 canAcceptBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288 displayHelp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289 deleteBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289 identifyBehaviorArguments() . . . . . . . . . . . . . . . . . . . . . . . . . . . .289 inspectBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291 windowDimensions(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292 Exemple de comportement simple . . . . . . . . . . . . . . . . . . . . . . . . . . .293 Traducteurs de données . . . . . . . . . . . . . . . . . . . . . . .297 Fonctionnement des traducteurs de données . . . . . . . . . . . . . . . . . . . .298 API de traduction de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299 getTranslatorInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299 translateMarkup() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300 liveDataTranslateMarkup function() . . . . . . . . . . . . . . . . . . . . . .301 Spécification du type de traducteur à utiliser . . . . . . . . . . . . . . . . . . . .302 Ajout d'un attribut traduit à une balise . . . . . . . . . . . . . . . . . . . . . . . .302 20 Table des matières 000ExtendingDWU.book Page 21 Thursday, June 8, 2000 3:38 PM Traduction simultanée de plusieurs attributs . . . . . . . . . . . . . . . .303 Exemple simple de traducteur d'attribut . . . . . . . . . . . . . . . . . . .303 Inspection des attributs traduits . . . . . . . . . . . . . . . . . . . . . . . . . .306 Verrouillage de balises ou de blocs de code traduits . . . . . . . . . . . . . . .307 Exemple simple de traducteur de bloc/balise . . . . . . . . . . . . . . . .309 Création d'un inspecteur de propriétés pour le contenu verrouillé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313 Recherche de bogues dans un traducteur . . . . . . . . . . . . . . . . . . . . . . .315 Modèles de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 Fonctions API des modèles de serveur . . . . . . . . . . . . . . . . . . . . . . . . .317 getFileExtensions(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317 getServerLanguages() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318 getVersionArray() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318 Sources de données . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Fonctionnement des sources de données . . . . . . . . . . . . . . . . . . . . . . .319 API de source de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322 addDynamicSource() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322 deleteDynamicSource() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322 findDynamicSources() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323 generateDynamicDataRef() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323 generateDynamicSourceBindings() . . . . . . . . . . . . . . . . . . . . . . .323 inspectDynamicDataRef() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324 Mise en forme des données. . . . . . . . . . . . . . . . . . . 325 Organisation de la mise en forme des données. . . . . . . . . . . . . . . . . . .326 Fichier Formats.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .326 Menu plus (+) de la boîte de dialogue Modifier la liste de formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327 Mise en application des fonctions de mise en forme des données. . . . .328 API de mise en forme de données . . . . . . . . . . . . . . . . . . . . . . . . . . . .329 applyFormat() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329 applyFormatDefinition() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329 deleteFormat() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330 formatDynamicDataRef() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330 inspectFormatDefinition() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331 Table des matières 21 000ExtendingDWU.book Page 22 Thursday, June 8, 2000 3:38 PM Comportements de serveur . . . . . . . . . . . . . . . . . . . 333 Répertoire ServerBehaviors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333 Objet JavaScript de comportement de serveur . . . . . . . . . . . . . . . . . . .334 Comment appeler les fonctions API de comportement de serveur . . . .335 API de comportement de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . .338 analyzeServerBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338 applyServerBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339 canApplyServerBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340 copyServerBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340 deleteServerBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341 findServerBehaviors() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341 inspectServerBehavior() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341 pasteServerBehavior(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342 Exemple de comportement de serveur . . . . . . . . . . . . . . . . . . . . . . . . .342 22 Table des matières 000ExtendingDWU.book Page 23 Thursday, June 8, 2000 3:38 PM 1 CHAPITRE 1 Extension de Dreamweaver Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Si vous êtes un programmeur confirmé, vous pouvez personnaliser (ou étendre) Dreamweaver de plusieurs manières à l’aide des langages HTML, JavaScript et C. Vous pouvez écrire vos propres objets, actions, commandes, inspecteurs de propriétés, palettes flottantes, traducteurs de données et bibliothèques C à appeler à partir du code JavaScript. Pour effectuer ces tâches, vous devez parfaitement maîtriser JavaScript et les différents éléments HTML. La connaissance du langage C n’est nécessaire que si vous souhaitez utiliser une fonctionnalité qui ne figure pas dans l’API JavaScript de Dreamweaver (voir les chapitres 3 ou les chapitres 4 à 8 sur les API auxiliaires). Le présent manuel décrit le DOM (Document Object Model, Modèle Objet de Document) pris en charge par Dreamweaver, l’API JavaScript de Dreamweaver (fonctions JavaScript personnalisées intégrées à Dreamweaver et pouvant être utilisées dans n’importe quel fichier d’objet, d’action, de commande, d’inspecteur de propriétés, de palette flottante ou de fichier de traduction de données). Il décrit également les API spécifiques à chaque type de fichier, les API ajoutés avec Dreamweaver UltraDev et fournit plusieurs exemples de code accompagnés de commentaires. Tout au long de ce manuel, nous désignerons par le terme extension tout fichier d’objet, d’action, de commande, d’inspecteur de propriétés, de palette flottante et de traduction de données. 23 000ExtendingDWU.book Page 24 Thursday, June 8, 2000 3:38 PM Conditions préalables Du fait que les extensions Dreamweaver doivent être écrites en JavaScript, ce manuel suppose que les lecteurs sont familiarisés avec la syntaxe et les concepts de base de ce langage, tels que les fonctions, variables, instructions, opérateurs, expressions conditionnelles et boucles. Ce manuel n’a pas pour objectif d’enseigner la programmation en général, ni le langage JavaScript en particulier. Si votre expérience en programmation JavaScript est limitée, mais que vous en maîtrisez suffisamment la syntaxe, nous vous recommandons, pour vous familiariser avec l’extensibilité de Dreamweaver, de commencer par les objets. Lisez tout d’abord le chapitre « Le Modèle Objet de Document (DOM) » à la page 25, puis reportez-vous à la section « Extensions C » à la page 237 pour plus d’informations. Si vous souhaitez personnaliser Dreamweaver, nous vous recommandons d’avoir à portée de main un manuel de référence JavaScript, pour le cas où vous auriez des doutes sur la syntaxe à utiliser (si, par exemple, vous ne vous souvenez plus si vous devez écrire substring() ou subString()). Javascript Bible de Danny Goodman (IDG), JavaScript : The Definitive Guide de David Flanagan (O’Reilly) et Pure JavaScript de R. Allen Wyke, Jason D. Gilliam et Charlton Ting (Sams) sont des ouvrages de référence utiles. Vous trouverez également des informations de référence gratuites sur le site Web DevEdge Online de NetScape, à l’adresse suivante : http:// developer.netscape.com:80/docs/manuals/javascript.html. Errata Le code de 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 la liste des problèmes connus à la section Extensibility (Extension) du site Web du support technique de Dreamweaver, à l’adresse suivante : http://www.macromedia.com/support/dreamweaver/extend.html. 24 Chapitre 1 000ExtendingDWU.book Page 25 Thursday, June 8, 2000 3:38 PM 2 CHAPITRE 2 Le Modèle Objet de Document (DOM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 de l’arbre 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. 25 000ExtendingDWU.book Page 26 Thursday, June 8, 2000 3:38 PM 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 pages HTML, y compris les balises (que le W3C appelle éléments), les commentaires et le texte, deviennent un objet. 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, le premier bouton radio dont le nom est myRadioGroup dans myForm serait référencé par document.myForm.myRadioGroup[0]). 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 (•). 26 Chapitre 2 Objet Propriétés Méthodes Evénements window document • navigator • innerWidth • innerHeight • screenX • screenY • alert() confirm() escape() unescape() close() setTimeout() clearTimeout() setInterval() clearInterval() resizeTo() onResize navigator platform • Aucun Aucun 000ExtendingDWU.book Page 27 Thursday, June 8, 2000 3:38 PM Objet Propriétés Méthodes Evénements document forms • (tableau getElementsByTagNa onLoad d’objets form) me() images • (tableau hasChildNodes() d’objets image) layers • (un tableau d’objets LAYER, ILAYER, et d’objets DIV et SPAN à positionnement absolu) 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() getElementsByTagNa me() hasChildNodes() 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) child objects by name • Uniquement les méthodes disponibles pour toutes les balises. Aucun layer En complément des propriétés disponibles pour toutes les balises : visibility left top width height zIndex Uniquement les méthodes disponibles pour toutes les balises. Aucun Le Modèle Objet de Document (DOM) 27 000ExtendingDWU.book Page 28 Thursday, June 8, 2000 3:38 PM 28 Chapitre 2 Objet Propriétés Méthodes Evénements image En complément des propriétés disponibles pour toutes les balises : src Uniquement les méthodes disponibles pour toutes les balises. onMouseOver onMouseOut onMouseDown onMouseUp button reset submit En complément des propriétés disponibles pour toutes les balises : form • En complément des méthodes disponibles pour toutes les balises : blur() focus() onClick checkbox radio En complément des propriétés disponibles pour toutes les balises : checked form • En complément des méthodes disponibles pour toutes les balises : blur() focus() onClick password text file hidden image (champ) textarea En complément des propriétés disponibles pour toutes les balises : form • value En complément des méthodes disponibles pour toutes les balises : blur() focus() select() onBlur onFocus select En complément des propriétés disponibles pour toutes les balises : form • options • (tableau d’objets option) selectedIndex En complément des méthodes disponibles pour toutes les balises : blur() (Windows uniquement) focus() (Windows uniquement) onBlur (Windows uniquement) onChange onFocus (Windows uniquement) option En complément des propriétés disponibles pour toutes les balises : text Uniquement les méthodes disponibles pour toutes les balises. Aucun array boolean date function math number object string regexp Correspond à Netscape 4 Correspond à Netscape 4 Aucun 000ExtendingDWU.book Page 29 Thursday, June 8, 2000 3:38 PM Objet Propriétés Méthodes Evénements 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 En plus des objets standards 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. appName prend toujours la valeur "Dreamweaver". 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 3 serait "3.0 [se] (Win32)" ; pour la version Macintosh anglaise, cette valeur serait "3.0 [en] (MacPPC)". Les propriétés appName et appVersion ont été implémentées dans Dreamweaver 3 et elles 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. Par 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 » à la page 39. 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 Modèle Objet de Document (DOM) 29 000ExtendingDWU.book Page 30 Thursday, June 8, 2000 3:38 PM 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 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 (•). 30 Chapitre 2 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 IE 4.0.) childNodes • Une nodelist (liste de nœuds) 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.childNodes et d’extraire la balise BODY de la nodelist. Pour les documents de jeu de cadres, cette propriété renvoie le nœud 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. 000ExtendingDWU.book Page 31 Thursday, June 8, 2000 3:38 PM Propriété ou méthode Valeur renvoyée et explication getElementsByTagName(tagName) Une nodelist pouvant être utilisée pour parcourir les balises de type tagName (par exemple, IMG, DIV, etc). Possède une fonctionnalité similaire à la fonction dreamweaver.getObjectTags(). 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 Propriétés et méthodes des objets tag 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 nouvelles propriétés et méthodes des objets tag 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 (•). 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, alors 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(). Le Modèle Objet de Document (DOM) 31 000ExtendingDWU.book Page 32 Thursday, June 8, 2000 3:38 PM 32 Chapitre 2 Propriété ou méthode Valeur renvoyée et explication 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. 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.) 000ExtendingDWU.book Page 33 Thursday, June 8, 2000 3:38 PM Propriété ou méthode Valeur renvoyée et explication 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 text 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 text n’ont jamais d’enfants. Le tableau ci-dessous répertorie les nouvelles propriétés et méthodes des objets text 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. 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 comment Chaque commentaire HTML est représenté par un objet JavaScript. Le tableau cidessous répertorie les propriétés et méthodes des objets comment 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. Le Modèle Objet de Document (DOM) 33 000ExtendingDWU.book Page 34 Thursday, June 8, 2000 3:38 PM Propriété ou méthode Valeur renvoyée et explication childNodes • Une nodelist vide. data Chaîne de texte comprise entre les marqueurs de commentaires (<!-- et -->). hasChildNodes() FALSE Commandes de l’arborescence UltraDev ajoute deux nouvelles commandes à la balise select HTML : la commande d’arborescence de base de données et celle de grille variable. La première permet d’afficher les informations relatives à la base de données sous forme de schémas, c’est à dire de tables et colonnes composant la base de données. La commande de grille variable permet quant à elle d’afficher n’importe quelle donnée tabulaire. Dans UltraDev, la boîte de dialogue Jeu d’enregistrements avancée contient ces deux commandes. Boîte de dialogue Jeu d’enregistrements avancée Ajout d’une arborescence de base de données Pour ajouter une commande d’arborescence de base de données dans une boîte de dialogue, ajoutez le code HTML suivant à 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 : 34 Chapitre 2 000ExtendingDWU.book Page 35 Thursday, June 8, 2000 3:38 PM name="DBTree" : nom de la commande d’arborescence de base de données. style="width:x;height:n" : taille de la commande. Vous pouvez préciser sa largeur et sa hauteur en pixels. : type de commande. La valeur mmdatabasetree indique que cette balise doit être restituée sous forme d’arborescence de base de données et qu’elle doit afficher le contenu de la connexion spécifié dans l’attribut correspondant. type=mmdatabasetree : nom d’une connexion UltraDev, telle que définie dans Connection Manager. Si l’attribut connection est vide, la commande sera également vide. connection="connectionName" Toutes les options de balise placées à l’intérieur de la balise select sont ignorées. Vous pouvez utiliser JavaScript pour modifier l’attribut connection et récupérer les données sélectionnées dans l’arborescence. Vous pouvez également utiliser DBTreeControl en tant qu’objet empaqueteur JavaScript pour la nouvelle balise. L’implémentation se trouve dans le fichier DBTreeControlClass.js (Configuration\Shared\UltraDev\Scripts). Ajout d’une commande de grille variable Pour ajouter une commande de grille variable à une boîte de dialogue, ajoutez le code HTML suivant à 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 variable possède les attributs suivants : name="ParamList" style="width:x" : nom de la commande de grille variable. : largeur de la commande. : type de commande. La valeur mmparameterlist indique que cette balise doit être restituée sous forme de commande de grille variable. type=mmparameterlist indique le nom des colonnes, séparées par des virgules. Chacune des colonnes devant posséder un nom, cet attribut indique à la fois le nom et le nombre des colonnes de la commande. Le nombre des colonnes doit être équivalent à celui des noms. Dans l’exemple précédent, l’attribut columns est : columns="Name,SQL Data Type,Direction,Default Value,Run-time Value". Cette spécification crée 5 colonnes : Nom, Type de données SQL, Direction, Valeur par défaut et Valeur d’exécution. columns="colName1", "colNamex" size=n : nombre de lignes visibles. Le Modèle Objet de Document (DOM) 35 000ExtendingDWU.book Page 36 Thursday, June 8, 2000 3:38 PM largeur de chaque colonne, séparées par des virgules. Si aucune largeur n’est indiquée, les colonnes seront toutes de largeur identique. Il est également possible de préciser les largeurs des premières colonnes sans rien indiquer pour les colonnes restantes. Dans ce cas, ces dernières se partageront l’espace laissé par les premières colonnes. Par exemple, supposons que vous indiquez la balise select suivante : columnWidth="x, ..." : <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> Ce code créera une commande de grille variable large de 500 pixels. Il y a 5 colonnes : Nom, Type de données SQL, Direction, Valeur par défaut et Valeur d’exécution. La colonne Nom a une largeur de 100 pixels, la colonne Type de données SQL de 25 pixels et la colonne Direction de 11 pixels. Les deux dernières colonnes ont donc chacune une largeur de 182 pixels. Les colonnes pour lesquelles vous avez spécifié la largeur occupent au total 136 pixels et la longueur totale de la commande est de 500. Les deux dernières colonnes se partagent donc l’espace restant après le placement des trois premières, à savoir 500 - 136 = 364 (182 x 2). Cette commande possède également un objet empaqueteur JavaScript servant à accéder aux données de la commande et à les modifier. L’implémentation de cet objet se trouve dans le fichier GGGridControlClass.js (Configuration\Shared\MM\Scripts\Class\ ). 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 deux parties et concaténez-les de la façon suivante : ‘<’ + ‘/SCRIPT>’. 36 Chapitre 2 000ExtendingDWU.book Page 37 Thursday, June 8, 2000 3:38 PM 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 palette flottante. 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, dont celles incluant les URL JavaScript tels que < a href="javascript:alert('hi')">) et les instructions document.write() ne sont pas prises en charge. Les plug-ins (en permanence réglés sur play) sont pris en charge dans le corps (BODY) des extensions, mais ce n’est pas le cas des mini-applications Java ni des commandes ActiveX. Exécution des scripts au démarrage ou à la fermeture Dans Dreamweaver 3, 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, palettes flottantes 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 ou inviter l’utilisateur à entrer des informations, mais vous ne pouvez pas appeler la fonction dreamweaver.runCommand(). 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() » à la page 54 à 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 » à la page 253. Le Modèle Objet de Document (DOM) 37 000ExtendingDWU.book Page 38 Thursday, June 8, 2000 3:38 PM 38 Chapitre 2 000ExtendingDWU.book Page 39 Thursday, June 8, 2000 3:38 PM 3 CHAPITRE 3 API JavaScript de Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les objets, les propriétés et les méthodes décrites au chapitre Le modèle objet de document (DOM) 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 de navigateurs propriétaires n’abordent pas le sujet de la sélection, car dans un navigateur, les utilisateurs n’ont la possibilité ni de sélectionner, ni de modifier le contenu des fenêtres (hormis le contenu des champs de formulaires). Pour permettre la création d’extensions Dreamweaver intéressantes 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 2. En effet, il est à présent possible d’émuler en JavaScript presque toutes les opérations que l’utilisateur peut effectuer dans Dreamweaver à l’aide des menus, des palettes flottantes, des inspecteurs et des fenêtres de site ou de document. 39 000ExtendingDWU.book Page 40 Thursday, June 8, 2000 3:38 PM 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 3, 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 chapitres suivants. A propos des activateurs Dans Dreamweaver 3, 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 quel est 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). Vous trouverez à la fin du présent chapitre la liste et la description des activateurs disponibles. 40 Chapitre 3 000ExtendingDWU.book Page 41 Thursday, June 8, 2000 3:38 PM 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, puis des méthodes de l’objet dreamweaver.cssStylePalette. Les arguments facultatifs sont indiqués entre accolades ({ }). La fonction la plus importante 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é 2.0 Description Permet d’accéder à l’arborescence des objets du document spécifié. Une fois celleci renvoyée à l’appelant, ce dernier peut la modifier pour changer le contenu du document. Arguments sourceDoc L’argument 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 3, 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, pour pouvoir modifier le document, être la fonction applyBehavior(), deleteBehavior(), objectTag() ou toute fonction d’un fichier de commande ou d’inspecteur de propriétés. Renvoie Activateur Exemple Objet document JavaScript à la racine de l’arborescence. Aucun. 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"; API JavaScript de Dreamweaver 41 000ExtendingDWU.book Page 42 Thursday, June 8, 2000 3:38 PM Fonctions relatives aux 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 permettent de contrôler ou d’agir sur la sélection dans l’inspecteur de comportements et non dans le document en cours. dom.addBehavior() Disponibilité 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} Le premier argument est le gestionnaire d’événements JavaScript à utiliser pour associer le comportement à l’élément, par exemple, onClick, onMouseOver ou onLoad. Le second argument est l’appel de fonction qui serait renvoyé par applyBehavior() si vous utilisiez l’inspecteur de comportements pour insérer l’action, par exemple "MM_popupMsg(’Hello World’)". Le troisième argument est la position à laquelle l’action doit être inséré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é. eventBasedIndex Renvoie Activateur Aucune. Aucun. dom.getBehavior() Disponibilité 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} Le premier argument est le gestionnaire d’événements JavaScript utilisé pour associer l’action à l’élément, par exemple, onClick, onMouseOver ou onLoad. Le second argument 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. 42 Chapitre 3 000ExtendingDWU.book Page 43 Thursday, June 8, 2000 3:38 PM Renvoie Chaîne représentant l’appel de fonction (par exemple "MM_swapImage(’document.Image1’,’document.Image1’,’foo.gif’,’#933292969950’)" ) ou tableau de chaînes, si vous n’avez pas défini l’argument eventBasedIndex. Activateur Aucun. dom.reapplyBehaviors() Disponibilité 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} L’argument 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 Renvoie Activateur Aucune. Aucun. dom.removeBehavior() Disponibilité 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} Le premier argument est le gestionnaire d’événements utilisé pour associer l’action à 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. Le second argument 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. Renvoie Activateur Aucune. Aucun. dreamweaver.getBehaviorElement() Disponibilité 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. Arguments Aucun. API JavaScript de Dreamweaver 43 000ExtendingDWU.book Page 44 Thursday, June 8, 2000 3:38 PM Renvoie 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 de l’inspecteur de comportements ; lorsque l’inspecteur de 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 l’inspecteur de comportements associe un événement à un emballeur de lien et que ce dernier n’existe pas ; lorsque cette fonction se trouve en dehors d’un fichier d’action. Activateur Exemple Aucun. 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 hyperlien (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] } } 44 Chapitre 3 000ExtendingDWU.book Page 45 Thursday, June 8, 2000 3:38 PM dreamweaver.getBehaviorTag() Disponibilité 1.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. Renvoie Activateur Exemple 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. Aucun. Si vous créez une action qui ne peut être appliquée qu’à un hyperlien (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é Description 2.0 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 de l’inspecteur de 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} Le premier argument correspond au nom d’un fichier du dossier Configuration/Behaviors/Actions contenant une action de comportement JavaScript ("Timeline/Play Timeline.htm", par exemple). API JavaScript de Dreamweaver 45 000ExtendingDWU.book Page 46 Thursday, June 8, 2000 3:38 PM Le second argument 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. Renvoie Activateur 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. Aucun. dreamweaver.behaviorInspector.getBehaviorAt() Disponibilité 3.0 Description Obtient le couple événement/action (comportement) qui se trouve à la position indiquée dans l’inspecteur de comportements. Arguments positionIndex Renvoie Tableau constitué de deux éléments : un gestionnaire d’événements ; un appel de fonction ou une instruction JavaScript. Activateur Exemple 46 Chapitre 3 Aucun. Du fait que positionIndex est un index de référence zéro, si l’inspecteur de 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’,’IMG’)" . 000ExtendingDWU.book Page 47 Thursday, June 8, 2000 3:38 PM dreamweaver.behaviorInspector.getBehaviorCount() Disponibilité 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. Renvoie Activateur Exemple Nombre entier représentant le nombre d’actions associées à l’élément. Ce nombre est équivalent au nombre d’actions visibles dans l’inspecteur de comportements et comprend les actions de comportement Dreamweaver et le code JavaScript personnalisé. Aucun. 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é 3.0 Description Obtient la position de l’action sélectionnée dans l’inspecteur de comportements. Arguments Aucun. Renvoie Activateur Exemple Entier représentant la position de l’action sélectionnée dans l’inspecteur de comportement, ou -1 si aucune action n’est sélectionnée. Aucun. Si la première action de l’inspecteur de comportements est sélectionnée, comme le montre l’illustration ci-après, un appel à la fonction dw.behaviorInspector.getSelectedBehavior() renvoie le nombre 0. API JavaScript de Dreamweaver 47 000ExtendingDWU.book Page 48 Thursday, June 8, 2000 3:38 PM dreamweaver.behaviorInspector.moveBehaviorDown() Disponibilité 3.0 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 L’argument représente la position de l’action dans l’inspecteur de comportements. La première action de la liste est à la position 0. Renvoie Activateur Exemple Aucune. Aucun. En supposant que l’inspecteur de comportements est 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é 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 L’argument représente la position de l’action dans l’inspecteur de comportements. La première action de la liste est à la position 0. Renvoie Activateur 48 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 49 Thursday, June 8, 2000 3:38 PM Exemple En supposant que l’inspecteur de comportements est configuré comme dans l’illustration ci-après, 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é 3.0 Description Sélectionne l’action qui se trouve à la position indiquée dans l’inspecteur de comportements. Arguments positionIndex L’argument représente la position de l’action dans l’inspecteur de 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) –1. Spécifier une position à laquelle ne correspond aucune action revient à spécifier –1. Renvoie Activateur Exemple Aucune. Aucun. En supposant que l’inspecteur de comportements est 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. API JavaScript de Dreamweaver 49 000ExtendingDWU.book Page 50 Thursday, June 8, 2000 3:38 PM 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 utilisées dans les champs modifiables des boîtes de dialogue et des palettes flottantes. 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 HTML 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é 3.0 Description Copie la sélection dans le Presse-papiers avec toutes les balises HTML correspondantes. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dom.clipCopyText() Disponibilité 3.0 Description Copie le texte sélectionné dans le Presse-papiers sans les balises HTML correspondantes. Arguments Aucun. Renvoie Activateur Aucune. dom.canClipCopyText() dom.clipCut() Disponibilité Description Coupe la sélection et la place dans le Presse-papiers, avec toutes les balises HTML correspondantes. Arguments Aucun. Renvoie Activateur 50 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 51 Thursday, June 8, 2000 3:38 PM dom.clipPaste() Disponibilité 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. Renvoie Activateur Exemple Aucune. dom.canClipPaste() Si le Presse-papiers contient ce qui suit : <code>return true;</code>, un appel à la fonction dw.getDocumentDOM().clipPaste() produira le résultat suivant : API JavaScript de Dreamweaver 51 000ExtendingDWU.book Page 52 Thursday, June 8, 2000 3:38 PM dom.clipPasteText() Disponibilité 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. Renvoie Activateur Exemple Aucune. dom.canClipPasteText() 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é Description Copie la sélection en cours de la fenêtre active (qu’il s’agisse de la fenêtre du document, d’une boîte de dialogue, d’une palette flottante ou d’un volet de la fenêtre Site) dans le Presse-papiers. Arguments Aucun. Renvoie Activateur 52 3.0 Chapitre 3 Aucune. dreamweaver.canClipCopy() 000ExtendingDWU.book Page 53 Thursday, June 8, 2000 3:38 PM dreamweaver.clipCut() Disponibilité 3.0 Description Supprime la sélection en cours de la fenêtre active (qu’il s’agisse de la fenêtre du document, d’une boîte de dialogue, d’une palette flottante ou d’un volet de la fenêtre Site) et la place dans le Presse-papiers. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.canClipCut() dreamweaver.clipPaste() Disponibilité 3.0 Description Colle le contenu du Presse-papiers dans la fenêtre de document, la boîte de dialogue, la palette flottante ou le volet de la fenêtre Site en cours. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.canClipPaste() dreamweaver.getClipboardText() Disponibilité 3.0 Description Obtient tout le texte mémorisé dans le Presse-papiers. Arguments Aucun. Renvoie Activateur Chaîne représentant le contenu du Presse-papiers (il peut s’agir de balises HTML) ou rien, si le Presse-papiers est vide. Aucun. 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é 3.0 Description Ouvre la boîte de dialogue Modifier la liste de commandes. Arguments Aucun. API JavaScript de Dreamweaver 53 000ExtendingDWU.book Page 54 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. Aucun. dreamweaver.runCommand() Disponibilité Description 3.0 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,ou d’inspecteur de propriétés, ou de menu. Arguments commandFile, {commandArg1}, {commandArg2},...{commandArgN} L’argument est le nom d’un fichier du dossier Configuration/Commands. Les arguments suivants sont transmis à commandFile sous forme d’arguments. Renvoie Activateur Exemple Aucune. Aucun. 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é 54 3.0 Description Ouvre la boîte de dialogue Convertir les calques en tableau. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 55 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. dom.canConvertLayersToTable() dom.convertTablesToLayers() Disponibilité 3.0 Description Ouvre la boîte de dialogue Convertir les tableaux en calques. Arguments Aucun. Renvoie Activateur Aucune. dom.canConvertTablesToLayers() dom.convertTo30() Disponibilité 3.0 Description Ouvre la boîte de dialogue Convertir au format compatible avec les navigateurs 3.0. Arguments Aucun. Renvoie Activateur Aucune. 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 la palette de styles et non dans le document en cours. dom.applyCSSStyle() Disponibilité 3.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} Le premier argument est un nœud d’élément du DOM. Si l’argument elementNode a pour valeur NULL ou est exprimé (’’), la fonction agit sur la sélection en cours. sous forme d’une chaîne vide Le second argument est le nom d’un style CSS. API JavaScript de Dreamweaver 55 000ExtendingDWU.book Page 56 Thursday, June 8, 2000 3:38 PM Le troisième argument 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é. Renvoie Activateur Exemple Aucune. Aucun. 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é 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} Le premier argument est un nœud d’élément du DOM. Si l’argument elementNode est une chaîne vide (‘’), la fonction est appliquée à la sélection en cours. Le second argument est l’attribut à supprimer ("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. Renvoie Activateur Aucune. Aucun. dreamweaver.cssStylePalette.deleteSelectedStyle() Disponibilité Description Supprime du document le style actuellement sélectionné dans la palette de styles. Arguments Aucun. Renvoie Activateur 56 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 57 Thursday, June 8, 2000 3:38 PM dreamweaver.cssStylePalette.duplicateSelectedStyle() Disponibilité 3.0 Description Duplique le style actuellement sélectionné dans la palette de styles 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. Renvoie Activateur Aucune. Aucun. dreamweaver.cssStylePalette.editSelectedStyle() Disponibilité 3.0 Description Ouvre la boîte de dialogue Définition du style pour le style actuellement sélectionné dans la palette de styles. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.cssStylePalette.editStyleSheet() Disponibilité 3.0 Description Ouvre la boîte de dialogue Modifier feuille de style. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.cssStylePalette.getSelectedStyle() Disponibilité 3.0 Description Obtient le nom du style actuellement sélectionné dans la palette de styles. Arguments Aucun. Renvoie Activateur Chaîne représentant le nom du style, ou chaîne vide si aucun style n’est sélectionné. Aucun. API JavaScript de Dreamweaver 57 000ExtendingDWU.book Page 58 Thursday, June 8, 2000 3:38 PM 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é 3.0 Description Obtient l’élément sélectionné dans le menu déroulant Appliquer à, en haut de la palette de styles. Arguments Aucun. Renvoie Activateur Exemple Objet auquel le style doit être appliqué ou NULL si la cible est la sélection en cours. Aucun. 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. Exemple : var currDOM = dw.getDocumentDOM(); currDOM.applyCSSStyle(dw.cssStylePalette.getSelectedTarget(), "codeRed"); 58 Chapitre 3 000ExtendingDWU.book Page 59 Thursday, June 8, 2000 3:38 PM dreamweaver.cssStylePalette.getStyles() Disponibilité 3.0 Description Obtient la liste de tous les styles de classe que contient le document actif. Arguments Aucun. Renvoie Activateur Exemple Tableau de chaînes représentant les noms de tous les styles de classe que contient le document. Aucun. En supposant que la palette Styles CSS est configurée 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é 3.0 Description Ouvre la boîte de dialogue Nouveau style. Arguments Aucun. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 59 000ExtendingDWU.book Page 60 Thursday, June 8, 2000 3:38 PM 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é version 2.0, améliorée dans la version 3.0. Description Ouvre l’URL spécifiée dans le navigateur spécifié. Arguments fileName, {browserName} Le premier argument est le nom du fichier à ouvrir, exprimé sous la forme d’une URL absolue. Le second argument, qui a été rajouté à la version 3 de Dreamweaver, est le nom d’un navigateur défini dans les préférences de l’Aperçu dans le navigateur. Si cet argument n’est pas défini, le navigateur principal de l’utilisateur est utilisé par défaut. Renvoie Activateur Exemple Aucune. Aucun. 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 3, 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() » à la page 61 . 60 Chapitre 3 000ExtendingDWU.book Page 61 Thursday, June 8, 2000 3:38 PM dreamweaver.getBrowserList() Disponibilité 3.0 Description Obtient la liste des navigateurs définis dans le sous-menu Aperçu dans le navigateur. Arguments Aucun. Renvoie Activateur 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. Aucun. dreamweaver.getExtensionEditorList() Disponibilité 3.0 Description Obtient la liste des éditeurs définis dans les préférences des éditeurs externes pour le fichier spécifié. Arguments fileURL L’argument peut être une URL de type file:// complète, un nom de fichier ou une extension de fichier (point compris). Renvoie Activateur Exemple 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. Aucun. 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.getPrimaryBrowser() Disponibilité 3.0 Description Obtient le chemin du navigateur principal. Arguments Aucun. Renvoie Activateur 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. Aucun. API JavaScript de Dreamweaver 61 000ExtendingDWU.book Page 62 Thursday, June 8, 2000 3:38 PM dreamweaver.getPrimaryExtensionEditor() Disponibilité 3.0 Description Obtient l’éditeur principal associé au fichier spécifié. Arguments fileURL Renvoie Activateur 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. Aucun. dreamweaver.getSecondaryBrowser() Disponibilité 3.0 Description Obtient le chemin du navigateur secondaire. Arguments Aucun. Renvoie Activateur 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. Aucun. dreamweaver.openWithApp() Disponibilité 3.0 Description Ouvre le fichier spécifié dans l’application spécifiée. Arguments fileURL, appURL Le premier argument est le chemin du fichier à ouvrir, exprimé sous la forme d’une URL de type file://. Le second argument est le chemin de l’application dans laquelle le fichier doit être ouvert, exprimé sous la forme d’une URL de type file://. Renvoie Activateur Aucune. Aucun. dreamweaver.openWithBrowseDialog() Disponibilité 62 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 Chapitre 3 000ExtendingDWU.book Page 63 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. Aucun. dreamweaver.openWithExternalTextEditor() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dreamweaver.openWithImageEditor() Disponibilité Description 3.0 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 Le premier argument est le chemin du fichier à ouvrir, exprimé sous la forme d’une URL de type file://. Le second argument est le chemin de l’application dans laquelle le fichier doit être ouvert, exprimé sous la forme d’une URL de type file://. Renvoie Activateur Aucune. 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. API JavaScript de Dreamweaver 63 000ExtendingDWU.book Page 64 Thursday, June 8, 2000 3:38 PM dreamweaver.browseForFileURL() Disponibilité version 1,0, améliorée dans les versions 2.0 et 3.0 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} Le premier argument indique le type de la boîte de dialogue : open, select ou save. Le second argument, 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. Le troisième argument, 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. Le quatrième argument, 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. Renvoie Activateur Chaîne contenant le nom du fichier, exprimé sous la forme d’une URL de type file://. Aucun. dreamweaver.browseForFolderURL() Disponibilité 3.0 Description Ouvre la boîte de dialogue Choisir un dossier ayant le libellé spécifié dans la barre de titre. Arguments {titleBarLabel}, {directoryToStartIn} Le premier argument est le libellé qui doit figurer 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”. Le second argument est le chemin du répertoire dans lequel vous voulez commencer, exprimé sous la forme d’une URL de type file://. Renvoie Activateur Exemple Chaîne contenant le nom du dossier, exprimé sous la forme d’une URL de type file://. Aucun. Le code suivant renvoie l’URL d’un dossier : return dw.browseForFolderURL(’Select a Folder’, dw.getSiteRoot()); 64 Chapitre 3 000ExtendingDWU.book Page 65 Thursday, June 8, 2000 3:38 PM dreamweaver.closeDocument() Disponibilité 3.0 Description Ferme le document spécifié. Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (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. Renvoie Activateur Aucune. Aucun. dreamweaver.createDocument() Disponibilité Description 2.0 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} L’argument 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. Renvoie Activateur Objet document correspondant au nouveau document créé. Il s’agit de la valeur renvoyée par la fonction dreamweaver.getDocumentDOM(). Aucun. dreamweaver.exportCSS() Disponibilité 3.0 Description Ouvre la boîte de dialogue Exporter les styles dans un fichier CSS. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.canExportCSS() dreamweaver.exportEditableRegionsAsXML() Disponibilité 3.0 API JavaScript de Dreamweaver 65 000ExtendingDWU.book Page 66 Thursday, June 8, 2000 3:38 PM Description Ouvre la boîte de dialogue Exporter les régions modifiables sous XML. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.getRecentFileList() Disponibilité 3.0 Description Obtient la liste de tous les fichiers récemment ouverts et répertoriés au bas du menu Fichier. Arguments Aucun. Renvoie Activateur 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. Aucun. dreamweaver.importXMLIntoTemplate() Disponibilité 3.0 Description Ouvre la boîte de dialogue Importer XML. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.newFromTemplate() Disponibilité 3.0 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} L’argument est le chemin d’un modèle disponible sur le site en cours, exprimé sous la forme d’une URL de type file://. Renvoie Activateur Aucune. Aucun. dreamweaver.openDocument() Disponibilité 66 Chapitre 3 2.0 000ExtendingDWU.book Page 67 Thursday, June 8, 2000 3:38 PM 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 3, vous devez utiliser la fonction dreamweaver.openDocumentFromSite() pour obtenir ce résultat. 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 L’argument est le nom du fichier à ouvrir, exprimé sous la forme d’une URL. S’il s’agit d’une URL relative, elle est relative au fichier contenant le script ayant appelé cette fonction. Renvoie Activateur Objet document correspondant au fichier spécifié. Il s’agit de la valeur renvoyée par la fonction dreamweaver.getDocumentDOM(). Aucun. API JavaScript de Dreamweaver 67 000ExtendingDWU.book Page 68 Thursday, June 8, 2000 3:38 PM dreamweaver.openDocumentFromSite() Disponibilité Description 3.0 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 L’argument est le nom du fichier à ouvrir, exprimé sous la forme d’une URL. S’il s’agit d’une URL relative, elle est relative au fichier contenant le script ayant appelé cette fonction. Renvoie Activateur Objet document correspondant au fichier spécifié. Il s’agit de la valeur renvoyée par la fonction dreamweaver.getDocumentDOM(). Aucun. dreamweaver.openInFrame() Disponibilité 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. Renvoie Activateur Aucune. dreamweaver.canOpenInFrame() dreamweaver.releaseDocument() Disponibilité Description 2.0 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. 68 Chapitre 3 000ExtendingDWU.book Page 69 Thursday, June 8, 2000 3:38 PM 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 L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Activateur Aucune. Aucun. dreamweaver.revertDocument() Disponibilité 3.0 Description Rétablit la version précédemment enregistrée du fichier spécifié. Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Activateur Aucune. dreamweaver.canRevertDocument() dreamweaver.saveAll() Disponibilité 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. Renvoie Activateur Aucune. dreamweaver.canSaveAll() dreamweaver.saveDocument() Disponibilité Description 2.0 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} L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). API JavaScript de Dreamweaver 69 000ExtendingDWU.book Page 70 Thursday, June 8, 2000 3:38 PM Le second argument 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 3, 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. Renvoie Activateur Valeur booléenne indiquant le succès (TRUE) ou l’échec (FALSE) de l’opération. dreamweaver.canSaveDocument() dreamweaver.saveDocumentAs() Disponibilité 3.0 Description Ouvre la boîte de dialogue Enregistrer sous. Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Activateur Aucune. Aucun. dreamweaver.saveDocumentAsTemplate() Disponibilité 3.0 Description Ouvre la boîte de dialogue Enregistrer comme modèle. Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Activateur Aucune. dreamweaver.canSaveDocumentAsTemplate() dreamweaver.saveFrameset() Disponibilité 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. Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Activateur 70 Chapitre 3 Aucune. dreamweaver.canSaveFrameset() 000ExtendingDWU.book Page 71 Thursday, June 8, 2000 3:38 PM dreamweaver.saveFramesetAs() Disponibilité 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 L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Activateur Aucune. 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é 3.0 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. Renvoie Activateur Aucune. dreamweaver.canFindNext() API JavaScript de Dreamweaver 71 000ExtendingDWU.book Page 72 Thursday, June 8, 2000 3:38 PM dreamweaver.replace() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dreamweaver.replaceAll() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dreamweaver.setUpComplexFind() Disponibilité 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 Le premier argument 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>.) Renvoie Activateur 72 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 73 Thursday, June 8, 2000 3:38 PM 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é 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 Le premier argument 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>.) Renvoie Activateur Exemple Aucune. Aucun. 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(); API JavaScript de Dreamweaver 73 000ExtendingDWU.book Page 74 Thursday, June 8, 2000 3:38 PM dreamweaver.setUpFind() Disponibilité 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 L’argument est un objet pour lequel les propriétés suivantes peuvent être définies : searchString est le texte à rechercher. searchSource est une valeur booléenne indiquant si la recherche doit également porter sur le code source HTML. {matchCase} 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. {ignoreWhitespace} 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. {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. Renvoie Activateur Exemple Aucune. Aucun. 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é Description 74 Chapitre 3 3.0 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. 000ExtendingDWU.book Page 75 Thursday, June 8, 2000 3:38 PM Arguments searchObject L’argument est un objet pour lequel les propriétés suivantes peuvent être définies : searchString est le texte à rechercher. replaceString est le texte à substituer au texte recherché. searchSource est une valeur booléenne indiquant si la recherche doit également porter sur le code source HTML. {matchCase} 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. {ignoreWhitespace} 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. {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. Renvoie Activateur Exemple Aucune. Aucun. 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"’, searchSource: ‘bgcolor="#FFCCFF"’, searchSource: true}); dreamweaver.showFindDialog() Disponibilité 3.0 Description Ouvre la boîte de dialogue Rechercher. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.canShowFindDialog() API JavaScript de Dreamweaver 75 000ExtendingDWU.book Page 76 Thursday, June 8, 2000 3:38 PM dreamweaver.showFindReplaceDialog() Disponibilité 3.0 Description Ouvre la boîte de dialogue Remplacer. Arguments Aucun. Renvoie Activateur Aucune. 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é 3.0 Description Obtient la liste de tous les cadres nommés du jeu de cadres. Arguments Aucun. Renvoie Activateur Exemple 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é. Aucun. 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.splitFrame() Disponibilité 3.0 Description Fractionne le cadre sélectionné verticalement ou horizontalement. Arguments splitDirection L’argument doit avoir l’une des valeurs suivantes : "up", "down", "left" ou "right". Renvoie Activateur 76 Chapitre 3 Aucune. dom.canSplitFrame() 000ExtendingDWU.book Page 77 Thursday, June 8, 2000 3:38 PM Fonctions de modification 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é 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 L’argument est le nom de balise associé à ce type de 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". Renvoie Activateur Aucune. Aucun. dom.applyFontMarkup() Disponibilité 3.0 Description Applique à la sélection en cours la balise FONT, ainsi que l’attribut spécifié et sa valeur. Arguments attribute, value Le premier argument doit être "face", "size" ou "color". Le second argument est la valeur qui devrait être affectée à l’attribut, par exemple "Arial, Helvetica, sans-serif", "5" ou "#FF0000". Renvoie Activateur Aucune. Aucun. dom.deleteSelection() Disponibilité 3.0 Description Supprime la sélection du document. Arguments Aucun. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 77 000ExtendingDWU.book Page 78 Thursday, June 8, 2000 3:38 PM dom.editAttribute() Disponibilité 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 Renvoie Activateur Aucune. Aucun. dom.exitBlock() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dom.getFontMarkup() Disponibilité 3.0 Description Obtient la valeur de l’attribut spécifié de la balise FONT pour la sélection en cours. Arguments attribute L’argument doit être "face", "size" ou "color". Renvoie Activateur Chaîne contenant la valeur de l’attribut spécifié, ou chaîne vide si l’attribut n’est pas défini. Aucun. dom.getLinkHref() Disponibilité 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. Renvoie Activateur 78 3.0 Chapitre 3 Chaîne contenant le nom du fichier lié, exprimé sous la forme d’une URL de type file://. Aucun. 000ExtendingDWU.book Page 79 Thursday, June 8, 2000 3:38 PM dom.getLinkTarget() Disponibilité 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. Renvoie Activateur 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. Aucun. dom.getListTag() Disponibilité 3.0 Description Obtient le style de la liste sélectionnée. Arguments Aucun. Renvoie Activateur 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. Aucun. dom.getTextAlignment() Disponibilité 3.0 Description Obtient l’alignement du bloc contenant la sélection. Arguments Aucun. Renvoie Activateur Chaîne contenant la valeur de l’attribut ALIGN de la balise associée au bloc, ou chaîne vide si cet attribut n’est pas défini. Cette valeur est toujours renvoyée en minuscules. Aucun. API JavaScript de Dreamweaver 79 000ExtendingDWU.book Page 80 Thursday, June 8, 2000 3:38 PM dom.getTextFormat() Disponibilité 3.0 Description Obtient le format du bloc contenant la sélection. Arguments Aucun. Renvoie Activateur 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. Aucun. dom.hasCharacterMarkup() Disponibilité 3.0 Description Vérifie si le marqueur de caractère spécifié est déjà associé à la sélection. Arguments markupTagName L’argument est le nom de la balise vérifiée. 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". Renvoie Activateur 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. Aucun. dom.indent() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dom.insertHTML() Disponibilité 3.0 Description Insère un contenu HTML dans le document, au point d’insertion en cours. Arguments contentToInsert, {bReplaceCurrentSelection} Le premier argument est le contenu à insérer. 80 Chapitre 3 000ExtendingDWU.book Page 81 Thursday, June 8, 2000 3:38 PM Le second argument 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. Renvoie Activateur Exemple Aucune. Aucun. 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é 3.0 Description Insère l’objet spécifié et invite l’utilisateur à définir des paramètres, le cas échéant. Arguments objectName L’argument est le nom d’un objet du dossier Configuration/Objects. Renvoie Activateur Exemple Aucune. Aucun. Un appel à la fonction dreamweaver.getDocumentDOM().insertObject(’Button’); insère un bouton formulaire dans le document, au point d’insertion ou après la sélection en cours. 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é 3.0 Description Insère un contenu dans le document, au point d’insertion en cours. Arguments contentToInsert, {bReplaceCurrentSelection} API JavaScript de Dreamweaver 81 000ExtendingDWU.book Page 82 Thursday, June 8, 2000 3:38 PM Le premier argument est le contenu à insérer. Le second argument 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. Renvoie Activateur Exemple Aucune. Aucun. Le code suivant insère <b>130</b> dans le document en cours : var theDOM = dw.getDocumentDOM(); theDOM.insertText(’<b>130</b>’); Ceci se présente sous la forme suivante dans la fenêtre de document : dom.newBlock() Disponibilité 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. Renvoie Activateur Exemple Aucune. Aucun. 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.outdent() Disponibilité 82 3.0 Description Applique un retrait négatif à la sélection. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 83 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. Aucun. dom.removeCharacterMarkup() Disponibilité 3.0 Description Supprime de la sélection le type de marqueur de caractère spécifié. Arguments tagName L’argument est le nom de balise associé à ce type de 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". Renvoie Activateur Aucune. Aucun. dom.removeFontMarkup() Disponibilité 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 la balise <FONT>, celle-ci est également supprimée. Arguments attribute L’argument doit être "face", "size" ou "color". Renvoie Activateur Aucune. Aucun. dom.removeLink() Disponibilité 3.0 Description Supprime l’hyperlien de la sélection. Arguments Aucun. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 83 000ExtendingDWU.book Page 84 Thursday, June 8, 2000 3:38 PM dom.resizeSelection() Disponibilité 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 Renvoie Activateur Aucune. Aucun. dom.setAttributeWithErrorChecking() Disponibilité 3.0 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 Renvoie Activateur Aucune. Aucun. dom.setLinkHref() Disponibilité 3.0 Description Transforme la sélection en hyperlien ou modifie la valeur du lien qui entoure la sélection en cours. Arguments linkHREF L’argument 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. Renvoie Activateur Aucune. dom.canSetLinkHref() dom.setLinkTarget() Disponibilité 84 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. Arguments {linkTarget} Chapitre 3 000ExtendingDWU.book Page 85 Thursday, June 8, 2000 3:38 PM L’argument 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. Renvoie Activateur Aucune. Aucun. dom.setListBoxKind() Disponibilité 3.0 Description Modifie le type du menu SELECT sélectionné. Arguments kind L’argument doit être "menu" ou "list box". Renvoie Activateur Aucune. Aucun. dom.showListPropertiesDialog() Disponibilité 3.0 Description Ouvre la boîte de dialogue Propriétés de la liste. Arguments Aucun. Renvoie Activateur Aucune. dom.canShowListPropertiesDialog() dom.setListTag() Disponibilité 3.0 Description Définit le style de la liste sélectionnée. Arguments listTag L’argument est la balise associée à la liste. Il doit s’agir de "ol", "ul", "dl" ou d’une chaîne vide. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 85 000ExtendingDWU.book Page 86 Thursday, June 8, 2000 3:38 PM dom.setTextAlignment() Disponibilité 3.0 Description Affecte la valeur spécifiée à l’attribut ALIGN du bloc contenant la sélection. Arguments alignValue L’argument doit être "left", "center" ou "right". Renvoie Activateur Aucune. Aucun. dom.setTextFieldKind() Disponibilité 3.0 Description Définit le format du champ texte sélectionné. Arguments fieldType L’argument doit être "input", "textarea" ou "password". Renvoie Activateur Aucune. Aucun. dom.showFontColorDialog() Disponibilité 3.0 Description Ouvre la boîte de dialogue de la pipette de couleurs. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.deleteSelection() Disponibilité 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’une palette flottante. Arguments Aucun. Renvoie Activateur 86 3.0 Chapitre 3 Aucune. dreamweaver.canDeleteSelection() 000ExtendingDWU.book Page 87 Thursday, June 8, 2000 3:38 PM dreamweaver.editFontList() Disponibilité 3.0 Description Ouvre la boîte de dialogue Modifier la liste des polices. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.getFontList() Disponibilité 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. Renvoie Activateur Exemple Tableau de chaînes, chacune représentant un élément de la liste des polices. Aucun. 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.getKeyState() Disponibilité 3.0 Description Détermine si la touche de modification spécifiée est enfoncée. Arguments key L’argument 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. Renvoie Activateur Exemple Valeur booléenne indiquant si la touche est enfoncée. Aucun. 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 } API JavaScript de Dreamweaver 87 000ExtendingDWU.book Page 88 Thursday, June 8, 2000 3:38 PM 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é 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. Renvoie Activateur Valeur booléenne indiquant si cette option est activée. Aucun. dreamweaver.quitApplication() Disponibilité 3.0 Description Quitte Dreamweaver lorsque l’exécution du script appelant cette fonction prend fin. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.showAboutBox() Disponibilité 3.0 Description Ouvre la boîte d’information A propos de. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.showDynamicDataDialog() Disponibilité 88 Chapitre 3 Dreamwaver UltraDev 1.0 000ExtendingDWU.book Page 89 Thursday, June 8, 2000 3:38 PM Description Affiche la boîte de dialogue Données dynamiques ou Texte dynamique qui demeure à l’écran aussi longtemps que l’utilisateur ne la referme pas. Si l’utilisateur clique sur OK, la fonction showDynamicDataDialog() renvoie une chaîne qui sera insérée dans le document de l’utilisateur. Cette chaîne provient de la fonction API source de données, generateDynamicDataRef() et est transmise dans la fonction API format de données, formatDynamicDataRef() ; la valeur renvoyée par formatDynamicDataRef() est celle renvoyée par showDynamicDataDialog().) Arguments source, title source est une chaîne contenant un code source HTML, représentant l’objet de données dynamiques. Il s’agit de la même chaîne renvoyée par un appel précédent à cette fonction. Celle-ci utilise le contenu de source pour initialiser toutes les commandes de la boîte de dialogue afin qu’ils s’affichent exactement de la même façon que lorsque l’utilisateur appuie sur OK pour créer cette chaîne. UltraDev transmet cette chaîne à inspectDynamicDataRef(), afin de déterminer si celle-ci correspond à l’un des nœuds de l’arborescence. Dans ce cas, le nœud est sélectionné lorsque la boîte de dialogue s’affiche. Vous pouvez également transmettre une chaîne vide, laquelle n’initialisera pas la boîte de dialogue. Par exemple, une boîte de dialogue n’est pas initialisée lorsqu’elle est utilisée pour créer un nouvel élément. title est la chaîne contenant le texte devant apparaître dans la barre de titres de la boîte de dialogue. Cet argument est optionnel. S’il n’est pas fourni, UltraDev affichera Données dynamiques dans la barre de titre. Renvoie Une chaîne représentant l’objet de données dynamiques si l’utilisateur clique sur OK. dreamweaver.showPreferencesDialog() Disponibilité 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. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 89 000ExtendingDWU.book Page 90 Thursday, June 8, 2000 3:38 PM 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é 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. Renvoie Activateur Aucune. Aucun. dom.checkTargetBrowsers() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dom.showPagePropertiesDialog() Disponibilité 3.0 Description Ouvre la boîte de dialogue Propriétés de la page. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.getElementRef() Disponibilité Description 90 Chapitre 3 2.0 Obtient la référence d’objet Netscape ou IE pour un objet tag spécifique de l’arborescence DOM. 000ExtendingDWU.book Page 91 Thursday, June 8, 2000 3:38 PM Arguments NSorIE, tagObject Le premier argument 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. Le second argument est un objet tag de l’arborescence DOM. Renvoie 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 <tag>". 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]). 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 Ces fonctions permettent d’annuler, de rétablir, de mémoriser et d’exécuter les étapes figurant dans la palette Historique. 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 la palette Historique et non dans le document en cours. dom.redo() Disponibilité 3.0 Description Rétablit l’étape qui vient d’être annulée dans le document. Arguments Aucun. API JavaScript de Dreamweaver 91 000ExtendingDWU.book Page 92 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. dom.canRedo() dom.undo() Disponibilité 3.0 Description Annule l’étape qui vient d’être exécutée dans le document. Arguments Aucun. Renvoie Activateur Aucune. dom.canUndo() dreamweaver.getRedoText() Disponibilité 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. Renvoie Activateur Exemple Chaîne contenant le texte associé à l’opération de modification qui sera rétablie. Aucun. 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é 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. Renvoie Activateur Exemple 92 3.0 Chapitre 3 Chaîne contenant le texte associé à l’opération de modification qui sera annulée. Aucun. 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>". 000ExtendingDWU.book Page 93 Thursday, June 8, 2000 3:38 PM dreamweaver.playRecordedCommand() Disponibilité 3.0 Description Exécute la commande mémorisée dans le document actif. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.canPlayRecordedCommand() dreamweaver.redo() Disponibilité 3.0 Description Rétablit l’étape qui vient d’être annulée dans la fenêtre de document, la boîte de dialogue, la palette flottante ou le volet de la fenêtre Site en cours. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.canRedo() dreamweaver.startRecording() Disponibilité 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. Renvoie Activateur Aucune. dreamweaver.isRecording() (doit renvoyer FALSE). dreamweaver.stopRecording() Disponibilité 3.0 Description Arrête la mémorisation sans intervention de l’utilisateur. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.isRecording() (doit renvoyer TRUE) API JavaScript de Dreamweaver 93 000ExtendingDWU.book Page 94 Thursday, June 8, 2000 3:38 PM dreamweaver.undo() Disponibilité 3.0 Description Annule l’étape précédente dans la fenêtre de document, la boîte de dialogue, la palette flottante ou le volet de la fenêtre Site en cours. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.canUndo() dreamweaver.historyPalette.clearSteps() Disponibilité 3.0 Description Efface toutes les étapes de la palette Historique et désactive les options de menu Annuler et Rétablir. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.historyPalette.copySteps() Disponibilité 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 L’argument est un tableau d’index de position dans la palette Historique. Renvoie Activateur Exemple Aucune. Aucun. L’exemple de code suivant sélectionne les quatre premières étapes de la palette Historique : dw.historyPalette.copySteps([0,1,2,3]); dreamweaver.historyPalette.getSelectedSteps() Disponibilité 94 3.0 Description Détermine quelle section de la palette Historique est sélectionnée. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 95 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Exemple Tableau contenant les index de position de toutes les étapes sélectionnées. Aucun. Si la seconde, la troisième et la quatrième étapes sont sélectionnées dans la palette Historique, comme le montre l’illustration ci-après, un appel à la fonction dw.historyPalette.getSelectedSteps() renverra [1,2,3]. dreamweaver.historyPalette.getStepCount() Disponibilité 3.0 Description Obtient le nombre d’étapes figurant dans la palette Historique. Arguments Aucun. Renvoie Activateur Entier représentant le nombre d’étapes que contient actuellement la palette Historique. Aucun. dreamweaver.historyPalette.getStepsAsJavaScript() Disponibilité 3.0 Description Obtient l’équivalent JavaScript des étapes sélectionnées. Arguments Aucun. Renvoie Activateur Chaîne contenant le code JavaScript correspondant aux étapes sélectionnées. Aucun. API JavaScript de Dreamweaver 95 000ExtendingDWU.book Page 96 Thursday, June 8, 2000 3:38 PM Exemple Si les trois étapes indiquées dans l’illustration ci-après sont sélectionnées dans la palette Historique, un appel à la fonction dw.historyPalette.getStepsAsJavaScript(dw.historyPalette.getSelectedSteps()) 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é 3.0 Description Obtient l’état d’annulation en cours. Arguments Aucun. Renvoie Activateur Position du marqueur d’annulation dans la palette Historique. Aucun. dreamweaver.historyPalette.replaySteps() Disponibilité 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. Arguments arrayOfIndices L’argument est un tableau d’index de position dans la palette Historique. Renvoie Activateur Exemple 96 Chapitre 3 Aucune. Aucun. Un appel à la fonction dw.historyPalette.replaySteps([0,2,3]) réexécute la première, la troisième et la quatrième étapes de la palette Historique. 000ExtendingDWU.book Page 97 Thursday, June 8, 2000 3:38 PM dreamweaver.historyPalette.saveAsCommand() Disponibilité 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 L’argument est un tableau d’index de position dans la palette Historique. Renvoie Activateur Exemple Aucune. Aucun. Pour enregistrer comme commande la quatrième, la sixième et la huitième commandes de la palette Historique, vous utiliseriez le code suivant : dw.historyPalette.saveAsCommand([3,5,7]); dreamweaver.historyPalette.setSelectedSteps() Disponibilité 3.0 Description Sélectionne les étapes spécifiées dans la palette Historique. Arguments arrayOfIndices L’argument est un tableau d’index de position dans la palette Historique. Si aucun argument n’est défini, toutes les étapes sont désélectionnées. Renvoie Aucun. Activateur Aucun. Exemple L’exemple de code suivant sélectionne la première, la seconde et la troisième étapes de la palette Historique : dw.historyPalette.setSelection([0,1,2]); dreamweaver.historyPalette.getUndoState() Disponibilité 3.0 Description Effectue le nombre d’annulations et de rétablissements nécessaire pour arriver à l’état d’annulation spécifié. Arguments undoState L’argument est l’objet renvoyé par la fonction dw.historyPalette.getUndoState(). Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 97 000ExtendingDWU.book Page 98 Thursday, June 8, 2000 3:38 PM 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 contrôlent ou agissent sur la sélection dans la palette de styles HTML et non dans le document en cours. dom.applyHTMLStyle() Disponibilité 3.0 Description Applique le style HTML spécifié à la sélection en cours. Cette fonction n’est valide que pour le document actif. Arguments htmlStyleName Renvoie Activateur Aucune. Aucun. dreamweaver.htmlStylePalette.deleteSelectedStyle() Disponibilité 3.0 Description Supprime le style sélectionné de la palette de styles HTML. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.htmlStylePalette.canEditSelection() dreamweaver.htmlStylePalette.duplicateSelectedStyle() Disponibilité 3.0 Description Duplique le style sélectionné et ouvre la boîte de dialogue Définir style HTML. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.htmlStylePalette.canEditSelection() dreamweaver.htmlStylePalette.editSelectedStyle() Disponibilité Description Ouvre la boîte de dialogue Définir style HTML pour le style sélectionné. Arguments Aucun. Renvoie Activateur 98 3.0 Chapitre 3 Aucune. dreamweaver.htmlStylePalette.canEditSelection() 000ExtendingDWU.book Page 99 Thursday, June 8, 2000 3:38 PM dreamweaver.htmlStylePalette.getSelectedStyle() Disponibilité 3.0 Description Obtient le nom du style sélectionné dans la palette de styles HTML. Arguments Aucun. Renvoie Activateur Chaîne contenant le nom du style sélectionné. Aucun. dreamweaver.htmlStylePalette.getStyles() Disponibilité 3.0 Description Obtient la liste de tous les noms de styles HTML définis. Arguments Aucun. Renvoie Activateur 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. Aucun. dreamweaver.htmlStylePalette.newStyle() Disponibilité 3.0 Description Ouvre la boîte de dialogue Définir style HTML pour définir un nouveau style. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.htmlStylePalette.setSelectedStyle() Disponibilité 3.0 Description Sélectionne le style spécifié de la palette de styles HTML. Arguments htmlStyleName Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 99 000ExtendingDWU.book Page 100 Thursday, June 8, 2000 3:38 PM 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é 3.0 Description Déplace le curseur vers le bas du nombre de lignes spécifié. Arguments {nTimes}, {bShiftIsDown} Le premier argument indique de combien de lignes vers le bas le curseur doit être déplacé. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.arrowLeft() Disponibilité 3.0 Description Déplace le curseur vers la gauche du nombre de colonnes spécifié. Arguments {nTimes}, {bShiftIsDown} Le premier argument indique de combien de colonnes vers la gauche le curseur doit être déplacé. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.arrowRight() Disponibilité 100 3.0 Description Déplace le curseur vers la droite du nombre de colonnes spécifié. Arguments {nTimes}, {bShiftIsDown} Chapitre 3 000ExtendingDWU.book Page 101 Thursday, June 8, 2000 3:38 PM Le premier argument indique de combien de colonnes vers la droite le curseur doit être déplacé. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.arrowUp() Disponibilité 3.0 Description Déplace le curseur vers le haut du nombre de lignes spécifié. Arguments {nTimes}, {bShiftIsDown} Le premier argument indique de combien de lignes vers le haut le curseur doit être déplacé. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.backspaceKey() Disponibilité 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} L’argument est le nombre de retours arrière souhaités. S’il n’est pas défini, il prend par défaut la valeur 1. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 101 000ExtendingDWU.book Page 102 Thursday, June 8, 2000 3:38 PM dom.deleteKey() Disponibilité 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. Arguments {nTimes} L’argument est le nombre de suppressions souhaitées. S’il n’est pas défini, il prend par défaut la valeur 1. Renvoie Activateur Aucune. Aucun. dom.endOfDocument() Disponibilité 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 HTML, selon le cas). Arguments {bShiftIsDown} L’argument est une valeur booléenne indiquant s’il faut étendre la sélection. S’il n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.endOfLine() Disponibilité 3.0 Description Déplace le point d’insertion à la fin de la ligne. Arguments {bShiftIsDown} L’argument est une valeur booléenne indiquant s’il faut étendre la sélection. S’il n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur 102 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 103 Thursday, June 8, 2000 3:38 PM dom.nextParagraph() Disponibilité 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} Le premier argument est le nombre de paragraphes que le curseur doit sauter. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.nextWord() Disponibilité 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} Le premier argument est le nombre de mots que le curseur doit sauter. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.pageDown() Disponibilité 3.0 Description Déplace le point d’insertion d’une page vers le bas (équivalent de la touche PG. SUIV). Arguments {nTimes}, {bShiftIsDown} Le premier argument indique de combien de pages vers le bas le curseur doit être déplacé. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 103 000ExtendingDWU.book Page 104 Thursday, June 8, 2000 3:38 PM dom.pageUp() Disponibilité 3.0 Description Déplace le point d’insertion d’une page vers le haut (équivalent de la touche PG. PREC). Arguments {nTimes}, {bShiftIsDown} Le premier argument indique de combien de pages vers le haut le curseur doit être déplacé. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.previousParagraph() Disponibilité 3.0 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} Le premier argument est le nombre de paragraphes que le curseur doit sauter vers l’arrière. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.previousWord() Disponibilité 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} Le premier argument est le nombre de mots que le curseur doit sauter vers l’arrière. Si cet argument n’est pas défini, il prend par défaut la valeur 1. Le second argument est une valeur booléenne indiquant s’il faut étendre la sélection. Si cet argument n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur 104 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 105 Thursday, June 8, 2000 3:38 PM dom.startOfDocument() Disponibilité 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 HTML, selon le cas). Arguments {bShiftIsDown} L’argument est une valeur booléenne indiquant s’il faut étendre la sélection. S’il n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. dom.startOfLine() Disponibilité 3.0 Description Déplace le point d’insertion au début de la ligne. Arguments {bShiftIsDown} L’argument est une valeur booléenne indiquant s’il faut étendre la sélection. S’il n’est pas défini, il prend par défaut la valeur FALSE. Renvoie Activateur Aucune. Aucun. 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é 3.0 Description Aligne à gauche, à droite, en haut ou en bas les calques ou zones réactives sélectionnés. Arguments alignDirection L’argument représente le bord sur lequel les calques ou les zones réactives doivent être alignés, à savoir"left", "right", "top" ou "bottom". Renvoie Activateur Aucune. dom.canAlign() API JavaScript de Dreamweaver 105 000ExtendingDWU.book Page 106 Thursday, June 8, 2000 3:38 PM dom.arrange() Disponibilité 3.0 Description Déplace les zones réactives sélectionnées dans le sens indiqué. Arguments toBackOrFront L’argument correspond au sens du déplacement, à savoir "front" ou "back". Renvoie Activateur Aucune. dom.canArrange() dom.makeSizesEqual() Disponibilité 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 Le premier argument est une valeur booléenne indiquant si les calques ou les zones réactives doivent être redimensionnés horizontalement. Le second argument est une valeur booléenne indiquant si les calques ou les zones réactives doivent être redimensionnés verticalement. Renvoie Activateur Aucune. Aucun. dom.moveSelectionBy() Disponibilité 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 Le premier argument indique de combien de pixels la sélection doit être déplacée horizontalement. Le second argument indique de combien de pixels la sélection doit être déplacée verticalement. Renvoie Activateur Aucune. Aucun. dom.resizeSelectionBy() Disponibilité 106 Chapitre 3 3.0 000ExtendingDWU.book Page 107 Thursday, June 8, 2000 3:38 PM Description Redimensionne le calque ou la zone réactive sélectionnée. Arguments left, top, bottom, right Le premier argument est la nouvelle position du bord gauche du calque ou de la zone réactive. Le second argument est la nouvelle position du bord supérieur du calque ou de la zone réactive. Le troisième argument est la nouvelle position du bord inférieur du calque ou de la zone réactive. Le quatrième argument est la nouvelle position du bord droit du calque ou de la zone réactive. Renvoie Activateur Exemple Aucune. Aucun. 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, Top à 20, Width à 240 et Height à 240. dom.setLayerTag() Disponibilité 3.0 Description Spécifie la balise HTML définissant le ou les calques sélectionnés. Arguments tagName L’argument doit être "layer", "ilayer", "div" ou "span". Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 107 000ExtendingDWU.book Page 108 Thursday, June 8, 2000 3:38 PM 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.historyPalette permettent de contrôler ou d’agir sur la sélection dans la palette de bibliothèque et non dans le document en cours. De même, les méthodes de l’objet dreamweaver.templatePalette contrôlent ou agissent sur la sélection dans la palette de modèles. dom.applyTemplate() Disponibilité 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} L’argument est le chemin d’un modèle disponible sur le site en cours, exprimé sous la forme d’une URL de type file://. Renvoie Activateur Aucune. dom.canApplyTemplate() dom.detachFromLibrary() Disponibilité 3.0 Description Rompt le lien entre l’instance 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. Renvoie Activateur Aucune. Aucun. dom.detachFromTemplate() Disponibilité Description Détache le document en cours du modèle qui lui est associé. Arguments Aucun. Renvoie Activateur 108 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 109 Thursday, June 8, 2000 3:38 PM dom.getAttachedTemplate() Disponibilité 3.0 Description Obtient le chemin du modèle associé au document. Arguments Aucun. Renvoie Activateur Chaîne contenant le nom du modèle, exprimé sous la forme d’une URL de type file://. Aucun. dom.getEditableRegionList() Disponibilité 3.0 Description Obtient la liste des régions modifiables dans le corps du document. Arguments Aucun. Renvoie Activateur Exemple Tableau de nœuds d’élément. Aucun. Voir « dom.getSelectedEditableRegion() » à la page 110. dom.getIsLibraryDocument() Disponibilité 3.0 Description Détermine si le document est un élément de bibliothèque. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si le document est un fichier LBI. Aucun. dom.getIsTemplateDocument() Disponibilité 3.0 Description Détermine si le document est un modèle. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si le document est un fichier DWT. Aucun. API JavaScript de Dreamweaver 109 000ExtendingDWU.book Page 110 Thursday, June 8, 2000 3:38 PM dom.getSelectedEditableRegion() Disponibilité 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. Renvoie Activateur Exemple Index de position dans le tableau renvoyé par la fonction dom.getEditableRegionList(). Aucun. 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é 3.0 Description Insère une instance d’un élément de bibliothèque dans le document. Arguments libraryItemURL L’argument est le chemin d’un fichier LBI, exprimé sous la forme d’une URL de type file://. Renvoie Activateur Aucune. Aucun. dom.markSelectionAsEditable() Disponibilité 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. Renvoie Activateur Aucune. dom.canMarkSelectionAsEditable() dom.newEditableRegion() Disponibilité 110 Chapitre 3 3.0 000ExtendingDWU.book Page 111 Thursday, June 8, 2000 3:38 PM 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 curseur. Arguments Aucun. Renvoie Activateur Aucune. dom.canMakeNewEditableRegion() dom.removeEditableRegion() Disponibilité 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. Renvoie Activateur Aucune. dom.canRemoveEditableRegion() dom.updateCurrentPage() Disponibilité 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} L’argument doit être "library", "template" ou "both". S’il n’est pas défini, il prend par défaut la valeur "both". Renvoie Activateur Aucune. Aucun. dreamweaver.updatePages() Disponibilité 3.0 Description Ouvre la boîte de dialogue Mettre à jour les pages et sélectionne les options spécifiées. Arguments {typeOfUpdate} L’argument doit être "library", "template" ou "both". S’il n’est pas défini, il prend par défaut la valeur "both". Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 111 000ExtendingDWU.book Page 112 Thursday, June 8, 2000 3:38 PM dreamweaver.libraryPalette.deleteSelectedItem() Disponibilité 3.0 Description Supprime de la palette de bibliothèque l’élément de bibliothèque sélectionné et supprime du dossier Library (bibliothèque), à la racine du site en cours, le fichier LBI qui lui est associé. Il peut rester des instances de l’élément supprimé sur certaines pages du site. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.libraryPalette.getSelectedItem() Disponibilité 3.0 Description Obtient le chemin de l’élément de bibliothèque sélectionné. Arguments Aucun. Renvoie Activateur Chaîne contenant le nom de l’élément de bibliothèque, exprimé sous la forme d’une URL de type file://. Aucun. dreamweaver.libraryPalette.newFromDocument() Disponibilité 3.0 Description Crée un nouvel élément de bibliothèque basé sur l’élément sélectionné dans le document en cours. Arguments bReplaceCurrent L’argument est une valeur booléenne indiquant si la sélection doit être remplacée par une instance du nouvel élément de bibliothèque créé. Renvoie Activateur Aucune. Aucun. dreamweaver.libraryPalette.recreateFromDocument() Disponibilité 112 3.0 Description Crée dans le document en cours un fichier LBI correspondant à l’instance 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. Chapitre 3 000ExtendingDWU.book Page 113 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. Aucun. dreamweaver.libraryPalette.renameSelectedItem() Disponibilité 3.0 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. Renvoie Activateur Aucune. Aucun. dreamweaver.templatePalette.deleteSelectedTemplate() Disponibilité 3.0 Description Supprime le modèle sélectionné du dossier des modèles. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.templatePalette.getSelectedTemplate() Disponibilité 3.0 Description Obtient le chemin du modèle sélectionné. Arguments Aucun. Renvoie Activateur Chaîne contenant le chemin du modèle, exprimé sous la forme d’une URL de type file://. Aucun. dreamweaver.templatePalette.newBlankTemplate() Disponibilité 3.0 Description Crée un nouveau modèle. Arguments Aucun. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 113 000ExtendingDWU.book Page 114 Thursday, June 8, 2000 3:38 PM dreamweaver.templatePalette.renameSelectedTemplate() Disponibilité 3.0 Description Transforme le nom du modèle sélectionné en champ modifiable et permet à l’utilisateur de renommer la sélection. Arguments Aucun. Renvoie Activateur Aucune. Aucun. Fonctions Live Data Vous pouvez utiliser les fonctions Live data suivantes pour simuler les fonctionnalités du menu. showLiveDataDialog() utilisée pour l’élément du menu Affichage > Paramètres Live Data setLiveDataMode() utilisée pour les éléments du menu Affichage > Live Data et Affichage > Actualiser Live Data getLiveDataMode() également utilisée pour Affichage > Live Data Les fonctions de données restantes sont utilisées pour implémenter la fonction du traducteur API liveDataTranslateMarkup(). dreamweaver.getLiveDataInitTags() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie les balises d’initialisation pour le document actif. Il s’agit des balises HTML fournies par l’utilisateur dans la boîte de dialogue Paramètres Live Data. Cette fonction est généralement appelée par une fonction liveDataTranslateMarkup() du traducteur, de telle sorte que le traducteur puisse transmettre les balises à la fonction liveDataTranslate(). Arguments Aucun. Renvoie Une chaîne contenant les balises d’initialisation. dreamweaver.getLiveDataMode() Disponibilité Description Détermine si la fenêtre Live Data est actuellement visible. Arguments Aucun. Renvoie 114 Dreamweaver UltraDev 1.0 Chapitre 3 Une valeur booléenne indiquant si la fenêtre Live Data est visible ou pas. 000ExtendingDWU.book Page 115 Thursday, June 8, 2000 3:38 PM dreamweaver.liveDataTranslate() Disponibilité Description Dreamweaver UltraDev 1.0 Envoie un document HTML entier vers un serveur de l’application, demande au serveur d’exécuter les scripts dans le document, puis renvoie le document HTML obtenu. Cette fonction ne peut être appelée que depuis une fonction liveDataTranslateMarkup() du traducteur. Si vous essayez de l’appeler à un autre moment, une erreur se produit. Elle exécute les opérations suivantes : Active l’image animée apparaissant près du côté droit de la fenêtre Live Data. Tient compte des informations saisies par l’utilisateur. Si celui-ci appuie sur l’icône Arrêter, la fonction revient immédiatement. Accepte un seul argument de chaîne de la part de l’appelant. Il s’agit en général de la source HTML entière du document de l’utilisateur, la même chaîne utilisée dans l’étape suivante. Enregistre la chaîne HTML du document de l’utilisateur sous forme de fichier temporaire sur le serveur Live Data. Envoie une requête HTTP au serveur Live Data à l’aide des paramètres spécifiés dans la boîte de dialogue Paramètres Live Data. Reçoit la réponse HTML du serveur Live Data. Enlève le fichier temporaire du serveur Live Data. Suspend l’animation de l’image. Renvoie la réponse HTML à l’appelant. Arguments Renvoie Une simple chaîne, généralement l’intégralité de la source HTML du document actuellement utilisé par l’utilisateur. Un objet httpReply. Cet objet est identique à la valeur renvoyée par la fonction MMHttp.getText(). Si l’utilisateur clique sur l’icône Arrêter, le httpReply.statusCode de la valeur de retour sera égale à 200 (état : OK) et son httpReply.data sera égal à la chaîne vide. Voir la section « API HTTP » à la page 219 pour plus d’informations sur l’objet httpReply. dreamweaver.setLiveDataError() Disponibilité Dreamweaver UltraDev 1.0 API JavaScript de Dreamweaver 115 000ExtendingDWU.book Page 116 Thursday, June 8, 2000 3:38 PM Description Spécifie le message d’erreur devant être affiché en cas d’erreur survenant au cours de l’exécution de la fonction liveDataTranslateMarkup() dans un traducteur. Si le document transmis par UltraDev à liveDataTranslate() contient des erreurs, le serveur retransmet le message d’erreur, au format HTML. Si le traducteur (le code ayant appelé liveDataTranslate()) réalise que le serveur a renvoyé un message d’erreur, il appelle setLiveDataError() pour afficher le message d’erreur dans UltraDev. Ce message s’affiche à l’issue de l’exécution de la fonction liveDataTranslateMarkup() ; UltraDev affiche alors la description dans une boîte de dialogue d’erreur. La fonction setLiveDataError() ne doit être appelée que depuis la fonction liveDataTranslateMarkup(). Arguments source source est une chaîne contenant un code source HTML et devant être analysée et restituée dans la boîte de dialogue d’erreur. Renvoie Aucune. dreamweaver.setLiveDataMode() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche la fenêtre Live Data. Arguments bIsVisible bIsVisible est une valeur booléenne indiquant si la fenêtre Live Data doit être visible ou pas. Si vous transmettez true pour cette fonction et que la fenêtre Live Data est en cours d’affichage, l’effet sera le même que lorsque l’utilisateur clique sur Actualiser. Renvoie Aucune. dreamweaver.showLiveDataDialog() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche la boîte de dialogue Paramètres Live Data. Arguments Aucun. Renvoie 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. 116 Chapitre 3 000ExtendingDWU.book Page 117 Thursday, June 8, 2000 3:38 PM dreamweaver.getMenuNeedsUpdating() Disponibilité 3.0 Description Vérifie si le menu spécifié doit être mis à jour. Arguments menuId L’argument 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). Renvoie Activateur 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. Pour plus d’informations, voir « dreamweaver.notifyMenuUpdated() » à la page 117 . Aucun. dreamweaver.notifyMenuUpdated() Disponibilité 3.0 Description Prévient Dreamweaver lorsque le menu spécifié doit être mis à jour. Arguments menuId, menuListFunction Le premier argument 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). Le second argument 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()" ou "site.getSites()". Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 117 000ExtendingDWU.book Page 118 Thursday, June 8, 2000 3:38 PM dreamweaver.reloadMenus() Disponibilité 3.0 Description Recharge la structure de menus à partir du fichier menus.xml du dossier Configuration. Arguments Aucun. Renvoie Activateur Aucune. 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é 2.0 Description Obtient le chemin d’accès du dossier Configuration, exprimé sous la forme d’une URL de type file://. Arguments Aucun. Renvoie Activateur Exemple Chaîne contenant le chemin d’accès du dossier Configuration. Aucun. 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é 118 1.2 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 Chapitre 3 000ExtendingDWU.book Page 119 Thursday, June 8, 2000 3:38 PM L’argument 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]" et "parent.frames[’frameName’]" désignent un document figurant dans un cadre spécifique du jeu de cadres contenant le document en cours. Renvoie L’une des valeurs suivantes : Chaîne contenant l’URL du document spécifié, si le fichier a été enregistré ; Chaîne vide si le fichier n’a pas été enregistré. Activateur Aucun. dreamweaver.getSiteRoot() Disponibilité 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. Renvoie L’une des valeurs suivantes : Chaîne contenant l’URL du dossier racine local du site dans lequel le fichier a été enregistré ; Chaîne vide si le fichier n’est pas associé à un site. Activateur Aucun. dreamweaver.relativeToAbsoluteURL() Disponibilité 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 Le premier argument est l’URL à convertir. Le second argument 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. Le troisième argument correspond au chemin de la racine du site, exprimé sous la forme d’une URL de type file://, ou à une chaîne vide si relURL est une URL relative à un document. API JavaScript de Dreamweaver 119 000ExtendingDWU.book Page 120 Thursday, June 8, 2000 3:38 PM Renvoie 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é 3.0 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. Renvoie Activateur Aucune. Aucun. dom.selectParent() Disponibilité 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. Renvoie Activateur 120 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 121 Thursday, June 8, 2000 3:38 PM dom.stripTag() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dom.wrapTag() Disponibilité 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 L’argument est le code source associé à la balise d’ouverture. Renvoie Activateur Exemple Aucune. Aucun. 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é 3.0 Description Affiche Quick Tag Editor pour la sélection en cours. Arguments {nearWhat}, {mode} Le premier argument doit être "selection" ou "tag selector". S’il n’est pas défini, il prend par défaut la valeur "selection". Le second argument doit être "default", "wrap", "insert" ou "edit". Si l’argument 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é. mode Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 121 000ExtendingDWU.book Page 122 Thursday, June 8, 2000 3:38 PM 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 » à la page 128. dom.getSelectedNode() Disponibilité 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. Renvoie Activateur Objet tag, text ou comment contenant la série de caractères spécifiée. Aucun. dom.getSelection() Disponibilité 3.0 Description Obtient la sélection en cours, exprimée en décalages d’octets dans le code source HTML du document. Arguments bAllowMultiple L’argument 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. Renvoie Pour les sélections simples, tableau contenant deux entiers. Le premier entier correspond au décalage d’octets au début de la sélection. Le second correspond 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. 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 entiers, n représentant le nombre d’éléments sélectionnés. Le premier entier de chaque paire correspond au décalage d’octets au début de la sélection (balise TD, DIV, SPAN, LAYER, ILAYER ou MAP comprise) ; le second entier correspond au décalage d’octets à la fin de la sélection (balise TD, DIV, SPAN, LAYER, ILAYER ou MAP comprise). Si plusieurs lignes d’un tableau sont sélectionnées, le décalage de chaque cellule de chaque ligne est renvoyé. La sélection n’inclut jamais les balises TR. Activateur 122 Chapitre 3 Aucun. 000ExtendingDWU.book Page 123 Thursday, June 8, 2000 3:38 PM dom.nodeToOffsets() Disponibilité 3.0 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. Valide pour n’importe quel document sur un lecteur local. Arguments node L’argument doit être une balise, un commentaire ou une plage de texte correspondant à un nœud de l’arborescence renvoyée par la fonction dreamweaver.getDocumentDOM(). Renvoie Activateur Exemple Tableau contenant deux 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. Aucun. 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 = dreamweaver.nodeToOffsets(theImg); dreamweaver.setSelection(offsets[0], offsets[1]); dom.offsetsToNode() Disponibilité 3.0 Description Obtient l’objet de l’arborescence DOM contenant intégralement la série de caractères située entre un début et une 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 d’octets dans le code source HTML du document. Renvoie Activateur Exemple Objet tag, text ou comment contenant la série de caractères spécifiée. Aucun. 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.’); } API JavaScript de Dreamweaver 123 000ExtendingDWU.book Page 124 Thursday, June 8, 2000 3:38 PM dom.selectAll() Disponibilité Description 3.0 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 Renvoie Activateur Aucun. Aucune. Aucun. dom.selectTable() Disponibilité 3.0 Description Sélectionne un tableau entier. Arguments Aucun. Renvoie Activateur Aucune. dom.canSelectTable() dom.setSelectedNode() Disponibilité 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(). Arguments node, {bSelectInside}, {bJumpToNode} Le premier argument est un nœud de texte, de commentaire ou d’élément du document. Le second argument 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. L’argument 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. Renvoie Activateur 124 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 125 Thursday, June 8, 2000 3:38 PM dom.setSelection() Disponibilité 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 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. Renvoie Activateur Aucune. Aucun. dreamweaver.selectAll() Disponibilité Description 3.0 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’une palette flottante. 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 Renvoie Activateur Aucun. Aucune. dreamweaver.canSelectAll() Fonctions de comportement de serveur Les fonctions de comportement de serveur vous permettent de manipuler l’inspecteur de comportements de serveur que les utilisateurs peuvent afficher en sélectionnant Fenêtre > Comportements de serveur. A l’aide de ces fonctions, vous pouvez trouver l’ensemble des comportements d’un serveur sur une page et, par le biais de la programmation, appliquer un nouveau comportement au document ou modifier un document existant. Remarque : vous pouvez abréger l’expression dw.serverBehaviorInspector en dw.sbi. API JavaScript de Dreamweaver 125 000ExtendingDWU.book Page 126 Thursday, June 8, 2000 3:38 PM dreamweaver.serverBehaviorInspector.findAllServerBehaviors() Disponibilité Dreamweaver UltraDev 1.0 Description Pose un indicateur destiné à rappeler à l’utilisateur d’appeler la fonction findServerBehaviors() API de comportement de serveur pour chaque comportement installé. Arguments Aucun. Renvoie Aucune. dreamweaver.serverBehaviorInspector.getServerBehaviors() Disponibilité Dreamweaver UltraDev 1.0 Description Dresse une liste de tous les comportements de la page. Lorsqu’UltraDev réalise que la liste interne des comportements de serveur peut ne pas être à jour, il appelle findServerBehaviors() pour chaque comportement installé. Chacune de ces fonctions renvoie alors une table. UltraDev fusionne toutes les tables en une seule et trie ses éléments par ordre des objets selectedNode de comportement apparaissant dans le document. UltraDev stocke la table fusionnée. La fonction getServerBehaviors() renvoie alors un pointeur à ladite table fusionnée. Arguments Aucun. Renvoie Une table d’objets JavaScript. Les objets de la table sont identiques à ceux renvoyés par l’appel findServerBehaviors(). Les objets sont triés dans l’ordre dans lequel ils apparaissent dans l’inspecteur de comportements de serveur. 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 spécifier les paramètres pour le comportement, une boîte de dialogue s’affiche. Arguments {behaviorName or 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 de comportement. Si vous omettez l’argument, UltraDev exécute le comportement de serveur actuellement sélectionné. Si l’argument fait partie des objets de la table renvoyés par getServerBehaviors(), une boîte de dialogue s’affiche alors, laissant à l’utilisateur la possibilité de modifier les paramètres pour le comportement. Renvoie 126 Chapitre 3 Aucun. 000ExtendingDWU.book Page 127 Thursday, June 8, 2000 3:38 PM Fonctions modèle de serveur Dans UltraDev, chaque site possède un modèle de serveur, tel que ASP, JSP ou ColdFusion. Les modèles de serveur sont les technologies utilisées pour exécuter des scripts sur un serveur. En spécifiant un modèle de serveur, l’utilisateur indique à UltraDev le type de balise à insérer dans les pages d’une application. Par exemple, s’il spécifie le modèle ColdFusion, UltraDev insérera les balises et scripts ColdFusion nécessaires dans la page. A l’aide des fonctions modèle de serveur, vous pouvez déterminer le modèle de serveur utilisé pour un site, ainsi que les langages et la version de modèle de serveur pris en charge. dom.serverModel.getServerLanguage() Disponibilité Description Dreamweaver UltraDev 1.0 Détermine le site qui contient le document, puis renvoie le langage de serveur pour ce site. Le langage de serveur pour un site correspond à la valeur définie en tant que Langage de script par défaut dans 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 celle des valeurs renvoyées par la fonction API de 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. Renvoie Une chaîne contenant les langages de script pris en charge. Exemple Si le modèle de serveur actuel est ASP 2.0, un appel à dom.serverModel.getServerLanguage() renvoie [“VBScript”, “JavaScript”]. dom.serverModel.getServerName() Disponibilité Dreamweaver UltraDev 1.0 Description Détermine le site contenant le document puis renvoie le modèle de serveur pour ce site. Les valeurs possibles incluent ASP, JSP, Cold Fusion ainsi que tout autre fichier supplémentaire contenu dans le dossier Configuration\ServerModels. Arguments Aucun. Renvoie Une chaîne contenant le nom du serveur. API JavaScript de Dreamweaver 127 000ExtendingDWU.book Page 128 Thursday, June 8, 2000 3:38 PM dom.serverModel.getServerVersion() Disponibilité Dreamweaver UltraDev 1.0 Description Détermine le site contenant le document, puis le modèle de serveur choisi pour ce site. Chaque modèle de serveur possède une fonction getVersionArray() dans le modèle de serveur API qui renvoie une table de paires nom-version. Arguments name name est Renvoie une chaîne représentant le nom d’une version. Une chaîne contenant la version. Par exemple, si vous transmettez « 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. site.addLinkToExistingFile() Disponibilité 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. Renvoie Activateur Aucune. site.canAddLink() site.addLinkToNewFile() Disponibilité 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. Renvoie Activateur 128 3.0 Chapitre 3 Aucune. site.canAddLink() 000ExtendingDWU.book Page 129 Thursday, June 8, 2000 3:38 PM site.changeLinkSitewide() Disponibilité 3.0 Description Ouvre la boîte de dialogue Modifier le lien au niveau du site. Arguments Aucun. Renvoie Activateur Aucune. Aucun. site.changeLink() Disponibilité 3.0 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. Renvoie Activateur Aucune. site.canChangeLink() site.checkIn() Disponibilité Description 3.0 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 L’argument 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. Renvoie Activateur Aucune. site.canCheckIn() API JavaScript de Dreamweaver 129 000ExtendingDWU.book Page 130 Thursday, June 8, 2000 3:38 PM site.checkLinks() Disponibilité 3.0 Description Ouvre la boîte de dialogue Vérificateur de lien et vérifie les liens dans les fichiers spécifiés. Arguments scopeOfCheck L’argument indique à quel endroit les liens doivent être vérifiés. Il doit avoir pour valeur "document", "selection" ou "site". Renvoie Activateur Aucune. Aucun. site.checkOut() Disponibilité Description 3.0 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 L’argument 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. Renvoie Activateur Aucune. site.canCheckOut() site.checkTargetBrowsers() Disponibilité Description Vérifie le navigateur cible des documents sélectionnés. Arguments Aucun. Renvoie Activateur 130 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 131 Thursday, June 8, 2000 3:38 PM site.defineSites() Disponibilité 3.0 Description Ouvre la boîte de dialogue Définir les sites. Arguments Aucun. Renvoie Activateur Aucune. Aucun. site.deleteSelection() Disponibilité 3.0 Description Supprime les fichiers sélectionnés. Arguments Aucun. Renvoie Activateur Aucune. Aucun. site.locateInSite() Disponibilité 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 Le premier argument doit être "local" ou "remote". Le second argument 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. Renvoie Activateur Aucune. site.canLocateInSite() site.findLinkSource() Disponibilité 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. Renvoie Activateur Aucune. site.canFindLinkSource() API JavaScript de Dreamweaver 131 000ExtendingDWU.book Page 132 Thursday, June 8, 2000 3:38 PM site.get() Disponibilité Description 3.0 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 L’argument 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. Renvoie Activateur Aucune. site.canGet() site.getCheckOutUser() Disponibilité 3.0 Description Obtient le nom d’utilisateur et le nom d’extraction associés au site en cours. Arguments Aucun. Renvoie Activateur Exemple 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. Aucun. Un appel à la fonction site.getCheckOutUser() pourrait renvoyer ceci : "lori (loriLaptop)". Si aucun nom d’extraction n’est spécifié, seul le nom d’utilisateur renvoyé ("lori", par exemple). est site.getCheckOutUserForFile() Disponibilité 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 L’argument est le chemin du fichier spécifié, exprimé sous la forme d’une URL de type file://. 132 Chapitre 3 000ExtendingDWU.book Page 133 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Exemple 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. Aucun. 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é 3.0 Description Obtient l’état de connexion en cours. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si le site distant est connecté. site.canConnect() site.getCurrentSite() Disponibilité 3.0 Description Obtient le site en cours. Arguments Aucun. Renvoie Activateur Exemple Chaîne contenant le nom du site en cours. Aucun. 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é 3.0 Description Détermine quel est le volet actif de la fenêtre Site. Arguments Aucun. Renvoie Activateur L’une des chaînes suivantes : "local", "remote" ou "site map". Aucun. API JavaScript de Dreamweaver 133 000ExtendingDWU.book Page 134 Thursday, June 8, 2000 3:38 PM site.getLinkVisibility() Disponibilité 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. Renvoie Activateur Valeur booléenne indiquant si tous les liens sélectionnés sont visibles. Aucun. site.getSelection() Disponibilité 3.0 Description Détermine quels sont les fichiers actuellement sélectionnés dans la fenêtre Site. Arguments Aucun. Renvoie Activateur 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é. Aucun. site.getSites() Disponibilité 3.0 Description Obtient la liste des sites définis. Arguments Aucun. Renvoie Activateur Tableau de chaînes représentant les noms des sites définis, ou tableau vide si aucun site n’est défini. Aucun. site.invertSelection() Disponibilité Description Inverse la sélection dans la carte du site. Arguments Aucun. Renvoie Activateur 134 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 135 Thursday, June 8, 2000 3:38 PM site.makeEditable() Disponibilité 3.0 Description Désactive le drapeau de lecture seule sur les fichiers sélectionnés. Arguments Aucun. Renvoie Activateur Aucune. site.canMakeEditable() site.makeNewDreamweaverFile() Disponibilité 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. Renvoie Activateur Aucune. site.canMakeNewFileOrFolder() site.makeNewFolder() Disponibilité 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. Renvoie Activateur Aucune. site.canMakeNewFileOrFolder() site.newHomePage() Disponibilité 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. Arguments Aucun. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 135 000ExtendingDWU.book Page 136 Thursday, June 8, 2000 3:38 PM site.newSite() Disponibilité 3.0 Description Ouvre la boîte de dialogue Définition du site pour définir un nouveau site. Arguments Aucun. Renvoie Activateur Aucune. Aucun. site.open() Disponibilité 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. Renvoie Activateur Aucune. site.canOpen() site.put() Disponibilité Description 3.0 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 L’argument 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. Renvoie Activateur Aucune. site.canPut() site.recreateCache() Disponibilité 136 Chapitre 3 3.0 000ExtendingDWU.book Page 137 Thursday, June 8, 2000 3:38 PM Description Recrée le cache du site en cours. Arguments Aucun. Renvoie Activateur Aucune. site.canRecreateCache() site.refresh() Disponibilité 3.0 Description Actualise la liste des fichiers sur le côté spécifié de la fenêtre Site. Arguments whichSide L’argument doit être "local" ou "remote". Si la carte du site est active et que whichSide a pour valeur "local", la carte du site est actualisée. Renvoie Activateur Aucune. site.canRefresh() site.remoteIsValid() Disponibilité 3.0 Description Détermine si le site distant est valide. Arguments Aucun. Renvoie Activateur 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é. Aucun. site.removeLink() Disponibilité 3.0 Description Supprime le lien sélectionné du document situé au-dessus de lui dans la carte du site. Arguments Aucun. Renvoie Activateur Aucune. site.canRemoveLink() site.renameSelection() Disponibilité 3.0 API JavaScript de Dreamweaver 137 000ExtendingDWU.book Page 138 Thursday, June 8, 2000 3:38 PM 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. Renvoie Activateur Aucune. Aucun. site.saveAsImage() Disponibilité 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 L’argument est le type d’image à enregistrer. 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. Renvoie Activateur Aucune. Aucun. site.selectAll() Disponibilité 3.0 Description Sélectionne tous les fichiers de l’affichage actif (à savoir soit la carte du site, soit les fichiers de site) Arguments Aucun. Renvoie Activateur Aucune. Aucun. site.selectHomePage() Disponibilité Description Ouvre la boîte de dialogue d’ouverture de fichier pour permettre à l’utilisateur de choisir une nouvelle page d’accueil. Arguments Aucun. Renvoie Activateur 138 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 139 Thursday, June 8, 2000 3:38 PM site.selectNewer() Disponibilité 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 L’argument doit être "local" ou "remote". Renvoie Activateur Aucune. site.canSelectNewer() site.setAsHomePage() Disponibilité 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. Renvoie Activateur Aucune. Aucun. site.setConnectionState() Disponibilité 3.0 Description Définit l’état de connexion du site en cours. Arguments bConnected Renvoie Activateur Aucune. Aucun. site.setCurrentSite() Disponibilité 3.0 Description Ouvre le site spécifié dans le volet local de la fenêtre Site. Arguments whichSite L’argument 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. Renvoie Activateur Exemple Aucune. Aucun. 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. API JavaScript de Dreamweaver 139 000ExtendingDWU.book Page 140 Thursday, June 8, 2000 3:38 PM site.setFocus() Disponibilité 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 L’argument doit être l’une des chaînes suivantes : "local", "remote" ou "site map". Renvoie Activateur Aucune. Aucun. site.setLayout() Disponibilité 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. Renvoie Activateur Aucune. site.canSetLayout() site.setLinkVisibility() Disponibilité 3.0 Description Affiche ou masque le lien en cours. Arguments bShow L’argument est une valeur booléenne indiquant si le lien en cours ne doit plus être marqué comme étant masqué. Renvoie Activateur Aucune. Aucun. site.setSelection() Disponibilité 3.0 Description Sélectionne les fichiers ou les dossiers visibles dans le volet actif de la fenêtre Site. Arguments arrayOfURLs L’argument 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://. Remarque : pour les chemins de dossier, ne tapez pas la barre oblique (/) à la fin du chemin. 140 Chapitre 3 000ExtendingDWU.book Page 141 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. Aucun. site.synchronize() Disponibilité 3.0 Description Ouvre la boîte de dialogue Synchroniser les fichiers. Arguments Aucun. Renvoie Activateur Aucune. site.canSynchronize() site.undoCheckOut() Disponibilité 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 Aucun. Renvoie Activateur Aucune. site.canUndoCheckOut() site.viewAsRoot() Disponibilité 3.0 Description Place provisoirement le fichier sélectionné en première position sur la carte du site. Arguments Aucun. Renvoie Activateur Aucune. site.canViewAsRoot() 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.getTokens() Disponibilité Description 1.0 Accepte une chaîne et la divise en expressions. API JavaScript de Dreamweaver 141 000ExtendingDWU.book Page 142 Thursday, June 8, 2000 3:38 PM Arguments searchString, separatorCharacters Le premier argument correspond à la chaîne à diviser. Le second argument représente 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. Renvoie Activateur Exemple Tableau d’expressions. Aucun. dreamweaver.getTokens(’foo("my arg1", 34)’, ‘(),’) renvoie les expressions suivantes : foo "my arg 1" 34 dreamweaver.latin1ToNative() Disponibilité Description 2.0 Convertit une chaîne Latin1 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 Latin1. Arguments stringToConvert L’argument correspond à la chaîne (déjà convertie) à convertir du code Latin1 en code national. Renvoie Activateur Chaîne convertie. Aucun. dreamweaver.nativeToLatin1() Disponibilité Description 2.0 Convertit une chaîne de code national en code Latin1. Remarque : sous Windows, cette fonction n’a aucun effet car le code Windows repose sur Latin1. Arguments stringToConvert L’argument correspond à la chaîne de code national à convertir en code Latin1. 142 Chapitre 3 000ExtendingDWU.book Page 143 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Chaîne convertie. Aucun. La fonction dreamweaver.scanSourceString() est une fonction utilitaire qui analyse une chaîne et détermine l’emplacement des balises HTML, des attributs et des instructions. Voici un scénario décrivant l’utilisation de cette fonction : 1 Créez une implémentation pour une ou plusieurs des sept fonctions de rappel. 2 Ecrivez un script appelant la fonction dreamweaver.scanSourceString(). 3 La fonction dreamweaver.scanSourceString() est alors transmise à une chaîne contenant les données HTML et les pointeurs vers les fonctions de rappel que vous avez rédigées. Par exemple, la chaîne d’HTML peut être du type "<font size=2>hello</font>". 4 Dreamweaver analyse alors la chaîne, détecte une balise de police et appelle 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 "hello") fonctions closeTagBegin() et closeTagEnd() Fonctions de rappel dreamweaver.scanSourceString Comme mentionné ci-dessus, Dreamweaver peut appeler les sept fonctions de rappel suivantes : 1 Dreamweaver appelle openTagBegin() pour chaque balise d’ouverture (par exemple, <font> au lieu de </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 l’offset du document, soit le nombre d’octets du document avant la balise d’ouverture. La fonction renvoie true si la recherche doit continuer ou false si celle-ci doit s’arrêter. 2 Après l’exécution d’openTagBegin(), 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. API JavaScript de Dreamweaver 143 000ExtendingDWU.book Page 144 Thursday, June 8, 2000 3:38 PM 3 Après avoir analysé l’ensemble des attributs de la balise, Dreamweaver appelle openTagEnd(). La fonction openTagEnd() accepte un argument : l’offset du document, à savoir le nombre d’octets du document avant la balise d’ouverture. Elle renvoie alors une valeur booléenne indiquant si l’analyse doit continuer ou pas. 4 Dreamweaver appelle closeTagBegin() pour chaque balise de fermeture, telle que </font>. La fonction accepte deux arguments : le nom de la balise devant être fermée (par exemple “font”) et l’offset du document, soit le nombre d’octets du document avant le début de la balise de fermeture. La fonction renvoie alors une valeur booléenne indiquant si la recherche doit continuer ou pas. 5 Une fois la fonction closeTagBegin()renvoyée, Dreamweaver appelle la fonction TagEnd(). Cette fonction accepte un argument : l’offset du document, soit le nombre d’octets dans le document avant la fin de la balise de fermeture. Elle renvoie alors une valeur booléenne indiquant si la recherche doit continuer ou pas. 6 Dreamweaver appelle la fonction directive() pour chaque commentaire HTML, script ASP, JSP ou PHP. La fonction directive() accepte deux arguments : une chaîne contenant l’instruction et l’offset du document, à savoir le nombre d’octets dans le document avant la fin de la balise de fermeture. La fonction renvoie alors une valeur booléenne indiquant si l’analyse doit continuer ou pas. 7 Dreamweaver appelle la fonction text() pour chaque partie du texte contenue dans le document, à l’exception des balises et instructions. Ce texte comporte des parties qui demeurent cachées à l’utilisateur, telles que le texte apparaissant à l’intérieur des balises <title> ou <option>. La fonction text() accepte deux arguments : une chaîne contenant le texte et l’offset du document, à savoir le nombre d’octets 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 HTML et détermine les balises, attributs, instructions et le texte qu’elle contient. Pour chaque balise, attribut, instruction et texte trouvés, scanSourceString() ouvre 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(). Arguments HTMLstr, parserCallbackObj HTMLstr est une chaîne contenant le code HTML. 144 Chapitre 3 000ExtendingDWU.book Page 145 Thursday, June 8, 2000 3:38 PM parserCallbackObj est un objet JavaScript possédant au moins l’une 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 Extensions C et elle ne doit définir que les fonctions de rappel qui lui sont indispensables. Renvoie Une valeur booléenne indiquant si l’opération a été exécutée avec succès. 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é 3.0 Description Convertit en pourcentage tous les attributs WIDTH exprimés en pixels du tableau en cours. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dom.convertWidthsToPixels() Description Convertit en pixels tous les attributs WIDTH exprimés en pourcentage du tableau en cours. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dom.decreaseColspan() Disponibilité 3.0 Description Diminue l’étendue de colonnes de 1. Arguments Aucun. Renvoie Activateur Aucune. dom.canDecreaseColspan() API JavaScript de Dreamweaver 145 000ExtendingDWU.book Page 146 Thursday, June 8, 2000 3:38 PM dom.decreaseRowspan() Disponibilité 3.0 Description Diminue l’étendue de lignes de 1. Arguments Aucun. Renvoie Activateur Aucune. dom.canDecreaseRowspan() dom.deleteTableColumn() Disponibilité 3.0 Description Supprime du tableau la ou les colonnes sélectionnées. Arguments Aucun. Renvoie Activateur Aucune. dom.canDeleteTableColumn() dom.deleteTableRow() Disponibilité 3.0 Description Supprime du tableau la ou les lignes sélectionnées. Arguments Aucun. Renvoie Activateur Aucune. dom.canDeleteTableRow() dom.doDeferredTableUpdate() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dom.getTableExtent() Disponibilité 146 Chapitre 3 3.0 000ExtendingDWU.book Page 147 Thursday, June 8, 2000 3:38 PM Description Obtient le nombre de colonnes et de lignes du tableau sélectionné. Arguments Aucun. Renvoie Activateur 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. Aucun. dom.increaseColspan() Disponibilité 3.0 Description Augmente l’étendue de colonnes de 1. Arguments Aucun. Renvoie Activateur Aucune. dom.canIncreaseColspan() dom.increaseRowspan() Disponibilité 3.0 Description Augmente l’étendue de lignes de 1. Arguments Aucun. Renvoie Activateur Aucune. dom.canIncreaseRowspan() dom.insertTableColumns() Disponibilité 3.0 Description Insère le nombre de colonnes spécifié dans le tableau en cours. Arguments numberOfCols, bBeforeSelection Le premier argument est le nombre de colonnes à insérer. Le second argument est une valeur booléenne indiquant si les colonnes doivent être insérées avant la colonne contenant la sélection. Renvoie Activateur Aucune. dom.canInsertTableColumns() dom.insertTableRows() Disponibilité Description 3.0 Insère le nombre de lignes spécifié dans le tableau en cours. API JavaScript de Dreamweaver 147 000ExtendingDWU.book Page 148 Thursday, June 8, 2000 3:38 PM Arguments numberOfRows, bBeforeSelection Le premier argument est le nombre de lignes à insérer. Le second argument est une valeur booléenne indiquant si les lignes doivent être insérées avant la ligne contenant la sélection. Renvoie Activateur Aucune. dom.canInsertTableRows() dom.mergeTableCells() Disponibilité 3.0 Description Fusionne les cellules de tableau sélectionnées. Arguments Aucun. Renvoie Activateur Aucune. dom.canMergeTableCells() dom.removeAllTableHeights() Disponibilité 3.0 Description Supprime tous les attributs HEIGHT du tableau sélectionné. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dom.removeAllTableWidths() Disponibilité 3.0 Description Supprime tous les attributs WIDTH du tableau sélectionné. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dom.setTableCellTag() Disponibilité 3.0 Description Définit la balise de la cellule sélectionnée. Arguments tdOrTh L’argument doit être "td" ou "th". 148 Chapitre 3 000ExtendingDWU.book Page 149 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. Aucun. dom.setTableColumns() Disponibilité 3.0 Description Définit le nombre de colonnes du tableau sélectionné. Arguments numberOfCols Renvoie Activateur Aucune. Aucun. dom.setTableRows() Disponibilité 3.0 Description Définit le nombre de lignes du tableau sélectionné. Arguments numberOfRows Renvoie Activateur Aucune. Aucun. dom.showInsertTableRowsOrColumnsDialog() Disponibilité 3.0 Description Ouvre la boîte de dialogue Insérer des lignes ou des colonnes. Arguments Aucun. Renvoie Activateur Aucune. dom.canInsertTableColumns() ou dom.canInsertTableRows() API JavaScript de Dreamweaver 149 000ExtendingDWU.book Page 150 Thursday, June 8, 2000 3:38 PM dom.splitTableCell() Disponibilité 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} Le premier argument, s’il est défini, doit être "columns" ou "rows". Le second argument, s’il est défini, indique en combien de lignes ou de colonnes la cellule doit être fractionnée. Renvoie Activateur Aucune. 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 de l’inspecteur de scénarios. dreamweaver.timelineInspector.addBehavior() Disponibilité 3.0 Description Ouvre l’inspecteur de 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. Renvoie Activateur Aucune. Aucun. dreamweaver.timelineInspector.addFrame() Disponibilité 150 3.0 Description Ajoute un cadre au scénario en cours, au niveau du cadre contenant la tête de lecture. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 151 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. dreamweaver.timelineInspector.canAddFrame() dreamweaver.timelineInspector.addKeyframe() Disponibilité 3.0 Description Ajoute une image-clé à la barre d’animation sélectionnée au niveau du cadre contenant la tête de lecture. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.timelineInspector.canAddKeyFrame() dreamweaver.timelineInspector.addObject() Disponibilité 3.0 Description Ajoute l’objet actuellement sélectionné au scénario. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.timelineInspector.addTimeline() Disponibilité 3.0 Description Ajoute un nouveau scénario au document en cours. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.timelineInspector.changeObject() Disponibilité 3.0 Description Ouvre la boîte de dialogue Modifier l’objet. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.timelineInspector.canChangeObject() API JavaScript de Dreamweaver 151 000ExtendingDWU.book Page 152 Thursday, June 8, 2000 3:38 PM dreamweaver.timelineInspector.getAutoplay() Disponibilité 3.0 Description Obtient l’état de l’option Lecture auto pour le scénario en cours. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si l’option Lecture auto est activée. Aucun. dreamweaver.timelineInspector.getCurrentFrame() Disponibilité 3.0 Description Obtient le cadre en cours du scénario en cours. Arguments Aucun. Renvoie Activateur Numéro de cadre. Aucun. dreamweaver.timelineInspector.getLoop() Disponibilité 3.0 Description Obtient l’état de l’option Boucle pour le scénario en cours. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si l’option Boucle est activée. Aucun. dreamweaver.timelineInspector.recordPathOfLayer() Disponibilité 3.0 Description Enregistre le chemin d’un calque tandis que l’utilisateur fait glisser celui-ci. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.timelineInspector.removeBehavior() Disponibilité 152 3.0 Description Supprime du scénario le comportement sélectionné. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 153 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. dreamweaver.timelineInspector.canRemoveBehavior() dreamweaver.timelineInspector.removeFrame() Disponibilité 3.0 Description Supprime du scénario le cadre sélectionné. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.timelineInspector.canRemoveFrame() dreamweaver.timelineInspector.removeKeyframe() Disponibilité 3.0 Description Supprime d’une barre d’animation l’image-clé sélectionnée. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.timelineInspector.canRemoveKeyFrame() dreamweaver.timelineInspector.removeObject() Disponibilité 3.0 Description Supprime du scénario l’objet actuellement sélectionné. Arguments Aucun. Renvoie Activateur Aucune. dreamweaver.timelineInspector.canRemoveObject() dreamweaver.timelineInspector.removeTimeline() Disponibilité 3.0 Description Supprime du document le scénario en cours. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.timelineInspector.renameTimeline() Disponibilité 3.0 API JavaScript de Dreamweaver 153 000ExtendingDWU.book Page 154 Thursday, June 8, 2000 3:38 PM Description Ouvre la boîte de dialogue Renommer le scénario pour le scénario en cours. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.timelineInspector.setAutoplay() Disponibilité 3.0 Description Définit l’option Lecture auto pour le scénario en cours. Arguments bAutoplay L’argument est une valeur booléenne indiquant si l’option Lecture auto doit être activée. Renvoie Activateur Aucune. Aucun. dreamweaver.timelineInspector.setCurrentFrame() Disponibilité 3.0 Description Déplace la tête de lecture vers le cadre spécifié. Arguments frameNumber Renvoie Activateur Aucune. Aucun. dreamweaver.timelineInspector.setLoop() Disponibilité 3.0 Description Définit l’option Boucle pour le scénario en cours. Arguments bLoop L’argument est une valeur booléenne indiquant si l’option Boucle doit être activée. Renvoie Activateur Aucune. Aucun. Fonctions à 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. 154 Chapitre 3 000ExtendingDWU.book Page 155 Thursday, June 8, 2000 3:38 PM dom.getEditNoFramesContent() Disponibilité 3.0 Description Obtient l’état en cours de l’option Modifier > Jeu de cadres > Modifier le contenu sans cadres. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si le contenu de NOFRAMES est l’affichage actif (TRUE) ou pas (FALSE). Aucun. dom.getPreventLayerOverlaps() Disponibilité 3.0 Description Obtient l’état en cours de l’option Empêcher le chevauchement des calques. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si l’option est activée (TRUE) ou désactivée (FALSE). Aucun. dom.getShowFrameBorders() Disponibilité 3.0 Description Obtient l’état en cours de l’option Affichage > Bordures de cadre. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si les bordures de cadre sont visibles (TRUE) ou invisibles (FALSE). Aucun. dom.getShowGrid() Disponibilité 3.0 Description Obtient l’état en cours de l’option Affichage > Grille > Afficher. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si la grille est visible (TRUE) ou invisible (FALSE). Aucun. dom.getShowHeadView() Disponibilité 3.0 API JavaScript de Dreamweaver 155 000ExtendingDWU.book Page 156 Thursday, June 8, 2000 3:38 PM Description Obtient l’état en cours de l’option Affichage > Contenu de l’en-tête. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si le contenu de l’en-tête est visible (TRUE) ou invisible (FALSE). Aucun. dom.getShowImageMaps() Disponibilité 3.0 Description Obtient l’état en cours de l’option Affichage > Cartes graphiques. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si les cartes graphiques sont visibles (TRUE) ou invisibles (FALSE). Aucun. dom.getShowLayerBorders() Disponibilité 3.0 Description Obtient l’état en cours de l’option Affichage > Bordures de calque. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si les bordures du calque sont visibles (TRUE) ou invisibles (FALSE). Aucun. dom.getShowRulers() Disponibilité 3.0 Description Obtient l’état en cours de l’option Affichage > Règles > Afficher. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si les règles sont visibles (TRUE) ou invisibles (FALSE). Aucun. dom.getShowTableBorders() Disponibilité 156 3.0 Description Obtient l’état en cours de l’option Affichage > Bordures de tableau. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 157 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Valeur booléenne indiquant si les bordures de tableau sont visibles (TRUE) ou invisibles (FALSE). Aucun. dom.getShowTracingImage() Disponibilité 3.0 Description Obtient l’état en cours de l’option Affichage > Tracé de l’image > Afficher. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si l’option est activée (TRUE) ou désactivée (FALSE). Aucun. dom.getSnapToGrid() Disponibilité 3.0 Description Obtient l’état en cours de l’option Affichage > Grille > Aligner sur. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si l’alignement sur la grille est activé (TRUE) ou désactivé (FALSE). Aucun. dom.setEditNoFramesContent() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Modifier > Jeu de cadres > Modifier le contenu sans cadres. Arguments bEditNoFrames Renvoie Activateur Aucune. dom.canEditNoFramesContent() API JavaScript de Dreamweaver 157 000ExtendingDWU.book Page 158 Thursday, June 8, 2000 3:38 PM dom.setPreventLayerOverlaps() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Empêcher le chevauchement des calques. Arguments bPreventLayerOverlaps Renvoie Activateur Aucune. Aucun. dom.setShowFrameBorders() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Bordures de cadre. Arguments bShowFrameBorders Renvoie Activateur Aucune. Aucun. dom.setShowGrid() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Grille > Afficher. Arguments bShowGrid Renvoie Activateur Aucune. Aucun. dom.setShowHeadView() Disponibilité Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Contenu de l’en-tête. Arguments bShowHead Renvoie Activateur 158 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 159 Thursday, June 8, 2000 3:38 PM dom.setShowImageMaps() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Cartes graphiques0 Arguments bShowImageMaps Renvoie Activateur Aucune. Aucun. dom.setShowLayerBorders() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Bordures de calque. Arguments bShowLayerBorders Renvoie Activateur Aucune. Aucun. dom.setShowRulers() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Règles > Afficher. Arguments bShowRulers Renvoie Activateur Aucune. Aucun. dom.setShowTableBorders() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Bordures de tableau. Arguments bShowTableBorders Renvoie Activateur Aucune. Aucun. dom.setShowTracingImage() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Tracé de l’image > Afficher. Arguments bShowTracingImage API JavaScript de Dreamweaver 159 000ExtendingDWU.book Page 160 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. Aucun. dom.setSnapToGrid() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Grille > Aligner sur. Arguments bSnapToGrid Renvoie Activateur Aucune. Aucun. dreamweaver.getHideAllFloaters() Disponibilité 3.0 Description Obtient l’état en cours de l’option Masquer palettes flottantes. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si l’option de menu Masquer palettes flottantes (TRUE) ou Afficher palettes flottantes (FALSE) est disponible. Aucun. dreamweaver.getShowInvisibleElements() Disponibilité 3.0 Description Obtient l’état en cours de l’option Affichage > Eléments invisibles. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si les marqueurs d’éléments invisibles sont visibles (TRUE) ou invisibles (FALSE). Aucun. dreamweaver.getShowStatusBar() Disponibilité Description Obtient l’état en cours de l’option Affichage > Barre d’état. Arguments Aucun. Renvoie Activateur 160 3.0 Chapitre 3 Valeur booléenne indiquant si la barre d’état est visible (TRUE) ou invisible (FALSE). Aucun. 000ExtendingDWU.book Page 161 Thursday, June 8, 2000 3:38 PM dreamweaver.setHideAllFloaters() Disponibilité 3.0 Description Active l’option Masquer palettes flottantes (TRUE) ou l’option Afficher palettes flottantes (FALSE). Arguments bShowFloatingPalettes Renvoie Activateur Aucune. Aucun. dreamweaver.setShowInvisibleElements() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Eléments invisibles. Arguments bViewInvisibleElements Renvoie Activateur Aucune. Aucun. dreamweaver.setShowStatusBar() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Affichage > Barre d’état. Arguments bShowStatusBar Renvoie Activateur Aucune. Aucun. site.getShowDependents() Disponibilité 3.0 Description Obtient l’état en cours de l’option Afficher les fichiers dépendants. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si les fichiers dépendants sont visibles dans la carte du site (TRUE) ou invisibles (FALSE). Aucun. site.getShowHiddenFiles() Disponibilité Description 3.0 Obtient l’état en cours de l’option Afficher les fichiers marqués comme cachés. API JavaScript de Dreamweaver 161 000ExtendingDWU.book Page 162 Thursday, June 8, 2000 3:38 PM Arguments Renvoie Activateur Aucun. Valeur booléenne indiquant si les fichiers cachés sont visibles dans la carte du site (TRUE) ou invisibles (FALSE). Aucun. site.getShowPageTitles() Disponibilité 3.0 Description Obtient l’état en cours de l’option Afficher les titres de page. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si les titres de page sont visibles dans la carte du site (TRUE) ou invisibles (FALSE). Aucun. site.getShowToolTips() Disponibilité 3.0 Description Obtient l’état en cours de l’option Info-bulles. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si les info-bulles sont visibles dans la carte du site (TRUE) ou invisibles (FALSE). Aucun. site.setShowDependents() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Afficher les fichiers dépendants dans la carte du site. Arguments bShowDependentFiles Renvoie Activateur Aucune. Aucun. site.setShowHiddenFiles() Disponibilité 162 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 Chapitre 3 000ExtendingDWU.book Page 163 Thursday, June 8, 2000 3:38 PM Renvoie Activateur Aucune. Aucun. site.setShowPageTitles() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Afficher les titres de page dans la carte du site. Arguments bShowPageTitles Renvoie Activateur Aucune. site.canShowPageTitles() site.setShowToolTips() Disponibilité 3.0 Description Active (TRUE) ou désactive (FALSE) l’option Info-bulles. Arguments bShowToolTips Renvoie Activateur Aucune. Aucun. 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é 3.0 Description Exécute le traducteur spécifié sur le document. Cette fonction n’est valide que pour le document actif. Arguments translatorName L’argument est le nom d’un traducteur tel qu’il apparaît dans les préférences de traduction. Renvoie Activateur Aucune. Aucun. API JavaScript de Dreamweaver 163 000ExtendingDWU.book Page 164 Thursday, June 8, 2000 3:38 PM dreamweaver.editLockedRegions() Disponibilité Description 2.0 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. Arguments bAllowEdits L’argument est une valeur booléenne indiquant que les modifications sont autorisées (TRUE) ou interdites (FALSE). Dreamweaver 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. Renvoie Activateur Aucune. Aucun. dreamweaver.getTranslatorList() Disponibilité 3.0 Description Obtient la liste des traducteurs de données installés. Arguments Aucun. Renvoie Activateur Tableau de chaînes, chacune représentant le nom d’un traducteur tel qu’il apparaît dans les préférences de traduction. Aucun. dreamweaver.useTranslatedSource() Disponibilité Description 2.0 Indique que les valeurs renvoyées par les fonctions dreamweaver.nodeToOffsets() et dreamweaver.getSelection() et utilisées par les fonctions dreamweaver.offsetsToNode() et dreamweaver.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. Arguments 164 Chapitre 3 bUseTranslatedSource 000ExtendingDWU.book Page 165 Thursday, June 8, 2000 3:38 PM 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. Renvoie Activateur Aucune. Aucun. Fonctions relatives à la mise en forme visuelle Ces fonctions, comme leur nom l’indique, agissent sur la mise en forme. 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é 3.0 Description Obtient l’origine de la règle. Arguments Aucun. Renvoie Activateur Tableau contenant deux 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. Aucun. dom.getRulerUnits() Disponibilité 3.0 Description Obtient les unités de mesure actuelles de la règle. Arguments Aucun. Renvoie Chaîne contenant l’une des valeurs suivantes : "in" "cm" "px" Activateur Aucun. API JavaScript de Dreamweaver 165 000ExtendingDWU.book Page 166 Thursday, June 8, 2000 3:38 PM dom.getTracingImageOpacity() Disponibilité 3.0 Description Obtient le paramètre d’opacité du tracé de l’image dans le document en cours. Arguments Aucun. Renvoie Activateur Valeur comprise entre 0 et 100, ou rien si l’opacité n’est pas définie. dom.hasTracingImage() dom.loadTracingImage() Disponibilité 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. Renvoie Activateur Aucune. Aucun. dom.playAllPlugins() Disponibilité 3.0 Description Exécute tous les plug-ins dans le document. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dom.playPlugin() Disponibilité 3.0 Description Exécute le plug-in sélectionné. Arguments Aucun. Renvoie Activateur Aucune. dom.canPlayPlugin() dom.setRulerOrigin() Disponibilité Description 166 Chapitre 3 3.0 Définit l’origine de la règle. 000ExtendingDWU.book Page 167 Thursday, June 8, 2000 3:38 PM Arguments xCoordinate, yCoordinate Le premier argument est une valeur, exprimée en pixels, sur l’axe horizontal. Le second argument est une valeur, exprimée en pixels, sur l’axe vertical. Renvoie Activateur Aucune. Aucun. dom.setRulerUnits() Disponibilité 3.0 Description Définit les unités de mesure de la règle. Arguments units L’argument doit être "px", "in" ou "cm". Renvoie Activateur Aucune. Aucun. dom.setTracingImagePosition() Disponibilité 3.0 Description Déplace le coin supérieur gauche du tracé de l’image vers les coordonnées spécifiées. Si cet argument n’est pas défini, la boîte de dialogue Propriétés de la page s’affiche. Arguments x, y Renvoie Activateur Aucune. dom.hasTracingImage() dom.setTracingImageOpacity() Disponibilité 3.0 Description Définit le pourcentage d’opacité du tracé de l’image. Arguments opacityPercentage L’argument doit être un nombre compris entre 0 et 100. Renvoie Activateur Exemple Aucune. dom.hasTracingImage() L’exemple de code suivant règle l’opacité du tracé de l’image sur 30%. dw.getDocumentDOM().setTracingOpacity(’30’); API JavaScript de Dreamweaver 167 000ExtendingDWU.book Page 168 Thursday, June 8, 2000 3:38 PM dom.snapTracingImageToSelection() Disponibilité 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. Renvoie Activateur Aucune. dom.hasTracingImage() dom.stopAllPlugins() Disponibilité 3.0 Description Arrête l’exécution de tous les plug-ins en cours dans le document. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dom.stopPlugin() Disponibilité 3.0 Description Arrête l’exécution du plug-in sélectionné. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si la sélection est actuellement exécutée avec un plugin. dom.canStopPlugin() dreamweaver.arrangeFloatingPalettes() Disponibilité Description Déplace les palettes flottantes visibles vers leur position par défaut. Arguments Aucun. Renvoie Activateur 168 3.0 Chapitre 3 Aucune. Aucun. 000ExtendingDWU.book Page 169 Thursday, June 8, 2000 3:38 PM dreamweaver.showGridSettingsDialog() Disponibilité 3.0 Description Ouvre la boîte de dialogue Paramètres de la grille. Arguments Aucun. Renvoie Activateur Aucune. Aucun. Fonctions relatives aux fenêtres Ces fonctions permettent d’agir sur la fenêtre du document et sur les palettes flottantes. Elles permettent d’afficher et de masquer les palettes flottantes, de déterminer quelle est la partie active de la fenêtre du document et de définir le document actif. Pour les opérations relatives à la fenêtre Site, voir « Fonctions relatives aux sites » à la page 128. dom.getFocus() Disponibilité 3.0 Description Détermine quelle est la partie active du document. Arguments Aucun. Renvoie L’une des chaînes suivantes : "head" si la zone HEAD est active ; "body" si la zone BODY ou NOFRAMES est active ; "frameset" si un jeu de cadres ou l’un quelconque des cadres qui le composent est sélectionné ; "none" 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 une autre palette flottante). Activateur Aucun. dom.getWindowTitle() Disponibilité 3.0 Description Obtient le titre de la fenêtre contenant le document. Arguments Aucun. API JavaScript de Dreamweaver 169 000ExtendingDWU.book Page 170 Thursday, June 8, 2000 3:38 PM Renvoie Activateur 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. Aucun. dreamweaver.getActiveWindow() Disponibilité 3.0 Description Obtient le document figurant dans la fenêtre active. Arguments Aucun. Renvoie Activateur 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. Aucun. dreamweaver.getDocumentList() Disponibilité 3.0 Description Obtient la liste de tous les documents ouverts. Arguments Aucun. Renvoie Activateur 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. Aucun. dreamweaver.getFocus() Disponibilité 3.0 Description Détermine quelle est la partie active de l’application. Arguments bAllowFloaters Renvoie L’une des chaînes suivantes : "document" si la fenêtre du document est active ; "site" si la fenêtre Site est active ; floaterName si bAllowFloaters est TRUE et qu’une palette flottante est active, floaterName correspondant à "objects", "properties", "launcher", "library", "css styles", "html styles", "behaviors", "timelines", "html", "layers", "frames", "templates", "history" "data bindings" ou "server behaviors". 170 Chapitre 3 000ExtendingDWU.book Page 171 Thursday, June 8, 2000 3:38 PM (Macintosh) "none" si ni la fenêtre Site, ni une fenêtre de document n’est ouverte. Activateur Aucun. dreamweaver.getFloaterVisibility() Disponibilité 3.0 Description Vérifie si la palette ou l’inspecteur spécifié est visible. Arguments floaterName L’argument est le nom d’une palette flottante. Les palettes intégrées doivent être référencées à 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 l’argument floaterName ne correspond pas au nom d’une palette intégrée, Dreamweaver recherche dans le dossier Configuration/Floaters un fichier intitulé floaterName.htm. Renvoie Activateur TRUE si la palette flottante est visible et se trouve au premier plan, FALSE si ce n’est pas le cas ou que Dreamweaver ne trouve pas de palette flottante nommée floaterName. Aucun. dreamweaver.setActiveWindow() Disponibilité 3.0 Description Active la fenêtre contenant le document spécifié. Arguments documentObject, {bActivateFrame} L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Le second argument, 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. Renvoie Activateur Aucune. Aucun. dreamweaver.setFloaterVisibility() Disponibilité 3.0 Description Indique s’il faut rendre visible une palette flottante ou un inspecteur spécifique. Arguments floaterName, bIsVisible API JavaScript de Dreamweaver 171 000ExtendingDWU.book Page 172 Thursday, June 8, 2000 3:38 PM L’argument est le nom d’une palette flottante. Les palettes intégrées doivent être référencées à 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’une palette intégrée, Dreamweaver recherche dans le dossier Configuration/Floaters un fichier nommé floaterName.htm. Si Dreamweaver ne trouve aucun fichier de ce nom, cette fonction n’a aucun effet. Le second argument est une valeur booléenne indiquant s’il faut rendre la palette flottante visible. Renvoie Activateur Aucune. Aucun. dreamweaver.showProperties() Disponibilité 3.0 Description Rend l’inspecteur de propriétés visible et l’active. Arguments Aucun. Renvoie Activateur Aucune. Aucun. dreamweaver.toggleFloater() Disponibilité Description 3.0 Affiche, masque ou place au premier plan la palette 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 une palette flottante, utilisez la fonction dw.setFloaterVisibility(). Arguments Renvoie Activateur floaterName Aucune. Aucun. 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. 172 Chapitre 3 000ExtendingDWU.book Page 173 Thursday, June 8, 2000 3:38 PM dreamweaver.getBehaviorEvent() Disponibilité version 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. Renvoie 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é 1.0 Description Recherche, dans les documents indiqués, les instances 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. Arguments NSorIE, sourceDoc, {tag1}, {tag2},... {tagN} Le premier argument 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. API JavaScript de Dreamweaver 173 000ExtendingDWU.book Page 174 Thursday, June 8, 2000 3:38 PM Le second argument doit être "document", "parent", "parent.frames[number]", ou une URL. "document" désigne le document actif et 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. "parent.frames[’frameName’]" Le troisième argument et les arguments suivants, s’ils sont définis, correspondent aux noms de balises (par exemple "IMG", "FORM", "HR"). Renvoie Tableau de chaînes, chacune représentant une référence JavaScript valide à une instance 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 <tag>". 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]). 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. Exemple Selon le contenu du document actif, dreamweaver.getObjectRefs("NS 4.0", "document", "IMG") pourrait renvoyer un tableau contenant les éléments suivants : "document.bullet" "document.layers[’headerLayer’].document.header" "document.photoLayer.document.headshot" dreamweaver.getObjectTags() Disponibilité 174 Chapitre 3 1.0 000ExtendingDWU.book Page 175 Thursday, June 8, 2000 3:38 PM Description Recherche, dans le document indiqué, les instances 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} Le premier argument 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"). Renvoie Tableau de chaînes, chacune correspondant au code source HTML d’une instance 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. 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é version 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. Renvoie Tableau contenant deux 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. API JavaScript de Dreamweaver 175 000ExtendingDWU.book Page 176 Thursday, June 8, 2000 3:38 PM dreamweaver.nodeToOffsets() Disponibilité version 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 L’argument doit être une balise, un commentaire ou un texte correspondant à un nœud de l’arborescence renvoyée par la fonction dreamweaver.getDocumentDOM(). Renvoie Tableau contenant deux 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 = dreamweaver.nodeToOffsets(theImg); dreamweaver.setSelection(offsets[0], offsets[1]); dreamweaver.offsetsToNode() Disponibilité version 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. Renvoie Objet tag, text ou comment 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é 176 Chapitre 3 version 2.0, déconseillée dans la version 3.0 ; utiliser à la place dreamweaver.runCommand(). 000ExtendingDWU.book Page 177 Thursday, June 8, 2000 3:38 PM 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 L’argument correspond au nom d’un fichier de commande du dossier Configuration/Commands ("Format Table.htm", par exemple). Renvoie Aucune. dreamweaver.setSelection() Disponibilité version 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. 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. Renvoie Aucune. 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é 3.0 API JavaScript de Dreamweaver 177 000ExtendingDWU.book Page 178 Thursday, June 8, 2000 3:38 PM Description Vérifie si Dreamweaver peut effectuer une opération Aligner à gauche, Aligner à droite, Aligner en haut ou Aligner en bas. Arguments Aucun. Renvoie Valeur booléenne indiquant si deux calques ou zones réactives, ou plus, sont sélectionnés. dom.canApplyTemplate() Disponibilité 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. Renvoie 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é 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Mettre au premier plan ou Mettre en arrière-plan. Arguments Aucun. Renvoie Valeur booléenne indiquant si une zone réactive est sélectionnée. dom.canClipCopyText() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Copier comme texte. Arguments Aucun. Renvoie Valeur booléenne indiquant si la sélection est une plage (par opposition à un point d’insertion). dom.canClipPaste() Disponibilité Description Détermine si Dreamweaver peut effectuer une opération Coller. Arguments Aucun. Renvoie 178 3.0 Chapitre 3 Valeur booléenne indiquant si le Presse-papiers contient un élément pouvant être collé dans Dreamweaver. 000ExtendingDWU.book Page 179 Thursday, June 8, 2000 3:38 PM dom.canClipPasteText() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Coller comme texte. Arguments Aucun. Renvoie Valeur booléenne indiquant si le Presse-papiers contient un élément pouvant être collé dans Dreamweaver comme texte. dom.canConvertLayersToTable() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Convertir les calques en tableau. Arguments Aucun. Renvoie Valeur booléenne indiquant si tout le contenu de la section BODY du document figure dans des calques. dom.canConvertTablesToLayers() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Convertir les tableaux en calques. Arguments Aucun. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Réduire l’étendue de colonnes. Arguments Aucun. Renvoie 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é Description 3.0 Détermine si Dreamweaver peut effectuer une opération Réduire l’étendue de lignes. API JavaScript de Dreamweaver 179 000ExtendingDWU.book Page 180 Thursday, June 8, 2000 3:38 PM Arguments Renvoie Aucun. 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer la colonne. Arguments Aucun. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer la ligne. Arguments Aucun. Renvoie 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. dom.canEditNoFramesContent() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Modifier le contenu sans cadres. Arguments Aucun. Renvoie 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é Description Détermine si Dreamweaver peut effectuer une opération Augmenter l’étendue de colonnes. Arguments Aucun. Renvoie 180 3.0 Chapitre 3 Valeur booléenne indiquant s’il existe des cellules à droite de la cellule en cours. 000ExtendingDWU.book Page 181 Thursday, June 8, 2000 3:38 PM dom.canIncreaseRowspan() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Augmenter l’étendue de lignes. Arguments Aucun. Renvoie Valeur booléenne indiquant s’il existe des cellules au dessous de la cellule en cours. dom.canInsertTableColumns() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Insérer une colonne. Arguments Aucun. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Insérer une ligne. Arguments Aucun. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Nouvelle région modifiable. Arguments Aucun. Renvoie Valeur booléenne indiquant si le document en cours est un fichier de modèle (.dwt). API JavaScript de Dreamweaver 181 000ExtendingDWU.book Page 182 Thursday, June 8, 2000 3:38 PM dom.canMarkSelectionAsEditable() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Marquer la sélection comme modifiable. Arguments Aucun. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Fusionner les cellules. Arguments Aucun. Renvoie Valeur booléenne indiquant si la sélection est un groupement rectangulaire de cellules de tableaux. dom.canPlayPlugin() Disponibilité 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. Renvoie Valeur booléenne indiquant si la sélection peut être exécutée avec un plug-in. dom.canRedo() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rétablir. Arguments Aucun. Renvoie Valeur booléenne indiquant s’il reste des opérations à rétablir. dom.canRemoveEditableRegion() Disponibilité Description Détermine si Dreamweaver peut effectuer une opération Rendre la région non modifiable. Arguments Aucun. Renvoie 182 3.0 Chapitre 3 Valeur booléenne indiquant si le document en cours est un modèle. 000ExtendingDWU.book Page 183 Thursday, June 8, 2000 3:38 PM dom.canSelectTable() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Sélectionner le tableau. Arguments Aucun. Renvoie Valeur booléenne indiquant si la sélection ou le point d’insertion se trouve dans un tableau. dom.canSetLinkHref() Disponibilité 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. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut afficher la boîte de dialogue Propriétés de la liste. Arguments Aucun. Renvoie Activateur Valeur booléenne indiquant si la sélection est comprise entre des balises LI. Aucun. dom.canSplitFrame() Disponibilité 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. Renvoie Valeur booléenne indiquant si la sélection se trouve dans un cadre. dom.canSplitTableCell() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Fractionner la cellule. Arguments Aucun. API JavaScript de Dreamweaver 183 000ExtendingDWU.book Page 184 Thursday, June 8, 2000 3:38 PM Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Arrêter. Arguments Aucun. Renvoie Valeur booléenne indiquant si la sélection est actuellement exécutée avec un plugin. dom.canUndo() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Annuler. Arguments Aucun. Renvoie Valeur booléenne indiquant s’il reste des opérations à annuler. dom.hasTracingImage() Disponibilité 3.0 Description Détermine si le document possède un tracé d’image. Arguments Aucun. Renvoie Valeur booléenne indiquant si le document possède un tracé d’image. dreamweaver.canClipCopy() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Copier. Arguments Aucun. Renvoie Valeur booléenne indiquant s’il existe un élément sélectionné pouvant être copié dans le Presse-papiers. dreamweaver.canClipCut() Disponibilité 184 3.0 Description Détermine si Dreamweaver peut effectuer une opération Couper. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 185 Thursday, June 8, 2000 3:38 PM Renvoie Valeur booléenne indiquant s’il existe un élément sélectionné pouvant être coupé et placé dans le Presse-papiers. dreamweaver.canClipPaste() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Coller. Arguments Aucun. Renvoie 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’une palette flottante ou d’une boîte de dialogue. dreamweaver.canDeleteSelection() Disponibilité 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’une palette flottante ou d’une boîte de dialogue (Macintosh). Arguments Aucun. Renvoie Valeur booléenne indiquant si la sélection est une plage (par opposition à un point d’insertion). dreamweaver.canExportCSS() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Exporter les styles CSS. Arguments Aucun. Renvoie Valeur booléenne indiquant si des styles de classe sont définis dans la section HEAD du document. dreamweaver.canFindNext() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rechercher suivant. Arguments Aucun. Renvoie Valeur booléenne indiquant si un modèle de recherche a été défini. API JavaScript de Dreamweaver 185 000ExtendingDWU.book Page 186 Thursday, June 8, 2000 3:38 PM dreamweaver.canOpenInFrame() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Ouvrir dans un cadre. Arguments Aucun. Renvoie Valeur booléenne indiquant si la sélection ou le point d’insertion se trouve dans un cadre. dreamweaver.canPlayRecordedCommand() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Reproduire la commande enregistrée. Arguments Aucun. Renvoie Valeur booléenne indiquant s’il existe un document actif et une commande mémorisée pouvant être exécutée. dreamweaver.canRedo() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Rétablir dans le contexte en cours. Arguments Aucun. Renvoie Valeur booléenne indiquant s’il existe des opérations pouvant être annulées. dreamweaver.canRevertDocument() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Rétablir (Revenir au dernier état enregistré). Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie 186 Chapitre 3 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. 000ExtendingDWU.book Page 187 Thursday, June 8, 2000 3:38 PM dreamweaver.canSaveAll() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Enregistrer tout. Arguments Aucun. Renvoie Valeur booléenne indiquant si deux documents non enregistrés, ou plus, sont ouverts. dreamweaver.canSaveDocument() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Enregistrer sur le document spécifié. Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Valeur booléenne indiquant si le document contient des modifications non enregistrées. dreamweaver.canSaveDocumentAsTemplate() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Enregistrer comme modèle sur le document spécifié. Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Valeur booléenne indiquant si le document peut être enregistré comme modèle. dreamweaver.canSaveFrameset() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Enregistrer le jeu de cadres sur le document spécifié. Arguments documentObject L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Valeur booléenne indiquant si le document est un jeu de cadres comportant des modifications non enregistrées. API JavaScript de Dreamweaver 187 000ExtendingDWU.book Page 188 Thursday, June 8, 2000 3:38 PM dreamweaver.canSaveFramesetAs() Disponibilité 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 L’argument est l’objet situé à la racine de l’arborescence DOM d’un document (valeur renvoyée par dreamweaver.getDocumentDOM()). Renvoie Valeur booléenne indiquant si le document est un jeu de cadres. dreamweaver.canSelectAll() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Sélectionner tout. Arguments Aucun. Renvoie Valeur booléenne indiquant s’il est possible d’effectuer une opération Sélectionner tout. dreamweaver.canShowFindDialog() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rechercher. Arguments Aucun. Renvoie Valeur booléenne indiquant si la 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. dreamweaver.canUndo() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Annuler dans le contexte en cours. Arguments Aucun. Renvoie Valeur booléenne indiquant s’il existe des opérations pouvant être annulées. dreamweaver.isRecording() Disponibilité Description 188 Chapitre 3 3.0 Indique si Dreamweaver est en train de mémoriser une commande. 000ExtendingDWU.book Page 189 Thursday, June 8, 2000 3:38 PM Arguments Renvoie Aucun. Valeur booléenne indiquant si Dreamweaver est en train de mémoriser une commande. dreamweaver.htmlStylePalette.canEditSelection() Disponibilité 3.0 Description Vérifie si Dreamweaver peut modifier, supprimer ou dupliquer la sélection dans la palette de styles HTML. Arguments Aucun. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Ajouter une image. Arguments Aucun. Renvoie Valeur booléenne indiquant si l’inspecteur de scénarios comprend des barres d’animation ou des comportements. dreamweaver.timelineInspector.canAddKeyFrame() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Ajouter une image-clé. Arguments Aucun. Renvoie Valeur booléenne indiquant si l’élément sélectionné dans l’inspecteur de scénarios fait partie d’une barre d’animation. dreamweaver.timelineInspector.canChangeObject() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Modifier l’objet. Arguments Aucun. Renvoie Valeur booléenne indiquant si l’élément sélectionné dans l’inspecteur de scénarios fait partie d’une barre d’animation. API JavaScript de Dreamweaver 189 000ExtendingDWU.book Page 190 Thursday, June 8, 2000 3:38 PM dreamweaver.timelineInspector.canRemoveBehavior() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer le comportement. Arguments Aucun. Renvoie Valeur booléenne indiquant si la sélection dans l’inspecteur de comportements est un comportement. dreamweaver.timelineInspector.canRemoveFrame() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer l’image. Arguments Aucun. Renvoie Valeur booléenne indiquant si l’inspecteur de scénarios comprend des barres d’animation ou des comportements. dreamweaver.timelineInspector.canRemoveKeyFrame() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer l’image-clé. Arguments Aucun. Renvoie Valeur booléenne indiquant si le cadre en cours dans l’inspecteur de comportements est une image-clé. dreamweaver.timelineInspector.canRemoveObject() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer l’objet. Arguments Aucun. Renvoie Valeur booléenne indiquant si l’inspecteur de scénarios comporte des barres d’animation. site.canAddLink() Disponibilité 190 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Lier au [ fichier existant | nouveau fichier ]. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 191 Thursday, June 8, 2000 3:38 PM Renvoie Valeur booléenne indiquant que le document sélectionné dans la carte du site est un fichier HTML. site.canChangeLink() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Modifier le lien. Arguments Aucun. Renvoie Valeur booléenne indiquant qu’un fichier HTML ou Flash est lié au fichier sélectionné dans la carte du site. site.canCheckIn() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Archiver. Arguments siteOrURL L’argument 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. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Extraire sur le ou les fichiers spécifiés. Arguments siteOrURL L’argument 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. Renvoie 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 ; API JavaScript de Dreamweaver 191 000ExtendingDWU.book Page 192 Thursday, June 8, 2000 3:38 PM l’option archivage/extraction est activée. site.canConnect() Disponibilité 3.0 Description Vérifie si Dreamweaver peut se connecter au site distant. Arguments Aucun. Renvoie Valeur booléenne indiquant si le site distant en cours est un site FTP. site.canFindLinkSource() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Rechercher la source du lien. Arguments Aucun. Renvoie Valeur booléenne indiquant que le lien sélectionné dans la carte du site n’est pas la page d’accueil. site.canGet() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Acquérir. Arguments siteOrURL L’argument 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. Renvoie 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. site.canLocateInSite() Disponibilité 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 Le premier argument doit être "local" ou "remote". Le second argument 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. 192 Chapitre 3 000ExtendingDWU.book Page 193 Thursday, June 8, 2000 3:38 PM Renvoie L’une des valeurs suivantes : 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. Si le premier argument est "local" et le second une URL, valeur booléenne indiquant si le document appartient à un site. Si le premier argument est "remote" et le second une URL, 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é. site.canMakeEditable() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Désactiver le mode Lecture seule. Arguments Aucun. Renvoie Valeur booléenne indiquant si un ou plusieurs des fichiers sélectionnés sont verrouillés. site.canMakeNewFileOrFolder() Disponibilité 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Nouveau fichier ou Nouveau dossier dans la fenêtre Site. Arguments Aucun. Renvoie Valeur booléenne indiquant si des fichiers sont visibles dans le volet sélectionné de la fenêtre Site. site.canOpen() Disponibilité 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. Renvoie Valeur booléenne indiquant si des fichiers ou des dossiers sont sélectionnés dans la fenêtre Site. site.canPut() Disponibilité 3.0 API JavaScript de Dreamweaver 193 000ExtendingDWU.book Page 194 Thursday, June 8, 2000 3:38 PM Description Détermine si Dreamweaver peut effectuer une opération Placer. Arguments siteOrURL L’argument 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. Renvoie 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é 3.0 Description Détermine si Dreamweaver peut effectuer une opération Recréer le cache du site. Arguments Aucun. Renvoie 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é 3.0 Description Vérifie si Dreamweaver peut effectuer une opération Actualiser [local | distant]. Arguments localOrRemote L’argument doit être "local" ou "remote". Renvoie TRUE si localOrRemote est "local" ; sinon, valeur booléenne indiquant si un site distant a été défini. site.canRemoveLink() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Supprimer le lien. Arguments Aucun. Renvoie Valeur booléenne indiquant qu’un fichier HTML ou Flash est lié au fichier sélectionné dans la carte du site. site.canSetLayout() Disponibilité 194 3.0 Description Détermine si Dreamweaver peut effectuer une opération Mise en forme. Arguments Aucun. Chapitre 3 000ExtendingDWU.book Page 195 Thursday, June 8, 2000 3:38 PM Renvoie Valeur booléenne indiquant si la carte du site est visible. site.canSelectNewer() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Sélectionner [distants | locaux] plus récents. Arguments localOrRemote L’argument doit être "local" ou "remote". Renvoie Valeur booléenne indiquant si le document appartient à un site pour lequel un site distant a été défini. site.canShowPageTitles() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Afficher les titres de page. Arguments Aucun. Renvoie Valeur booléenne indiquant si la carte du site est visible. site.canSynchronize() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Synchroniser. Arguments Aucun. Renvoie Valeur booléenne indiquant si un site distant a été défini. site.canUndoCheckOut() Disponibilité 3.0 Description Détermine si Dreamweaver peut effectuer une opération Annuler extraction. Arguments siteOrURL L’argument 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. Renvoie 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). API JavaScript de Dreamweaver 195 000ExtendingDWU.book Page 196 Thursday, June 8, 2000 3:38 PM site.canViewAsRoot() Disponibilité Description Détermine si Dreamweaver peut effectuer une opération Afficher comme racine. Arguments Aucun. Renvoie 196 3.0 Chapitre 3 Valeur booléenne indiquant si le fichier spécifié est un fichier HTML ou Flash. 000ExtendingDWU.book Page 197 Thursday, June 8, 2000 3:38 PM 4 CHAPITRE 4 API d’E/S de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dreamweaver 3 est désormais livré avec une bibliothèque C appelée DWFile qui donne aux auteurs d’objets, de commandes, de comportements, de traducteurs de données 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 » à la page 237. 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. Du fait que DWfile n’était pas fourni avec Dreamweaver 2 (DWfile était disponible sous forme d’un téléchargement séparé que l’utilisateur devait installer), il est préférable de vérifier que cette bibliothèque est disponible avant d’appeler l’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"); } 197 000ExtendingDWU.book Page 198 Thursday, June 8, 2000 3:38 PM 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 entourés d’accolades ({ }). Les fonctions ajoutées à Dreamweaver 3 ont une disponibilité de 3.0. Les fonctions ayant une disponibilité de 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 Macromedia. Il est possible que cette version de DWfile ait été installée avec certains objets de tiers. DWfile.copy() Disponibilité 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 le fichier copié doit être enregistré, exprimé sous la forme d’une URL de type file://. si la copie a réussi, sinon FALSE. Renvoie TRUE 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é 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://. si le dossier a été créé avec succès, sinon FALSE. Renvoie TRUE 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); } 198 Chapitre 4 000ExtendingDWU.book Page 199 Thursday, June 8, 2000 3:38 PM DWfile.exists() Disponibilité 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://. si le fichier existe, sinon FALSE. Renvoie TRUE Exemple Le code suivant recherche un fichier nommé mydata.txt et affiche un message d’avertissement indiquant à l’utilisateur si le fichier existe ou non. var fileURL = "file:///c|/temp/mydata.txt"; if (DWfile.exists(fileURL)){ alert( fileURL + " exists!"); }else{ alert( fileURL + " does not exist."); } DWfile.getAttributes() Disponibilité 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://. Renvoie 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!"); } API d’E/S de fichiers 199 000ExtendingDWU.book Page 200 Thursday, June 8, 2000 3:38 PM DWfile.getModificationDate() Disponibilité 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 dernière modification, exprimé sous la forme d’une URL de type file://. Renvoie 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 ; dans Windows, par exemple, une unité de temps est égale à 100 ns et la base de temps est le 1er janvier 1600. Exemple Du fait que 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.listFolder() Disponibilité 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. Renvoie 200 Chapitre 4 Tableau de chaînes représentant le contenu du dossier. 000ExtendingDWU.book Page 201 Thursday, June 8, 2000 3:38 PM 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")); } DWfile.read() Disponibilité 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://. Renvoie 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, il 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é Description 3.0 Déplace le fichier spécifié dans la Corbeille. Remarque : Windows affiche une boîte de dialogue de confirmation si le fichier est en lecture seule. Arguments fileURL L’argument est le fichier que vous souhaitez supprimer, exprimé sous la forme d’une URL de type file://. Renvoie TRUE si l’opération a réussi, sinon FALSE. API d’E/S de fichiers 201 000ExtendingDWU.book Page 202 Thursday, June 8, 2000 3:38 PM DWfile.write() Disponibilité 2.0 Description Ecrit la chaîne spécifiée dans le fichier spécifié. Si le fichier spécifié n’existe pas encore, il est créé. 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. si l’écriture de la chaîne dans le fichier a réussi, sinon FALSE. Renvoie TRUE Exemple Le code suivant tente d’écrire la chaîne "xxx" dans le fichier mydata.txt et il affiche un message d’avertissement si l’écriture a réussi. Il essaie alors d’ajouter la chaîne "aaa" au fichier et il 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 le texte xxxaaa et rien d’autre. 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); } 202 Chapitre 4 000ExtendingDWU.book Page 203 Thursday, June 8, 2000 3:38 PM 5 CHAPITRE 5 API Design Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dreamweaver 3 et Fireworks 3 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 palettes flottantes, d’inspecteurs de propriétés et de traducteurs de données. La bibliothèque MMNotes se distingue par le fait qu’elle possède également une API C permettant à d’autres applications 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 ou plusieurs documents d’un répertoire sont associés à un fichier Design Notes, Dreamweaver crée un sous-répertoire _notes dans ce répertoire 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. 203 000ExtendingDWU.book Page 204 Thursday, June 8, 2000 3:38 PM 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 Design Notes Toutes les fonctions de l’API JavaScript Design Notes sont des méthodes associées à l’objet MMNotes. Les arguments facultatifs sont entourés d’accolades ({ }). 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 encore un. 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://. 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. Renvoie L’identificateur du fichier Design Notes, ou zéro (0) si le fichier n’a pas été ouvert ni créé. Exemple Voir la section « MMNotes.set() » à la page 205. 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(). 204 Renvoie Aucune. Exemple Voir la section « MMNotes.set() » à la page 205. Chapitre 5 000ExtendingDWU.book Page 205 Thursday, June 8, 2000 3:38 PM 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. Renvoie Valeur booléenne indiquant si l’opération a réussi. 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); 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. Renvoie Valeur booléenne indiquant si l’opération a réussi. 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é. Renvoie Chaîne contenant la valeur de la clé. Exemple Voir la section « MMNotes.getKeys() » à la page 206. 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(). API Design Notes 205 000ExtendingDWU.book Page 206 Thursday, June 8, 2000 3:38 PM Renvoie Un 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(). Renvoie Tableau de chaînes dont chaque chaîne contient le nom d’une clé. Exemple Le code suivant pourrait être utilisé dans une palette flottante personnalisée 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://. Renvoie Une chaîne contenant le chemin du répertoire racine local du site, exprimé sous la forme d’une URL de type file://, ou une chaîne vide si Dreamweaver n’est pas installé ou si le fichier Design Notes se trouve en dehors de tout site. MMNotes.getVersionNum() Description Obtient le numéro de version de la bibliothèque partagée MMNotes. Arguments Aucun. Renvoie Chaîne contenant le numéro de version. MMNotes.getVersionName() 206 Description Obtient le nom de version de la bibliothèque partagée MMNotes indiquant l’application qui l’a implémentée. Arguments Aucun. Chapitre 5 000ExtendingDWU.book Page 207 Thursday, June 8, 2000 3:38 PM Renvoie Une chaîne contenant le nom de l’application qui a implémenté la bibliothèque partagée MMNotes. Exemple L’appel de la fonction MMNotes.getVersionName() à partir d’une commande, d’un objet, d’un inspecteur de propriétés, d’une palette flottante 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.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. Renvoie 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.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://. Renvoie 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". API C Design Notes En plus de 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 fournies dans le fichier MMInfo.h du dossier Extending/ c_files dans le dossier de l’application Dreamweaver. Les arguments facultatifs sont entourés d’accolades ({ }). API Design Notes 207 000ExtendingDWU.book Page 208 Thursday, June 8, 2000 3:38 PM 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 encore un. 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. 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(). Renvoie Aucune. 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. Renvoie 208 Chapitre 5 Valeur booléenne indiquant si l’opération a réussi. 000ExtendingDWU.book Page 209 Thursday, June 8, 2000 3:38 PM BOOL RemoveNote() Description Supprime la clé spécifiée (et sa valeur) du fichier Design Notes indiqué. 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. Renvoie Valeur booléenne indiquant si l’opération a réussi. 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é. Renvoie Un entier représentant la longueur de la valeur. Exemple Voir « BOOL GetNote() » à la page 209 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 l’entier renvoyé par GetNoteLength(noteHandle,keyName), indiquant la longueur maximale de la mémoire tampon des valeurs. Renvoie Une valeur booléenne indiquant si l’opération a réussi, et 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); API Design Notes 209 000ExtendingDWU.book Page 210 Thursday, June 8, 2000 3:38 PM 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(). Renvoie Un 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 l’entier renvoyé par GetNotesKeyCount(noteHandle), indiquant le nombre maximum d’éléments contenu dans le tableau en mémoire tampon des clés. Renvoie Une valeur booléenne indiquant si l’opération a réussi, et 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); 210 Chapitre 5 000ExtendingDWU.book Page 211 Thursday, June 8, 2000 3:38 PM 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. Renvoie Une valeur booléenne indiquant si l’opération a réussi, et 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. 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. Renvoie Une valeur booléenne indiquant si l’opération a réussi, et stockage du numéro de version dans versionNumBuf. 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. Renvoie Une valeur booléenne indiquant si l’opération a réussi, et stockage du nom de version dans versionNameBuf. API Design Notes 211 000ExtendingDWU.book Page 212 Thursday, June 8, 2000 3:38 PM 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 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. Renvoie Une valeur booléenne indiquant si l’opération a réussi, et stockage de l’URL de type file:// dans localURLBuf. 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. Renvoie 212 Chapitre 5 Une valeur booléenne indiquant si l’opération a réussi, et stockage du chemin d’accès du lecteur local dans drivePathBuf. 000ExtendingDWU.book Page 213 Thursday, June 8, 2000 3:38 PM 6 CHAPITRE 6 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 » à la page 237. 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 entourés d’accolades ({ }). FWLaunch.bringDWToFront() Disponibilité Dreamweaver 3.0, Fireworks 3.0 Description Fait passer Dreamweaver au premier plan. Arguments Aucun. Renvoie Aucune. 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. Renvoie Aucune. 213 000ExtendingDWU.book Page 214 Thursday, June 8, 2000 3:38 PM 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://. Renvoie Un objet cookie si la chaîne JavaScript a été transmise avec succès, ou un code d’erreur non nul indiquant que l’une des erreurs suivantes s’est produite : 1: 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 du fichier .js ou .jsf n’était pas valide. 2: Erreur d’E/S de fichier ; Fireworks ne peut pas créer de fichier réponse parce que le disque est plein. 3: Erreur de notification de Dreamweaver ; l’utilisateur n’exécute pas une version valide de Dreamweaver (3.0 ou ultérieure). 4: Erreur de lancement du traitement de Fireworks ; la fonction n’a pas lancé une version valide de Fireworks (3.0 ou ultérieure). 5: L’utilisateur a annulé l’opération. 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(), si l’exécution du script s’est terminée avec succès, ou si une erreur s’est produite. Arguments progressTrackerCookie L’argument est l’objet cookie renvoyé par FWLaunch.execJsInFireworks(). Renvoie Une chaîne contenant le résultat du script passé à 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 : 1: Utilisation non valide ; une erreur JavaScript s’est produite pendant que Fireworks exécutait le script. 2: Erreur d’E/S de fichier ; Fireworks ne peut pas créer de fichier réponse parce que le disque est plein. 3: Erreur de notification de Dreamweaver ; l’utilisateur n’exécute pas une version valide de Dreamweaver (3.0 ou ultérieure). 214 Chapitre 6 000ExtendingDWU.book Page 215 Thursday, June 8, 2000 3:38 PM 4: Erreur de lancement du traitement de Fireworks ; la fonction n’a pas lancé une version valide de Fireworks (3.0 ou ultérieure). 5: L’utilisateur a annulé l’opération. Renvoie 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. Renvoie Une valeur booléenne indiquant si la plate-forme est Windows ou, s’il s’agit de Macintosh, si une autre session d’optimisation de Fireworks n’est pas déjà en cours d’exécution. 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} API d’intégration de Fireworks 215 000ExtendingDWU.book Page 216 Thursday, June 8, 2000 3:38 PM Le premier argument est le chemin 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. Renvoie 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 : 1: Utilisation non valide ; l’argument docURL, ou l’argument imageURL, ou les deux, ont été spécifiés comme étant NULL ou sous forme d’une chaîne vide. 2: Erreur d’E/S de fichier ; Fireworks ne peut pas créer de fichier réponse parce que le disque est plein. 3: Erreur de notification de Dreamweaver ; l’utilisateur n’exécute pas une version valide de Dreamweaver (2.0 ou ultérieure). 4: Erreur de lancement du traitement de Fireworks ; la fonction n’a pas lancé une version valide de Fireworks (2.0 ou ultérieure). 5: L’utilisateur a annulé l’opération. 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. Renvoie 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."); } 216 Chapitre 6 000ExtendingDWU.book Page 217 Thursday, June 8, 2000 3:38 PM 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 window.setTimeout("checkJsResponse();", 500); } API d’intégration de Fireworks 217 000ExtendingDWU.book Page 218 Thursday, June 8, 2000 3:38 PM 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> 218 Chapitre 6 000ExtendingDWU.book Page 219 Thursday, June 8, 2000 3:38 PM 7 CHAPITRE 7 API HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dans Dreamweaver 3, le fonctionnement des extensions n’est plus limité au système de fichiers local. Dreamweaver offre désormais 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. Par 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) 219 000ExtendingDWU.book Page 220 Thursday, June 8, 2000 3:38 PM Pour 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 entourés d’accolades ({ }). MMHttp.clearTemp() Description Supprime tous les fichiers du dossier Configuration/Temp situé dans le dossier de l’application Dreamweaver. Arguments Aucun. Renvoie 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 émulant la structure de répertoires du serveur ; par exemple, si le fichier spécifié se trouve à l’URL http://www.dreamcentral.com/people/index.html, Dreamweaver stocke le fichier index.html dans le dossier people du dossier www.dreamcentral.com. Arguments URL, {prompt}, {saveURL}, {titleBarLabel} Le premier argument est une URL absolue sur un serveur Web ; si la partie “http://” de l’URL n’est pas spécifiée, elle est supposée. 220 Chapitre 7 000ExtendingDWU.book Page 221 Thursday, June 8, 2000 3:38 PM 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. Renvoie 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 entier représentant l’un des codes d’erreurs 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 plein) 14: End of file reached (fin du fichier atteinte) API HTTP 221 000ExtendingDWU.book Page 222 Thursday, June 8, 2000 3:38 PM 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 en lui transmettant le résultat obtenu pour les variables requestID et reply. Lorsque le fichier est enregistré localement, Dreamweaver crée automatiquement des sous-dossiers émulant la structure de répertoires du serveur ; par exemple, si le fichier spécifié se trouve à l’URL http:// www.dreamcentral.com/people/index.html, Dreamweaver stocke le fichier index.html dans le 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 la partie “http://” de l’URL n’est pas spécifiée, elle est supposée. 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. Renvoie 222 Chapitre 7 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 entier représentant un code d’erreur. Voir « MMHttp.getFile() » à la page 220 pour une liste des codes d’erreur possibles. 000ExtendingDWU.book Page 223 Thursday, June 8, 2000 3:38 PM 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 la partie “http://” de l’URL n’est pas spécifiée, elle est supposée. Renvoie 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 la partie “http://” de l’URL n’est pas spécifiée, elle est supposée. Renvoie 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); } } API HTTP 223 000ExtendingDWU.book Page 224 Thursday, June 8, 2000 3:38 PM 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 la partie “http://” de l’URL n’est pas spécifiée, elle est supposée. 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". Renvoie 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. 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 la partie “http://” de l’URL n’est pas spécifiée, elle est supposée. 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". Renvoie 224 Chapitre 7 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. 000ExtendingDWU.book Page 225 Thursday, June 8, 2000 3:38 PM 8 CHAPITRE 8 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 et d'extraire certaines informations du schéma de base de données. Un schéma de base de données constitue la structure de la base (ces informations structurelles sont également appelées méta-données). La structure d'une base de données comprend les noms des tables et des colonnes de la base. Les fonctions de l'API de base de données vous permettent d'extraire les noms des tables et des colonnes des instructions SQL et procédures stockées, d'extraire les noms d'utilisateur et les mots de passe servant à établir des connexions à des bases 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 à la conception, lorsque les utilisateurs créent leurs applications web, par opposition à l'exécution, 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 comportement de serveur, de format des données et de source 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 se trouve dans le répertoire /Configuration/ServerBehaviors/ASP. 225 000ExtendingDWU.book Page 226 Thursday, June 8, 2000 3:38 PM Notez que la fonction MMDB.getColumnList() est utilisée. function getDynamicBindings(elementNode) { var ss = findSSrec(elementNode, LABEL_Type) var connString = ss.activeconnection var connName = ss.connectionName var statement = ss.source var 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. Vous pouvez afficher une liste des noms de connexion valides dans Connection Manager d'UltraDev ou utiliser la fonction MMDB.getConnectionList() pour obtenir par programme une liste de tous les noms de connexion. Les procédures stockées exigent souvent des paramètres. Il existe deux façons de spécifier des valeurs de paramètres pour les fonctions de base de données. En premier lieu, vous pouvez fournir une table de valeurs de paramètre (paramValuesArray). Si vous ne spécifiez que des valeurs de paramètre, celles-ci doivent être dans l'ordre dans lequel la procédure stockée les demande. En second lieu, vous pouvez fournir une table de noms de paramètres (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ètres, les valeurs spécifiées dans paramValuesArray doivent être dans l'ordre dans lequel les noms ont été spécifiés dans paramNameArray. 226 Chapitre 8 000ExtendingDWU.book Page 227 Thursday, June 8, 2000 3:38 PM MMDB.getColumnAndTypeList() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de colonnes avec leurs types à partir d'une instruction SQL SELECT exécutée. Arguments connName, statement connName désigne le nom de la connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. statement désigne l'instruction SQL SELECT à exécuter. Renvoie Une table 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 la table de chaînes suivante : 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 Description Extrait une liste de colonnes à partir d'une instruction SQL SELECT exécutée. Arguments connName, statement connName désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. statement désigne l'instruction SQL SELECT à exécuter. Renvoie Une table 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 la table de chaînes suivante : columnArray[0] = "EmpName", columnArray[1] = "EmpFirstName", columnArray[2] = "Age" MMDB.getColumnsOfTable() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de toutes les colonnes de la table spécifiée. Arguments connName, tableName API de base de données 227 000ExtendingDWU.book Page 228 Thursday, June 8, 2000 3:38 PM connName désigne le nom de la connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. tableName est le nom d'une table de la base de données désignée par connName. Renvoie Une table de chaînes, chaque chaîne désignant le nom d'une colonne de la table. Exemple L'instruction MMDB.getColumnsOfTable ("EmpDB","Employees"); renvoie les chaînes suivantes : ["EmpID", "FirstName", "LastName"] MMDB.getConnectionList() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de toutes les chaînes de connexion définies dans Connection Manager. Arguments Aucun. Renvoie Une table de chaînes, chaque chaîne désignant le nom d'une connexion tel qu'il apparaît dans Connection Manager. Exemple Un appel à MMDB.getConnectionList () pourrait renvoyer les chaînes ["EmpDB", "Test", "TestEmp"]. MMDB.getConnectionName() Disponibilité Description Dreamweaver UltraDev 1.0 Extrait le 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. Vous pouvez par exemple 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" 228 Chapitre 8 000ExtendingDWU.book Page 229 Thursday, June 8, 2000 3:38 PM Les chaînes de connexion de Connexion1 et Connexion2 sont identiques. Connexion2 établit une connexion avec une version plus récente de TdsDriver. Communiquez le nom du pilote à cette fonction pour définir complètement le nom de connexion que vous souhaitez obtenir. 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. Renvoie 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 la chaîne de connexion associée au nom de connexion spécifié. Arguments connName désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. connName Renvoie Une chaîne correspondant au nom de connexion. Exemple Le code var connectionString = MMDB.getConnectionString ("EmpDB") renvoie des chaînes différentes pour une connexion ADO ou JDBC. Pour une connexion ADO, la chaîne suivante peut être renvoyée : "dsn=EmpDB;uid=;pwd="; Pour une connexion JDBC, la chaîne suivante peut être renvoyée : "jdbc:inetdae:192.168.64.49:1433?database=pubs&user=JoeUser&password=joesSecret MMDB.getDriverName() Disponibilité Description Dreamweaver UltraDev 1.0 Extrait le nom du pilote associé à la connexion spécifiée. Seule une connexion JDBC possède un nom de pilote dans Dreamweaver UltraDev 1.0. API de base de données 229 000ExtendingDWU.book Page 230 Thursday, June 8, 2000 3:38 PM Arguments connName désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. connName Renvoie Une chaîne contenant le nom du pilote. Exemple L'instruction MMDB.getDriverName ("EmpDB"); pourrait renvoyer la chaîne suivante : "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 Connection Manager et sert à établir une connexion de base de données à une source de données active. connName Renvoie Une chaîne de connexion 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 l'une des valeurs suivantes : "ADO", "ADODSN", "JDBC" ou "CFDSN". Arguments connName désigne le nom de la connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. connName Renvoie 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é 230 Dreamweaver UltraDev 1.0 Description Extrait une liste de colonnes de jeu de résultats générées par un appel à la procédure stockée spécifiée. Arguments connName, statement, paramValuesArray Chapitre 8 000ExtendingDWU.book Page 231 Thursday, June 8, 2000 3:38 PM connName désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. statement est le nom de la procédure stockée qui renvoie le jeu de résultats lorsqu'elle est exécutée. paramValuesArray désigne une table 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. Renvoie Une table 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) Les valeurs renvoyées sont les suivantes : 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ées par un appel à la procédure stockée spécifiée. Arguments connName, statement, paramNameArray, paramValuesArray connName désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. statement est le nom de la procédure stockée qui renvoie le jeu de résultats lorsqu'elle est exécutée. paramNameArray désigne une table 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. paramValuesArray désigne une table 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. Dans le cas contraire, spécifiez les valeurs dans l'ordre attendu par la procédure stockée. API de base de données 231 000ExtendingDWU.book Page 232 Thursday, June 8, 2000 3:38 PM Renvoie Une table 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) Les valeurs renvoyées sont les suivantes : columnArray[0] = "EmpID", columnArray[1] = "LastName", columnArray[2] ="startDate", columnArray[3] = "salary" MMDB.getSPParamsAsString() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une chaîne délimitée par des virgules contenant la liste des paramètres pris par la procédure stockée. Arguments connName, procName connName désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. procName est le nom de la procédure stockée. Renvoie 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 chaîne de la forme startDate;direction:in;datatype:date, salary;direction:in;datatype:integer Ici, la procédure stockée getNewEmployeesMakingAtLeast possède deux paramètres : startDate et Salary. Pour ces deux paramètres, la direction est in (en entrée) et le type de données est date. 232 Chapitre 8 000ExtendingDWU.book Page 233 Thursday, June 8, 2000 3:38 PM MMDB.getTables() Disponibilité Dreamweaver UltraDev 1.0 Description Extrait une liste de toutes les tables définies pour la base de données spécifiée. Chaque objet de table possède trois propriétés : table, schema et catalog. Table est le nom de la table, schema le nom du schéma contenant la table et catalog désigne le catalogue contenant la table. Arguments connName désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. connName Renvoie Une table d'objets ; chaque objet possède trois propriétés : table, schema et catalog. Exemple L'instruction MMDB.getTables ("EmpDB"); peut générer une table de deux objets. Les propriétés du premier objet peuvent être les suivantes : object1[table:"Employees", schema:"personnel", catalog:"syscat"] Les propriétés du second objet peuvent ê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 Connection Manager et sert à établir une connexion de base de données à une source de données active. connName Renvoie Une chaîne de nom d'utilisateur associée au nom de connexion. Exemple L'instruction MMDB.getUserName ("EmpDB"); peut renvoyer "amit". MMDB.showConnectionMgrDialog() Disponibilité Dreamweaver UltraDev 1.0 Description Affiche la boîte de dialogue Connection Manager. Arguments Aucun. Renvoie Rien n'est renvoyé. La boîte de dialogue Connection Manager s'affiche. API de base de données 233 000ExtendingDWU.book Page 234 Thursday, June 8, 2000 3:38 PM MMDB.showResultset() Disponibilité Dreamweaver UltraDev 1.0 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 tabulaire, 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 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 désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. SQLstatement désigne l'instruction SQL SELECT. Renvoie Rien n'est renvoyé. 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 les résultats 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 tabulaire 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 désigne le nom de la connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. procName est le nom de la procédure stockée à exécuter. paramValuesArray désigne une table contenant une liste de valeurs test de paramètres de conception. Spécifiez les valeurs de paramètres 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. Renvoie 234 Chapitre 8 Rien n’est renvoyé. Cette fonction renvoie une erreur si l'instruction SQL est incorrecte ou si la chaîne de connexion est erronée. 000ExtendingDWU.book Page 235 Thursday, June 8, 2000 3:38 PM Exemple Le code suivant affiche les résultats de l'instruction 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 tabulaire 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 connName désigne un nom de connexion UltraDev spécifié dans Connection Manager et sert à établir une connexion de base de données à une source de données active. procName est le nom de la procédure stockée qui renvoie le jeu de résultats lorsqu'elle est exécutée. paramNameArray désigne une table 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. paramValuesArray désigne une table contenant une liste de valeurs test de paramètre de conception. Renvoie Rien n’est renvoyé. 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 les résultats de l'instruction stockée exécutée : var paramNameArray = new Array("startDate", "salary") var paramValueArray = new Array("2/1/2000", "50000") MMDB.showSPResultsetNamedParams("EmpDB","getNewEmployeesMakingAtLeast", paramNameArray, paramValueArray) API de base de données 235 000ExtendingDWU.book Page 236 Thursday, June 8, 2000 3:38 PM 236 Chapitre 8 000ExtendingDWU.book Page 237 Thursday, June 8, 2000 3:38 PM 9 CHAPITRE 9 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. Vous créez des fonctions en langage C, vous les intégrez à une DLL ou à une bibliothèque partagée, vous enregistrez la bibliothèque dans le dossier Configuration/ JSExtensions du dossier de l’application Dreamweaver, puis vous 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, vous devez créer une fonction en C pour fournir cette fonctionnalité. Vous pouvez utiliser le code HTML et JavaScript ci-dessous pour créer un objet Insert Text from File 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> Enter the name of the file to be inserted: <INPUT TYPE="file" NAME="myFile"> </FORM> </BODY> </HTML> 237 000ExtendingDWU.book Page 238 Thursday, June 8, 2000 3:38 PM 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 » à la page 239. 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. 238 Chapitre 9 000ExtendingDWU.book Page 239 Thursday, June 8, 2000 3:38 PM 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 passés 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 des types de données et des fonctions ci-dessous figurent 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 passé à la fonction C. Certaines des fonctions de l’API utilisent ce pointeur comme argument. typedef struct JSObject JSObject Description Un pointeur vers ce type de données opaque est passé à la fonction C. Ce type de données représente un objet pouvant correspondre à un objet array ou tout autre type d’objet. Extensions C 239 000ExtendingDWU.book Page 240 Thursday, June 8, 2000 3:38 PM 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 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. 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 passés à la fonction. argv est un pointeur vers un tableau de jsvals. Le tableau comporte argc é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. 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. JSBool JS_DefineFunction() Description Enregistre une fonction C avec l’interpréteur JavaScript dans Dreamweaver. Après le retour 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. 240 Chapitre 9 000ExtendingDWU.book Page 241 Thursday, June 8, 2000 3:38 PM nargs est le nombre d’arguments que la fonction doit recevoir. Renvoie 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 est le pointeur JSContext opaque passé à la fonction JavaScript. v est le jsval à partir duquel la chaîne sera extraite. pLength 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. Renvoie 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. Arguments JSContext *cx, jsval v, long *lp cx est le pointeur JSContext opaque passé à la fonction JavaScript. v est le jsval à partir duquel la chaîne sera extraite. lp est un pointeur vers un nombre entier de 4 octets. Cette fonction stocke la valeur convertie dans *lp. Renvoie 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 est le pointeur JSContext opaque passé à la fonction JavaScript. v est le jsval à partir duquel la chaîne sera extraite. dp est un pointeur vers un réel double de 8 octets. Cette fonction stocke la valeur convertie dans *dp. Renvoie Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. Extensions C 241 000ExtendingDWU.book Page 242 Thursday, June 8, 2000 3:38 PM 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 est le pointeur JSContext opaque passé à la fonction JavaScript. v est le jsval à partir duquel la chaîne sera extraite. bp est un pointeur vers un JSBool. Cette fonction stocke la valeur convertie dans *bp. Renvoie Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. 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 est le pointeur JSContext opaque passé à la fonction JavaScript. v est le jsval à partir duquel la chaîne sera extraite. op est un pointeur vers un (JSObject *). Cette fonction stocke la valeur convertie dans *op. Renvoie 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 passé à 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 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. vp est un pointeur vers le jsval dans lequel le contenu de la chaîne doit être copié. Renvoie 242 Chapitre 9 Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. 000ExtendingDWU.book Page 243 Thursday, June 8, 2000 3:38 PM JSBool JS_DoubleToValue() Description Stocke la valeur renvoyée d’un nombre à virgule flottante dans un jsval. Arguments JSContext *cx, double dv, jsval *vp cx est le pointeur JSContext opaque passé à 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é. Renvoie Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. JSBool JS_IntegerToValue() Description Stocke la valeur renvoyée d’un nombre entier dans un jsval. Arguments long lv Renvoie Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. JSBool JS_BooleanToValue() Description Stocke la valeur renvoyée d’une valeur booléenne dans un jsval. Arguments JSBool bv Renvoie Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. JSBool JS_ObjectToValue() Description Stocke la valeur renvoyée d’un objet dans un jsval. Utilise JS_ NewArrayObject() pour créer un objet array et utilise JS_SetElement() pour en définir le contenu. Arguments JSObject *obj Renvoie Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. Extensions C 243 000ExtendingDWU.book Page 244 Thursday, June 8, 2000 3:38 PM 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 array, la valeur renvoyée est Array. Arguments JSObject *obj En principe, cet argument est transmis et converti à l’aide de JS_ValueToObject(). Renvoie 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 de jsvals. Arguments JSContext *cx, unsigned int length, jsval *v cx est le pointeur JSContext opaque passé à la fonction JavaScript. length correspond au nombre d’éléments que le tableau doit contenir. v est un pointeur facultatif vers le jsvals devant être stocké dans le tableau. Si la valeur renvoyée est différente de NULL, v correspond à un tableau contenant length éléments. Si la valeur renvoyée est NULL, le contenu initial de l’objet array est indéterminé (et il peut être défini à l’aide de JS_SetElement()). Renvoie Pointeur vers un nouvel objet 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 array, extrait le nombre d’éléments contenus dans le tableau. Arguments JSContext *cx, JSObject *obj cx est le pointeur JSContext opaque passé à la fonction JavaScript. obj est une référence à un objet array. Renvoie 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 array. Arguments JSContext *cx, JSObject *obj, unsigned int index, jsval *v cx est le pointeur JSContext opaque passé à la fonction JavaScript. obj est un pointeur vers un objet array. index est un index des nombres entiers du tableau. Le premier élément est l’index 0, le dernier élément étant l’index (length - 1). 244 Chapitre 9 000ExtendingDWU.book Page 245 Thursday, June 8, 2000 3:38 PM v est un pointeur vers un jsval dans lequel sera copié le contenu du jsval figurant dans le tableau. Renvoie 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 array. Arguments JSContext *cx, JSObject *obj, unsigned int index, jsval *v cx est le pointeur JSContext opaque passé à la fonction JavaScript. obj est un pointeur vers un objet array. index est un index des nombres entiers du tableau. Le premier élément est l’index 0, le dernier élément étant l’index (length - 1). v est un pointeur vers un jsval dont le contenu doit être copié dans le jsval du tableau. Renvoie Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. 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 passé à 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 passé à la fonction JavaScript. script 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. sz 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. rval est un pointeur vers un jsval unique. La valeur renvoyée pour la fonction est stockée dans *rval. Renvoie Valeur booléenne indiquant le succès (JS_TRUE) ou l’échec (JS_FALSE) de l’exécution de la fonction. Extensions C 245 000ExtendingDWU.book Page 246 Thursday, June 8, 2000 3:38 PM 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é (“wrong number of arguments”, par exemple). Arguments JSContext *cx, char *error, size_t sz cx est le pointeur JSContext opaque passé à la fonction JavaScript. error 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 sz, ci-dessous), alors la chaîne doit se terminer par un 0. sz 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. Renvoie 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 de tous les types de données et des fonctions décrits dans « API d’extension C » à la page 239. 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 dans 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). 246 Chapitre 9 000ExtendingDWU.book Page 247 Thursday, June 8, 2000 3:38 PM Pour générer la bibliothèque partagée sur le 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 Insert Horizontal Rule : 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. 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 Insertion > Barre horizontale. Une boîte de dialogue contenant le chiffre 4 (le résultat de la somme de 2 plus 2) s’affiche. Extensions C 247 000ExtendingDWU.book Page 248 Thursday, June 8, 2000 3:38 PM 248 Chapitre 9 000ExtendingDWU.book Page 249 Thursday, June 8, 2000 3:38 PM 10 CHAPITRE 10 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 un panneau de la palette d’objets et dans le menu Insertion une fois que son fichier d’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 composants : le fichier d’objet qui définit l’élément inséré dans votre document, et l’image GIF de 18 x 18 pixels qui apparaît dans la palette 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. Fonctionnement des fichiers d’objet Lorsque l’utilisateur sélectionne un objet en cliquant sur une icône de la palette d’objets ou en choisissant une option du menu Insertion, la chaîne d’événements suivante se produit : 249 000ExtendingDWU.book Page 250 Thursday, June 8, 2000 3:38 PM 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, catégorie 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 L’API d’objet ne contient que trois fonctions personnalisées qui sont toutes facultatives. Les fonctions de l’API d’objet 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’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, 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, puis vous générez 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 des paramètres. Cette fonction est appelée lorsque l’utilisateur clique sur le bouton Aide. Arguments Aucun. Renvoie 250 Chapitre 10 Aucune. 000ExtendingDWU.book Page 251 Thursday, June 8, 2000 3:38 PM 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’); } objectTag() Description Insère une chaîne de code dans le document de l’utilisateur. Arguments Aucun. Renvoie La chaîne à insérer. Exemple L’exemple suivant de la fonction objectTag() insère une combinaison OBJECT/EMBED pour un contrôle ActiveX et un plug-in spécifiques : 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 plate-forme utilisée par l’utilisateur. Renvoie Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la fenêtre 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() fixe les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels : function windowDimensions(platform){ return "648,520"; } Objets 251 000ExtendingDWU.book Page 252 Thursday, June 8, 2000 3:38 PM Ajout d’objets à la palette d’objets Dreamweaver ajoute automatiquement tous les fichiers se trouvant dans l’un des sous-dossiers du dossier Configuration/Objects au panneau qui est associé à ce sous-dossier. Par exemple, un fichier se trouvant dans le dossier Configuration/ Objects/MyObjects apparaîtrait dans le panneau MyObjects de la palette d’objets. 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. 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 apparaît dans la palette 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’image brisée apparaît dans la palette 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. 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. Dans Dreamweaver 3, 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, voir le chapitre 16, “Personnalisation de Dreamweaver” du manuel Utilisation de Dreamweaver. Remarque : dans les versions antérieures de Dreamweaver, les éléments du menu Insertion étaient contrôlés par un fichier nommé InsertMenu.htm. Ce fichier a été remplacé par menus.xml. 252 Chapitre 10 000ExtendingDWU.book Page 253 Thursday, June 8, 2000 3:38 PM 11 CHAPITRE 11 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és 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. Fonctionnement des commandes Lorsque l’utilisateur clique sur un menu contenant une commande, la chaîne d’événements suivante se produit : 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, alors la commande est estompée dans le menu. 2 L’utilisateur sélectionne 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 passés depuis la fonction dreamweaver.runCommand(). 253 000ExtendingDWU.book Page 254 Thursday, June 8, 2000 3:38 PM 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 s’exécutent pas. 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 L’API de commande contient quatre fonctions personnalisées qui 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() 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, puis vous générez des valeurs renvoyées, le cas échéant. 254 Chapitre 11 000ExtendingDWU.book Page 255 Thursday, June 8, 2000 3:38 PM canAcceptCommand() Description Indique si la commande est appropriée pour la sélection en cours. Remarque : ne définissez la fonction canAcceptCommand() que s’il existe au moins un cas où elle retourne 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. Renvoie TRUE si la commande est appropriée, sinon FALSE, auquel cas la commande est estompée dans le menu. Exemple Dans l’exemple suivant, la fonction canAcceptCommand() rend la commande disponible uniquement lorsque la sélection correspond à un tableau : function canAcceptCommand(){ var selArr=dreamweaver.getSelection(); var selObj=dreamweaver.offsetsToNode(selArr[0],selArr[1]); 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 des 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 pour remplir l’ensemble de la boîte de dialogue. Arguments Aucun. Renvoie Tableau contenant un nombre pair d’éléments. Le premier élément est une chaîne contenant le libellé du premier bouton. Le second élément est une chaîne de code JavaScript définissant le comportement du premier bouton lorsque l’utilisateur clique dessus. Les autres paires d’é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()"); } receiveArguments() Description Traite tous les arguments transmis depuis l’option de menu. Arguments {arg1}, {arg2},...{argN} Commandes 255 000ExtendingDWU.book Page 256 Thursday, June 8, 2000 3:38 PM 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. Renvoie Aucune. windowDimensions() Description Définit des dimensions spécifiques pour la boîte de dialogue des paramètres afin d’accélérer l’affichage. 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 plate-forme utilisée par l’utilisateur. Renvoie Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la fenêtre 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() fixe les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels : function windowDimensions(platform){ return "648,520"; } 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"> 256 Chapitre 11 000ExtendingDWU.book Page 257 Thursday, June 8, 2000 3:38 PM 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> </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> Commandes 257 000ExtendingDWU.book Page 258 Thursday, June 8, 2000 3:38 PM Ajout de commandes au menu Commandes 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 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 16, “Personnalisation de Dreamweaver” du manuel Utilisation de Dreamweaver. 258 Chapitre 11 000ExtendingDWU.book Page 259 Thursday, June 8, 2000 3:38 PM 12 CHAPITRE 12 Commandes de menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dreamweaver 3 présente 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 en cours de l’utilisateur, dans d’autres documents ouverts ou dans tout document HTML situés 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 : du fait que les commandes de menu sont directement liées au système de menus dans Dreamweaver, il est recommandé de lire le chapitre 16, « 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. 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 : 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. 259 000ExtendingDWU.book Page 260 Thursday, June 8, 2000 3:38 PM 260 Chapitre 12 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, alors 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 une coche doit apparaître à côté de l’option de menu. Si la fonction isCommandChecked() n’est pas définie, aucune coche n’apparaît. 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 qui est 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 (que la boîte de dialogue soit affichée ou non). Si aucune boîte de dialogue ne s’affiche, les étapes restantes ne s’exécutent pas. 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(). 000ExtendingDWU.book Page 261 Thursday, June 8, 2000 3:38 PM API de commande de menu L’API de commande de menu contient sept fonctions personnalisées qui 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() 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, puis vous générez 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. Renvoie 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 des 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 pour remplir l’ensemble de la boîte de dialogue. Arguments Aucun. Renvoie Tableau contenant un nombre pair d’éléments. Le premier élément est une chaîne contenant le libellé du premier bouton. Le second élément est une chaîne de code JavaScript définissant le comportement du premier bouton lorsque l’utilisateur clique dessus. Les autres paires d’éléments définissent les boutons supplémentaires de la même manière. Commandes de menu 261 000ExtendingDWU.book Page 262 Thursday, June 8, 2000 3:38 PM 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. Renvoie 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. 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 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. Renvoie Valeur booléenne indiquant si une coche doit apparaître à côté de l’option de menu. receiveArguments() 262 Description Traite tous les arguments transmis depuis l’option de menu. Arguments {arg1}, {arg2},...{argN} Chapitre 12 000ExtendingDWU.book Page 263 Thursday, June 8, 2000 3:38 PM 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 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. Renvoie 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 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. Renvoie La chaîne devant apparaître dans le menu. windowDimensions() Description Définit des dimensions spécifiques pour la boîte de dialogue des paramètres afin d’accélérer l’affichage. 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 plate-forme utilisée par l’utilisateur. Renvoie Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la fenêtre 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() fixe les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels : function windowDimensions(platform){ return "648,520"; } Commandes de menu 263 000ExtendingDWU.book Page 264 Thursday, June 8, 2000 3:38 PM Exemple de 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; } 264 Chapitre 12 000ExtendingDWU.book Page 265 Thursday, June 8, 2000 3:38 PM function setMenuText() { if (arguments.length != 1) return ""; var whatToDo = arguments[0]; if (whatToDo == "undo") return dw.getUndoText(); else if (whatToDo == "redo") return dw.getRedoText(); else return ""; } </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]); } } Commandes de menu 265 000ExtendingDWU.book Page 266 Thursday, June 8, 2000 3:38 PM Exemple de menu dynamique simple La commande de menu suivante a deux actions : elle génère le sous-menu Aperçu dans le navigateur, puis elle 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 sousmenu. <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"; } browsers[j] += ";id=’"+PIB[i]+"’"; j = j+1; 266 Chapitre 12 000ExtendingDWU.book Page 267 Thursday, June 8, 2000 3:38 PM } 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> Commandes de menu 267 000ExtendingDWU.book Page 268 Thursday, June 8, 2000 3:38 PM 268 Chapitre 12 000ExtendingDWU.book Page 269 Thursday, June 8, 2000 3:38 PM 13 CHAPITRE 13 Inspecteurs de propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L’inspecteur de propriétés est probablement la palette flottante la plus connue de l’interface Dreamweaver. Elle est indispensable pour définir, vérifier et modifier le nom, les dimensions, les mises en forme et d’autres attributs de la sélection ; elle permet également de lancer des éditeurs internes et externes pour l’élément sélectionné. Dreamweaver intègre déjà 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. Les fichiers d’inspecteur de propriétés sont des fichiers HTML qui se trouvent 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 --> où : tagNameOrKeyword est la balise à contrôler ou l’un des mots clés suivants : *COMMENT* (pour les commentaires), *LOCKED* (pour les régions verrouillées) ou *ASP* (pour les balises ASP). 1to10 est la priorité du fichier d’inspecteur de propriétés : 1 indique que cet inspecteur ne doit être utilisé que si aucun autre inspecteur n’est en mesure de contrôler l’élément sélectionné ; 10 indique que cet inspecteur a priorité sur tous les autres inspecteurs susceptibles de contrôler l’élément sélectionné. exactOrWithin indique si l’élément sélectionné peut se trouver à l’intérieur de la balise (within) ou s’il doit contenir la balise exactement (exact). 269 000ExtendingDWU.book Page 270 Thursday, June 8, 2000 3:38 PM hline (facultatif ) indique qu’une ligne horizontale grise doit apparaître entre les moitiés supérieure et inférieure de l’inspecteur en mode développé. vline (facultatif ) indique qu’une ligne verticale grise doit apparaître entre le champ du nom de la balise et le reste des propriétés dans l’inspecteur (voir l’inspecteur de propriétés d’image fourni en exemple). serverModel (facultatif ) indique le modèle de serveur de l’inspecteur de propriétés. Si celui-ci diffère du modèle de serveur du document, l’inspecteur de propriétés n’est pas utilisé pour afficher les propriétés de la sélection actuelle. Le commentaire ci-dessous convient à un inspecteur conçu pour contrôler la balise HAPPY : <!-- tag:HAPPY,priority:8,selection:exact,hline,vline, serverModel:ASP --> La balise BODY d’un fichier d’inspecteur de propriétés contient un formulaire HTML. Cependant, au lieu d’afficher le contenu du formulaire dans une boîte de dialogue, Dreamweaver utilise le formulaire pour définir les zones de saisie et la mise en forme de l’inspecteur. Fonctionnement des fichiers d’inspecteur de propriétés Au démarrage, Dreamweaver lit la première ligne de chaque fichier .htm et .html du dossier Configuration/Inspectors et recherche 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 ne présentant 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 se produit : 270 Chapitre 13 1 Dreamweaver recherche tous les inspecteurs ayant le type de sélection within. 2 Si cette recherche aboutit, Dreamweaver remonte l’arborescence du document à partir de la balise actuellement sélectionnée pour vérifier s’il existe des inspecteurs pour les balises entourant la sélection. Si, et seulement si, aucun inspecteur within n’est trouvé, Dreamweaver recherche des inspecteurs ayant le type de sélection exact. 3 Pour la première balise trouvée à laquelle correspond un ou plusieurs inspecteurs, Dreamweaver appelle la fonction canInspectSelection() de chaque inspecteur. Si cette fonction renvoie la valeur FALSE, Dreamweaver ne considère plus l’inspecteur comme candidat potentiel pour contrôler la sélection. 4 S’il reste plusieurs inspecteurs potentiels après l’appel de la fonction canInspectSelection(), Dreamweaver les trie par priorité. 5 Si plusieurs inspecteurs potentiels ont la même priorité, Dreamweaver en choisit un par ordre alphabétique. 000ExtendingDWU.book Page 271 Thursday, June 8, 2000 3:38 PM 6 L’inspecteur choisi s’affiche dans la palette flottante des inspecteurs de propriétés. Si le fichier d’inspecteur de propriétés définit la fonction displayHelp(), une petite icône ? (Aide) s’affiche dans le coin supérieur droit de l’inspecteur. 7 Dreamweaver appelle la fonction inspectSelection() pour recueillir 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 d’inspecteur de propriétés s’exécutent au fur et à mesure que l’utilisateur les rencontre. (Par exemple, vous pouvez utiliser un événement onBlur qui appelle la fonction setAttribute() pour affecter à un attribut la valeur que l’utilisateur vient d’entrer.) API d’inspecteur de propriétés L’API d’inspecteur de propriétés comporte trois fonctions personnalisées dont deux (canInspectSelection() et inspectSelection()) sont obligatoires. Les fonctions de l’API d’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 n’appelle automatiquement la fonction canInspectSelection() que si elle est définie dans un fichier d’inspecteur de propriétés, tandis que dans tout autre fichier d’extension, une fonction nommée canInspectSelection() 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, puis vous générez des valeurs renvoyées, le cas échéant. canInspectSelection() Description Indique si l’inspecteur de propriétés est adapté à la sélection en cours. Arguments Aucun. Utilisez dom.getSelectedNode() pour obtenir la sélection en cours sous la forme d’un objet JavaScript. Renvoie TRUE si l’inspecteur peut contrôler la sélection en cours ; sinon, FALSE. Inspecteurs de propriétés 271 000ExtendingDWU.book Page 272 Thursday, June 8, 2000 3:38 PM Exemple Dans l’exemple ci-dessous, la fonction canInspectSelection() renvoie TRUE si la sélection contient l’attribut CLASSID et que la valeur de cet attribut est clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 (l’ID de classe de Flash Player) : function canInspectSelection(){ var theDOM = dw.getDocumentDOM(); var currSel = theDOM.getSelection(); var theObj = theDOM.offsetsToNode(currSel[0],currSel[1]); return (theObj.nodeType == Node.ELEMENT_NODE && theObj.hasAttribute("classid") && theObj.getAttribute("classid").toLowerCase()=="clsid:D27CDB6E-AE6D-11cf-96B8444553540000"); } displayHelp() Description Si cette fonction est définie, une icône ? (Aide) s’affiche dans le coin supérieur droit de l’inspecteur de propriétés. Cette fonction est appelée lorsque l’utilisateur clique sur cette icône. Arguments Aucun. Renvoie Aucune. Exemple Dans l’exemple ci-dessous, la fonction displayHelp() ouvre dans une fenêtre de navigateur un fichier contenant une description des 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 de saisie utilisateur en fonction des attributs de la sélection en cours. Arguments maxOrMin L’argument est soit max, soit min, selon que l’inspecteur est en mode développé ou réduit. Renvoie Aucune. Exemple Dans l’exemple ci-dessous, la fonction inspectSelection() extrait la valeur de l’attribut CONTENT et l’utilise pour renseigner un champ du formulaire appelé keywords : function inspectSelection(){ var currSel = dreamweaver.getSelection(); var theObj = dreamweaver.offsetsToNode(currSel[0],currSel[1]); document.forms[0].keywords.value = theObj.getAttribute("content"); } 272 Chapitre 13 000ExtendingDWU.book Page 273 Thursday, June 8, 2000 3:38 PM Exemple d’inspecteur de propriétés simple L’inspecteur de propriétés ci-dessous contrôle une balise fictive appelée INTJ. La balise INTJ est vide (c’est-à-dire qu’elle ne comporte pas de balise de fin), ce qui signifie que son type de sélection est exact. Aussi longtemps que la sélection correspond exactement à une balise INTJ, l’inspecteur doit s’afficher de façon à ce que la fonction canInspectSelection() renvoie la valeur TRUE à chaque fois. Si vous souhaitez 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 pour déterminer quel est l’inspecteur approprié. C’est ainsi que les inspecteurs de mots-clés et de descriptions fonctionnent, étant donné que « 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; } } // If the value of the TYPE attribute was "jeepers", // "jinkies", or "zoinks", choose the corresponding // option from the pop-up menu in the interface if (typeIndex != -1){ Inspecteurs de propriétés 273 000ExtendingDWU.book Page 274 Thursday, June 8, 2000 3:38 PM 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">Type:</TD> <TD VALIGN="baseline" ALIGN="right"> <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> 274 Chapitre 13 000ExtendingDWU.book Page 275 Thursday, June 8, 2000 3:38 PM 14 CHAPITRE 14 Palettes flottantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dans Dreamweaver 3, vous avez désormais la possibilité de créer n’importe quel type de palette flottante ou d’inspecteur sans tenir compte des limitations de taille et de mise en forme des inspecteurs de propriétés. Un inspecteur de propriétés personnalisé doit rester votre premier choix pour définir les propriétés de la sélection en cours. Toutefois, les palettes flottantes personnalisées 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 palettes flottantes intégrées accessibles depuis le menu Fenêtre ; vous pouvez ajouter vos propres palettes à ce menu à l’aide de la fonction d’extension des menus. Pour plus d’informations sur la façon d’ajouter des éléments au système de menus, voir le chapitre 16, « Personnalisation de Dreamweaver », du manuel Utilisation de Dreamweaver. Les fichiers de palette flottante sont des fichiers HTML qui se trouvent dans le dossier Configuration/Floaters du dossier de l’application Dreamweaver. La balise BODY d’un fichier de palette flottante 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. Fonctionnement des fichiers de palette flottante Les palettes flottantes personnalisées peuvent être déplacées, redimensionnées et leurs onglets peuvent être combinés à l’instar des palettes flottantes intégrées à Dreamweaver. Les palettes flottantes personnalisées présentent les différences suivantes par rapport aux palettes flottantes intégrées : 275 000ExtendingDWU.book Page 276 Thursday, June 8, 2000 3:38 PM Il n’est pas possible d’afficher une icône dans l’onglet d’une palette flottante personnalisée ; l’onglet affiche toujours le contenu de la balise TITLE de la palette flottante. Les palettes flottantes personnalisées s’affichent en gris par défaut. La définition de l’attribut BGCOLOR dans la balise BODY n’a aucun effet. Toutes les palettes flottantes personnalisées s’affichent toujours en haut de la fenêtre du document, ou alors elles flottent derrière cette fenêtre lorsqu’elles sont inactives, selon le paramétrage de l’option Toutes autres palettes dans la boîte de dialogue Préférences, catégorie Palettes flottantes. Les fichiers de palette flottante sont également différents des autres fichiers d’extension. Contrairement à ce qui se passe pour les autres fichiers d’extension, Dreamweaver ne charge pas de fichiers de palette flottante en mémoire au démarrage, sauf si les palettes flottantes étaient affichées au moment où Dreamweaver a été fermé pour la dernière fois. Si aucune palette flottante n’était affichée lors de la dernière fermeture de Dreamweaver, les fichiers définissant ces palettes sont uniquement chargés lorsqu’ils sont référencés à partir de l’une des fonctions suivantes : dreamweaver.getFloaterVisibility(), dreamweaver.setFloaterVisibility() ou dreamweaver.toggleFloater(). L’un des fichiers du dossier Configuration appelle dw.getFloaterVisibility(floaterName), dw.setFloaterVisibility(floaterName) ou dw.toggleFloater(floaterName). 1 Si l’argument floaterName ne correspond pas à l’un des noms de palette flottante réservés, Dreamweaver recherche dans le dossier Configuration/Floaters un fichier nommé floaterName.htm. (Pour une liste complète des noms de palette flottante réservés, voir la section « dreamweaver.getFloaterVisibility() » à la page 171.) 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 palette flottante 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 de la palette flottante à 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 sur la base de l’hypothèse que des modifications ont probablement été apportées pendant que la palette flottante était masquée. 4 Une fois que la palette flottante s’affiche, 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. 276 Chapitre 14 000ExtendingDWU.book Page 277 Thursday, June 8, 2000 3:38 PM Les gestionnaires d’événements associés aux champs dans l’interface de palette flottante 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 la palette flottante sont enregistrés. Lorsque l’application Dreamweaver démarre une nouvelle fois, elle charge les fichiers de palette flottante correspondant à toutes les palettes flottantes qui étaient affichées au moment de la dernière fermeture de l’application et elle affiche les palettes flottantes au même endroit et avec le même groupement d’onglets. API de palette flottante L’API de palette flottante contient quatre fonctions personnalisées qui sont toutes facultatives. Les fonctions de l’API de palette flottante 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 palette flottante. En d’autres termes, Dreamweaver n’appelle automatiquement la fonction documentEdited() que si elle est définie dans un fichier de palette flottante, tandis que dans tout autre fichier d’extension, une fonction nommée documentEdited() 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, puis vous générez des valeurs renvoyées, le cas échéant. documentEdited() Description Appelée lorsque la palette flottante s’affiche et une fois que la série de modifications en cours est terminée ; cela 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 la palette flottante 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 son existence affecte les performances. Palettes flottantes 277 000ExtendingDWU.book Page 278 Thursday, June 8, 2000 3:38 PM Arguments Aucun. Renvoie Aucune. 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; } selectionChanged() Description Appelée lorsque la palette flottante 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 la palette flottante doit assurer le suivi de la sélection. Remarque : ne définissez la fonction selectionChanged() que si vous en avez absolument besoin, car son existence affecte les performances. Arguments Aucun. Renvoie Aucune. Exemple Dans l’exemple suivant, la fonction selectionChanged() affiche un panneau (calque) différent dans la palette flottante 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’; } } 278 Chapitre 14 000ExtendingDWU.book Page 279 Thursday, June 8, 2000 3:38 PM initialPosition() Description Détermine la position initiale de la palette flottante lorsqu’elle est appelée 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". Renvoie Une chaîne au format "leftPosInPixels,topPosInPixels". Exemple Dans l’exemple suivant, la fonction initialPosition() spécifie que lorsque la palette flottante s’affiche pour la première fois, elle doit se trouver à 420 pixels du côté gauche de l’écran et à 20 pixels du haut de l’écran dans Windows, et à 400 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; } initialTabs() Description Détermine quelles sont les autres palettes flottantes dont les onglets sont combinés à ceux de cette palette lorsqu’elle s’affiche pour la première fois. Si l’une des palettes flottantes répertoriées s’est affichée précédemment, elle n’est pas incluse dans le groupement d’onglets. Ainsi, pour que les onglets de deux palettes flottantes personnalisées soient combinés, chacune d’elle doit référencer l’autre dans sa fonction initialTabs(). Arguments Aucun. Renvoie Une chaîne au format "floaterName1,floaterName2,...floaterNameN". Exemple Dans l’exemple suivant, la fonction initialTabs() spécifie que lorsque la palette flottante s’affiche pour la première fois, ses onglets doivent être combinés à ceux de la palette scriptEditor : function initialTabs(){ return "scriptEditor"; } Palettes flottantes 279 000ExtendingDWU.book Page 280 Thursday, June 8, 2000 3:38 PM A propos des performances Le fait de déclarer la fonction selectionChanged() ou documentEdited() dans vos palettes flottantes personnalisées risque d’avoir des répercussions négatives sur les performances de Dreamweaver. Cela peut se comprendre facilement si l’on considère 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. Il est important de tester votre palette flottante par rapport à de nombreux scénarios différents et en utilisant des documents volumineux (100 Ko 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 en millisecondes devant précéder cet appel. 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 la palette flottante). Le code suivant correspond à une palette flottante 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; /* set a timer to call processLayer(); if we didn’t get * to finish processing the previous edit, then the timer * is already set. */ if (document.running = false){ setTimeout("processLayer()", 500); } /* set the processing flag to TRUE */ document.running = true; } /* process one layer */ 280 Chapitre 14 000ExtendingDWU.book Page 281 Thursday, June 8, 2000 3:38 PM 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; } } Exemple de palette flottante simple La palette flottante suivante 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 du 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 */ Palettes flottantes 281 000ExtendingDWU.book Page 282 Thursday, June 8, 2000 3:38 PM 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> (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 la palette flottante et la 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’)" /> 282 Chapitre 14 000ExtendingDWU.book Page 283 Thursday, June 8, 2000 3:38 PM 15 CHAPITRE 15 Comportements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les comportements permettent aux personnes qui ne savent pas écrire de 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 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 quels calques doivent être affichés ou masqués). 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 du serveur fournissant des fonctionnalités d’application web, voir la section « Comportements de serveur » à la page 333. 283 000ExtendingDWU.book Page 284 Thursday, June 8, 2000 3:38 PM Fonctionnement des comportements Lorsqu’un utilisateur sélectionne un élément HTML dans un document Dreamweaver et ouvre l’inspecteur de comportements, la chaîne d’événements suivante se produit : 1 L’utilisateur clique sur le bouton + pour afficher le menu déroulant des actions Pour déterminer le contenu du menu déroulant, UltraDev recherche d’abord un fichier Behaviors.xml dans le dossier Actions, accessible via le chemin d’accès suivant : \Configuration\Behaviors. Behaviors.xml indique les fichiers HTML dont la balise de titre ou le nom remplit le contenu du menu déroulant. Si le fichier HTML référencé contient une balise de titre, le contenu de celle-ci s’affiche dans le menu. Si ce n’est pas le cas, le nom du fichier est utilisé dans le menu. Si le dossier contient des sous-dossiers, les fichiers qu’ils contiennent sont ajoutés au menu sous forme de sous-menus. S’il n’existe pas de fichier Behaviors.xml ou si le dossier contient au moins un fichier HTML non mentionné dans ServerBehaviors.xml, UltraDev inspecte chaque fichier à la recherche d’une balise de titre et utilise celle-ci ou le nom du fichier pour remplir le menu. 284 Chapitre 15 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. 000ExtendingDWU.book Page 285 Thursday, June 8, 2000 3:38 PM 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. 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. Comportements 285 000ExtendingDWU.book Page 286 Thursday, June 8, 2000 3:38 PM API de comportement L’API de comportement comporte huit fonctions personnalisées dont deux (applyBehavior() et behaviorFunction()) sont obligatoires. 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, 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, puis vous générez 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. 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. Renvoie 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()] . 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. 286 Chapitre 15 000ExtendingDWU.book Page 287 Thursday, June 8, 2000 3:38 PM Exemple Dans l’exemple suivant, la fonction applyBehavior() renvoie un appel de 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 des balises <SCRIPT LANGUAGE="JavaScript"></SCRIPT>, s’il n’en existe pas encore) dans la balise HEAD du document de l’utilisateur. Arguments Aucun. Renvoie 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. 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"+ "}"; } Comportements 287 000ExtendingDWU.book Page 288 Thursday, June 8, 2000 3:38 PM 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é. Renvoie 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 » à la page 284. FALSE si l’action n’est pas autorisée. Si canAcceptBehavior() renvoie la valeur FALSE, l’action est estompée dans le menu déroulant des actions de l’inspecteur de comportements. 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; } } 288 Chapitre 15 000ExtendingDWU.book Page 289 Thursday, June 8, 2000 3:38 PM 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. Renvoie 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 l’inspecteur de comportements. Ainsi, il est 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 EMBED). Arguments applyBehaviorString Cet argument correspond à la chaîne qui a été renvoyée précédemment par la fonction applyBehavior(). Renvoie 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 indé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(). Comportements 289 000ExtendingDWU.book Page 290 Thursday, June 8, 2000 3:38 PM Renvoie 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 doivent toujours être 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 Netscape. IE4.0ref indique que l’argument est une référence à un objet DOM d’Internet Explorer. objName 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. other indique que l’argument n’appartient à aucun des types ci-dessus. Exemple Cet exemple simple de fonction identifyBehaviorArguments() fonctionnerait 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"; } 290 Chapitre 15 000ExtendingDWU.book Page 291 Thursday, June 8, 2000 3:38 PM 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). Cette version de la fonction identifyBehaviorArguments() repose sur le fait qu’il existe un nombre minimum d’arguments et que 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"; } } 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(). Renvoie Aucune. Comportements 291 000ExtendingDWU.book Page 292 Thursday, June 8, 2000 3:38 PM 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/macromedia/scripts/cmn. windowDimensions() Description Définit des dimensions spécifiques pour la boîte de dialogue des paramètres afin d’accélérer l’affichage. 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 plate-forme utilisée par l’utilisateur. Renvoie Une chaîne de caractères au format "widthInPixels,heightInPixels". Les dimensions renvoyées sont inférieures à la taille totale de la fenêtre 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() fixe les dimensions de la boîte de dialogue des paramètres à 648 x 520 pixels : function windowDimensions(platform){ return "648,520"; } 292 Chapitre 15 000ExtendingDWU.book Page 293 Thursday, June 8, 2000 3:38 PM 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, ils sont probablement trop complexes pour les utilisateurs qui ne sont pas des développeurs 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). Le code suivant présente également un exemple relativement simple. Il vérifie la marque du navigateur et atteint une page spécifique s’il s’agit de Netscape 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"; } Comportements 293 000ExtendingDWU.book Page 294 Thursday, June 8, 2000 3:38 PM // 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, "()’,"); 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> 294 Chapitre 15 000ExtendingDWU.book Page 295 Thursday, June 8, 2000 3:38 PM <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> Comportements 295 000ExtendingDWU.book Page 296 Thursday, June 8, 2000 3:38 PM 296 Chapitre 15 000ExtendingDWU.book Page 297 Thursday, June 8, 2000 3:38 PM 16 CHAPITRE 16 Traducteurs de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les traducteurs de données traduisent les marquages spécialisés, tels que les SSI (inclusions à partir du serveur), les instructions JavaScript conditionnelles ou d'autres codes non HTML (ePerl, PHP3, JSP, CFML et ASP...) en code HTML qui pourra être lu et affiché par Dreamweaver. Dans Dreamweaver 3 vous pouvez traduire les attributs contenus dans les balises, mais également des balises ou des blocs de code entiers. Les balises ou les blocs de code traduits doivent être inclus dans des régions verrouillées pour conserver le marquage d'origine. Les attributs traduits n'ont pas besoin de verrous, simplifiant ainsi le contrôle des balises dans lesquelles ils sont inclus. Tous les traducteurs de données, qu'il s'agisse de blocs/balises ou d'attributs, sont des fichiers HTML. L'en-tête (HEAD) d'un traducteur de données contient au moins deux fonctions JavaScript : une pour spécifier ce que fait le traducteur et le fichier sur lequel il agit, une pour exécuter la traduction réelle, ainsi qu'un nombre illimité de fonctions complémentaires. Le corps (BODY) d'un traducteur de données est vide. La traduction de données, en particulier pour les balises ou les blocs de code entiers, peut impliquer des opérations complexes qui soit ne peuvent pas être effectuées avec JavaScript, soit peuvent être effectuées de manière plus efficace avec C. Si vous connaissez bien le langage C ou C++, lisez également « Extensions C » à la page 237. 297 000ExtendingDWU.book Page 298 Thursday, June 8, 2000 3:38 PM Fonctionnement des traducteurs de données Dreamweaver gère tous les fichiers de traduction de la même manière, qu'il s'agisse d'une traduction de balises entières ou d'attributs seuls. 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() ne figure pas ou contient une erreur qui l'empêche d'être définie. Remarque : pour empêcher que les erreurs JavaScript n'interfèrent avec le démarrage, toute erreur détectée dans un fichier de traduction n'est signalée qu'après le chargement de tous les traducteurs. Pour plus d'informations sur le débogage des traducteurs, reportez-vous à « Recherche de bogues dans un traducteur » à la page 315. Dreamweaver appelle également la fonction translateMarkup() dans tous les fichiers de traduction concernés (spécifiés dans les préférences de traduction) chaque fois que l'utilisateur ajoute du contenu ou modifie un contenu existant nécessitant une traduction. Par conséquent, Dreamweaver appelle translateMarkup() lorsque l'utilisateur : Ouvre un fichier dans Dreamweaver. Revient dans la fenêtre Document après avoir effectué des modifications dans l'inspecteur HTML. Change les propriétés d'un objet dans le document en cours. Insère un objet (en utilisant la palette Objet ou le menu Insertion). Actualise le document en cours après l'avoir modifié dans une autre application. Applique un modèle au document. Colle ou fait glisser le contenu dans la fenêtre Document. Enregistre des modifications dans un fichier dépendant. Lance une commande, un comportement, un inspecteur de propriétés ou une autre extension qui définit la propriété innerHTML ou outerHTML de n'importe quel objet de balise ou la propriété data de n'importe quel objet de commentaire. Choisit Fichier > Convertir > Compatible navigateurs 3.0. Choisit Modifier > Mise en forme > Convertir les tableaux en calques. Choisit Modifier > Mise en forme > Convertir les calques en tableau. Choisit Modifier > Traduire > nomTraducteur. Modifie une balise ou un attribut dans Quick Tag Editor et appuie sur Tab ou Entrée. 298 Chapitre 16 000ExtendingDWU.book Page 299 Thursday, June 8, 2000 3:38 PM API de traduction de données L'API de traduction de données ne comporte que deux fonctions personnalisées, mais toutes deux sont obligatoires. Ces fonctions se différencient de trois manières de celles de l'API JavaScript principale : Ce ne sont pas des méthodes de l'objet dreamweaver, dom ou site. Elles ne sont significatives que dans le contexte de fichiers de traduction de données. Autrement dit, Dreamweaver appelle automatiquement la fonction translateMarkup() si elle est définie dans un fichier de traduction de données, tandis que dans n'importe quel autre fichier d'extension une fonction nommée translateMarkup() se comporte comme une fonction définie par l'utilisateur : vous devez l'appeler de manière explicite. Vous devez rédiger le corps de chaque fonction et renvoyer une valeur, si nécessaire. Le fonctionnement est donc inverse à celui des fonctions de l'API principale que vous appelez, auxquelles vous transmettez des arguments et pour lesquelles Dreamweaver génère des valeurs de retour, le cas échéant. Les fonctions de l'API de traduction de données, par contre, sont appelées par Dreamweaver qui leur transmet des arguments et vous générez des valeurs de retour, le cas échéant. getTranslatorInfo() Description Donne des informations sur le traducteur et les fichiers qu'il peut traiter. Arguments Aucun. Renvoie Une table de chaînes. Les éléments de la table doivent apparaître dans l'ordre suivant : translatorClass attribue un identificateur unique au traducteur. Cette chaîne doit commencer par une lettre et ne peut contenir que des caractères alphanumériques, des tirets (-) et des traits de soulignement (_). title décrit le traducteur en utilisant 40 caractères au maximum. Cette chaîne apparaît dans le menu Modifier > Traduire, ainsi que dans les préférences de traduction. nExtensions spécifie le nombre d'extensions de fichier à suivre. Si nExtensions est 0, le traducteur peut s'exécuter sur n'importe quel fichier. extension spécifie une extension (telle que "htm" ou "SHTML") que ce traducteur peut traiter. Cette chaîne ne fait pas la distinction entre majuscules et minuscules et ne doit pas contenir de point de tête. La table doit contenir le nombre d'éléments d'extension spécifié dans nExtensions. nRegExps spécifie le nombre d'expressions régulières qui suivront. Si nRegExps est 0, runDefault est l'élément suivant de la table. Traducteurs de données 299 000ExtendingDWU.book Page 300 Thursday, June 8, 2000 3:38 PM regExps spécifie une expression régulière à rechercher. La table doit contenir le nombre d'éléments regExps spécifié dans nRegExps et au moins l'une des regExps doit concorder avec une portion du code source HTML du document pour que le traducteur puisse traiter un fichier. runDefault spécifie la préférence par défaut pour l'exécution de ce traducteur. Les valeurs acceptées sont "allFiles", "noFiles", "byExtension" et "byExpression". Si vous définissez runDefault sur la valeur "byExtension" sans spécifier d'extensions (voir extension, ci-dessus), vous obtenez le même résultat qu'avec la valeur "allFiles". Si vous définissez runDefault sur la valeur "byExpression" sans spécifier d'expressions (voir regExps, ci-dessus), vous obtenez le même résultat qu'avec la valeur "noFiles". Quelle qu'elle soit, la valeur définie pour runDefault peut être remplacée par l'utilisateur dans la boîte de dialogue Préférences. Exemple L'instance suivante de getTranslatorInfo() fournit des informations sur un traducteur d'inclusions à partir du serveur : function getTranslatorInfo(){ var transArray = new Array(11); transArray[0] = "SSI"; transArray[1] = "Server-Side Includes"; transArray[2] = "4"; transArray[3] = "htm"; transArray[4] = "stm"; transArray[5] = "html"; transArray[6] = "shtml"; transArray[7] = "2"; transArray[8] = "<!--#include file"; transArray[9] = "<!--#include virtual"; transArray[10] = "byExtension"; return transArray; } translateMarkup() Description Effectue la traduction. Arguments docName, siteRoot, docContent Le premier argument est une chaîne contenant l'URL fichier:// du document à traduire. Le deuxième argument est une chaîne contenant l'URL fichier:// de la racine du site qui contient le document à traduire. Si le document est en dehors d'un site, cette chaîne peut être vide. Le troisième argument est une chaîne qui indique le contenu du document. Renvoie 300 Chapitre 16 Une chaîne contenant le document traduit. 000ExtendingDWU.book Page 301 Thursday, June 8, 2000 3:38 PM Exemple L'instance suivante de translateMarkup() appelle la fonction C translateASP(), contenue dans un fichier DLL (Windows) ou dans une bibliothèque de codes (Macintosh) nommé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, reportez-vous aux sections « Exemple simple de traducteur d'attribut » à la page 303 ou « Exemple simple de traducteur de bloc/balise » à la page 309. 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 l'option 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 fichier:// du document à traduire. Le deuxième argument est une chaîne contenant l'URL fichier:// de la racine du site où se trouve le document à traduire. Si le document est en dehors d'un site, cette chaîne peut être vide. Le troisième argument est une chaîne qui indique le contenu du document. Renvoie Une chaîne contenant le document traduit. Exemple L'instance suivante de translateMarkup() appelle la fonction C translateASP(), contenue dans un fichier DLL (Windows) ou dans une bibliothèque de codes (Macintosh) nommée ASPTrans : function liveDataTranslateMarkup(docName, siteRoot, docContent){ var translatedString = ""; if (docContent.length > 0){ translatedString = ASPTrans.translateASP(docName, siteRoot, docContent); } return translatedString; } Traducteurs de données 301 000ExtendingDWU.book Page 302 Thursday, June 8, 2000 3:38 PM Spécification du type de traducteur à utiliser Tous les traducteurs sont identiques jusqu'à un certain point : ils contiennent les fonctions getTranslatorInfo() et translateMarkup() et résident dans le dossier Configuration/Translators. Cependant, ils se différencient par le type de code qu'ils insèrent dans le document de l'utilisateur et par la manière dont ce code doit être inspecté. Pour traduire de petites portions de marquage de serveur qui déterminent les valeurs d'attribut ou qui ajoutent conditionnellement des attributs à une balise HTML standard, rédigez un traducteur d'attribut. Les balises HTML standard qui contiennent des attributs traduits pouvant être inspectées avec les 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é. Reportez-vous à « Ajout d'un attribut traduit à une balise » à la page 302. Pour traduire une balise entière (telle qu'une inclusion à partir du serveur) ou un bloc de code (tel que JavaScript, Cold Fusion, PHP ou un autre script), rédigez un traducteur de bloc/balise. Le code généré par un traducteur de bloc/ balise ne peut pas être inspecté par les inspecteurs de propriétés intégrés à Dreamweaver. Si vous voulez que les utilisateurs puissent modifier les propriétés du code d'origine, rédigez un inspecteur personnalisé pour le contenu traduit. Reportez-vous à « Verrouillage de balises ou de blocs de code traduits » à la page 307. Ajout d'un attribut traduit à une balise La traduction des attributs dépend beaucoup de la capacité de l'analyseur de Dreamweaver 3 à ignorer le marquage sur serveur. Dreamweaver 3 ignore déjà par défaut les types les plus courants de marquages de serveur (notamment ASP, CFML et PHP) ; si vous utilisez un marquage qui comporte des balises de début et de fin différentes, modifiez la base de balises tierces pour garantir le bon fonctionnement du traducteur. Pour plus d'informations sur la modification de la base de balises tierces, reportez-vous au chapitre 16, Personnalisation de Dreamweaver du manuel Utilisation de Dreamweaver. Etant donné que Dreamweaver gère la conservation du marquage de serveur d'origine, la tâche du traducteur est de générer une valeur d'attribut correcte qui peut être visualisée dans la fenêtre Document. Vous n'avez par conséquent pas besoin de traducteur si vous utilisez le marquage de serveur uniquement pour les attributs qui n'ont pas un effet visible pour les utilisateurs. Le traducteur crée une valeur d'attribut qui a un effet visible dans la fenêtre Document en ajoutant un attribut spécial, mmTranslatedValue, à la balise qui contient le marquage de serveur. Cependant, l'attribut mmTranslatedValue et sa valeur ne sont pas visibles dans l'inspecteur HTML et ne sont pas enregistrés avec le document. 302 Chapitre 16 000ExtendingDWU.book Page 303 Thursday, June 8, 2000 3:38 PM L'attribut mmTranslatedValue doit être unique à l'intérieur de la balise. S'il est probable que le traducteur ait à traduire plusieurs attributs dans la même balise, créez une routine dans le traducteur pour ajouter des nombres à mmTranslatedValue (par exemple, mmTranslatedValue1, mmTranslatedValue2, etc.). La valeur de l'attribut mmTranslatedValue doit être une chaîne codée URL contenant au moins une paire attribut/valeur correcte. Cela signifie que mmTranslatedValue="src=%22open.jpg%22" est une traduction valide pour src="<? if (dayType == weekday) then open.jpg else closed.jpg" ?> et pour <? if (dayType == weekday) then src="open.jpg" else src="closed.jpg" ?> . mmTranslatedValue="%22open.jpg%22" n'est correct pour aucun des deux exemples car il contient uniquement la valeur et non l'attribut. Traduction simultanée de plusieurs attributs L'attribut mmTranslatedValue peut contenir plusieurs paires attribut/valeur correctes. Prenons par exemple le code non traduit suivant : <img <? if (dayType==weekday) then src="open.jpg" width="320" height="100" else src="closed.jpg" width="100" height="320" ?> alt="We're open 24 hours a day from 12:01am Monday until 11:59pm Friday"> Le marquage traduit peut se présenter comme 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 de l'attribut mmTranslatedValue ne sont pas codés. Etant donné que Dreamweaver cherche ces espaces lorsqu'il essaie de rendre la valeur traduite, les paires attribut/valeur de l'attribut mmTranslatedValue doivent être codées individuellement puis rassemblées pour former l'attribut mmTranslatedValue complet. Pour obtenir un exemple de cette procédure, reportez-vous à « Exemple simple de traducteur d'attribut » à la page 303. Exemple simple de traducteur d'attribut Un exemple permet de mieux comprendre la traduction des attributs. Le traducteur décrit ci-après gère le marquage « Pound Conditional » (Poco), syntaxe factice assez similaire à ASP ou PHP. Pour que ce traducteur fonctionne correctement, la première étape consiste à créer un tagspec pour le marquage Poco, afin d'empêcher à Dreamweaver d'analyser les instructions Poco non traduites. Le tagspec du marquage Poco se présente comme 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 303 000ExtendingDWU.book Page 304 Thursday, June 8, 2000 3:38 PM Le fichier poco.xml qui contient ce tagspec est enregistré dans le dossier Configuration/ThirdPartyTags avec 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. * *************************************************************/ 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'); // First instance of Pound Conditional code /* Déclaré mais non initialisé. */ var attAndValue; // Boolean indicating whether the attribute is part of // the conditional statement var trueStart; // The beginning of the true case var falseStart; // The beginning of the false case var trueValue; // The HTML that would render in the true case var attName; // The name of the attribute that is being' // set conditionally. var equalSign; // The position of the equal sign just to the // left of the <#, if there is one var transAtt; // The entire translated attribute var transValue; // The value that must be URL-encoded var back3FromStart; // Three characters back from the start position // (used to find equal sign to the left of <# var tokens; // An array of all the attributes set in the true case var end; // The end of the current conditional statement. // As long as there's still a <# conditional that hasn't been translated while (start != -1){ back3FromStart = start-3; end = outStr.indexOf(' #>',start); equalSign = outStr.indexOf('="<# if',back3FromStart); attAndValue = (equalSign != -1)?false:true; trueStart = outStr.indexOf('then', start); 304 Chapitre 16 000ExtendingDWU.book Page 305 Thursday, June 8, 2000 3:38 PM falseStart = outStr.indexOf(' else', start); trueValue = outStr.substring(trueStart+5, falseStart); tokens = dreamweaver.getTokens(trueValue,' '); // 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. if (!attAndValue){ for (var i=equalSign; i > 0; i--){ if (outStr.charAt(i) == " "){ attName = outStr.substring(i+1,equalSign); break; } } transValue = attName + '="' + trueValue + '"'; transAtt = ' mmTranslatedValue' + count + '="' + escape(transValue) + '"'; outStr = outStr.substring(0,end+4) + transAtt + outStr.substring(end+4); // If attAndValue is true, and tokens is greater than // 1, then trueValue is a series of attribute/value // pairs, not just one. In that case, each attribute/value // pair must be encoded separately and then added back // together to make the translated value. }else if (tokens.length > 1){ transAtt = ' mmTranslatedValue' + count + '="' for (var j=0; j < tokens.length; j++){ tokens[j] = escape(tokens[j]); if (j>0){ spacer=" "; } transAtt += spacer + tokens[j]; } transAtt += '"'; outStr = outStr.substring(0,end+3) + transAtt + outStr.substring(end+3) // If attAndValue is true and tokens is not greater // than 1, then trueValue is a single attribute/value pair. // This is the simplest case, where all that is necessary is // to encode trueValue. }else{ transValue = trueValue; transAtt = ' mmTranslatedValue' + count + '="' + escape(transValue) + '"'; outStr = outStr.substring(0,end+3) + transAtt + outStr.substring(end+3); } // Increment the counter so that the next instance // of mmTranslatedValue will have a unique name, and // then find the next <# conditional in the code. count++; Traducteurs de données 305 000ExtendingDWU.book Page 306 Thursday, June 8, 2000 3:38 PM start = outStr.indexOf('<# if',end); } // Return the translated string. return outStr } function getTranslatorInfo(){ returnArray = new Array(7); returnArray[0] = "Pound_Conditional";//The translatorClass returnArray[1] = "Pound Conditional Translator";//The title returnArray[2] = "2"; //The number of extensions returnArray[3] = "html"; //The first extension returnArray[4] = "htm";//The second extension returnArray[5] = "1";// The number of expressions returnArray[6] = "<#";//The first expression return returnArray } </script> </head> <body> </body> </html> Inspection des attributs traduits Si le marquage de serveur est utilisé pour spécifier un seul attribut et si l'attribut est représenté dans un inspecteur de propriétés, Dreamweaver affiche le marquage de serveur dans l'inspecteur de propriétés. Le marquage apparaît, qu'un traducteur y soit associé ou non. Si un traducteur est associé au marquage, un éclair apparaît sur l'icône dans l'inspecteur. Le traducteur s'exécute chaque fois que l'utilisateur modifie le marquage de serveur affiché dans l'inspecteur. 306 Chapitre 16 000ExtendingDWU.book Page 307 Thursday, June 8, 2000 3:38 PM Remarque : l'icône de l'éclair n'apparaît pas lorsque du texte ou des cellules, des lignes ou des colonnes de tableau sont sélectionnés. La traduction s'effectue même si l'utilisateur modifie le marquage de serveur dans l'inspecteur et s'il existe un traducteur gérant ce type de marquage. Lorsque le marquage de serveur est utilisé pour contrôler plusieurs attributs dans une balise, il n'apparaît pas dans l'inspecteur des propriétés, mais l'éclair signale à l'utilisateur qu'il existe pour l'élément sélectionné. Les champs de l'inspecteur restent modifiables ; les utilisateurs peuvent entrer des valeurs pour les attributs qui peuvent être contrôlés par marquage de serveur, produisant des attributs en double. Si une valeur traduite et une valeur normale sont toutes deux définies pour un attribut particulier, Dreamweaver affiche la valeur traduite dans la fenêtre Document. Vous devez décider si le traducteur doit chercher les attributs en double et les supprimer. Verrouillage de balises ou de blocs de code traduits Dans la plupart des cas, un traducteur doit modifier le marquage afin que Dreamweaver puisse l'afficher, tout en conservant le marquage d'origine et non les modifications. Pour cela, Dreamweaver fournit des balises XML spéciales dans lesquelles vous pouvez inclure le contenu traduit et 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"> Contenu traduit <MM:EndLock> où : est l'identificateur unique du traducteur (première chaîne de la table renvoyée par getTranslatorInfo()). translatorClass Traducteurs de données 307 000ExtendingDWU.book Page 308 Thursday, June 8, 2000 3:38 PM est une chaîne qui identifie le type de marquage (ou le nom de la balise associée au marquage) contenu dans le verrou. La chaîne ne peut contenir que des caractères alphanumériques, des tirets (-) et des traits de soulignement (_). Vous pouvez vérifier cette valeur dans la fonction canInspectSelection() d'un inspecteur de propriétés personnalisé pour déterminer si l'inspecteur est approprié au contenu. Pour plus d'informations, reportez-vous à « Création d'un inspecteur de propriétés pour le contenu verrouillé » à la page 313. Le contenu verrouillé ne peut pas être inspecté par l'un des inspecteurs de propriétés intégrés dans Dreamweaver. Par exemple, en spécifiant type="IMG", vous ne faites pas apparaître l'inspecteur d'images. tagNameOrType est une chaîne qui contient une liste de fichiers séparés par des virgules et dont dépend le marquage verrouillé. 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 dependentFilesList, Dreamweaver retraduit automatiquement le contenu dans le document contenant la liste. dependentFilesList encodedOriginalMarkup est une chaîne qui contient le marquage d'origine, non traduit, codé à l'aide d'un petit sous-ensemble de codage URL (utilisez %22 pour “, %3C pour <, %3E pour > et %25 pour %). La méthode escape() constitue le moyen le plus rapide pour coder une chaîne en URL. Par exemple, si myString est égal à '<img src="foo.gif">', escape(myString) renvoie %3Cimg%20src=%22foo.gif%22%3E . L'exemple suivant indique la portion de code verrouillée pouvant être générée par la traduction de l'inclusion à partir du serveur <!--#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> 308 Chapitre 16 000ExtendingDWU.book Page 309 Thursday, June 8, 2000 3:38 PM Exemple simple de traducteur de bloc/balise Pour mieux comprendre la traduction, il est utile d'examiner un traducteur entièrement rédigé en JavaScript (c'est-à-dire qui ne dépend d'une bibliothèque C pour aucune fonctionnalité). Le traducteur suivant serait plus efficace s'il était écrit en C, mais la version JavaScript étant plus simple, c'est un parfait exemple de fonctionnement des traducteurs. Comme la plupart des traducteurs, celui-ci est conçu pour imiter le comportement du serveur. Supposons que votre serveur web soit configuré pour remplacer la balise KENT par une photo d'ingénieur différente selon le jour de la semaine, l'heure et la plate-forme de l'utilisateur. Le traducteur fait la même chose, mais 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; } Traducteurs de données 309 000ExtendingDWU.book Page 310 Thursday, June 8, 2000 3:38 PM /********************************************************** * The translateMarkup() function performs the actual translation. * * In this translator, the translateMarkup() function is written * * entirely in JavaScript (that is, it does not rely on a C library) -- * * and it's also extremely inefficient. It's a simple example, however,* * which is good for learning.* **********************************************************/ function translateMarkup(docNameStr, siteRootStr, inStr){ var outStr = "";// The string to be returned after translation var start = inStr.indexOf('<kent>');// The first position of the KENT tag // in the document. var replCode = replaceKentTag();// Calls the replaceKentTag() function // to get the code that will replace KENT. //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; // 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.* **********************************************************/ 310 Chapitre 16 000ExtendingDWU.book Page 311 Thursday, June 8, 2000 3:38 PM 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'; // The first part of the opening lock tag. The remainder of the tag is assembled below. var start = '<MM:BeginLock translatorClass="DREAMWEAVER_TEAM" type="kent"'; // The closing lock tag. var end = '<MM:EndLock>'; //Assemble the lock tags and the replacement HTML. var replCode = start + ' depFiles="' + depFiles + '"'; replCode = replCode + ' orig="%3Ckent%3E">\n'; replCode = replCode + imgTag; replCode = replCode + end; return replCode; } /********************************************************** * The getImage() function determines which image to display* * based on the day of the week, the time of day and the * * user's platform. The day and time are figured based on UTC * * time (Greenwich Mean Time) minus 8 hours, which gives* * Pacific Standard Time (PST). No allowance is made for Daylight * * Savings Time in this routine.* **********************************************************/ function getImage(){ var today = new Date();// Today's date & time. var day = today.getUTCDay();// The 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;// The 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. // First, you have to subtract one from the day count because it is already the wee // hours of the next day in GMT. Second, you have to add SFhour to 24 to // give a valid hour in the 24-hour clock. if (SFhour < 0){ day = day - 1; // If setting the day count back one would make it negative, it's Saturday, // so set the count to 6. if (day < 0){ day = 6; } Traducteurs de données 311 000ExtendingDWU.book Page 312 Thursday, June 8, 2000 3:38 PM 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_hardAtWorkOnWin.jpg"; } }else{ imageRef = "images/kent_sleeping.jpg"; } //If it's after midnight and before 10am, or anytime on Sunday }else{ imageRef = "images/kent_sleeping.jpg"; } return imageRef; } </script> </head> <body> </body> </html> 312 Chapitre 16 000ExtendingDWU.book Page 313 Thursday, June 8, 2000 3:38 PM Création d'un inspecteur de propriétés pour le contenu verrouillé Une fois que vous avez créé un traducteur, vous devez créer un inspecteur de propriétés pour le contenu afin que l'utilisateur puisse modifier ses propriétés (par exemple, le fichier à inclure ou l'une des conditions d'une instruction conditionnelle). L'inspection du contenu traduit est un problème unique pour plusieurs raisons : L'utilisateur peut avoir besoin 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 (c'est-à-dire que les balises de verrouillage et les balises qu'elles englobent sont des nœuds dans le DOM), mais la propriété outerHTML de documentElement et des fonctions dreamweaver.getSelection() et dreamweaver.nodeToOffsets() agit sur la source non traduite. Les balises que vous inspectez sont différentes avant et après la traduction. Si l'utilisateur peut désactiver votre traducteur et si les balises non traduites ne sont pas déjà traitées par un autre inspecteur, créez deux inspecteurs de propriétés, un pour la ou les balises non traduites et un pour la région verrouillée créée par la traduction. Les interfaces des deux inspecteurs peuvent être identiques, mais le commentaire figurant au début du fichier et les fonctions canInspectSelection() et inspectSelection() doivent être différents. Par exemple, l'inspecteur de la balise HAPPY peut avoir un commentaire du type suivant : <!-- tag:HAPPY,priority:5,selection:exact,hline,vline --> Mais l'inspecteur de la balise HAPPY traduite aura le commentaire suivant : <!-- tag:*LOCKED*,priority:5,selection:within,hline,vline --> La fonction canInspectSelection() de l'inspecteur HAPPY non traduit est simple : le type de sélection étant exact, elle peut renvoyer la valeur TRUE sans autre analyse. Cette fonction est plus compliquée pour l'inspecteur HAPPY traduit ; le mot-clé *LOCKED* indique que l'inspecteur est approprié lorsque la sélection se trouve dans une région verrouillée, mais un document pouvant contenir plusieurs régions verrouillées, d'autres vérifications doivent être effectuées pour déterminer si l'inspecteur correspond à cette région verrouillée particulière. Cependant, l'inspection du contenu traduit pose un autre problème. Lorsque vous appelez dom.getSelection(), les valeurs renvoyées par défaut représentent des décalages dans le code source non traduit. Pour développer la sélection correctement afin que la région verrouillée (et seulement la région verrouillée) soit sélectionnée, utilisez la méthode suivante : var currentDOM = dw.getDocumentDOM(); var offsets = currentDOM.getSelection(); var theSelection = currentDOM.offsetsToNode(offsets[0],offsets[0]+1); Traducteurs de données 313 000ExtendingDWU.book Page 314 Thursday, June 8, 2000 3:38 PM L'utilisation d'offsets[0]+1 comme deuxième argument garantit que vous restez dans la balise de verrouillage d'ouverture lorsque vous convertissez les décalages en nœud. Si vous utilisez offsets[1] comme deuxième argument, vous risquez de sélectionner le nœud au-dessus du verrou. Une fois que vous avez la sélection (après avoir au préalable vérifié qu'il s'agit du nœud node.ELEMENT_NODE), vous pouvez inspecter l'attribut type pour savoir si la région verrouillée correspond à cet inspecteur. Par exemple : if (theSelection.nodeType == node.ELEMENT_NODE && theSelection.getAttribute('type') == 'happy'){ return true; }else{ return false } 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 si l'inspecteur de propriétés contient un champ intitulé Time, vous devez extraire la valeur de l'attribut TIME 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; } Après avoir analysé l'attribut orig pour renseigner les champs de l'inspecteur de propriétés de la balise traduite, votre premier mouvement sera probablement de définir la valeur de l'attribut orig si l'utilisateur modifie la valeur de l'un des champs. Ce n'est cependant pas la meilleure méthode car vous risquez d'être bloqué par la restriction interdisant d'effectuer des modifications dans une région verrouillée. Pour éviter ce problème, modifiez le marquage d'origine, puis retraduisez. 314 Chapitre 16 000ExtendingDWU.book Page 315 Thursday, June 8, 2000 3:38 PM L'inspecteur de propriétés des inclusions à partir du serveur (Configuration/ Inspectors/ssi_translated.js) indique cette méthode dans sa fonction setComment(). Au lieu de réécrire l'attribut orig, l'inspecteur assemble un nouveau commentaire SSI, puis il insère ce commentaire dans le document à la place du précédent en rédigeant à nouveau tout le contenu du document, ce qui génère un nouvel attribut orig. Le code suivant résume cette méthode : // 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 un traducteur Si la fonction translateMarkup() contient certains types d'erreurs, le traducteur se charge correctement, mais se bloque en silence lorsqu'il est appelé. Même si ce blocage silencieux ne rend pas Dreamweaver instable, il peut gêner le développement, en particulier lorsque vous essayez de trouver une petite erreur de syntaxe dans 10, 20 ou 30 lignes de code. Si le traducteur se bloque, une méthode de débogage efficace consiste à transformer le traducteur en commande, comme suit : 1 Copiez le contenu intégral du fichier de traduction dans un nouveau document et enregistrez-le dans le dossier Configuration/Commands à l'intérieur du dossier de l'application Dreamweaver. Traducteurs de données 315 000ExtendingDWU.book Page 316 Thursday, June 8, 2000 3:38 PM 2 En haut 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(), mettez en commentaire la ligne return whateverTheReturnValueIs et remplacez-la par dreamweaver.getDocumentDOM().documentElement.outerHTML = whateverTheReturnValueIs. Par exemple : // return theCode; dreamweaver.getDocumentDOM().documentElement.outerHTML = theCode; } /* end of translateMarkup() */ 4 Dans le corps (BODY) du document, ajoutez un formulaire sans champ d'entrée. Par exemple : <body> <form> Hello. </form> </body> 5 Relancez Dreamweaver, puis choisissez votre « commande de traduction » dans le menu Commandes. Lorsque vous cliquez sur OK, la fonction translateMarkup() est appelée et simule la traduction. Si vous ne voyez pas de message d'erreur mais que la traduction se bloque quand même, le code contient probablement une erreur de logique. 6 Ajoutez des instructions alert() à des endroits stratégiques de la fonction translateMarkup() pour avoir la certitude que vous atteignez les branches appropriées, afin de vérifier les valeurs des variables et des propriétés en différents points. Par exemple : for (var i=0; i< foo.length; i++){ alert("we're at the top of the foo.length array, and the value of i is " + i); /* rest of loop */ } 7 316 Chapitre 16 Après avoir ajouté les instructions alert(), choisissez votre commande dans le menu, cliquez sur Annuler et choisissez-la de nouveau. Le fichier de commandes se recharge avec vos modifications. 000ExtendingDWU.book Page 317 Thursday, June 8, 2000 3:38 PM 17 CHAPITRE 17 Modèles de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les modèles de serveur sont des techniques permettant d'exécuter des scripts sur un serveur. En définissant un site avec Dreamweaver UltraDev, les utilisateurs identifient le modèle de serveur qu'ils appliquent à ce site. Un modèle de serveur est spécifié pour l'ensemble d'un site. 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 dossier ServerModels contenu dans le dossier Configuration. Chaque modèle de serveur possède son propre fichier : ASP 2.0, Cold Fusion 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 Infos du serveur d'application de la boîte de dialogue Définition du site. 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 une table de chaînes ; UltraDev utilise ces chaînes pour compléter la liste Extension de page par défaut contenue dans la catégorie Infos du serveur d'application de la boîte de dialogue Définition du site. Arguments Aucun. Renvoie Une table de chaînes représentant les extensions de fichier autorisées. 317 000ExtendingDWU.book Page 318 Thursday, June 8, 2000 3:38 PM getServerLanguages() Disponibilité Description Dreamweaver UltraDev 1.0 Renvoie les langages de script d'un modèle de serveur pris en charge. Cette fonction renvoie une table de chaînes ; UltraDev utilise ces chaînes pour compléter la liste Langage de script par défaut contenue dans la catégorie Infos du 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. Arguments Renvoie Aucun. Une table de chaînes représentant les langages de script pris en charge. getVersionArray() Disponibilité Dreamweaver UltraDev 1.0 Description Met en correspondance les technologies de serveur avec les numéros de version. Cette fonction est appelée par dom.serverModel.getServerVersion(). Arguments Aucun. Renvoie Une table d'objets de version, chacun portant un nom et une valeur de version : ASP version 2.0 ADODB version 2.1 318 Chapitre 17 000ExtendingDWU.book Page 319 Thursday, June 8, 2000 3:38 PM 18 CHAPITRE 18 Sources de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tous les fichiers de sources de données résident dans le dossier DataSources contenu dans le dossier Configuration. Un sous-répertoire a été créé pour chaque modèle de serveur : 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. Les fonctions de l'API de source de données vous permettent de manipuler les options des menus plus (+) de l'inspecteur de liaisons de données et des boîtes de dialogue Données dynamiques et Texte dynamique. Fonctionnement des sources de données Les utilisateurs d'UltraDev ajoutent des données dynamiques par l'intermédiaire des boîtes de dialogue Données dynamiques ou Texte dynamique ou de l'inspecteur de liaisons de données. Les objets de données dynamiques affichés dans le menu contextuel plus (+) de ces éléments d'interface dépendent du 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, de session ou d'application pour les applications ASP. Les étapes suivantes décrivent la procédure d'ajout de données dynamiques : 1 Lorsque l'utilisateur clique sur le bouton plus (+) des boîtes de dialogue Données dynamiques ou Texte dynamique ou de l'inspecteur de liaisons de données, le menu contextuel 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 contextuel ; il renvoie aux fichiers HTML devant être placés dans le menu contextuel. 319 000ExtendingDWU.book Page 320 Thursday, June 8, 2000 3:38 PM 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. Dans le cas contraire, c'est le nom du fichier qui s'affiche dans le menu. Si le répertoire contient des sous-répertoires, les fichiers de ces derniers sont ajoutés au menu sous forme de sous-menus. Une fois qu'UltraDev a fini de manipuler le fichier DataSources.xml ou si ce fichier n'existe pas, UltraDev analyse le reste du dossier pour y trouver d'autres éléments devant figurer dans le menu. Si UltraDev trouve dans le dossier principal des fichiers qui ne figurent pas encore dans le menu, il les y ajoute. S'il existe des sous-dossiers contenant des fichiers qui ne figurent pas encore dans le menu, UltraDev crée un sous-menu et y ajoute ces fichiers. 2 Lorsque l'utilisateur choisit une option du menu plus (+), UltraDev appelle la fonction addDynamicSource(), afin que le code de la source de données soit ajouté au document de l'utilisateur. 3 Ensuite, UltraDev parcourt chaque fichier du dossier du modèle de serveur approprié (par exemple, le dossier \Configuration\DataSources\ASP), en appelant l'implémentation de findDynamicSources() dans chacun. Pour chaque valeur de la table renvoyée, UltraDev appelle la fonction generateDynamicSourceBindings() dans le même fichier. Par exemple, l'implémentation contenue dans Recordset.htm (ou Recordset.js) est chargée de trouver tous les jeux d'enregistrements de la page ; les implémentations contenues dans d'autres fichiers sont chargées des autres types de sources de données. Ainsi, UltraDev appelle findDynamicSources() et generateDynamicSourceBindings() pour obtenir une liste à jour de toutes les sources de données associées au document de l'utilisateur. Ces sources de données sont présentées à l'utilisateur de façon hiérarchique, c'est-à-dire sous forme d'une arborescence dans les boîtes de dialogue Données dynamiques ou Texte dynamique ou dans l'inspecteur de 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 320 Chapitre 18 000ExtendingDWU.book Page 321 Thursday, June 8, 2000 3:38 PM 4 Si l'utilisateur clique sur le bouton moins (-), UltraDev extrait le nœud sélectionné de l'arborescence des sources de données et le transmet à deleteDynamicSource(), qui supprime le code ajouté précédemment avec addDynamicSource(). Si la suppression de la sélection en cours n'est pas logique, la fonction renvoie un message d'erreur dans certaines conditions. 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 le bouton OK dans la boîte de dialogue Données dynamiques ou Texte dynamique ou sur le bouton Insertion ou Lier de l'inspecteur de liaisons de données, UltraDev appelle la fonction generateDynamicDataRef(). La valeur renvoyée est insérée dans le document au point d'insertion actuel. 6 Si l'utilisateur affiche la boîte de dialogue Données dynamiques ou Texte dynamique pour modifier un objet de données dynamiques existant, cet objet doit être sélectionné dans l'arborescence de la source de données. Pour initialiser l'arborescence, UltraDev parcourt chaque fichier du dossier du modèle de serveur approprié (par exemple, le dossier \Configuration\DataSources\ASP), en appelant l'implémentation de inspectDynamicDataRef() dans chacun. Cette fonction reconvertit le code représentant l'objet de données dynamiques en un élément de l'arborescence dans le document de l'utilisateur (c'est l'opération inverse de celle de la fonction generateDynamicDataRef()). Si inspectDynamicDataRef() renvoie une table contenant deux éléments, UltraDev fournit une indication visuelle en signalant l'élément de l'arborescence lié à la sélection en cours. 7 Chaque fois que l'utilisateur modifie sa sélection, UltraDev appelle la fonction inspectDynamicDataRef() pour déterminer si la nouvelle sélection est un texte dynamique ou une balise comportant un attribut dynamique. Si elle est dynamique, UltraDev affiche les liaisons de la sélection en cours dans l'inspecteur de liaisons de données. 8 En utilisant cet inspecteur ou les boîtes de dialogue Données dynamiques ou Texte dynamique, il est possible de modifier le format de données d'un objet texte dynamique ou d'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() (dans l'API de format de données). La chaîne renvoyée par formatDynamicDataRef() est insérée dans le document. Sources de données 321 000ExtendingDWU.book Page 322 Thursday, June 8, 2000 3:38 PM API de source de données addDynamicSource() Disponibilité Description Dreamweaver UltraDev 1.0 Ajoute une source de données dynamiques. Etant donné qu'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 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 pour recueillir le nom de la variable ; le comportement stocke alors ce nom en vue d'une utilisation ultérieure. dw.serverBehaviorInspectorpopupServerBehavior() , 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 réalimenter cette arborescence. Renvoie Rien n'est renvoyé. deleteDynamicSource() Disponibilité Description Dreamweaver UltraDev 1.0 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 demande, 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 des sources 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 nœud de niveau supérieur auquel le nœud enfant est associé. bindingName est le nom du nœud enfant. Renvoie 322 Chapitre 18 Rien n'est renvoyé. 000ExtendingDWU.book Page 323 Thursday, June 8, 2000 3:38 PM findDynamicSources() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie les nœuds de niveau supérieur de l'arborescence des sources de données qui apparaît dans l'inspecteur de 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'entre eux. Renvoie Une table d'objets JavaScript. Chaque objet doit posséder au moins deux attributs : title et imageFile. L'attribut title correspond au libellé situé à droite de l'icône de chaque nœud parent. L'attribut imageFile est le chemin d'accès à un fichier contenant l'icône (une image GIF) qui représente le nœud parent dans l'inspecteur de liaisons de données ou dans les boîtes de dialogue Données dynamiques ou Texte dynamique. Il existe un troisième attribut facultatif : allowDelete. Si cet attribut a la valeur false, le bouton moins (-) est désactivé lorsque l'utilisateur clique sur ce nœud dans l'inspecteur de liaisons de données. S'il a la valeur true, le bouton moins (-) est activé. Si la propriété n'est pas définie, la valeur par défaut est true. generateDynamicDataRef() Disponibilité Dreamweaver UltraDev 1.0 Description Génère l'objet de données dynamiques pour un nœud enfant. Arguments sourceName, bindingName sourceName est le nom du nœud de niveau supérieur associé au nœud enfant. bindingName est le nom du nœud enfant à partir duquel vous souhaitez générer un objet de données dynamiques. Renvoie Une chaîne, qui peut être passée à formatDynamicDataRef() pour être mise en forme avant d'être insérée dans un document d'utilisateur. generateDynamicSourceBindings() Disponibilité Dreamweaver UltraDev 1.0 Description Renvoie le nœud enfant d'un nœud de niveau supérieur. Arguments sourceName est le nom du nœud de niveau supérieur dont les nœuds enfants doivent être renvoyés. sourceName Sources de données 323 000ExtendingDWU.book Page 324 Thursday, June 8, 2000 3:38 PM Renvoie Une table d'objets JavaScript. Chaque objet doit posséder au moins deux propriétés : title et imageFile. L'attribut title correspond au libellé situé à droite de l'icône de chaque nœud parent. L'attribut imageFile est le chemin d'accès à un fichier contenant l'icône (une image GIF) qui représente l'élément dans l'inspecteur de liaisons de données ou les boîtes de dialogue Données dynamiques ou Texte dynamique. Il existe un troisième attribut facultatif : allowDelete. Si cet attribut a la valeur false, le bouton moins (-) est désactivé lorsque l'utilisateur clique sur ce nœud dans l'inspecteur de liaisons de données. S'il a la valeur true, le bouton moins (-) est activé. Si la propriété n'est pas définie, la valeur par défaut est true. inspectDynamicDataRef() Disponibilité Description Dreamweaver UltraDev 1.0 A partir d'un objet de données dynamiques, détermine le nœud 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 chacun des nœuds de l'arborescence. En cas de correspondance, la fonction inspectDynamicDataRef() indique quel nœud de l'arborescence correspond à la chaîne transmise. La fonction identifie le nœud au moyen d'une table contenant deux éléments. Le premier élément est le nom du nœud parent ; le second est le nom du nœud enfant. Si aucune correspondance n'est trouvée, inspectDynamicDataRef() renvoie une table 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 nœud de jeu d'enregistrements dans l'arborescence. Arguments string string désigne Renvoie 324 Chapitre 18 l'objet de données dynamiques. Une table de deux éléments (nom parent et nom enfant) pour le nœud correspondant ; la valeur null si aucune correspondance n'est trouvée. 000ExtendingDWU.book Page 325 Thursday, June 8, 2000 3:38 PM 19 CHAPITRE 19 Mise en forme des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dreamweaver UltraDev permet aux utilisateurs d'insérer des données dynamiques dans un document HTML, en introduisant une expression serveur à l'endroit approprié dans le document de l'utilisateur. Lorsque le serveur web demande ce document, l'expression est convertie dans une valeur de base de données, dans le contenu d'une variable de demande ou dans une autre valeur dynamique. Vous pouvez modifier le format des données dynamiques avant de les insérer dans un document HTML en utilisant le menu déroulant Format des boîtes de dialogue Données dynamiques ou Texte dynamique, ou dans l'inspecteur de liaisons de données. Pour créer un format, choisissez la commande Modifier la liste de formats du menu Format, puis un type de format dans le menu plus (+). Ce menu contient une liste de types de format, appartenant à des catégories de base (Devise, Date/Heure, Casse, etc.). Les types de format regroupent tous les paramètres communs à une catégorie, ce qui vous simplifie la tâche lorsque vous en créez un. Supposons que vous vouliez créer un format de devise. En général, mettre en forme des devises revient à convertir un nombre en une chaîne, à insérer des virgules décimales et un symbole de devise (le signe dollar $ par exemple). Le type de données du format Devise regroupe tous les paramètres communs et vous demande une valeur pour chacun d'eux. Lorsque vous créez un format Devise, vous n'avez donc pas à vous soucier de tous les paramètres à prévoir ; il vous suffit d’entrer les valeurs demandées. Les utilisateurs d'UltraDev peuvent mettre en forme des données en utilisant des formats prédéfinis, ou bien créer des formats à partir de types prédéfinis ou qu'ils ont créés eux-mêmes. 325 000ExtendingDWU.book Page 326 Thursday, June 8, 2000 3:38 PM Organisation de la mise en forme des données Tous les fichiers de format se trouvent dans le répertoire ServerFormats du dossier Configuration. Chaque modèle de serveur possède son propre sous-répertoire : ASP, JSP et ColdFusion. Chaque sous-répertoire contient un fichier XML et plusieurs fichiers HTML. Le fichier XML (Formats.xml) décrit tous les choix du menu Format. UltraDev ajoute automatiquement les options Aucun et Modifier la liste de formats. Le répertoire contient également un fichier HTML pour chaque type de format installé. Les types de format sont les suivants : Casse, Devise, Date/Heure, Math, Nombre, Pourcentage, Simple et Rogner. Fichier Formats.xml Ce fichier contient une balise <format> pour chaque élément du menu Format, chacune contenant les attributs obligatoires suivants : file=fileName, qui désigne le fichier HTML de ce type de format. Exemple : « Devise ». title=string, qui désigne la chaîne du menu Format. Exemple : « Devise - par 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. L'expression correspondant au format « Devise - par défaut », par exemple, serait « <%\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 dans toutes les balises <format> du fichier ; elle doit être suffisamment précise pour garantir que seules les instances de ce format correspondent à l'expression. visibility=[hidden | visible], qui indique si la valeur est affichée ou non dans le menu Format. Si la valeur de visibility est hidden (masquée), le format ne s'affiche pas dans le menu Format. La balise <format> peut éventuellement contenir des attributs supplémentaires ayant un nom arbitraire. Certaines fonctions de mise en forme de données nécessitent un argument, format, qui est un objet JavaScript. Cet objet est le nœud correspondant à la balise <format> dans le fichier Formats.xml. Il doit avoir une propriété JavaScript pour chaque attribut de la balise <format> correspondante. 326 Chapitre 19 000ExtendingDWU.book Page 327 Thursday, June 8, 2000 3:38 PM Exemple de balise <format> pour « Devise - par défaut » : <format file="Devise" title="Devise - par 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 - par défaut » s'affiche dans le menu déroulant 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 facultatifs du type de format Devise. Ils 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 lorsqu'un utilisateur choisit le type de format Devise dans le menu contextuel 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 la boîte de dialogue Modifier la liste de formats Pour qu'un fichier du dossier ServerFormats ne s'affiche pas dans le menu plus (+) de la boîte de dialogue Modifier la liste de formats, ajoutez l'instruction suivante de manière à ce qu'elle devienne 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 sources de données (par exemple, \Configuration\ServerFormats\ASP\ServerFormats.xml). Le fichier ServerFormats.xml décrit le contenu du menu plus (+) ; il renvoie aux fichiers HTML devant être placés dans ce menu. 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 ; dans le cas contraire, c'est le nom du fichier qui s'affiche. Si le répertoire contient des sous-répertoires, les fichiers de ces derniers sont ajoutés au menu sous forme de sous-menus. Une fois qu'UltraDev a fini de manipuler le fichier ServerFormats.xml ou si ce fichier n'existe pas, UltraDev analyse le reste du dossier pour y trouver d'autres éléments devant figurer dans le menu. Si UltraDev trouve dans le dossier principal des fichiers qui ne figurent pas encore dans le menu, il les y ajoute. S'il existe des sous-dossiers contenant des fichiers qui ne figurent pas encore dans le menu, UltraDev crée un sous-menu et y ajoute ces fichiers. Mise en forme des données 327 000ExtendingDWU.book Page 328 Thursday, June 8, 2000 3:38 PM Mise en application des fonctions de mise en forme des données Les fonctions de mise en forme de données sont appelées dans les situations suivantes : Dans la boîte de dialogue Données dynamiques ou Texte dynamique, ou dans l'inspecteur de liaisons de données, choisissez un nœud à partir de l'arborescence des sources de données et un format dans le menu déroulant Format. Lorsque le format est sélectionné, UltraDev appelle generateDynamicDataRef(), puis passe 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. Cliquez sur OK pour insérer la chaîne de code dans le document ainsi qu'à l'emplacement du point d'insertion (curseur). UltraDev appelle ensuite la fonction applyFormat() pour insérer une déclaration de fonction. Voir « generateDynamicDataRef() » à la page 323 pour de plus amples informations. Un processus semblable a lieu si vous utilisez l'inspecteur de liaisons de données. La modification d'un format ou la suppression d'un élément de données dynamiques appelle la fonction deleteFormat(), qui supprime les scripts correspondants du document. Lorsque vous cliquez sur le bouton plus (+) dans 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 correspond à un fichier du dossier Configuration\ServerFormats\[ModèleServeur]. Si vous choisissez un format dans le menu plus (+) 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, choisissez les paramètres du format et cliquez sur OK.UltraDev appelle alors la fonction applyFormatDefinition(). Si le format choisi ne nécessite pas l'affichage d'une boîte de dialogue permettant de choisir des paramètres, la fonction applyFormatDefinition() est appelée lorsque vous choisissez le type de format dans le menu plus (+). Si vous modifiez ultérieurement le format en le sélectionnant dans le menu plus (+), UltraDev appelle la fonction inspectFormatDefinition() avant d'afficher la boîte de dialogue Paramètres afin que les contrôles du formulaire puissent être initialisés avec des valeurs correctes. 328 Chapitre 19 000ExtendingDWU.book Page 329 Thursday, June 8, 2000 3:38 PM API de mise en forme de données applyFormat() Disponibilité Description Dreamweaver UltraDev 1.0 Ajoute une déclaration de mise en forme de fonction au document de l'utilisateur. Lorsque vous choisissez un format dans le champ Format de la boîte de dialogue Données dynamiques ou Texte dynamique ou de l'inspecteur de liaisons de données, UltraDev effectue deux modifications dans le document : il ajoute la fonction de format au-dessus de la balise HTML (si elle n'y est pas déjà) et modifie l'objet de données dynamiques de manière à ce que la fonction de format appropriée soit appelée. UltraDev ajoute la déclaration de fonction en appelant la fonction JavaScript dans le fichier de format des données. Il réalise la seconde modification en appelant la fonction formatDynamicDataRef(). applyFormat() La fonction applyFormat() doit se servir du modèle d'objet de document (Document Object Model) afin d'ajouter des déclarations de fonction au début du document de l'utilisateur. Par exemple, si vous avez choisi « Devise - par défaut », la fonction ajoute la déclaration de la fonction Devise. Cette fonction peut modifier un document de l'utilisateur. Arguments format est un objet JavaScript qui décrit le format à appliquer. Cet objet est le nœud correspondant à la balise <format> dans le fichier Formats.xml. Il doit avoir une propriété JavaScript pour chaque attribut de la balise <format> correspondante. format Renvoie Rien n'est renvoyé. applyFormatDefinition() Disponibilité Description Dreamweaver UltraDev 1.0 Applique les modifications à un format créé avec la boîte de dialogue Modifier le format. Les utilisateurs peuvent créer, modifier ou supprimer des formats dans 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. Mise en forme des données 329 000ExtendingDWU.book Page 330 Thursday, June 8, 2000 3:38 PM 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. Chaque propriété est stockée en tant qu'attribut de la balise <format>. format Renvoie L'objet du format est renvoyé, si la fonction est correctement appliquée. En cas d'erreur, la fonction renvoie une chaîne d'erreur. Si elle renvoie une chaîne vide, le formulaire est fermé mais le format n'est pas créé, ce qui revient à annuler l'opération. deleteFormat() Disponibilité Description Dreamweaver UltraDev 1.0 Supprime la déclaration de fonction du format au début du document de l'utilisateur. Lorsque vous modifiez le format d'un objet de données dynamiques (dans l'inspecteur de liaisons des données ou dans la boîte de dialogue Données dynamiques ou Texte dynamique) ou effacez l'un de ces objets, UltraDev supprime la déclaration de fonction au début du document, ainsi que l'appel de fonction de l'objet en appelant la fonction deleteFormat(). Cette fonction doit se servir du modèle d'objet de document 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 est le nœud correspondant à la balise <format> dans le fichier Formats.xml. format Renvoie Rien n'est renvoyé. formatDynamicDataRef() Disponibilité Description Dreamweaver UltraDev 1.0 Ajoute à l'objet de données dynamiques l'appel de la fonction de format. Lorsque vous choisissez un format dans le champ Format de la boîte de dialogue Données dynamiques ou Texte dynamique ou de l'inspecteur de liaisons de données, UltraDev effectue deux modifications dans le document de l'utilisateur : il ajoute la fonction de format appropriée au-dessus de la balise HTML (si elle n'y est pas déjà) et modifie l'objet de données dynamiques de manière à ce que la fonction de format appropriée soit appelée. UltraDev ajoute la déclaration de fonction en appelant la fonction JavaScript applyFormat() dans le fichier de format des données. Il réalise la seconde modification en appelant la fonction formatDynamicDataRef(). 330 Chapitre 19 000ExtendingDWU.book Page 331 Thursday, June 8, 2000 3:38 PM Cette fonction est appelée lorsque l'utilisateur choisit un format dans le champ Format de l'inspecteur de liaisons de données ou de la boîte de dialogue Données dynamiques ou Texte dynamique. Elle ne modifie pas le document de l'utilisateur. Arguments dynamicDataObject, format dynamicDataObject est une chaîne contenant l'objet de données dynamiques. format est un objet JavaScript qui décrit le format à appliquer. Renvoie La nouvelle valeur de l'objet de données dynamiques est renvoyée. En cas d'erreur, la fonction affiche un message d'alerte 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 contrôles de formulaire lorsqu'un utilisateur essaie de modifier un format existant dans la boîte de dialogue Modifier la liste de formats. Arguments format format Renvoie est un objet JavaScript correspondant à ce format. Rien n'est renvoyé. Mise en forme des données 331 000ExtendingDWU.book Page 332 Thursday, June 8, 2000 3:38 PM 332 Chapitre 19 000ExtendingDWU.book Page 333 Thursday, June 8, 2000 3:38 PM 20 CHAPITRE 20 Comportements de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pour créer des applications web, les utilisateurs de Dreamweaver UltraDev utilisent des comportements de serveur afin de générer les fonctionnalités requises, telles que le filtrage des enregistrements à partir des critères utilisateur, la consultation des enregistrements, la liaison de listes de résultats à des pages d'informations détaillées et l'insertion des enregistrements dans un jeu de résultats. Les comportements de serveur étant écrits en HTML et en JavaScript, vous pouvez également en créer. Un comportement de serveur se compose d'une ou de plusieurs balises insérées dans le document de l'utilisateur. Généralement, au moins une de ces balises est un marqueur de serveur, par exemple une directive ASP. Pour que l'inspecteur de comportements de serveur prenne en charge de nouveaux comportements, vous devez écrire du code JavaScript afin d'insérer ces balises dans le document de l'utilisateur. Vous devez également écrire du code pour rechercher des instances de votre comportement dans un document HTML existant. L'API de comportement de serveur vous permet de définir de nouveaux comportements. Pour appliquer ou supprimer des comportements aux documents de l'utilisateur, UltraDev appelle les fonctions dans cet API. Répertoire ServerBehaviors Tous les fichiers de comportement de serveur se trouvent dans le répertoire ServerBehaviors du dossier Configuration. Un sous-répertoire a été créé pour chaque modèle de serveur : ASP, ColdFusion et JSP. Chaque sous-répertoire de modèle de serveur contient des fichiers HTML associés aux comportements de serveur du modèle, ces derniers étant généralement intégrés au menu plus (+) de l'inspecteur de comportements de serveur. 333 000ExtendingDWU.book Page 334 Thursday, June 8, 2000 3:38 PM Par exemple, le fichier Insert Record.htm du dossier \Configuration\ServerBehaviors\ASP, correspond au comportement Insérer l'enregistrement du menu (+) de l'inspecteur de comportements de serveur lorsque le modèle de serveur sélectionné pour votre site est ASP. Objet JavaScript de comportement de serveur Lorsque votre code JavaScript trouve des instances d'un comportement dans le document de l'utilisateur, il en informe UltraDev en créant un objet JavaScript pour chaque instance. Cet objet est aussi appelé ssRecord. Votre comportement doit définir des propriétés pour chaque objet, pour indiquer à UltraDev de quelle manière afficher le comportement dans l'inspecteur de comportements de serveur. En outre, nombre de fonctions API de comportement de serveur considèrent comme un argument un objet JavaScript représentant un comportement. Le comportement de serveur peut stocker des informations d'état sous la forme de propriétés JavaScript de l'objet. UltraDev exige les quatre propriétés suivantes. Si elles ne sont pas spécifiées, une erreur peut se produire. Vous pouvez également définir d'autres propriétés pour l'objet, si nécessaire. permet à UltraDev de déterminer si une partie de comportement est manquante. Si la valeur de la propriété est true, l'inspecteur de comportements de serveur affiche un point d'exclamation (!) en regard du comportement. Ce point d'exclamation indique qu'une partie du comportement est manquante ; le comportement peut ne pas s'exécuter correctement dans un navigateur. La propriété incomplete La propriété participants permet à UltraDev d'indiquer quels nœuds appartiennent à un comportement. Cette propriété est traduite sous forme d'une table dans laquelle chaque élément est un pointeur vers un nœud du document de l'utilisateur. Chaque fois que l'utilisateur modifie un document, UltraDev recherche dans la liste des participants les comportements de serveur du document. Si le participant d'un comportement de serveur donné a été modifié, UltraDev appelle la fonction findServerBehaviors() afin de générer un nouvel objet JavaScript. La table des participants sert à déclencher un appel à la fonction findServerBehaviors() à chaque fois qu'une partie du comportement de serveur est modifiée. L'appel de la fonction findServerBehaviors() permet de déterminer si certaines parties du comportement sont manquantes ; si tel est le cas, la propriété incomplete prend la valeur true. Si les modifications apportées à une balise donnée risquent de rompre le script ou la balise que vous insérez dans le document de l'utilisateur, nous vous conseillons de transformer cette balise en participant. Voir findServerBehaviors() pour plus d'informations. 334 Chapitre 20 000ExtendingDWU.book Page 335 Thursday, June 8, 2000 3:38 PM est utilisée par UltraDev comme titre du comportement dans l'inspecteur de comportements de serveur. Si la valeur de la propriété est une chaîne, elle apparaît dans la liste de l'inspecteur de comportements de serveur. Si la propriété n'est pas indiquée, UltraDev utilise à la place la balise de titre du comportement de serveur. La propriété title La propriété selectedNode est utilisée par UltraDev pour effectuer le suivi des sélections. Lorsqu'un élément est sélectionné dans la liste, l'objet selectedNode figurant sur la page est sélectionné. Si un utilisateur choisit un objet sur une page et que cet objet correspond au nœud sélectionné pour un comportement de serveur, ce comportement est sélectionné dans l'inspecteur de comportements de serveur. Pour mettre en œuvre le suivi des sélections, chaque instance d'un comportement de serveur doit correspondre à une balise dans le document de l'utilisateur. Généralement, cette balise est un script ASP (ou JSP) ; par exemple, le comportement Région répétée correspond à l'objet de contour sur la page. Toutefois, un comportement peut être associé à tout objet de la page ; par exemple, le comportement Déplacer vers l'enregistrement suivant est souvent couplé avec un objet lien. Un comportement de serveur définit la balise qui lui correspond en faisant pointer la propriété selectedNode de l'objet JavaScript (représentant le comportement) vers la balise. Si plusieurs comportements définissent la même balise selectedNode, le fait de sélectionner cette balise dans l'affichage entraîne la sélection de tous ces comportements. Comment appeler les fonctions API de comportement de serveur Ces fonctions 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 parcourt le document de l'utilisateur à la recherche d'instances d'elle-même. Pour chaque instance 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 335 000ExtendingDWU.book Page 336 Thursday, June 8, 2000 3:38 PM Si elle est implémentée, UltraDev appelle la fonction analyzeServerBehavior() pour chaque comportement trouvé dans le document de l'utilisateur une fois que toutes les fonctions findServerBehaviors() ont été appelées. Lorsque la fonction findServerBehaviors() crée un objet de comportement, elle définit généralement les quatre propriétés (incomplete, participants, selectedNode et title). Cependant, il est parfois plus simple de retarder la définition de certaines propriétés jusqu'à ce que tous les autres comportements de serveur aient trouvé des instances d'eux-mêmes. Par exemple, le comportement Déplacer vers l'enregistrement suivant possède deux participants : un objet lien et un objet jeu d'enregistrements. Au lieu de trouver l'objet jeu d'enregistrements dans sa fonction findServerBehaviors(), il est plus facile d'attendre l'exécution de cette fonction, étant donné que le jeu d'enregistrements va trouver toutes les instances de lui-même. Lorsque la fonction analyzeServerBehavior() du comportement Déplacer vers l'enregistrement suivant est appelée, une table contenant tous les comportements de serveur du document lui est transmise. La fonction peut consulter la table pour trouver son objet de jeu d'enregistrements, puis ajouter ce dernier à la table de son participant. Il arrive, au cours de l'analyse, qu'une balise unique contenue dans le document de l'utilisateur soit identifiée par deux ou plusieurs comportements comme étant une instance de ces comportements. Par exemple, la fonction findServerBehaviors() pour le comportement Attribut dynamique peut détecter une instance du comportement Attribut dynamique associée à une balise <input> dans le document de l'utilisateur. Simultanément, la fonction findServerBehaviors() pour le comportement Champ de texte dynamique peut avoir examiné la même balise <input> et détecté une instance du comportement Champ de texte dynamique. Si rien n'est fait pour remédier à ce problème, l'inspecteur de comportements de serveur répertorie à la fois les comportements Attribut dynamique et Champ de texte dynamique, c'est-à-dire que deux comportements sont répertoriés pour la même balise dans le document utilisateur. Pour corriger ce problème, les fonctions analyzeServerBehavior() doivent supprimer tous ces comportements de serveur redondants, à l'exception d'un seul. Pour supprimer un comportement de serveur, une fonction analyzeServerBehavior() peut définir la propriété deleted d'un comportement de serveur comme true. Si la propriété deleted est toujours true lorsqu'UltraDev a fini d'appeler les fonctions analyzeServerBehavior(), le comportement est supprimé de la liste. 336 Chapitre 20 000ExtendingDWU.book Page 337 Thursday, June 8, 2000 3:38 PM Lorsque l'utilisateur clique sur le bouton plus (+) de l'inspecteur de comportements de serveur, le menu contextuel s'affiche. Pour déterminer le contenu du menu, UltraDev commence par rechercher un fichier ServerBehaviors.xml dans le même répertoire que celui des comportements (par exemple, \Configuration\ServerBehaviors\ASP). Le fichier ServerBehaviors.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. Par exemple, si le fichier ServerBehaviors\ASP\GetRecords.htm contient la balise <title>Obtenir plus d'enregistrements</title>, le texte Obtenir plus d'enregistrements s'affichera dans le menu. Dans le cas contraire, c'est le nom du fichier qui s'affiche. Par exemple, si le fichier ServerBehaviors\ASP\GetRecords.htm ne contenait pas de balise de titre, GetRecords apparaîtrait dans le menu. Si le dossier contient des sous-répertoires, les fichiers de ces derniers sont ajoutés au menu sous forme de sous-menus. 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 apparaisse dans le menu, ajoutez l'instruction suivante de manière à ce qu'elle devienne la première ligne du fichier HTML : <!-- MENU-LOCATION=NONE --> La fonction canApplyServerBehavior() est appelée lorsque l'utilisateur sélectionne un élément dans le menu. Si cette fonction renvoie la valeur true, la boîte de dialogue s'affiche. Lorsque l'utilisateur clique sur OK, la fonction applyServerBehavior() est appelée. Si l'utilisateur modifie un comportement de serveur existant en double- cliquant dessus, UltraDev affiche la boîte de dialogue Paramètres, soumet la balise « body » au gestionnaire onLoad, puis appelle la fonction inspectServerBehavior() pour rechercher les comportements existants en cours de modification. La fonction inspectServerBehavior() renseigne les éléments du formulaire avec les valeurs des paramètres courants. Lorsque l'utilisateur clique sur OK, UltraDev appelle à nouveau la fonction applyServerBehavior(). Si l'utilisateur clique sur le bouton moins (-), UltraDev appelle la fonction deleteServerBehavior(), qui supprime les comportements correspondants du document. Comportements de serveur 337 000ExtendingDWU.book Page 338 Thursday, June 8, 2000 3:38 PM Lorsque l'utilisateur sélectionne un comportement de serveur et appuie sur Ctrl+C (ou Ctrl+X), UltraDev transmet l'objet de comportement représentant le comportement de serveur à sa fonction copyServerBehavior(). Cette fonction ajoute à l'objet de comportement toutes 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 Presse-papiers. Pendant la conversion de l'objet, UltraDev supprime toutes les propriétés constituant des pointeurs vers des objets ; toute propriété de l'objet autre qu'un nombre, une valeur booléenne ou une chaîne est perdue. Lorsque l'utilisateur colle le comportement de serveur à l'aide de la combinaison de touches Ctrl+V, 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 à la fonction pasteServerBehavior(), qui ajoute le comportement au document de l'utilisateur. Une fois la fonction pasteServerBehavior() renvoyée, UltraDev appelle la fonction findServerBehaviors() pour obtenir une nouvelle liste de tous les comportements de serveur présents dans le document de l'utilisateur. Les utilisateurs peuvent copier et coller des comportements d'un document à un autre. En fait, il est possible de copier et coller des comportements d'une session à l'autre, c'est-à-dire qu'un utilisateur peut 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 analyzeServerBehavior() Disponibilité Description Dreamweaver UltraDev 1.0 Permet aux comportements de serveur de définir leurs indicateurs incomplete et deleted. Une fois que la fonction findServerBehaviors() a été appelée pour chaque comportement de serveur de la page, le document de l'utilisateur contient une table de tous les comportements. La fonction analyzeServerBehavior() est appelée pour chaque objet JavaScript contenu dans cette table. Par exemple, pour un comportement Texte dynamique, UltraDev appelle la fonction analyzeServerBehavior() dans DynamicText.htm (ou DynamicText.js). 338 Chapitre 20 000ExtendingDWU.book Page 339 Thursday, June 8, 2000 3:38 PM L'un des rôles de la fonction analyzeServerBehavior() est 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'effectuer cette tâche une fois que la fonction findServerBehaviors() a généré la liste complète des comportements de serveur dans le document de l'utilisateur). L'autre but de la fonction analyzeServerBehavior() est de remarquer lorsque deux ou plusieurs comportements se rapportent à la même balise dans le document de l'utilisateur. Dans ce cas, la propriété deleted est utilisée pour supprimer tous les comportements de la table, à l'exception d'un seul. Voici un exemple de la manière dont analyzeServerBehavior() fonctionne : Supposons qu'il y ait trois comportements de serveur sur une page : Recordset1, DynamicText1 et DynamicText2. Il faut que Recordset1 existe sur la page pour les deux comportements de serveur DynamicText pour qu’ils soient considérés comme terminés. Une fois que tous les comportements de serveur ont été trouvés avec findServerBehaviors(), la fonction analyzeServerBehavior() est appelée pour ces trois comportements. Lorsque la fonction analyzeServerBehavior() est appelée pour DynamicText1, elle recherche, dans la table de tous les objets de comportement de serveur, celui qui appartient à Recordset1. Si elle ne trouve pas l'objet JavaScript de comportement de serveur appartenant à Recordset1, la propriété incomplete est définie comme true afin qu'un point d'exclamation soit affiché dans l'inspecteur des comportements de serveur, signalant ainsi un problème à l'utilisateur. De même, lorsque la fonction analyzeServerBehavior() est appelée pour DynamicText2, elle recherche l'objet JavaScript appartenant à Recordset1. Recordset1 ne dépendant pas des autres comportements 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. [behaviorArray] est une table d'objets JavaScript représentant l'ensemble des comportements de serveur trouvés sur une page. Renvoie Rien n'est renvoyé. applyServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Lit les valeurs des éléments de formulaire dans la boîte de dialogue Paramètres et ajoute le comportement au document de l'utilisateur. UltraDev appelle cette fonction lorsque l'utilisateur clique sur OK dans la boîte de dialogue Paramètres. Si cette fonction est renvoyée correctement, la boîte de dialogue Paramètres est fermée. Si cette fonction échoue, elle affiche le message d'erreur sans fermer la boîte de dialogue Paramètres. Cette fonction peut modifier un document de l'utilisateur. Arguments behavior | null Comportements de serveur 339 000ExtendingDWU.book Page 340 Thursday, June 8, 2000 3:38 PM behavior est un objet JavaScript représentant le comportement, transmis si un comportement existant est modifié. null est transmis si un nouveau comportement est ajouté. Renvoie Une chaîne vide en cas de succès. Si cette fonction échoue, elle affiche le message d'erreur sans fermer la boîte de dialogue Paramètres. canApplyServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Parcourt le document de l'utilisateur afin de déterminer si un comportement peut être appliqué ou non. 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 | null behavior est un objet JavaScript représentant le comportement, transmis si un comportement existant est modifié. null est transmis si un nouveau comportement est ajouté. Renvoie true est renvoyé si le format peut être appliqué, sinon false. copyServerBehavior() Disponibilité Description Dreamweaver UltraDev 1.0 Lorsqu'elle est mise en œuvre, cette fonction permet aux utilisateurs de copier des instances du comportement de serveur spécifié. Elle est mise en œuvre pour les jeux d'enregistrements, par exemple. Si un utilisateur sélectionne un jeu d'enregistrements dans l'inspecteur de comportements de serveur ou dans l'inspecteur de liaisons de données, la combinaison des touches Ctrl+C copie le comportement dans le Presse-papiers ; Ctrl+X le coupe. Ctrl+C et Ctrl+X n'ont aucun effet pour les comportements de serveur qui n'implémentent pas cette fonction. L'utilisation de copyServerBehavior() n'est pas obligatoire. Pour plus d'informations, voir « Comment appeler les fonctions API de comportement de serveur » à la page 335. La fonction copyServerBehavior() ne doit reposer que sur des propriétés d'objet de comportement qui peuvent être converties en chaînes pour échanger des informations avec la fonction pasteServerBehavior(). Le Presse-papiers ne stockant que du texte brut, les nœuds participant dans le document doivent être résolus et le texte brut résultant doit être enregistré en propriété secondaire. Arguments behavior behavior 340 Chapitre 20 est un objet JavaScript représentant le comportement. 000ExtendingDWU.book Page 341 Thursday, June 8, 2000 3:38 PM Renvoie true si le comportement a été copié avec succès dans le Presse-papiers, sinon false. deleteServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Cette fonction supprime le comportement du document de l'utilisateur. Elle est appelée lorsque l'on clique sur le bouton moins (-) de l'inspecteur de comportements de serveur et permet de modifier un document de l'utilisateur. Arguments behavior behavior Renvoie est un objet JavaScript représentant le comportement. Une chaîne vide en cas de succès. En cas d'échec, la fonction renvoie une chaîne d'erreur, qui s'affiche dans une boîte de dialogue d'erreur. findServerBehaviors() Disponibilité Dreamweaver UltraDev 1.0 Description Cette fonction parcourt le document de l'utilisateur à la recherche d'instances d'elle-même. Pour chaque instance 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é. Voir la section « Fonctionnement des traducteurs de données » à la page 298 pour plus d'informations sur les traducteurs de données. Arguments Aucun. Renvoie Une table d'objets JavaScript ; la longueur de la table équivaut au nombre d'instances du comportement trouvées dans la page. inspectServerBehavior() Disponibilité Dreamweaver UltraDev 1.0 Description Détermine les réglages 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 et 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). behavior Renvoie Rien n'est renvoyé. Comportements de serveur 341 000ExtendingDWU.book Page 342 Thursday, June 8, 2000 3:38 PM pasteServerBehavior() Disponibilité Description Dreamweaver UltraDev 1.0 Lorsqu'elle est mise en œuvre, cette fonction permet aux utilisateurs de coller des instances du comportement de serveur spécifié. Elle est utilisée avec copyServerBehavior(). Lorsque l'utilisateur colle le comportement de serveur en appuyant sur les touches Ctrl+V, 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() repose sur les propriétés de l'objet de comportement pour déterminer ce qu'il convient d'ajouter au document de l'utilisateur. La fonction pasteServerBehavior() ajoute alors le comportement au document de l'utilisateur. Une fois la fonction pasteServerBehavior() renvoyée, UltraDev appelle les fonctions findServerBehaviors() pour obtenir une nouvelle liste des comportements de serveur présents dans le document de l'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 » à la page 335. Arguments behavior behavior Renvoie true est un objet JavaScript représentant le comportement. si le comportement a été collé avec succès depuis le Presse-papiers, sinon false. Exemple de comportement de serveur L'exemple de code de comportement de serveur ci-dessous permet d'insérer dans la page de l'utilisateur un comportement redirigeant celle-ci vers une URL définie par l'utilisateur si le jeu d'enregistrements choisi est vide. Cet exemple met en œuvre la plupart des fonctions de comportement de serveur. Des commentaires ont été insérés dans l'exemple, entre les lignes de code. L'exemple est suivi du code 342 Chapitre 20 000ExtendingDWU.book Page 343 Thursday, June 8, 2000 3:38 PM HTML composant le fichier HTML devant être joint au fichier JavaScript. // Copyright 2000 Macromedia, Inc. All rights reserved. // This server behavior inserts a behavior on a user's page, which at // runtime redirects to a different page if a recordset is // empty. The user interface for this behavior allows the user to // select the recordset to check and enter the redirect URL. //*************** GLOBALS VARS ***************** // Global user interface control variables. // These are initialized in the initializeUI() function below. var LIST_RS; var TEXT_URL; // This variable is used to set the type of the node in the SSRecord. // The type information stored within the SSRecord allows other server // scripts to identify the scripts on the page. // (See the buildSSRecord() function (below) for more information.) var PROP_TYPE = "redirectIfEmptyRecordset"; // The following variables define the code for this behavior and define how // to insert and detect that code. These variables are referenced in // this example using the getServerData() function. // The getServerData() function, located in the file // Configuration/Shared/UltraDev/Scripts/ssDocManager.js, returns // the value of a global variable based on the currently selected // server model. This is useful for creating server behaviors // that operate within multiple server models. If this is not // necessary for your code, you can use the global variables directly // in place of the function call. getServerData() will return a global // variable of the form: <varType>_<serverModel><id>. // For example, when the server model is set to ASP and JavaScript, // a call like: getServerData("patt","Code"), would return the // value of the global variable: PATT_AspJsCode. Please see the // function definition in the ssDocManager.js file for more information. // Define the code that should be inserted for this behavior. This is // referred to as a mask, because it can contain tokens that need to be // replaced before the code is inserted onto the page. In this example, // tokens are delimited by '##' on either side of the token name. We have // defined masks for both ASP/JavaScript and ASP/VBscript. var MASK_AspJsCode = '<% if (##rs##.EOF) Response.Redirect("##url##"); %>'; Comportements de serveur 343 000ExtendingDWU.book Page 344 Thursday, June 8, 2000 3:38 PM var MASK_AspVbCode = '<% If (##rs##.EOF) Then Response.Redirect("##url##"); %>'; // Define the patterns that will be used to identify code which belong // to this server behavior on the page. These strings will become JavaScript // regular expressions, which allow for a wide array of pattern matching // options. Please refer to a JavaScript book, for more information // on the use of JavaScript regular expressions. var PATT_AspJsCode = '<%\\s*if\\s*\\((.*)\\.EOF\\)\\s*Response\\.Redirect\\(\\"(.*)\\"\\);\\s*%>'; var PATT_AspVbCode = '<%\\s*If\\s*\\((.*)\\.EOF\\)\\s*Then\\s*Response\\.Redirect\\(\\"(.*)\\"\\);\\s*%>'; // Define the weight of the inserted code. This is used by the SSEdits class // to determine where on the page to insert the code block. Weights can be of // three different types. The first type is selection relative, which consists // of the following values: "beforeSelection", "afterSelection", or // "replaceSelection". The second type is node relative, which consists of the // following values: "beforeNode", "afterNode", or "replaceNode". The final // type is for code inserted above the opening <HTML> tag. This code is ordered // numerically from 0 to 99. The recordset has a weight of 50, therefore // giving this script has a weight of 51, places it just after the recordset // definition. var WGHT_AspCode = 51; //******************* API ********************** //------------------------------------------------------------------------------// Called by UltraDev before the server behavior dialog is launched to determine // if the behavior can be applied to the current page. Passed the JavaScript // object returned by the findServerBehaviors() function (below) if this is an // edited behavior. Return false if the behavior cannot be applied. // // If no recordsets are defined, alert the user, and return false to indicate // that the server behavior cannot be applied at this time. //------------------------------------------------------------------------------function canApplyServerBehavior(oldSSRec) { var retVal = true; // Call the function findAllRecordsets() to determine if any recordsets // exist on the page. This function, located in file // Configuration/Shared/UltraDev/Scripts/ssCmnElements.js, returns an // array of recordset names. if (findAllRecordsetNames().length == 0) { //if there are no recordsets alert(MSG_NoRecordsets); //alert the user of the problem retVal = false; //return false to indicate an error 344 Chapitre 20 000ExtendingDWU.book Page 345 Thursday, June 8, 2000 3:38 PM } return retVal; } //------------------------------------------------------------------------------// Called by UltraDev to identify the Server Behaviors on the current page. // Returns an array of JavaScript objects, each one represents an instance // of this server behavior on the current page. // // Creates a list of document nodes to search, and then determines if these // represent an instance of this server behavior. // Calls the function buildSSRecord(), located later in this file, to do the // work of identifying the behavior elements and building the corresponding // SSRecord object. Please refer to the buildSSRecord function for more // information on the SSRecord object. //------------------------------------------------------------------------------function findServerBehaviors() { var ssRecList = new Array(); //the array of JavaScript objects to return var dom = dw.getDocumentDOM(); //get the DOM of the current document to search var ssRec; //the object returned by buildSSRecord // Calls the function findNodes() to find the server model specific tags // on the page. This function, located in file // Configuration/Shared/UltraDev/Scripts/ssCmnElements.js, returns an // array of document nodes which represent the script blocks for the chosen // server model (for example, all the tags beginning with '<%' in ASP). var nodes = findNodes(dom); for (var i=0; i < nodes.length; i++) { //loop through the document nodes ssRec = buildSSRecord(nodes[i]); //build the record for this node if (ssRec) ssRecList.push(ssRec); //if valid, add it to the array } return ssRecList; //return the list of found behavior instances //empty means there are none on the page } //------------------------------------------------------------------------------// Called by UltraDev when the user clicks OK in the Server Behavior dialog box, // this adds the server behavior code to the page. Returns an error message if // the behavior cannot be applied. // // Gets the values from the UI elements, and checks to make sure they are // valid. If they are not valid, returns an error message, otherwise, calls // the function buildSSEdits(), located below, to create a list // of elements to insert on the page. This function returns an object of Comportements de serveur 345 000ExtendingDWU.book Page 346 Thursday, June 8, 2000 3:38 PM // type SSEdits, whose insert() method applies the list of edits to the // current page. Please refer to the buildSSEdits function for more information // on the SSEdits object. //------------------------------------------------------------------------------function applyServerBehavior(priorRec) { var retVal = ""; //the value to return var editList; //the list of page edits to make var rs = LIST_RS.getValue(); var url = TEXT_URL.value; if (url.length == 0) { retVal = MSG_NeedUrl; } //the selected recordset //the URL entered //no URL entered //sets the return value to the error message if (!retVal) { //if no error message editList = buildSSEdits(priorRec,rs,url); //creates the list of edits editList.insert(); //applies the edits to the page } return retVal; //returns empty string or an error message } //------------------------------------------------------------------------------// Called by UltraDev when the user edits an existing behavior by double // clicking in the server behavior inspector. Passed the JavaScript object // returned by the findServerBehaviors() function (above) for the edited behavior. // NOTE: This function is called after initializeUI() below. // // Displays the previously selected values for this behavior. // These values can be pulled directly from the ssRec object created by // the function buildSSRecord(). Displays an alert message if the selected // recordset no longer exists on the page. //------------------------------------------------------------------------------function inspectServerBehavior(ssRec) { // Selects the specified recordset from the recordset list, using the // pickValue() method of the ListControl class. This method returns true // if the value was found, and false if it was not. Displays an alert // if the recordset was not found. var result = LIST_RS.pickValue(ssRec.rs); if (!result) { alert(MSG_RSNotFound); } TEXT_URL.value = ssRec.url; } 346 Chapitre 20 //sets the text field to the URL value 000ExtendingDWU.book Page 347 Thursday, June 8, 2000 3:38 PM //------------------------------------------------------------------------------// Called by UltraDev when the user chooses to remove a server behavior from // the page. Passed the JavaScript object returned by the findServerBehaviors() // function (above) for the behavior to delete. Returns true if successful. // // Calls a method of the SSRecord class, which handles the work of // deleting participants. This method also ensures that only unreferenced // participants are deleted. Please refer to the buildSSRecord function for more // information on the SSRecord object. //------------------------------------------------------------------------------function deleteServerBehavior(ssRec) { ssRec.del(false); //deletes any unreferenced participants of this behavior return true; } //***************** LOCAL FUNCTIONS ****************** //------------------------------------------------------------------------------// Called by the onLoad handler of the HTML page to initialize the controls // within the dialog. // // Loads the recordset drop-down with the names of the recordsets on the page, // and gets the document object for the URL text entry field. //------------------------------------------------------------------------------function initializeUI() { // Calls the function findAllRecordsets() to get the list of recordsets // that exist on the page. This function, located in file // Configuration/Shared/UltraDev/Scripts/ssCmnElements.js, returns an // array of recordset names. var rsNames = findAllRecordsetNames(); // Creates a new list control object. This object, located in file // Configuration/Shared/MM/Scripts/Class/ListControlClass.js, was created // by Macromedia to provide an easier way to work with select lists within // Dreamweaver and UltraDev. The constructor takes the name of the select // object set in the HTML. The setAll() method sets the name and value arrays // of the select list. Please refer to the ListControlClass.js file for // more information on working with the ListControl class. LIST_RS = new ListControl("Recordset"); if (rsNames) LIST_RS.setAll(rsNames,rsNames); // Get the document object for the URL text field Comportements de serveur 347 000ExtendingDWU.book Page 348 Thursday, June 8, 2000 3:38 PM TEXT_URL = document.theForm.Redirect; } //------------------------------------------------------------------------------// Called by the findServerBehaviors() function to identify document nodes // that are the main participant for this server behavior. Passed a document // node to check for a match. Returns a JavaScript object with the relevant // information, if the given node is identified as the main participant. // If a server behavior has multiple participants, this function would need // to locate those elements and add them to the object. If this node is not // the main participant, 'null' is returned. // // Get the text of the passed node, and see if it matches the pattern defined // for this server behavior. If the pattern matches, create an SSRecord and // add the information appropriate for the found code. The SSRecord class, // located in file Configuration/Shared/UltraDev/Scripts/ssClasses.js, // is used by UltraDev to determine how to display the behaviors in the Server // Behavior inspector. //------------------------------------------------------------------------------function buildSSRecord(node) { var ssRec = null; //returned record, default is null // Get the string which represents the HTML for the passed in node. // Some tags are translated into locked nodes by UltraDev, for display // purposes. These locked nodes have an 'ORIG' attribute which we check // first to see if it exists. If it does exist, unescape the returned // value, and use that as the tag string. If the 'ORIG' attribute is empty, // get the outerHTML of the passed node, and use that as the tag string. // The stripSpaces() function, located in file // Configuration/Shared/MM/Scripts/CMN/string.js, removes any spaces from // the beginning or end of the specified string. var tagStr = node.getAttribute("ORIG"); if (tagStr) tagStr = unescape(tagStr); else tagStr = stripSpaces(node.outerHTML); // Get the pattern that will be used to detect instances of this behavior. // Please see the global variable definitions at the top of the file // for the definition of this pattern, and a description of the // getServerData() function. var pattern = getServerData("patt","Code"); // Use regular expressions to attempt to locate the pattern within // the current node. The match function returns an array of values // which include the matched expression, as well as any matched // sub-expressions. Please refer to a JavaScript book for a more // complete description of regular expressions, and their related // functions. 348 Chapitre 20 000ExtendingDWU.book Page 349 Thursday, June 8, 2000 3:38 PM var tokens = tagStr.match(RegExp(pattern,"i")); if (tokens && tokens.length > 1) { //successful match. Construct SSRecord. ssRec = new SSRecord(); //create an empty SSRecord object. // Set the type of the behavior. The type information is used by // this and other server behaviors to identify the behaviors on the // page. ssRec.type = PROP_TYPE; // Set the selected node of the behavior. This information is used // to determine what node to highlight within the document when this // behavior is selected in the Server Behavior inspector. ssRec.selectedNode = node; // Add the current node as a participant of this behavior. If this // behavior had multiple participants, they would all need to be added // to this list. This information is used by UltraDev to determine // what behaviors need notification of document edits. ssRec.participants.push(node); // Add the type of the participant to the types list. The type is // used by server behaviors which share code to locate participants // which already exist on the page. This list parallels the participants // array. ssRec.weights.push(getServerData("wght","Code")); // The pattern for this behavior was written in such a way, that the // recordset name and URL could be extracted from the list of tokens // returned by the match function. These are stored on the SSRecord // for later use within the behavior. ssRec.types.push("Code"); // Add the weight of the participant to the weights list. The weight // is used by the SSEdits class to correctly position newly inserted // items. This list parallels the participants array. // Please see the global variable definitions at the top of the file // for the definition of this weight and a description of the // getServerData() function. ssRec.rs = tokens[1]; ssRec.url = tokens[2]; // Construct a title for this behavior. This is the title that will // be displayed in the Server Behavior inspector for this behavior. // The standard for these titles is to use the simple name of the Comportements de serveur 349 000ExtendingDWU.book Page 350 Thursday, June 8, 2000 3:38 PM // behavior, followed by any unique settings enclosed in parenthesis. ssRec.title = LABEL_TitleRedirect + " (" + ssRec.rs + ", " + ssRec.url + ")"; // Set the incomplete flag for this behavior. The incomplete flag // is used by UltraDev to determine whether or not to display an // exclamation point next to the behavior in the Server Behavior // inspector. The exclamation point indicates that a piece of the // server behavior is missing or incorrectly defined. // The function recordsetNameIsValid, located in file // Configuration/Shared/Scripts/ssCmnElements.js, returns true if // a recordset with the given name exists on the page. It returns // false otherwise. ssRec.incomplete = ( ssRec.participants.length != 1 || !recordsetNameIsValid(ssRec.rs) ); } return ssRec; // return null, or the constructed SSRecord } //------------------------------------------------------------------------------// Called by the applyServerBehavior() function to build a list of the edits // which are needed to insert or update the current server behavior. If this // is updating an existing server behavior, the record for this behavior is // passed. The other parameters are server behavior specific, and are used // to construct the code which should be inserted on the page. Return a // JavaScript object, which describes the required changes. // // If the prior record does not exist or if the prior record exists and // the values have changed, adds a new edit to the SSEdits object. Replaces // any values within the inserted code with the values passed in from // the UI. The SSEdits class, located in file // Configuration/Shared/UltraDev/Scripts/ssClasses.js, represents a list // of edits that should be made to the page. This class uses the weight // and insertion type of the various participants to correctly insert // elements on the page. //------------------------------------------------------------------------------function buildSSEdits(priorRec,rs,url) { var editList = new SSEdits(); //create a new SSEdits object. // Add, replace, or leave code chunk. If no prior node exists or // if the values set in the UI for the recordset and URL differ from // the existing behavior, add an edit to the list. if (!priorRec || priorRec.rs != rs || priorRec.url != url) { // The priorNode is passed to the edit list if we are re-editing a // behavior so that the node can be replaced. If no priorNode 350 Chapitre 20 000ExtendingDWU.book Page 351 Thursday, June 8, 2000 3:38 PM // exists, we pass false. In this example, we select the first // item in our participants list as the priorNode. The participants // array was constructed in the buildSSRecord() function above. var priorNode = (priorRec) ? priorRec.participants[0] : false; // Construct the code that will be inserted onto the page. // Please see the global variable definitions at the top of the file // for the definition of this mask, and a description of the // getServerData() function. var chunk = getServerData("mask","Code"); // The masks defined for this server behavior contain tokens which // need to be replaced. The JavaScript replace method is used to // replace the recordset and URL tokens with the values passed in // from the UI. chunk = chunk.replace(/##rs##/g,rs); chunk = chunk.replace(/##url##/g,url); // Get the weight of this element. The weight is used by the // SSEdits class to correctly position newly inserted items. // Please see the global variable definitions at the top of the file // for the definition of this weight and a description of the // getServerData() function. var weight = getServerData("wght","Code"); // Add the constructed item to the edit list. editList.add(chunk,priorNode,weight); } return editList; //return the list of edits } Comportements de serveur 351 000ExtendingDWU.book Page 352 Thursday, June 8, 2000 3:38 PM The following HTML file should be included in the same folder as the JavaScript file for the example to work properly: <!-- search:"Response.Redirect" --> <HTML> <HEAD> <SCRIPT SRC="Redirect if Empty Recordset.js"></SCRIPT> <!-- Standard UltraDev Server Behavior includes --> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssClasses.js"></SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssDocManager.js"></SCRIPT> <SCRIPT SRC="../../Shared/UltraDev/Scripts/ssCmnElements.js"></SCRIPT> <!-- included for use of the ListControl class --> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/UI.js"></SCRIPT> <SCRIPT SRC="../../Shared/MM/Scripts/Class/ListControlClass.js"></SCRIPT> <!-- included for the browseFile() function, used below --> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/file.js"></SCRIPT> <!-- included for the stripSpaces() function --> <SCRIPT SRC="../../Shared/MM/Scripts/CMN/string.js"></SCRIPT> <SCRIPT> //--------------- LOCALIZEABLE GLOBALS --------------var LABEL_TitleRedirect = "Redirect If Empty Recordset"; var MSG_NoRecordsets = "Before using this Server Script, please create a Recordset.\n"; var MSG_RSNotFound = "The original recordset specified in this script was not found."; var MSG_NeedUrl = "Please enter a URL."; //--------------- END LOCALIZEABLE --------------</SCRIPT> <TITLE>Redirect If Empty Recordset</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html"> </HEAD> <BODY onLoad="initializeUI()"> <FORM NAME="theForm" ACTION=""> <DIV ALIGN="center"> <TABLE BORDER=0> <TR> <TD ALIGN="right" VALIGN="baseline" NOWRAP> Recordset:</TD> <TD VALIGN="baseline" NOWRAP> <SELECT NAME="Recordset" 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="Redirect" STYLE="width:230px"> 352 Chapitre 20 000ExtendingDWU.book Page 353 Thursday, June 8, 2000 3:38 PM <INPUT TYPE="BUTTON" VALUE="Browse..." onClick="browseFile(document.theForm.Redirect)"> </TD> </TR> </TABLE> </DIV> </FORM> </BODY> </HTML> Comportements de serveur 353 000ExtendingDWU.book Page 354 Thursday, June 8, 2000 3:38 PM 354 Chapitre 20 000ExtendingDWU.book Page 355 Thursday, June 8, 2000 3:38 PM INDEX A activateurs utilisation 40 valeur renvoyée 177 addBehavior() 42 dreamweaver.timelineInspector.addBehavior() 150 addDynamicSource() 322 addFrame() 150 addKeyframe() 151 addLinkToExistingFile() 128 addLinkToNewFile() 128 addObject() 151 addTimeline() 151 alert() 25 align() 105 analyzeServerBehavior() 338 applyBehavior() 286 applyCharacterMarkup() 77 applyCSSStyle() 55 applyFontMarkup() 77 applyFormat() 329 applyFormatDefinition() 329 applyHTMLStyle() 98 applyServerBehavior() 339 applyTemplate() 108 appName, propriété 29 appVersion, propriété 29 arguments facultatifs 41 receiveArguments() 262 transmis depuis menuitem 259 arrange() 106 arrangeFloatingPalettes() 168 array, objet 25 arrowDown() 100 arrowLeft() 100 arrowRight() 100 arrowUp() 101 attributes, propriété 31 attributs traduits individuel 302 inspection 306 multiple 303 recherche dans les balises 31 B backspaceKey() 101 balises traduites, inspection 313 bases de données commande d’arborescence 34 behaviorFunction() 287 blur() 25 body, propriété 30 boolean, objet 25 bringDWToFront() 213 bringFWToFront() 213 browseDocument() 60 browseForFileURL() 64 browseForFolderURL() 64 button, objet 25 C canAcceptBehavior() 288 canAcceptCommand() dans les commandes de menu 261 dans les commandes ordinaires 255 canAddFrame() 189 canAddKeyFrame() 189 canAddLinkToFile() 190 canAlign() 177 canApplyServerBehavior() 340 canArrange() 178 canChangeLink() 191 canChangeObject() 189 canCheckIn() 191 canCheckOut() 191 canClipCopy() 184 canClipCopyText() 178 canClipCut() 184 canClipPaste() dom.canClipPaste() 178 dreamweaver.canClipPaste 185 canClipPasteText() 179 canConnect() 192 canConvertLayersToTable() 179 Index 355 000ExtendingDWU.book Page 356 Thursday, June 8, 2000 3:38 PM canConvertTablesToLayers() 179 canDecreaseColspan() 179 canDecreaseRowspan() 179 canDeleteTableColumn() 180 canDeleteTableRow() 180 canEditNoFramesContent() 180 canEditSelection() 189 canExportCSS() 185 canFindLinkSource() 192 canFindNext() 185 canGet() 192 canIncreaseColspan() 180 canIncreaseRowspan() 181 canInsertTableColumns() 181 canInsertTableRows() 181 canInspectSelection() 271 canLocateInSite() 192 canMakeEditable() 193 canMakeNewEditableRegion() 181 canMakeNewFileOrFolder() 193 canMarkSelectionAsEditable() 182 canMergeTableCells() 182 canOpen() 193 canOpenInFrame() 186 canPlayPlugin() 182 canPlayRecordedCommand() 186 canPut() 193 canRecreateCache() 194 canRedo() dom.canRedo() 182 dreamweaver.canRedo() 186 canRefresh() 194 canRemoveEditableRegion() 182 canRemoveFrame() 190 canRemoveKeyFrame() 190 canRemoveLink() 194 canRemoveObject() 190 canRevertDocument() 186 canSaveAll() 187 canSaveDocument() 187 canSaveDocumentAsTemplate() 187 canSaveFrameset() 187 canSaveFramesetAs() 188 canSelectAll() 188 canSelectNewer() 195 canSelectTable() 183 canSetLayout() 194 356 Index canSetLinkHref() 183 canShowFindDialog() 188 canShowListPropertiesDialog() 183 canSplitFrame() 183 canSplitTableCell() 183 canStopPlugin() 184 canSynchronize() 195 canUndo() dom.canUndo() 184 dreamweaver.canUndo() 188 canUndoCheckOut() 195 canViewAsRoot() 196 changeLink() 129 changeLinkSitewide() 129 changeObject() 151 checkbox, objet 25 checkIn() 129 checkLinks() 130 checkOut() 130 checkSpelling() 90 checkTargetBrowsers() dom.checkTargetBrowsers() 90 site.checkTargetBrowsers() 130 childNodes, propriété objets comment 33 objets document 30 objets tag 31 objets text 33 clearInterval() 25 clearSteps() 94 clearTemp() 220 clearTimeout() 25 clipCopy() dom.clipCopy() 50 dreamweaver.clipCopy() 52 clipCopyText() 50 clipCut() dom.clipCut() 50 dreamweaver.clipCut() 53 clipPaste() dom.clipPasteText() 51 dreamweaver.clipPaste() 53 clipPasteText() 52 close() MMNotes.close() 204 window.close() 25 closeDocument() 65 000ExtendingDWU.book Page 357 Thursday, June 8, 2000 3:38 PM CloseNotesFile() 208 codes d'état 219 colonnes 227 extraction à partir des procédures stockées 230, 231 commandButtons() dans les commandes de menu 261 dans les commandes ordinaires 255 commandes ajout aux menus 258 API 254 exemple de code 256 expérience de l'utilisateur 253 commandes d’arborescence 34 commandes de démarrage 37 commandes de fermeture 37 commandes de grille variable 35 commandes de menu API 261 exemple de code 264 expérience de l'utilisateur 259 comment, objet 33 comportements API 286 exemple de code 293 expérience de l'utilisateur 284 fonctions d'aide 285 fonctions obligatoires 286 insertion de plusieurs fonctions 285 confirm() 25 connexions 229, 230 extraction d’une liste 228 noms 226 constantes de nœuds 29 contenu verrouillé, inspection 313 convertLayersToTable() 54 convertTablesToLayers() 55 convertTo30() 55 convertWidthsToPercent() 145 convertWidthsToPixels() 145 copy() 198 copyServerBehavior() 340 copySteps() 94 createDocument() 65 createFolder() 198 D data, propriété des objets comment 33 des objets httpReply 219 objets text 33 date, objet 25 decreaseColspan() 145 decreaseRowspan() 146 defineSites() 131 deleteBehavior() 289 deleteDynamicSource() 322 deleteFormat() 330 deleteKey() 102 deleteSelectedItem() 112 deleteSelectedStyle() dreamweaver.cssStylePalette.deleteSelectedStyle() 56 dreamweaver.htmlStylePalette.deleteSelectedStyle() 98 dw.htmlStylePalette.deleteSelectedStyle() 98 deleteSelectedTemplate() 113 deleteSelection() dom.deleteSelection() 77 dreamweaver.deleteSelection() 86 site.deleteSelection() 131 deleteServerBehavior() 341 deleteTableColumn() 146 deleteTableRow() 146 Design Notes API C 207 API JavaScript 204 expérience de l'utilisateur 203 structure de fichiers 203 detachFromLibrary() 108 detachFromTemplate() 108 displayHelp() dans les actions de comportement 289 dans les fichiers d'inspecteur de propriétés 272 dans les fichiers d'objet 250 document, objet DOM de Netscape, propriétés et méthodes 25 DOM Niveau 1, propriétés et méthodes 30 documentEdited() 277 documentElement, propriété 30 doDeferredTableUpdate() 146 DOM dans Dreamweaver 25 Index 357 000ExtendingDWU.book Page 358 Thursday, June 8, 2000 3:38 PM dom, objet 40 Spécification DOM Niveau 1 25 dom.addBehavior() 42 dom.align() 105 dom.applyCharacterMarkup() 77 dom.applyCSSStyle() 55 dom.applyFontMarkup() 77 dom.applyHTMLStyle() 98 dom.applyTemplate() 108 dom.arrange() 106 dom.arrowDown() 100 dom.arrowLeft() 100 dom.arrowRight() 100 dom.arrowUp() 101 dom.backspaceKey() 101 dom.canAlign() 177 dom.canArrange() 178 dom.canClipCopyText() 178 dom.canClipPaste() 178 dom.canClipPasteText() 179 dom.canConvertLayersToTable() 179 dom.canConvertTablesToLayers() 179 dom.canDecreaseColspan() 179 dom.canDecreaseRowspan() 179 dom.canDeleteTableColumn() 180 dom.canDeleteTableRow() 180 dom.canEditNoFramesContent() 180 dom.canIncreaseColspan() 180 dom.canIncreaseRowspan() 181 dom.canInsertTableColumns() 181 dom.canInsertTableRows() 181 dom.canMakeNewEditableRegion() 181 dom.canMarkSelectionAsEditable() 182 dom.canMergeTableCells() 182 dom.canPlayPlugin() 182 dom.canRedo() 182 dom.canRemoveEditableRegion() 182 dom.canSelectTable() 183 dom.canSetLinkHref() 183 dom.canShowListPropertiesDialog() 183 dom.canSplitFrame() 183 dom.canSplitTableCell() 183 dom.canStopPlugin() 184 dom.canUndo() 184 dom.checkSpelling() 90 dom.checkTargetBrowsers() 90 dom.clipCopy 50 358 Index dom.clipCopyText() 50 dom.clipCut() 50 dom.clipPaste 51 dom.clipPasteText() 52 dom.convertLayersToTable() 54 dom.convertTablesToLayers() 55 dom.convertTo30() 55 dom.convertWidthsToPercent() 145 dom.convertWidthsToPixels() 145 dom.decreaseColspan() 145 dom.decreaseRowspan() 146 dom.deleteKey() 102 dom.deleteSelection() 77 dom.deleteTableColumn() 146 dom.deleteTableRow() 146 dom.detachFromLibrary() 108 dom.detachFromTemplate() 108 dom.doDeferredTableUpdate() 146 dom.editAttribute() 78 dom.endOfDocument() 102 dom.endOfLine() 102 dom.exitBlock() 78 dom.getAttachedTemplate() 109 dom.getBehavior() 42 dom.getEditableRegionList() 109, 110 dom.getEditNoFramesContent() 155 dom.getFocus() 169 dom.getFontMarkup() 78 dom.getFrameNames() 76 dom.getIsLibraryDocument() 109 dom.getIsTemplateDocument() 109 dom.getLinkHref() 78 dom.getLinkTarget() 79 dom.getListTag() 79 dom.getPreventLayerOverlaps() 155 dom.getRulerOrigin() 165 dom.getRulerUnits() 165 dom.getSelectedEditableRegion() 110 dom.getSelectedNode() 122 dom.getSelection() 122 dom.getShowFrameBorders() 155 dom.getShowGrid() 155 dom.getShowHeadView() 155 dom.getShowImageMaps() 156 dom.getShowLayerBorders() 156 dom.getShowRulers() 156 dom.getShowTableBorders() 156 000ExtendingDWU.book Page 359 Thursday, June 8, 2000 3:38 PM dom.getShowTracingImage() 157 dom.getSnapToGrid() 157 dom.getTableExtent() 146 dom.getTextAlignment() 79 dom.getTextFormat() 80 dom.getTracingImageOpacity() 166 dom.getWindowTitle() 169 dom.hasCharacterMarkup() 80 dom.hasTracingImage() 184 dom.increaseColspan() 147 dom.increaseRowspan() 147 dom.indent() 80 dom.insertHTML() 80 dom.insertLibraryItem() 110 dom.insertObject() 81 dom.insertTableColumns() 147 dom.insertTableRows() 147 dom.insertText() 81 dom.loadTracingImage() 166 dom.makeSizesEqual() 106 dom.markSelectionAsEditable() 110 dom.mergeTableCells() 148 dom.moveSelectionBy() 106 dom.newBlock() 82 dom.newEditableRegion() 110 dom.nextParagraph() 103 dom.nextWord() 103 dom.nodeToOffsets() 123 dom.offsetsToNode() 123 dom.outdent() 82 dom.pageDown() 103 dom.pageUp() 104 dom.playAllPlugins() 166 dom.playPlugin() 166 dom.previousParagraph() 104 dom.previousWord() 104 dom.reapplyBehaviors() 43 dom.redo() 91 dom.removeAllTableHeights() 148 dom.removeAllTableWidths() 148 dom.removeBehavior() 43 dom.removeCharacterMarkup() 83 dom.removeCSSStyle() 56 dom.removeEditableRegion() 111 dom.removeFontMarkup() 83 dom.removeLink() 83 dom.resizeSelection() 84 dom.resizeSelectionBy() 106 dom.runTranslator() 163 dom.selectAll() 124 dom.selectChild() 120 dom.selectParent() 120 dom.selectTable() 124 dom.serverModel.getServerLanguage() 127 dom.serverModel.getServerName() 127 dom.serverModel.getServerVersion() 128 dom.setAttributeWithErrorChecking() 84 dom.setEditNoFramesContent() 157 dom.setLayerTag() 107 dom.setLinkHref() 84 dom.setLinkTarget() 84 dom.setListBoxKind() 85 dom.setListTag() 85 dom.setPreventLayerOverlaps() 158 dom.setRulerOrigin() 166 dom.setRulerUnits() 167 dom.setSelectedNode() 124 dom.setSelection() 125 dom.setShowFrameBorders() 158 dom.setShowGrid() 158 dom.setShowHeadView() 158 dom.setShowImageMaps() 159 dom.setShowLayerBorders() 159 dom.setShowRulers() 159 dom.setShowTableBorders() 159 dom.setShowTracingImage() 159 dom.setSnapToGrid() 160 dom.setTableCellTag() 148 dom.setTableColumns() 149 dom.setTableRows() 149 dom.setTextAlignment() 86 dom.setTextFieldKind() 86 dom.setTracingImageOpacity() 167 dom.setTracingImagePosition() 167 dom.showFontColorDialog() 86 dom.showInsertTableRowsOrColumnsDialog() 149 dom.showListPropertiesDialog() 85 dom.showPagePropertiesDialog() 90 dom.snapTracingImageToSelection() 168 dom.splitFrame() 76 dom.splitTableCell() 150 dom.startOfDocument() 105 dom.startOfLine() 105 dom.stopAllPlugins() 168 Index 359 000ExtendingDWU.book Page 360 Thursday, June 8, 2000 3:38 PM dom.stopPlugin() 168 dom.stripTag() 121 dom.undo() 92 dom.updateCurrentPage() 111 dom.wrapTag() 121 Données dynamiques, Boîte de dialogue 319 dreamweaver, objet méthodes 40 propriétés 29 dreamweaver.arrangeFloatingPalettes() 168 dreamweaver.behaviorInspector, objet 42 dreamweaver.behaviorInspector.getBehaviorAt() 46 dreamweaver.behaviorInspector.getBehaviorCount() 47 dreamweaver.behaviorInspector.getSelectedBehavior() 47 dreamweaver.behaviorInspector.moveBehaviorDown() 48 dreamweaver.behaviorInspector.moveBehaviorUp() 48 dreamweaver.behaviorInspector.setSelectedBehavior() 49 dreamweaver.browseDocument() 60 dreamweaver.browseForFileURL() 64 dreamweaver.browseForFolderURL() 64 dreamweaver.canClipCopy() 184 dreamweaver.canClipCut() 184 dreamweaver.canClipPaste() 185 dreamweaver.canExportCSS() 185 dreamweaver.canFindNext() 185 dreamweaver.canOpenInFrame() 186 dreamweaver.canPlayRecordedCommand() 186 dreamweaver.canRedo() 186 dreamweaver.canRevertDocument() 186 dreamweaver.canSaveAll() 187 dreamweaver.canSaveDocument() 187 dreamweaver.canSaveDocumentAsTemplate() 187 dreamweaver.canSaveFrameset() 187 dreamweaver.canSaveFramesetAs() 188 dreamweaver.canSelectAll() 188 dreamweaver.canShowFindDialog() 188 dreamweaver.canUndo() 188 dreamweaver.clipCopy() 52 dreamweaver.clipCut() 53 dreamweaver.clipPaste() 53 dreamweaver.closeDocument() 65 dreamweaver.createDocument() 65 dreamweaver.cssStylePalette, objet 55, 108 dreamweaver.cssStylePalette.deleteSelectedStyle() 56 360 Index dreamweaver.cssStylePalette.duplicateSelectedStyle() 57 dreamweaver.cssStylePalette.editSelectedStyle() 57 dreamweaver.cssStylePalette.editStyleSheet() 57 dreamweaver.cssStylePalette.getSelectedStyle() 57 dreamweaver.cssStylePalette.getSelectedTarget() 58 dreamweaver.cssStylePalette.getStyles() 59 dreamweaver.cssStylePalette.newStyle() 59 dreamweaver.deleteSelection() 86 dreamweaver.editCommandList() 53 dreamweaver.editFontList() 87 dreamweaver.editLockedRegions() 164 dreamweaver.exportCSS() 65 dreamweaver.exportEditableRegionsAsXML() 65 dreamweaver.findNext() 71 dreamweaver.getActiveWindow() 170 dreamweaver.getBehaviorElement() 43 dreamweaver.getBehaviorEvent() 173 dreamweaver.getBehaviorTag() 45 dreamweaver.getBrowserList() 61 dreamweaver.getClipboardText() 53 dreamweaver.getConfigurationPath() 118 dreamweaver.getDocumentDOM() 41 dreamweaver.getDocumentList() 170 dreamweaver.getDocumentPath() 118 dreamweaver.getElementRef() 90 dreamweaver.getExtensionEditorList() 61 dreamweaver.getFloaterVisibility() 171 dreamweaver.getFocus() 170 dreamweaver.getFontList() 87 dreamweaver.getHideAllFloaters() 160 dreamweaver.getKeyState() 87 dreamweaver.getLiveDataInitTags() 114 dreamweaver.getLiveDataMode() 114 dreamweaver.getMenuNeedsUpdating() 117 dreamweaver.getObjectRefs() 173 dreamweaver.getObjectTags() 174 dreamweaver.getPrimaryBrowser() 61 dreamweaver.getPrimaryExtensionEditor() 62 dreamweaver.getRecentFileList() 66 dreamweaver.getRedoText() 92 dreamweaver.getSecondaryBrowser() 62 dreamweaver.getShowDialogsOnInsert() 88 dreamweaver.getShowInvisibleElements() 160 dreamweaver.getShowStatusBar() 160 dreamweaver.getSiteRoot() 119 dreamweaver.getTokens() 141 dreamweaver.getTranslatorList() 164 000ExtendingDWU.book Page 361 Thursday, June 8, 2000 3:38 PM dreamweaver.getUndoText() 92 dreamweaver.historyPalette, objet 91 dreamweaver.historyPalette.clearSteps() 94 dreamweaver.historyPalette.copySteps() 94 dreamweaver.historyPalette.getSelectedSteps() 94 dreamweaver.historyPalette.getStepCount() 95 dreamweaver.historyPalette.getStepsAsJavaScript() 95 dreamweaver.historyPalette.getUndoState() 96 dreamweaver.historyPalette.replaySteps() 96 dreamweaver.historyPalette.saveAsCommand() 97 dreamweaver.historyPalette.setSelectedSteps() 97 dreamweaver.historyPalette.setUndoState() 97 dreamweaver.htmlStylePalette,objet 98 dreamweaver.htmlStylePalette.canEditSelection() 189 dreamweaver.htmlStylePalette.deleteSelectedStyle() 98 dreamweaver.htmlStylePalette.duplicateSelectedStyle() 98 dreamweaver.htmlStylePalette.editSelectedStyle() 98 dreamweaver.htmlStylePalette.getSelectedStyle() 99 dreamweaver.htmlStylePalette.getStyles() 99 dreamweaver.htmlStylePalette.newStyle() 99 dreamweaver.htmlStylePalette.setSelectedStyle() 99 dreamweaver.importXMLIntoTemplate() 66 dreamweaver.isRecording() 188 dreamweaver.latin1ToNative() 142 dreamweaver.libraryPalette, objet 108 dreamweaver.libraryPalette.deleteSelectedItem() 112 dreamweaver.libraryPalette.getSelectedItem() 112 dreamweaver.libraryPalette.newFromDocument() 112 dreamweaver.libraryPalette.recreateFromDocument() 112 dreamweaver.libraryPalette.renameSelectedItem() 113 dreamweaver.liveDataTranslate() 115 dreamweaver.nativeToLatin1() 142 dreamweaver.newFromTemplate() 66 dreamweaver.nodeToOffsets() 176 dreamweaver.notifyMenuUpdated() 117 dreamweaver.offsetsToNode() 176 dreamweaver.openDocument() 66 dreamweaver.openDocumentFromSite() 68 dreamweaver.openInFrame() 68 dreamweaver.openWithApp() 62 dreamweaver.openWithBrowseDialog() 62 dreamweaver.openWithExternalTextEditor() 63 dreamweaver.openWithImageEditor() 63 dreamweaver.playRecordedCommand() 93 dreamweaver.popupAction() 45 dreamweaver.popupCommand() 176 dreamweaver.popupServerBehavior() 126 dreamweaver.quitApplication() 88 dreamweaver.redo() 93 dreamweaver.relativeToAbsoluteURL() 119 dreamweaver.releaseDocument() 68 dreamweaver.reloadMenus() 118 dreamweaver.replace() 72 dreamweaver.replaceAll() 72 dreamweaver.revertDocument() 69 dreamweaver.runCommand() 54 dreamweaver.saveAll() 69 dreamweaver.saveDocument() 69 dreamweaver.saveDocumentAs() 70 dreamweaver.saveDocumentAsTemplate() 70 dreamweaver.saveFrameset() 70 dreamweaver.saveFramesetAs() 71 dreamweaver.selectAll() 125 dreamweaver.serverBehaviorInspector.findAllServer Behaviors() 126 dreamweaver.serverBehaviorInspector.getServer Behaviors() 126 dreamweaver.setActiveWindow() 171 dreamweaver.setFloaterVisibility() 171 dreamweaver.setHideAllFloaters() 161 dreamweaver.setLiveDataError() 115 dreamweaver.setLiveDataMode() 116 dreamweaver.setSelection() 177 dreamweaver.setShowInvisibleElements() 161 dreamweaver.setShowStatusBar() 161 dreamweaver.setUpComplexFind() 72 dreamweaver.setUpComplexFindReplace() 73 dreamweaver.setUpFind() 74 dreamweaver.setUpFindReplace() 74 dreamweaver.showAboutBox() 88 dreamweaver.showDynamicData() 88 dreamweaver.showFindDialog() 75 dreamweaver.showFindReplaceDialog() 76 dreamweaver.showGridSettingsDialog() 169 dreamweaver.showLiveDataDialog() 116 dreamweaver.showPreferencesDialog() 89 dreamweaver.showProperties() 172 dreamweaver.showQuickTagEditor() 121 dreamweaver.startRecording() 93 dreamweaver.stopRecording() 93 dreamweaver.templatePalette.deleteSelectedTemplate() 113 Index 361 000ExtendingDWU.book Page 362 Thursday, June 8, 2000 3:38 PM dreamweaver.templatePalette.getSelectedTemplate() 113 dreamweaver.templatePalette.newBlankTemplate() 113 dreamweaver.templatePalette.renameSelectedTemplate() 114 dreamweaver.timelineInspector, objet 150 dreamweaver.timelineInspector.addBehavior() 150 dreamweaver.timelineInspector.addFrame() 150 dreamweaver.timelineInspector.addKeyframe() 151 dreamweaver.timelineInspector.addObject() 151 dreamweaver.timelineInspector.addTimeline() 151 dreamweaver.timelineInspector.canAddFrame() 189 dreamweaver.timelineInspector.canAddKeyFrame() 189 dreamweaver.timelineInspector.canChangeObject() 189 dreamweaver.timelineInspector.canRemoveFrame() 190 dreamweaver.timelineInspector.canRemoveKeyFrame() 190 dreamweaver.timelineInspector.canRemoveObject() 190 dreamweaver.timelineInspector.changeObject() 151 dreamweaver.timelineInspector.getAutoplay() 152 dreamweaver.timelineInspector.getCurrentFrame() 152 dreamweaver.timelineInspector.getLoop() 152 dreamweaver.timelineInspector.recordPathOfLayer() 152 dreamweaver.timelineInspector.removeBehavior() 152 dreamweaver.timelineInspector.removeFrame() 153 dreamweaver.timelineInspector.removeKeyframe() 153 dreamweaver.timelineInspector.removeObject() 153 dreamweaver.timelineInspector.removeTimeline() 153 dreamweaver.timelineInspector.renameTimeline() 153 dreamweaver.timelineInspector.setAutoplay() 154 dreamweaver.timelineInspector.setCurrentFrame() 154 dreamweaver.timelineInspector.setLoop() 154 dreamweaver.toggleFloater() 172 dreamweaver.undo() 94 dreamweaver.updatePages() 111 dreamweaver.useTranslatedSource() 164 duplicateSelectedStyle() dreamweaver.cssStylePalette.duplicateSelected Style() 57 dreamweaver.htmlStylePalette.duplicateSelected Style() 98 dw, objet 40 dw.arrangeFloatingPalettes() 168 362 Index dw.behaviorInspector.getBehaviorAt() 46 dw.behaviorInspector.getBehaviorCount() 47 dw.behaviorInspector.getSelectedBehavior() 47 dw.behaviorInspector.moveBehaviorDown() 48 dw.behaviorInspector.moveBehaviorUp() 48 dw.behaviorInspector.setSelectedBehavior() 49 dw.browseDocument() 60 dw.browseForFileURL() 64 dw.browseForFolderURL() 64 dw.canClipCopy() 184 dw.canClipCut() 184 dw.canClipPaste() 185 dw.canExportCSS() 185 dw.canFindNext() 185 dw.canOpenInFrame() 186 dw.canPlayRecordedCommand() 186 dw.canRedo() 186 dw.canRevertDocument() 186 dw.canSaveAll() 187 dw.canSaveDocument() 187 dw.canSaveDocumentAsTemplate() 187 dw.canSaveFrameset() 187 dw.canSaveFramesetAs() 188 dw.canSelectAll() 188 dw.canShowFindDialog() 188 dw.canUndo() 188 dw.clipCopy() 52 dw.clipCut() 53 dw.clipPaste() 53 dw.closeDocument() 65 dw.createDocument() 65 dw.cssStylePalette.deleteSelectedStyle() 56 dw.cssStylePalette.duplicateSelectedStyle() 57 dw.cssStylePalette.editSelectedStyle() 57 dw.cssStylePalette.editStyleSheet() 57 dw.cssStylePalette.getSelectedStyle() 57 dw.cssStylePalette.getSelectedTarget() 58 dw.cssStylePalette.getStyles() 59 dw.cssStylePalette.newStyle() 59 dw.deleteSelection() 86 dw.editCommandList() 53 dw.editFontList() 87 dw.editLockedRegions() 164 dw.exportCSS() 65 dw.exportEditableRegionsAsXML() 65 DWfile, DLL API 198 000ExtendingDWU.book Page 363 Thursday, June 8, 2000 3:38 PM vérification 197 DWfile.copy() 198 DWfile.createFolder() 198 DWfile.exists() 199 DWfile.getAttributes() 199 DWfile.getModificationDate() 200 DWfile.listFolder() 200 DWfile.read() 201 DWfile.remove() 201 DWfile.write() 202 dw.findNext() 71 dw.getActiveWindow() 170 dw.getBehaviorElement() 43 dw.getBehaviorTag() 45 dw.getBrowserList() 61 dw.getClipboardText() 53 dw.getConfigurationPath() 118 dw.getDocumentDOM() 41 dw.getDocumentList() 170 dw.getDocumentPath() 118 dw.getElementRef() 90 dw.getExtensionEditorList() 61 dw.getFloaterVisibility() 171 dw.getFocus() 170 dw.getFontList() 87 dw.getHideAllFloaters() 160 dw.getKeyState() 87 dw.getLiveDataInitTags() 114 dw.getLiveDataMode() 114 dw.getMenuNeedsUpdating() 117 dw.getPrimaryBrowser() 61 dw.getPrimaryExtensionEditor() 62 dw.getRecentFileList() 66 dw.getRedoText() 92 dw.getSecondaryBrowser() 62 dw.getShowDialogsOnInsert() 88 dw.getShowInvisibleElements() 160 dw.getShowStatusBar() 160 dw.getSiteRoot() 119 dw.getTokens() 141 dw.getTranslatorList() 164 dw.getUndoText() 92 dw.historyPalette.clearSteps() 94 dw.historyPalette.copySteps() 94 dw.historyPalette.getSelectedSteps() 94 dw.historyPalette.getStepCount() 95 dw.historyPalette.getStepsAsJavaScript() 95 dw.historyPalette.getUndoState() 96 dw.historyPalette.replaySteps() 96 dw.historyPalette.saveAsCommand() 97 dw.historyPalette.setSelectedSteps() 97 dw.historyPalette.setUndoState() 97 dw.htmlStylePalette.canEditSelection() 189 dw.htmlStylePalette.deleteSelectedStyle() 98 dw.htmlStylePalette.duplicateSelectedStyle() 98 dw.htmlStylePalette.editSelectedStyle() 98 dw.htmlStylePalette.getSelectedStyle() 99 dw.htmlStylePalette.getStyles() 99 dw.htmlStylePalette.newStyle() 99 dw.htmlStylePalette.setSelectedStyle() 99 dw.importXMLIntoTemplate() 66 dw.isRecording() 188 dw.latin1ToNative() 142 dw.libraryPalette.deleteSelectedItem() 112 dw.libraryPalette.getSelectedItem() 112 dw.libraryPalette.newFromDocument() 112 dw.libraryPalette.recreateFromDocument() 112 dw.libraryPalette.renameSelectedItem() 113 dw.liveDataTranslate() 115 dw.nativeToLatin1() 142 dw.newFromTemplate() 66 dw.notifyMenuUpdated() 117 dw.openDocument() 66 dw.openDocumentFromSite() 68 dw.openInFrame() 68 dw.openWithApp() 62 dw.openWithBrowseDialog() 62 dw.openWithExternalTextEditor() 63 dw.openWithImageEditor() 63 dw.playRecordedCommand() 93 dw.popupAction() 45 dw.popupServerBehavior() 126 dw.quitApplication() 88 dw.redo() 93 dw.relativeToAbsoluteURL() 119 dw.releaseDocument() 68 dw.reloadMenus() 118 dw.replace() 72 dw.replaceAll() 72 dw.revertDocument() 69 dw.runCommand() 54 dw.saveAll() 69 dw.saveDocument() 69 dw.saveDocumentAs() 70 Index 363 000ExtendingDWU.book Page 364 Thursday, June 8, 2000 3:38 PM dw.saveDocumentAsTemplate() 70 dw.saveFrameset() 70 dw.saveFramesetAs() 71 dw.selectAll() 125 dw.serverBehaviorInspector.findAllServerBehaviors() 126 dw.serverBehaviorInspector.getServerBehaviors() 126 dw.setActiveWindow() 171 dw.setFloaterVisibility() 171 dw.setHideAllFloaters() 161 dw.setLiveDataError() 115 dw.setLiveDataMode() 116 dw.setShowInvisibleElements() 161 dw.setShowStatusBar() 161 dw.setUpComplexFind() 72 dw.setUpComplexFindReplace() 73 dw.setUpFind() 74 dw.setUpFindReplace() 74 dw.showAboutBox() 88 dw.showDynamicData() 88 dw.showFindDialog() 75 dw.showFindReplaceDialog() 76 dw.showGridSettingsDialog() 169 dw.showLiveDataDialog() 116 dw.showPreferencesDialog() 89 dw.showProperties() 172 dw.showQuickTagEditor() 121 dw.startRecording() 93 dw.stopRecording() 93 dw.templatePalette.deleteSelectedTemplate() 113 dw.templatePalette.getSelectedTemplate() 113 dw.templatePalette.newBlankTemplate() 113 dw.templatePalette.renameSelectedTemplate() 114 dw.timelineInspector.addBehavior() 150 dw.timelineInspector.addFrame() 150 dw.timelineInspector.addKeyframe() 151 dw.timelineInspector.addObject() 151 dw.timelineInspector.addTimeline() 151 dw.timelineInspector.canAddFrame() 189 dw.timelineInspector.canAddKeyFrame() 189 dw.timelineInspector.canChangeObject() 189 dw.timelineInspector.canRemoveFrame() 190 dw.timelineInspector.canRemoveKeyFrame() 190 dw.timelineInspector.canRemoveObject() 190 dw.timelineInspector.changeObject() 151 dw.timelineInspector.getAutoplay() 152 dw.timelineInspector.getCurrentFrame() 152 364 Index dw.timelineInspector.getLoop() 152 dw.timelineInspector.recordPathOfLayer() 152 dw.timelineInspector.removeBehavior() 152 dw.timelineInspector.removeFrame() 153 dw.timelineInspector.removeKeyframe() 153 dw.timelineInspector.removeObject() 153 dw.timelineInspector.removeTimeline() 153 dw.timelineInspector.renameTimeline() 153 dw.timelineInspector.setAutoplay() 154 dw.timelineInspector.setCurrentFrame() 154 dw.timelineInspector.setLoop() 154 dw.toggleFloater() 172 dw.undo() 94 dw.updatePages() 111 dw.useTranslatedSource() 164 E editAttribute() 78 editCommandList() 53 editFontList() 87 editLockedRegions() 164 editSelectedStyle() dreamweaver.cssStylePalette.editSelectedStyle() 57 dreamweaver.htmlStylePalette.editSelectedStyle() 98 editStyleSheet() 57 endOfDocument() 102 endOfLine() 102 entrée/sortie de fichiers 198 escape() 25 événements dans les fichiers d'extension 25 execJsInFireworks() 214 exists() 199 exitBlock() 78 exportCSS() 65 exportEditableRegionsAsXML() 65 extensions de la balise select 34, 35 F fichiers JavaScript externes 36 fichiers sur disque copie 198 création (fichiers HTML) 65 création (fichiers non HTML) 202 écriture dans 202 000ExtendingDWU.book Page 365 Thursday, June 8, 2000 3:38 PM lecture 201 suppression 201 file, objet (champ) 25 FilePathToLocalURL() 212 filePathToLocalURL() 207 findAllServerBehaviors() 126 findDynamicSources() 323 findLinkSource() 131 findNext() 71 findServerBehaviors() 341 Fireworks exemple d'intégration 217 focus() 25 fonctions C appel à partir de JavaScript 246 dans mm_jsapi.h 239 fonctions d'aide, dans les comportements 285 fonctions relatives aux cartes graphiques 105 fonctions relatives aux zones réactives 105 form, objet 25 formatDynamicDataRef() 330 function, objet 25 FWLaunch.bringDWToFront() 213 FWLaunch.bringFWToFront() 213 FWLaunch.execJsInFireworks() 214 FWLaunch.getJsResponse() 214 FWLaunch.mayLaunchFireworks() 215 FWLaunch.optimizeInFireworks() 215 FWLaunch.validateFireworks() 216 G generateDynamicSourceBindings() 323 gestion des versions 29 gestionnaires d'événements dans les boîtes de dialogue de comportement 284 dans les fichiers d'extension 36 renvoi d'une valeur à partir de 285 get() MMNotes.get() 205 site.get() 132 getActiveWindow() 170 getAttachedTemplate() 109 getAttribute() 31 getAttributes() 199 getAutoplay() 152 getBehavior() 42 getBehaviorAt() 46 getBehaviorCount() 47 getBehaviorElement() 43 getBehaviorEvent() 173 getBehaviorTag() 45 getBrowserList() 61 getCheckOutUser() 132 getCheckOutUserForFile() 132 getClipboardText() 53 getColumnAndTypeList() 227 getColumnList() 227 getColumnsOfTable() 227 getConfigurationPath() 118 getConnectionList() 228 getConnectionName() 228 getConnectionState() 133 getConnectionString() 229 getCurrentFrame() 152 getCurrentSite() 133 getDocumentDOM() dreamweaver.getDocumentDOM() 41 importance 41 getDocumentList() 170 getDocumentPath() 118 getDriverName() 229 getDynamicContent() 262 getEditableRegionList() 109 getEditableRetionList() 110 getEditNoFramesContent() 155 getElementRef() 90 getElementsByTagName() pour les objets document 30 pour les objets tag 31 getExtensionEditorList() 61 getFile() 220 getFileCallback() 222 getFileExtensions() 317 getFloaterVisibility() 171 getFocus() dom.getFocus() 169 dreamweaver.getFocus() 170 site.getFocus() 133 getFontList() 87 getFontMarkup() 78 getFrameNames() 76 getHideAllFloaters() 160 getIsLibraryDocument() 109 getIsTemplateDocument() 109 Index 365 000ExtendingDWU.book Page 366 Thursday, June 8, 2000 3:38 PM getJsResponse() 214 getKeyCount() 205 getKeys() 206 getKeyState() 87 getLinkHref() 78 getLinkTarget() 79 getLinkVisibility() 134 getListTag() 79 getLiveDataInitTags() 114 getLiveDataMode() 114 getLoop() 152 getMenuNeedsUpdating() 117 getModificationDate() 200 GetNote() 209 GetNoteLength() 209 GetNotesKeyCount() 210 GetNotesKeys() 210 getObjectRefs() 173 getObjectTags() 174 getPassword() 230 getPreventLayerOverlaps() 155 getPrimaryBrowser() 61 getPrimaryExtensionEditor() 62 getRecentFileList() 66 getRedoText() 92 getRulerOrigin() 165 getRulerUnits() 165 getRuntimeConnectionType() 230 getSecondaryBrowser() 62 getSelectedBehavior() 47 getSelectedEditableRegion() 110 getSelectedItem() 112 getSelectedNode() 122 getSelectedStyle() dreamweaver.cssStylePalette.getSelectedStyle() 57 dreamweaver.htmlStylePalette.getSelectedStyle() 99 getSelectedTarget() 58 getSelectedTemplate() 113 getSelection() dom.getSelection() 122 dreamweaver.getSelection() 175 site.getSelection() 134 getServerBehaviors() 126 getServerLanguage() 127 getServerLanguages() 318 getServerName() 127 366 Index getServerVersion() 128 getShowDependents() 161 getShowDialogsOnInsert() 88 getShowFrameBorders() 155 getShowGrid() 155 getShowHeadView() 155 getShowHiddenFiles() 161 getShowImageMaps() 156 getShowInvisibleElements() 160 getShowLayerBorders() 156 getShowPageTitles() 162 getShowRulers() 156 getShowStatusBar() 160 getShowTableBorders() 156 getShowToolTips() 162 getShowTracingImage() 157 getSiteRoot() 119 GetSiteRootForFile() 211 getSiteRootForFile() 206 getSites() 134 getSnapToGrid() 157 getSPColumnList() 230 getSPColumnListNamedParams() 231 getSPParamsAsString() 232 getStepCount() 95 getStepsAsJavaScript() 95 getStyles() dreamweaver.cssStylePalette.getStyles() 59 dreamweaver.htmlStylePalette.getStyles() 99 getTableExtent() 146 getTables() 233 getText() 223 getTextAlignment() 79 getTextCallback() 223 getTextFormat() 80 getTokens() 141 getTracingImageOpacity() 166 getTranslatedAttribute() 31 getTranslatorInfo() 299 getTranslatorList() 164 getUndoState() 96 getUndoText() 92 getUserName() 233 getVersionArray() 318 GetVersionName() 211 getVersionName() 206 GetVersionNum() 211 000ExtendingDWU.book Page 367 Thursday, June 8, 2000 3:38 PM getVersionNum() 206 getWindowTitle() 169 H hasCharacterMarkup() 80 hasChildNodes() pour les objets comment 33 pour les objets document 30 pour les objets tag 31 pour les objets text 33 hasTracingImage() 184 hasTranslatedAttributes() 31 hidden, objet (champ) 25 I identifyBehaviorArguments() 289 image, objet 25 image, objet (champ) 25 importXMLIntoTemplate() 66 incomplete property 334 increaseColspan() 147 increaseRowspan() 147 indent() 80 InfoPrefs 211 informations sur le langage 29 initialPosition() 279 initialTabs() 279 innerHTML, propriété 31 insertHTML() 80 insertLibraryItem() 110 insertObject() 81 insertTableColumns() 147 insertTableRows() 147 insertText() 81 inspectBehavior() 291 inspectDynamicDataRef() 324 inspecteur de liaisons de données 319 inspecteurs de propriétés API 271 attributs traduits 306 exemple de code 273 expérience de l'utilisateur 270 fonctions obligatoires 271 icône éclair 306 mot-clé *LOCKED* 313 pour le contenu verrouillé 313 inspectFormatDefinition() 331 inspectSelection() 272 inspectServerBehavior() 341 invertSelection() 134 isCommandChecked() 262 isRecording() 188 item() 25 J JavaScript ouvrages de référence 24 syntaxe 24 JavaScript, ouvrages de référence 24 JS_BooleanToValue() 243 JS_DefineFunction() 240 JS_DoubleToValue() 243 JS_ExecuteScript() 245 JS_GetArrayLength() 244 JS_GetElement() 244 JS_IntegerToValue() 243 JS_NewArrayObject() 244 JS_ObjectToValue() 243 JS_ObjectType() 244 JS_ReportError() 246 JS_SetElement() 245 JS_StringToValue() 242 JS_ValueToBoolean() 242 JS_ValueToDouble() 241 JS_ValueToInteger() 241 JS_ValueToObject() 242 JS_ValueToString() 241 JSBool 240 JSContext 239 JSNative 240 JSObject 239 jsval 240 L latin1ToNative() 142 layer, objet 25 listFolder() 200 liveDataTranslate() 115 liveDataTranslateMarkup function() 301 loadTracingImage() 166 LocalURLToFilePath() 212 localURLToFilePath() 207 locateInSite() 131 Index 367 000ExtendingDWU.book Page 368 Thursday, June 8, 2000 3:38 PM M makeEditable() 135 makeNewDreamweaverFile() 135 makeNewFolder() 135 makeSizesEqual() 106 markSelectionAsEditable() 110 math, objet 25 mayLaunchFireworks() 215 menus dynamiques exemple de code 266 expérience de l'utilisateur 259 mergeTableCells() 148 mm_jsapi.h exemple de fichier 246 insertion 239 MM_returnValue 285 mmdatabasetree 34 MMDB.getColumnAndTypeList() 227 MMDB.getColumnList() 227 MMDB.getColumnsOfTable() 227 MMDB.getConnectionList() 228 MMDB.getConnectionName() 228 MMDB.getConnectionString() 229 MMDB.getDriverName() 229 MMDB.getPassword() 230 MMDB.getRuntimeConnectionType() 230 MMDB.getSPColumnList() 230 MMDB.getSPColumnListNamedParams() 231 MMDB.getSPParamsAsString() 232 MMDB.getTables() 233 MMDB.getUserName() 233 MMDB.showConnectionMgrDialog() 233 MMDB.showResultset() 234 MMDB.showSPResultset() 234 MMDB.showSPResultsetNamedParams() 235 MMHttp.clearTemp() 220 MMHttp.getFile() 220 MMHttp.getFileCallback() 222 MMHttp.getText() 223 MMHttp.getTextCallback() 223 MMHttp.postText() 224 MMHttp.postTextCallback() 224 MMInfo.h 207 MMNotes, objet 204 MMNotes.close() 204 MMNotes.filePathToLocalURL() 207 MMNotes.get() 205 368 Index MMNotes.getKeyCount() 205 MMNotes.getKeys() 206 MMNotes.getSiteRootForFile() 206 MMNotes.getVersionName() 206 MMNotes.getVersionNum() 206 MMNotes.localURLToFilePath() 207 MMNotes.open() 204 MMNotes.remove() 205 MMNotes.set() 205 mmparameterlist 35 modèle objet de document dans Dreamweaver 25 Spécification DOM Niveau 1 25 Modifier la liste de formats, menu (+) 327 mot-clé *LOCKED* 313 mots de passe 230 moveBehaviorDown() 48 moveBehaviorUp() 48 moveSelectionBy() 106 N nativeToLatin1() 142 navigator, objet 25 newBlankTemplate() 113 newBlock() 82 newEditableRegion() 110 newFromDocument() 112 newFromTemplate() 66 newHomePage() 135 newSite() 136 newStyle() dreamweaver.cssStylePalette.newStyle() 59 dreamweaver.htmlStylePalette.newStyle() 99 nextParagraph() 103 nextWord() 103 Node.COMMENT_NODE 29 Node.DOCUMENT_NODE 29 Node.ELEMENT_NODE 29 nodelist, objet 25 Node.TEXT_NODE 29 nodeToOffsets() dom.nodeToOffsets() 123 dreamweaver.nodeToOffsets() 176 nodeType, propriété des objets tag 31 des objets text 33 objets comment 33 000ExtendingDWU.book Page 369 Thursday, June 8, 2000 3:38 PM objets document 30 nœud d'éléments 31 nœud de document 30 nœud de texte 33 nœuds 29 noms d’utilisateur 233 _notes, dossier 203 notifyMenuUpdated() 117 number, objet 25 O object, objet 25 objectTag() 251 objets ajout à la palette d'objets 252 ajout au menu Insertion 252 API 250 expérience de l'utilisateur 249 offsetsToNode() dom.offsetsToNode() 123 dreamweaver.offsetsToNode() 176 onBlur 25 onChange 25 onClick 25 onFocus 25 onLoad 25 onMouseDown 25 onMouseOut 25 onMouseOver 25 onMouseUp 25 onResize 25 open() MMNotes.open() 204 site.open() 136 openDocument() 66 openDocumentFromSite() 68 openInFrame() 68 OpenNotesFile() 208 openWithApp() 62 openWithBrowseDialog() 62 openWithExternalTextEditor() 63 openWithImageEditor() 63 optimizeInFireworks() 215 option, objet 25 outdent() 82 outerHTML, propriété 31 P pageDown() 103 pageUp() 104 palettes flottantes API 277 exemple de code 281 expérience de l'utilisateur 275 problèmes de performances 280 parentNode, propriété objets comment 33 objets document 30 objets tag 31 objets text 33 parentWindow, propriété 30 participants, propriété 334 password, objet (champ) 25 pasteServerBehavior() 342 pilotes 229 playAllPlugins() 166 playPlugin() 166 playRecordedCommand() 93 popupAction() 45 popupCommand() 176 popupServerBehavior() 126 postText() 224 postTextCallback() 224 previousParagraph() 104 previousWord() 104 procédures stockées 226 affichage des résultats 234, 235 extraction de colonnes 230 extraction de paramètres 232 put() 136 Q quitApplication() 88 R radio, objet 25 read() 201 reapplyBehaviors() 43 receiveArguments() dans les commandes de menu 262 dans les commandes ordinaires 255 recordPathOfLayer() 152 recreateCache() 136 Index 369 000ExtendingDWU.book Page 370 Thursday, June 8, 2000 3:38 PM recreateFromDocument() 112 redo() dom.redo() 91 dreamweaver.redo() 93 refresh() 137 regexp, objet 25 relativeToAbsoluteURL() 119 releaseDocument() 68 reloadMenus() 118 remoteIsValid() 137 remove() 201, 205 removeAllTableHeights() 148 removeAllTableWidths() 148 removeAttribute() 31 removeBehavior() dom.removeBehavior() 43 dreamweaver.timelineInspector.removeBehavior() 152 removeCharacterMarkup() 83 removeCSSStyle() 56 removeEditableRegion() 111 removeFontMarkup() 83 removeFrame() 153 removeKeyframe() 153 removeLink() dom.removeLink() 83 site.removeLink() 137 RemoveNote() 209 removeObject() 153 removeTimeline() 153 renameSelectedItem() 113 renameSelectedTemplate() 114 renameSelection() 137 renameTimeline() 153 replace() 72 replaceAll() 72 replaySteps() 96 reset, objet 25 resizeSelection() 84 resizeSelectionBy() 106 resizeTo() 25 revertDocument() 69 runCommand() 54 runTranslator() 163 370 Index S saveAll() 69 saveAsCommand() 97 saveAsImage() 138 saveDocument() 69 saveDocumentAs() 70 saveDocumentAsTemplate() 70 saveFrameset() 70 saveFramesetAs() 71 select() 25 select, objet 25 selectAll() dom.selectAll() 124 dreamweaver.selectAll() 125 site.selectAll() 138 selectChild() 120 selectedNode property 335 selectHomePage() 138 selectionChanged() 278 selectNewer() 139 selectParent() 120 selectTable() 124 set() 205 setActiveWindow() 171 setAsHomePage() 139 setAttribute() 31 setAttributeWithErrorChecking() 84 setAutoplay() 154 setConnectionState() 139 setCurrentFrame() 154 setCurrentSite() 139 setEditNoFramesContent() 157 setFloaterVisibility() 171 setFocus() 140 setHideAllFloaters() 161 setInterval() 25 setLayerTag() 107 setLayout() 140 setLinkHref() 84 setLinkTarget() 84 setLinkVisibility() 140 setListBoxKind() 85 setListTag() 85 setLiveDataError() 115 setLiveDataMode() 116 setLoop() 154 setMenuText() 263 000ExtendingDWU.book Page 371 Thursday, June 8, 2000 3:38 PM SetNote() 208 setPreventLayerOverlaps() 158 setRulerOrigin() 166 setRulerUnits() 167 setSelectedBehavior() 49 setSelectedNode() 124 setSelection() dom.setSelection() 125 dreamweaver.setSelection() 177 site.setSelection() 140 setShowDependents() 162 setShowFrameBorders() 158 setShowGrid() 158 setShowHeadView() 158 setShowHiddenFiles() 162 setShowImageMaps() 159 setShowInvisibleElements() 161 setShowLayerBorders() 159 setShowPageTitles() 163 setShowRulers() 159 setShowStatusBar() 161 setShowTableBorders() 159 setShowToolTips() 163 setShowTracingImage() 159 setSnapToGrid() 160 setTableCellTag() 148 setTableColumns() 149 setTableRows() 149 setTextAlignment() 86 setTextFieldKind() 86 setTimeout() 25 dans les palettes flottantes 280 utilisation avec FWLaunch 217 setTracingImageOpacity() 167 setTracingImagePosition() 167 setUndoState() 97 setUpComplexFind() 72 setUpComplexFindReplace() 73 setUpFind() 74 setUpFindReplace() 74 showAboutBox() 88 showConnectionMgrDialog() 233 showDynamicData() 88 showFindDialog() 75 showFindReplaceDialog() 76 showFontColorDialog() 86 showGridSettingsDialog() 169 showInsertTableRowsOrColumnsDialog() 149 showListPropertiesDialog() 85 showLiveDataDialog() 116 showPagePropertiesDialog() 90 showPreferencesDialog() 89 showProperties() 172 showQuickTagEditor() 121 showResultset() 234 showSPResultset() 234 showSPResultsetNamedParams() 235 Shutdown, dossier 37 site, objet méthodes 40 propriétés 29 site.addLinkToExistingFile() 128 site.addLinkToNewFile() 128 site.canAddLinkToFile() 190 site.canChangeLink() 191 site.canCheckIn() 191 site.canCheckOut() 191 site.canConnect() 192 site.canFindLinkSource() 192 site.canGet() 192 site.canLocateInSite() 192 site.canMakeEditable() 193 site.canMakeNewFileOrFolder() 193 site.canOpen() 193 site.canPut() 193 site.canRecreateCache() 194 site.canRefresh() 194 site.canRemoveLink() 194 site.canSelectNewer() 195 site.canSetLayout() 194 site.canSynchronize() 195 site.canUndoCheckOut() 195 site.canViewAsRoot() 196 site.changeLink() 129 site.changeLinkSitewide() 129 site.checkIn() 129 site.checkLinks() 130 site.checkOut() 130 site.checkTargetBrowsers() 130 site.defineSites() 131 site.deleteSelection() 131 site.findLinkSource() 131 site.get() 132 site.getCheckOutUser() 132 Index 371 000ExtendingDWU.book Page 372 Thursday, June 8, 2000 3:38 PM site.getCheckOutUserForFile() 132 site.getConnectionState() 133 site.getCurrentSite() 133 site.getFocus() 133 site.getLinkVisibility() 134 site.getSelection() 134 site.getShowDependents() 161 site.getShowHiddenFiles() 161 site.getShowPageTitles() 162 site.getShowToolTips() 162 site.getSites() 134 site.invertSelection() 134 site.locateInSite() 131 site.makeEditable() 135 site.makeNewDreamweaverFile() 135 site.makeNewFolder() 135 site.newHomePage() 135 site.newSite() 136 site.open() 136 site.put() 136 site.recreateCache() 136 site.refresh() 137 site.remoteIsValid() 137 site.removeLink() 137 site.renameSelection() 137 site.saveAsImage() 138 site.selectAll() 138 site.selectHomePage() 138 site.selectNewer() 139 site.setAsHomePage() 139 site.setConnectionState() 139 site.setCurrentSite() 139 site.setFocus() 140 site.setLayout() 140 site.setLinkVisibility() 140 site.setSelection() 140 site.setShowDependents() 162 site.setShowHiddenFiles() 162 site.setShowPageTitles() 163 site.setShowToolTips() 163 site.synchronize() 141 site.undoCheckOut() 141 site.viewAsRoot() 141 snapTracingImageToSelection() 168 splitFrame() 76 splitTableCell() 150 SQL, instructions 372 Index affichage des résultats 234 extraction de colonnes 227 startOfDocument() 105 startOfLine() 105 startRecording() 93 Startup, dossier 37 statusCode, propriété 219 stopAllPlugins() 168 stopPlugin() 168 stopRecording() 93 string, objet 25 stripTag() 121 submit, objet 25 synchronize() 141 T tables 233 extraction de colonnes 227 tag, objet 31 tagName, propriété 31 text, objet 33 text, objet (champ) 25 textarea, objet 25 Texte dynamique, Boîte de dialogue 319 title, propriété 335 toggleFloater() 172 traducteurs attributs 302 bloc/balise 307 débogage 315 traducteurs d’attributs 302 création 302 débogage 315 exemple de code 303 traducteurs de bloc/balise 302 débogage 315 exemple de code 309 traducteurs de données API 299 débogage 315 expérience de l’utilisateur 298 fonctions requises 299 pour les attributs 302 pour les balises ou les blocs de code 307 type 302 translateMarkup() 300 typeof, opérateur 197 000ExtendingDWU.book Page 373 Thursday, June 8, 2000 3:38 PM U undo() dom.undo() 92 dreamweaver.undo() 94 undoCheckOut() 141 unescape() 25 updateCurrentPage() 111 updatePages() 111 URL JavaScript 36 URL, propriété 30 useTranslatedSource() 164 V validateFireworks() 216 viewAsRoot() 141 W W3C 25 window, objet 25 windowDimensions() dans les actions de comportement 292 dans les commandes de menu 263 dans les commandes ordinaires 256 dans les fichiers d'objet 251 wrapTag() 121 write() 202 Index 373