Layout meets Intelligence

Um statische Informationen effizient zu verwalten, ist ein Web Content Management System hervorragend geeignet: die Elemente Layout und Inhalt werden getrennt gespeichert und bearbeitet, nach festen Regeln werden daraus HTML-Seiten generiert: alles kein Problem.

Oftmals ist jedoch die starre Beziehung zwischen Inhalt und Layout unpraktisch. So möchte man vielleicht innerhalb einer Internetseite nicht nur die Inhalte eines Dokuments, sondern darüber hinaus noch weitere Informationen präsentieren, beispielsweise das aktuelle Datum - bei der Startseite des Intranets sicherlich sinnvoll.
intelligentes Layout
Also wäre es wünschenswert, bereits das Layout über intelligente Platzhalter mit Logik auszustatten. Die ohnehin notwendigen Platzhalter für den Inhalt müssen dazu um weitere ergänzt werden, deren Inhalte jedoch nicht aus dem passenden Inhaltsdokument übernommen werden, sondern aus dem Kontext gefüllt werden müssen.

So wird beispielsweise aus einem statischen
<H1>Heute ist Dienstag, der 03.04.2001</H1>
ein allgemeingültiges
<H1>Heute ist DATETIME=Weekday&FORMAT=Text, der DATETIME=Date&FORMAT=DD.MM.YY</H1>

Damit lassen sich Webseiten schon weitgehend dynamisieren, wenn auch die Möglichkeiten per se durch die Zahl und die Art der dynamischen Parameter begrenzt werden.
Das ist jetzt noch nichts, was ein Webdesigner nicht auch ohne ein Informatikstudium verstehen würde, und bietet dennoch eine Fülle von Möglichkeiten, die Seite in Details aufzuwerten. Außerdem - und das macht dynamische Platzhalter sehr attraktiv - benötigt der Webdesigner dafür keinen Designer Client, keine Designerrechte und keinerlei Knowhow über Lotus Domino Applikationsentwicklung, und damit ist der maximal verursachbare Schaden begrenzt. Nicht zuletzt sind damit auch wieder klassische Webagenturen als potenzielle Partner mit im Boot.

Manchmal reichen dynamische Platzhalter aber nicht aus, weil sie autark agieren: ein Platzhalter spiegelt entweder eine Information des Inhaltsdokuments oder eine dynamische Information wider, aber niemals beides. Damit ist ein Zusammenspiel von Layout und Inhalt nicht möglich.
Betrachten wir beispielsweise eine Kalenderübersicht mit den fünf Werktagen einer Woche, etwa einen Belegungsplan eines Konferenzraums oder den Kantinenplan. Es wäre doch praktisch, wenn automatisch der Kantinenplan der aktuellen Woche geöffnet und der aktuelle Tag farbig hervorgehoben würde.
Ein anderes, weniger komplexes Beispiel: Sie bieten interne Schulungen für Ihre Mitarbeiter an. Für jeden Kurs gibt es einen Anmeldeschluss und ein Anfangsdatum. Im Intranet sollen alle Kurse tabellarisch aufgeführt werden, deren Beginn in der Zukunft liegt. Das Anmeldedatum soll dabei farbig hervorgehoben werden, wenn es in der Vergangenheit liegt, um den Anwendern zu signalisieren, dass der Kurs zwar noch nicht begonnen hat, eine Anmeldung aber nicht mehr möglich ist.
Hier hilft uns ein dynamischer Platzhalter nicht weiter, denn jetzt ist das Layout inhaltsspezifisch - nicht der Kontext, sondern der darzustellende Inhalt beeinflusst die Regeln. Also müssen wir auf ein mächtigeres Werkzeug zurückgreifen, vorzugsweise eins, mit dem man "richtig" programmieren kann: die Lotus Formelsprache. Wenn sie auch in den Augen eines Informatikers keine "richtige" Programmiersprache ist, lassen sich mit ihr einige Dinge sehr elegant lösen.

Folgende Fälle soll nun abgebildet werden:
<FONT Color=black>15.04.2001</FONT>,
wenn das Datum in der Zukunft liegt, oder
<FONT Color=red><B>30.03.2001</B></FONT>
bei bereits abgelaufenenen Anmeldefristen.

In Abhängigkeit vom darzustellenden Datum in Relation zum aktuellen Datum soll mal die eine, mal die andere Darstellung gewählt werden:

##EVALUATE=
@If(@TextToTime(?FIELD=EXPIRATIONDATE?) < @Today;
"<FONT Color=red><B>FIELD= EXPIRATIONDATE</B></FONT>";
"<FONT Color=black>FIELD= EXPIRATIONDATE</FONT>")##

Zugegeben, das ist jetzt nicht mehr ganz so selbsterklärend wie der dynamische Platzhalter. Andererseits kratzt dieses Beispiel auch nur an der Oberfläche der Möglichkeiten: der geübte Domino-Programmierer wird beim Anblick dieser Formel glänzende Augen bekommen. Doch auch der notes-technisch Unbedarfte wird zumindest eine einfache Bedingung nach obigem Muster ergänzen können.
Die Verwendung der Inhaltsplatzhalter - FIELD=... - innerhalb der Formeln erlaubt die beliebige Verwendung der Inhalte als Parameter. Wie das Beispiel oben zeigt, können dabei selbstverständlich auch weitere Parameter wie hier @Today verwendet werden. Nur der Vollständigkeit halber sei erwähnt - ein praktisches Beispiel würde hier den Rahmen sprengen -, dass hier selbstverständlich auch komplexe Funktionen wie DBColumn oder DBLookup verwendet werden können.

Intelligenz durch Skriptsprachen
Wer bereits einige Erfahrung mit der Lotus Formelsprache gesammelt hat, wird einwerfen, dass die Programmierung damit natürliche Grenzen kennt - vollkommen zu Recht. Einfache Bedingungen und Formatkonvertierungen lassen sich problemlos vornehmen, aber bereits Schleifen sind unmöglich und müssen über Listen ermogelt werden.
Will man "richtig" programmieren, führt kein Weg an einer ausgereiften Skriptsprache vorbei. Für den Webdesigner liegt an dieser Stelle nichts näher als JavaScript: ein umfangreicher Sprachschatz, etablierte Werkzeuge für die Entwicklung und eine endlose Flut an größtenteils kostenloser Dokumentation und freien Skripten qualifizieren diese Sprache als geeignetes Werkzeug.
Setzt man JavaScript im Rahmen eines Web Content Management Systems ein, sind zwei Ebenen zu unterscheiden: zum einen clientseitige Logik für den Browser, zum anderen die serverseitige Programmierung.
Die clientseitige Logik spielt hier eine untergeordnete Rolle: zwar sollte jedes Web Content Management System in der Lage sein, beliebige JavaScripts in das Layout zu integrieren. Dabei beschränkt sich das Verändern von Layout im Browser im wesentlichen auf Dynamic HTML, und das kann nicht zwingend vorausgesetzt werden.
Bleibt somit serverseitiges JavaScript. Die Möglichkeiten bleiben hier ein wenig hinter denen des Browsers zurück, Frontend-Objekte wie "document", "form" oder "window" stehen naturgemäß im Backend nicht zur Verfügung - die internen Klassen wie beispielsweise "math" für mathematische Berechnungen hingegen sehr wohl.
Der große Vorteil gegenüber der Formelsprache ist in den komplexen Kontroll- und Datenstrukturen zu finden. Ob kopf- oder fußgesteuerte Schleifen, Funktionen, Arrays oder benutzerdefinierte Datentypen, JavaScript unterstützt alles.

Auch hier ein praktisches Beispiel: stellen Sie sich vor, Sie möchten eine HTML-Seite mit dem Kalender des aktuellen Jahres erstellen, jeweils eine Woche in einer Zeile - beispielsweise für eine Urlaubsverwaltung im Intranet.
Sie können sich nun einen Tag Zeit nehmen und diesen Kalender manuell in Frontpage oder Dreamweaver generieren - und zwar jedes Jahr neu.
Alternativ erstellen Sie in Lotus Formelsprache eine Liste mit 365 Einträgen und generieren die Tabelle über einen Funktion auf Basis dieser Liste - dauert nicht ganz so lange und lässt sich besser pflegen, ist aber zur Laufzeit langsam.
Oder Sie verwenden ein einfaches, 15zeiliges serverseitiges JavaScript (s. Abbildung), um abgeleitet aus dem heutigen Datum einen Kalender für das laufende Jahr auszugeben.
Betrachtet man Funktionsumfang JavaScripts, erkennt man leicht die Möglichkeiten für dynamische HTML-Seiten, die diese Sprache birgt - zumal selbstverständlich auch wieder inhaltsspezifische Parameter verwendet werden können.

Stellen Sie sich den gezeigten Kalender als Wochenkalender vor, der zu jeder Woche eine grafische Übersicht der im klassischen Notes-Template reservierten Ressourcen im Intranet veröffentlicht - natürlich in Ihrem Corporate Design. Oder arbeiten Sie mit URL-Parametern: lassen Sie den Anwender über ein Formular zwei Datumswerte bestimmen, und zeigen Sie ihm seinen individuellen Veranstaltungskalender mit allen Schulungen, die Sie in diesem Zeitraum anbieten - und das alles, ohne Domino zu programmieren. Denn wie bereits für die Platzhalter und das intelligente Layout gilt auch hier, dass Sie weder Designerrechte noch einen Domino Designer Client benötigen und somit der Schaden, den Sie im worst case anrichten können, begrenzt ist.
Weitere Skriptsprachen stehen zur Verfügung, um ähnliche Anforderungen abzubilden; hier ist sogar der Zugriff auf sämtliche Domino-Java-Klassen möglich.

Grenzen der Intelligenz
Bei all den Möglichkeiten darf man nicht außer acht lassen, dass die Kernkompetenz eines Web Content Management Systems immer noch die getrennte Verwaltung der Elemente Inhalt, Layout und Administration ist. Für dynamische Details innerhalb von HTML-Seiten und intelligentes Layout sind die angesprochenen Werkzeuge hervorragend geeignet; bei komplexen Applikationen gibt es immer auch sinnvole Alternativen außerhalb des Web Content Management Systems.
Logik innerhalb eines Systems machen es zudem fast automatisch anfällig für Missbrauch, beispielsweise Viren oder trojanische Pferde. So ist eine Skriptsprache, die auf die Domino-Klassen zugreifen kann und mit entsprechenden Rechten versehen ist, mit Vorsicht zu genießen - ansonsten nutzt ein findiger Anwender das Textfeld Ihres Diskussionsforums, um Ihnen ein Ei ins Nest zu legen.
Einen weiteren Faktor darf man nicht außer acht lassen: Performance. Jede Berechnung im Layout erfordert Rechenleistung, und nur, wenn das System Mechanismen zum periodischen Vorberechnen dynamischer Inhalte bietet, lassen sich tragbare Antwortzeiten realisieren.

Wie diese Beispiele zeigen, liegen die Grenzen von modernen Skriptsprachen in Kombination mit einem flexiblen Content Management System in der Regel eher in der Fantasie des Webdesigners als in den technischen Möglichkeiten. Gerade die Kombination von einfachen Systemfunktionen, Notes-spezifischen Werkzeugen wie der Formelsprache und standardisierten Skriptsprachen wie JavaScript sorgt dafür, dass sowohl dem HTML-beherrschende Notes-Entwickler als auch dem Webdesigner ein geeignetes Tool für die Realisierung seiner Anforderungen zur Verfügung steht.

Cookies erleichtern die Bereitstellung unserer Dienste. Mit Klick auf "Cookie zulassen" stimmen Sie der Nutzung unserer Dienste zu und erklären Sie sich damit einverstanden, dass wir Cookies verwenden. Hier finden Sie unsere Datenschutzerklärung

 

	object(Joomla\Registry\Registry)#52 (3) {
  ["data":protected]=>
  object(stdClass)#437 (84) {
    ["article_layout"]=>
    string(20) "uniorg:newsanpassung"
    ["show_title"]=>
    string(1) "1"
    ["link_titles"]=>
    string(1) "1"
    ["show_intro"]=>
    string(1) "1"
    ["info_block_position"]=>
    string(1) "0"
    ["show_category"]=>
    string(1) "0"
    ["link_category"]=>
    string(1) "0"
    ["show_parent_category"]=>
    string(1) "0"
    ["link_parent_category"]=>
    string(1) "0"
    ["show_author"]=>
    string(1) "0"
    ["link_author"]=>
    string(1) "0"
    ["show_create_date"]=>
    string(1) "0"
    ["show_modify_date"]=>
    string(1) "0"
    ["show_publish_date"]=>
    string(1) "1"
    ["show_item_navigation"]=>
    string(1) "0"
    ["show_vote"]=>
    string(1) "0"
    ["show_readmore"]=>
    string(1) "1"
    ["show_readmore_title"]=>
    string(1) "0"
    ["readmore_limit"]=>
    string(3) "100"
    ["show_tags"]=>
    string(1) "1"
    ["show_icons"]=>
    string(1) "0"
    ["show_print_icon"]=>
    string(1) "0"
    ["show_email_icon"]=>
    string(1) "0"
    ["show_hits"]=>
    string(1) "0"
    ["show_noauth"]=>
    string(1) "0"
    ["urls_position"]=>
    string(1) "0"
    ["show_publishing_options"]=>
    string(1) "1"
    ["show_article_options"]=>
    string(1) "1"
    ["save_history"]=>
    string(1) "0"
    ["history_limit"]=>
    int(10)
    ["show_urls_images_frontend"]=>
    string(1) "0"
    ["show_urls_images_backend"]=>
    string(1) "1"
    ["targeta"]=>
    int(0)
    ["targetb"]=>
    int(0)
    ["targetc"]=>
    int(0)
    ["float_intro"]=>
    string(4) "left"
    ["float_fulltext"]=>
    string(4) "left"
    ["category_layout"]=>
    string(6) "_:blog"
    ["show_category_heading_title_text"]=>
    string(1) "1"
    ["show_category_title"]=>
    string(1) "1"
    ["show_description"]=>
    string(1) "1"
    ["show_description_image"]=>
    string(1) "0"
    ["maxLevel"]=>
    string(1) "1"
    ["show_empty_categories"]=>
    string(1) "0"
    ["show_no_articles"]=>
    string(1) "1"
    ["show_subcat_desc"]=>
    string(1) "1"
    ["show_cat_num_articles"]=>
    string(1) "0"
    ["show_cat_tags"]=>
    string(1) "1"
    ["show_base_description"]=>
    string(1) "1"
    ["maxLevelcat"]=>
    string(2) "-1"
    ["show_empty_categories_cat"]=>
    string(1) "0"
    ["show_subcat_desc_cat"]=>
    string(1) "1"
    ["show_cat_num_articles_cat"]=>
    string(1) "1"
    ["num_leading_articles"]=>
    string(1) "1"
    ["num_intro_articles"]=>
    string(1) "7"
    ["num_columns"]=>
    string(1) "1"
    ["num_links"]=>
    string(1) "0"
    ["multi_column_order"]=>
    string(1) "0"
    ["show_subcategory_content"]=>
    string(1) "0"
    ["show_pagination_limit"]=>
    string(1) "1"
    ["filter_field"]=>
    string(4) "hide"
    ["show_headings"]=>
    string(1) "1"
    ["list_show_date"]=>
    string(1) "0"
    ["date_format"]=>
    string(0) ""
    ["list_show_hits"]=>
    string(1) "1"
    ["list_show_author"]=>
    string(1) "1"
    ["orderby_pri"]=>
    string(5) "order"
    ["orderby_sec"]=>
    string(5) "rdate"
    ["order_date"]=>
    string(9) "published"
    ["show_pagination"]=>
    string(1) "1"
    ["show_pagination_results"]=>
    string(1) "0"
    ["show_featured"]=>
    string(4) "show"
    ["show_feed_link"]=>
    string(1) "1"
    ["feed_summary"]=>
    string(1) "0"
    ["feed_show_readmore"]=>
    string(1) "0"
    ["show_page_heading"]=>
    string(1) "0"
    ["layout_type"]=>
    string(4) "blog"
    ["menu_text"]=>
    string(1) "1"
    ["page_title"]=>
    string(21) "UNIORG | Press Review"
    ["secure"]=>
    string(1) "0"
    ["page_description"]=>
    NULL
    ["page_rights"]=>
    NULL
    ["robots"]=>
    NULL
    ["page_heading"]=>
    string(21) "UNIORG | Press Review"
  }
  ["initialized":protected]=>
  bool(true)
  ["separator"]=>
  string(1) "."
}