Dynamische Seiten ----------------- Unter dem Begriff "dynamische Seiten" sind solche Seiten zusammengefaßt, auf denen eine besondere Funktionalität realisiert wird. Im System gibt es eine Reihe vorgegebener dynamischer Seiten. Dazu gehören u.a.: - Suchen nach Inhalt (PageID=6) - Login (PageID=8) - Passwort ändern (PageID=9) - Übersicht über Benutzer und Benutzergruppen (PageID=14) - Suche nach Personen (PageID=15) Dynamische Seiten sind z.B. geeignet, um Formulare und ihre Auswertung zu realisieren oder eigene PHP-Applikationen in das System einzubauen. Eine dynamische Seite besteht i.d.R. aus einer "normalen" im System editierbaren Seite mit einem durch die Programmierung erzeugten Abschnitt. Der normal editierbare Bereich kann aber auch leer bleiben. Dynamische Seiten werden standardmäßig nicht gecacht oder in Form von statischen Seiten erzeugt. Ein Aufruf einer statischen Seite belastet daher den Server weitaus stärker als eine konventionelle Seite. Es gibt zwei Möglichkeiten, eigene dynamische Seiten zu erstellen: A) Inhalte werden in HTML erzeugt - schnelle, flexible Lösung - Änderung der Darstellung (z.B. Druckversion, Änderung des Designs) aufwendiger 1. Eine leere Seite im System wird erstellt, benannt und mit den gewünschten Berechtigungen versehen. 2. Im Verzeichnis includes/DynPages wird eine Datei mit gleichnamiger Klasse erzeugt, z.B. ExamplePage.inc. Die Klasse ExamplePage erbt von der Klasse DynamicPage und redefiniert nur die Methode getSubstitute. In getSubstitute werden die Ersetzungen für Platzhalter definiert, die in beliebigen Einträgen benutzt werden können. Ein Platzhalter wird in der Form "[:Platzhalter:]" im Eintrag geschrieben. Die Methode getSubstitute() sollte dazu die Ersetzung für den Platzhalter mit Namen "Platzhalter" implementieren. Der Ersatz kann beliebig lang und komplex sein, solange es sich um gültiges HTML (bei Bedarf mit Javascript, CSS, ...) handelt. 3. In der Datenbank-Tabelle Page wird im Datensatz der Seite das Feld "Dynamic" mit dem Name der Klasse ohne endendes "Page" (im Beispiel "Example") versehen. Die ID der Seite läßt sich im Additor oder im Browser über die Seiteninformationen einsehen. 4. Im Additor können beim Bearbeiten der Seite Platzhalter an beliebigen Stellen in Einträgen verwendet werden. Dabei ist darauf zu achten, daß die Spalte in der in Einträgen ein Platzhalter verwendet wird ausreichend Platz für die ersetzten Inhalte bietet. B) Inhalte werden in XML erzeugt und über XSLT in HTML transformiert - Konzeptionell sauber - Mehrsprachigkeit einfach zu unterstützen - Darstellung in anderen Ausgabeformen automatisch bzw. einfach anzupassen 1. Eine leere Seite im System wird erstellt, benannt und mit den gewünschten Berechtigungen versehen. 2. Im Verzeichnis includes/DynPages wird eine Datei mit gleichnamiger Klasse erzeugt, z.B. ExamplePage.inc. Die Klasse ExamplePage erbt von der Klasse DynamicPage und redefiniert einige Methoden. Die Methode getXmlContent() wird überschrieben und sorgt dafür, daß eine neue Xml-Node am Anfang oder Ende des durch DynamicPage::getXmlContent() gelieferten Xml-Objekts des Seiteninhalts eingefügt wird. Die Xml-Node sollte eindeutig sein; zu empfehlen ist es, wiederum den Klassennamen zu verwenden. In getXmlContent() können Berechnungen oder Auswertungen geschehen, die im unterschiedlichen Aufbau und Inhalt der Xml-Node resultieren. 3. Als Erleichterung für das Einfügen komplexer HTML-Teile, Javascript-Blöcke u.ä. lassen sich über die Methode getSubstitute() Textteile erzeugen, die anstelle der entsprechenden Platzhalter im generierten HTML-Dokument eingesetzt werden (siehe A) 4. In der Datenbank-Tabelle Page wird im Datensatz der Seite das Feld "Dynamic" mit dem Name der Klasse ohne endendes "Page" (im Beispiel "Example") versehen. Die ID der Seite läßt sich im Additor oder im Browser über die Seiteninformationen einsehen. Anschließend kann die XML-Darstellung der Seite im Browser bereits eingesehen werden (Page999.xml). 5. In dem Verzeichnis includes/Templates/DynPages wird eine zur Klasse gehörige XSL-Datei angelegt, im Beispiel ExamplePage.xsl. Diese enthält die XML->HTML-Transformation für die in der Seite erzeugte XML-Node. (Bei Bedarf können auch beliebige XSL-Templates, die z.B. durch Page.xsl oder BPage.xsl definiert wurden überschrieben werden. In dem Template können die in der Methode getSubstitute() erzeugten Textteile über den angegebenen Bezeichner angesprochen werden, z.B. [:Name:]. Nach dem Ändern der XSL-Dateien muß das Admin-Skript createXSL aufgerufen werden. 6. Soll die Seite mehrsprachig sein, bietet es sich an, die Texte als Resourcen einzutragen. Dazu kann die Datei Resources.csv im Verzeichnis includes/Data erweitert werden. Ist Microsoft Access installiert kann auch die Datenbank Resources.mdb verwendet werden, um die Inhalte der csv-Datei zu bearbeiten. Für Resource-Nummern sollte der Bereich zwischen 1000 und 2000 benutzt werden. Auf den Resourcentext z.B. für die Resource-ID 1005 kann in der PHP-Programmierung über den Aufruf System::getRsc(1005) zugegriffen werden. In XSL-Stylesheets kann an der gewünschten Stelle [:RSC1005:] eingetragen werden. Nach dem Ändern der Resourcen muß das Admin-Skript createResources aufgerufen werden. Werden Resourcen in XSL-Dateien verwendet, müssen anschließend auf die XSL-Styles neu erzeugt werden (s.o.).