Dreamweaver ist ein Editor mit Tradition. Bereits im Dezember 1997 veröffentlichte Macromedia seine erste Version und bereits von Anfang an wird sein Nutzen und die Qualität des erzeugten Codes kontrovers diskutiert.
Ich habe auf Dreamweaver MX gelernt und meine erste Internetseite entstand mit seiner Hilfe – damals noch ein Tabellenlayout in der WYSIWYG-Ansicht und der Code war schlecht. Das lag nicht unbedingt am Editor…
Heute benutze ich ihn immer noch mit Version CS3 und das nicht aus Gewohnheit. Ich arbeite ausschließlich in der Code-Ansicht, erstelle standardkonforme Webseiten und genieße die Vorteile seines großen Funktionsumfangs, die einen schnellen und optimierten Workflow ermöglichen.
Dreamweaver ist ein mächtiges Werkzeug. Es wartet von Hause aus schon mit vielen Funktionen und Shortkeys auf. Trotzdem kommt irgendwann die Situation, in welcher der Entwickler einen Shortkey und eine bestimmte Automatisierung vermisst. Die begrenzte Funktionalität der Snippets kann da nicht immer weiterhelfen. Um meinen Workflow zu optimieren und nervige Tipperei zu vermeiden möchte ich meine eigene Funktion schreiben und diese auf ein Tastaturkürzel legen.
Hier kommt die API ins Spiel. Über sie bin ich in der Lage, das Programm zu reorganisieren, meinen Bedürfnissen anzupassen und um fehlenden Funktionen zu erweitern oder bestehende umzuschreiben.
Um zu starten brauchen wir natürlich in erster Linie den Adobe Dreamweaver (zum Probieren reicht auch erstmal eine Dreamweaver CS5-Testversion). Befehle in Dreamweaver bestehen aus zwei Komponenten – einer HTML- und einer JavaScript-Datei – und sie werden über einen XML-Baum in die Benutzeroberfläche eingebunden. Grundkenntnisse in den drei Bereichen erleichtern den Einstieg erheblich.
Desweiteren muss nach der Installation der »Dreamweaver«-Ordner mit den Unterordnern »Configuration« und weiter »Menus« auf der Festplatte ausfindig gemacht werden. Dieser befindet sich nicht im Installationsordner, sondern in den Benutzer- bzw. User-Ordnern (bei Vista z. B. C:\Users\"Name"\AppData\Roaming\Macromedia\Dreamweaver\Configuration\Menus).

Um Problemen vorzubeugen, sollte vorher eine Kopie der aktuellen Datei menus.xml angelegt werden.
Ladet nun die vorbereitete zip-Datei (52 KB) herunter und kopiert den Inhalt in den Menus-Ordner. Die neuen Befehle werden nach dem nächsten Start von Dreamweaver angezeigt und sind aktiv.
Um die folgenden Erläuterungen besser nachvollziehen zu können, sollten alle Dateien des entpackten ZIPs mit Dreamweaver geöffnet werden.
Dem aufmerksamen Beobachter fällt natürlich sofort der neue Menüpunkt in der horizontalen Menüleiste auf. Beim anklicken von »Webkrauts« öffnet sich ein Dropdown mit »ListAll«, »BreakAll« und »AllToNav« und den zugewiesenen Shortkey. Wenn wir jetzt mehrere Zeilen Text markieren und zum Beispiel Strg+Alt+D drücken oder den entsprechenden Menüpunkt auswählen, werden automatisch die Zeilenumbrüche erkannt und in Listenpunkte umgewandelt. Das Gleiche gilt für die Funktionen »BreakAll« (erzeugt einen br am Zeilenende) und »AllToNav«, welche die Listenfunktion »ListAll« erweitert und einen Anchor-Tag ergänzt, um die Basis für eine Navigation zu erstellen.
Diese vorgefertigten Befehle dienen natürlich nur als Beispiele für den Einstieg. Ich denke, je nach Ausprägung der JavaScript-Kenntnisse lässt sich da allerhand anstellen und es sind nicht nur HTML-Tags möglich.
So werden die Befehle angewendet – Screencast
Dreamweaver liest den Code im Bearbeitungsfenster genau wie den Quellcode einer Internetseite. Dadurch wird die direkte Manipulation durch JavaScript erst möglich. Bevor die Befehle also greifen können, muss Dreamweaver das DOM vollständig erfasst haben. Sollte mal keine Reaktion auf die Befehle erfolgen, hilft deshalb ein Klick auf den Button »Aktualisieren«. Das gilt allgemein für die Anwendung von Funktionen in Dreamweaver.
Befehle in Dreamweaver bestehen immer aus zwei Komponenten: einer HTML- und einer JavaScript-Datei. Die HTML-Datei ist lediglich dafür zuständig, die Javascript-Datei zu laden, einzubetten und die entsprechende Funktion im Body-Tag durch »onLoad« auszuführen. Wichtig ist es, daran zu denken, die Bezeichnungen der Datei und der Funktion hier anzupassen.
Der HTML-Code am Beispiel der ListAll()-Funktion sieht (etwas gekürzt) so aus:
<head>
<title>Listen erstellen </title>
<script language="JavaScript" src="ListAll.js">
Menu_HC_AddLineBreaks = dreamweaver.latin1ToNative("Listen erstellen <br>");
</script>
</head>
<body onload="ListAll()">
</body>
</html>
Die JavaScript-Datei dagegen enthält die Programmierung für den Befehl. Hier bekommen wir es mit allerhand Dreamweaver-spezifischen Funktionen zu tun. Die Funktion »canAcceptCommand()« testet zum Beispiel, ob das Menüelement abgeblendet werden soll (Rückgabe: false) oder aktiv geschaltet wird. Außerdem wird hier noch festgestellt, auf welchem Teil innerhalb von Dreamweaver der Eingabefokus liegt (»dw.getFocus()«) und die Selektion aus dem DOM ausgelesen (»dw.getDocumentDOM()«).
Diese komplette erste Funktion ist ein Standard und muss für unsere Zwecke nicht modifiziert werden. Wer will, kann sich im API-Referenzhandbuch unter der »Hilfe« damit näher befassen.
Den Kern bildet die jeweils zweite Funktion »ListAll()«, »BreakAll()« bzw. »AllToNav()« und hier können wir uns austoben. Jeder, der Grundkenntnisse in JavaScript besitzt, kann leicht nachvollziehen was hier passiert. Kurz beschrieben am Beispiel der Funktion »ListAll()«:
</li>\n\t<li> ersetzt. Bei \n und \t handelt es sich um Regular Expressions für einen Zeilenumbruch und einen Tab.</li>\n</ul> eingefügt.<ul>\n\t<li> eingefügt.Für eine bessere Übersicht habe ich die wichtigsten Zeilen nochmal in der Datei kommentiert. Ein Blick auf den Quellcode der jeweiligen Datei verdeutlicht, wie sie modifiziert wird. Wer will, kann hier auch seine eigene Funktion einmal ausprobieren. Man kann nicht viel kaputt machen.
Die dritte und letzte Datei im Bunde ist eine .xml-Datei (menus.xml). Sie hat mit dem Befehl selbst nichts zu tun, denn hier werden alle Menüs und ihre Inhalte samt Shortkeys festgelegt und beim Start von Dreamweaver initiiert. Über diese Datei lässt sich die gesamte Menüstruktur und ihre Funktionen sowie deren Tastaturkürzel reorganisieren. Der Aufbau des XML-Baums ist leicht nachzuvollziehen.
Ganz am Ende der Datei habe ich unsere zusätzlichen Menüpunkte eingefügt. Ein neuer Hauptmenüpunkt wird in unserem Beispiel mit <menu id="Webkraut_Edit" name="Webkrauts"> erstellt und alle Unterpunkte mit <menuitem id="WK_Edit_ListAll" name="ListAll" key="Cmd+Alt+L" file="Menus/ListAll.htm" arguments="'ListAll'" /> aufgelistet. Dabei gilt: »key« bezeichnet den Shortkey, »file« den Pfad und Dateinamen der HTML-Datei und »name« den Menüeintrag. Der Pfad kann beliebig angegeben werden. Ab einer gewissen Anzahl von eigenen Funktionen sollte man über eine eigene Ordnerstruktur nachdenken. Will man ein eigenes Tastaturkürzel anlegen, sollte man mit der Suchfunktion vorher prüfen, ob es wirklich noch nicht anderweitig genutzt wird.
Der neue Menüpunkt und seine Funktionen und überhaupt alle Änderungen werden immer erst nach dem nächsten Start von Dreamweaver initiiert.
Ich hoffe ich konnte mit diesem Artikel einen schnellen Einstieg in ein komplexes Themengebiet schaffen, dessen Vertiefung durchaus lohnenswert ist. Die Idee, sich mit der API von Dreamweaver zu befassen und das Programm ein wenig anzupassen, entstand mit der Version 8. Die neuen Funktionen habe ich einfach in Version CS3 migriert. Bleibt abzuwarten welche Möglichkeiten sich mit Version CS5 ergeben werden.
Webkrauts_Menue.zip (52 KB)
Accessing Dreamweaver's JavaScript API
Dreamweaver erweitern
Henry Zeitler ist gelernter Mediengestalter und arbeitet als Webproducer in Düsseldorf. Barrierefreiheit, Semantik und Codeoptimierung haben sich zu seiner Leidenschaft entwickelt, die über das berufliche Engagement hinaus geht. In seinem privaten Blog Freizeitler.de veröffentlicht er Experimente und Erkenntnisse.
Bitte die Hausregeln beachten. Alle Kommentare werden auf werbliche Links/Nicknames geprüft und gegebenenfalls gelöscht.
Kommentar-Feed für diesen Beitrag
Entschuldige, das Kommentarformular ist zurzeit geschlossen.
Dreamweaver ist, meiner Meinung nach, leider ausschließlich für HTML/CSS relativ gut geeignet. Auch ich habe damit angefangen. Bei PHP/MySQL stößt man immer wieder auf "Hindernisse", die mich ausbremsen. Es gibt jedoch, auch OS, IDEs, die all diese "Sprachen" besser beherrschen. Das war eins der der Hauptgründen wieso ich DW gar nicht mehr verwende.
IDEs sind schon fast wie Religionen, weshalb ich auch keinen weiteren Namen nennen werde.
Kommentar by Alex - 9. August 2010 um 10:01
@Alex: Welche Hindernisse meinst Du denn konkret? Ich benutze Dreamweaver auch für PHP und ColdFusion (o.k., CF kommt aus dem selben Hause) und hatte noch keine nennenswerte Probleme…
Kommentar by Henry Zeitler - 9. August 2010 um 18:32
Da bin ich ja beruhigt, dass ich nicht der einzige bin der Dreamweaver professionell einsetzt. Ich arbeite seit der Version 3 mit Dreamweaver und muss sagen, dass die Software kontinuierlich verbessert wurde, vor allem als der Ultradev erschien
Schön, dass mal jemand einen Artikel über die erweiterten Möglichkeiten des DW schreibt. Gelungener Artikel.
Kommentar by Marlon Böhland - 11. August 2010 um 03:20