Beispielmodul (Hello World)

Der Tradition zahlreicher Programmierhandbücher folgend, werden die Grundlagen zur Erstellung eigener Module anhand eines Hello World Moduls vorgestellt. Das Modul erfüllt keinen grossen Zweck. Es stellt im Backend lediglich ein Textfeld für eine kurze Mitteilung bereit, welche dann im Frontend ausgegeben wird. Als Standardtext wird Hello world ausgegeben.

Hello World als Seitenmodul (page module) 

Eine aktuelle Version des Hello World Moduls kann von der Addons Seite heruntergeladen werden.

Alle im Modularchiv enthaltenen Dateien enthalten Kommentare, die den Sinn der jeweiligen Datei und die verwendeten Variablen und Funktionen erläutern (Englisch). Es werden alle wichtigen Aspekte angesprochen, von der Kommunikation mit der WB Datenbank, über die Verwendung externer CSS Stylesheets oder Javascript Dateien, bis hin zu Mehrsprachigkeit. Wo nötig werden Aspekte zum Absichern des Moduls gegen SQL-Injection und XSS Angriffe erläutert.

Datei: add.php

Die Datei add.php wird beim Hinzufügen einer neuen Seite/Abschnitt vom Typ: Hello world module aufgerufen. Die Datei fügt eine neuen Datensatz zur Tabelle: mod_helloworld mit den Feldern PAGE_ID und SECTION_ID hinzu.

Datei: delete.php

Diese Datei wird automatisch beim Löschen einer Seite/Abschnitt über das WB-Backend: Erweiterungen -> Seiten -> Seite löschen -> Entfernen aufgerufen. Die Datei entfernt den Eintrag der zu löschenden Seite aus der Tabelle: mod_helloworld.

Datei: index.php

Die Datei index.php verhindert die Anzeige der im Modulordner enthaltenen Dateien und Verzeichnisse bei schlecht konfigurierten Servern. Gibt eine Benutzer die URL: http://domain.de/module/helloworld ein, wird er automatisch zur Startseite von WB umgeleitet. Die Kenntniss der Ordnerinhalte ist der erste Schritt um eventuelle Sicherheitslücken aufzuspüren.

Datei: info.php

Hier werden die von WebsiteBaker benötigten Informationen, wie z.B. Speicherort, Modulname etc. gespeichert. Diese Datei sollte auch für die Protokollierung von Moduländerungen genutzt werden (siehe Datei selbst).

Datei: install.php

Diese Datei wird automatisch beim Installieren über das WB-Backend: Erweiterungen -> Module -> Modul Installieren aufgerufen. Die Datei erstellt die DB-Tabelle: mod_helloworld, für die Speicherung des Ausgabetextes und fügt Einträge zur WB Suchtabelle (search) hinzu. Die Einträge in der Suchtabelle ermöglichen es, Informationen in mod_helloworld in die Suche einzubinden und anzeigen zu lassen.

Datei: modify.php

Die Datei wird beim Anzeigen einer Seite vom Typ: Hello world im Backend aufgerufen. Die Datei enthält alle relevanten Modulfunktionen für das Backend. Die möglichen Eingaben und Einstellungen eines Moduls werden über die modify.php dem Anwender zur Verfügung gestellt.

Im Hello World Beispielmodul wird ein HTML-Formular mit einem Textfeld und den Schaltflächen: Speichern und Abbrechen bereitgestellt. Für die Formatierung der im Formular enthaltenen Tabelle werden CSS-Angaben aus der Datei backend.css verwendet.

Alle Überschriften, Texte und HTML-Elementbeschriftungen werden abhängig von der Spracheinstellung des gerade angemeldeten Benutzers (Backend: Einstellungen -> Sprache) ausgegeben. Das Modul unterstützt Deutsch und Englisch (Standard). Ein Klick auf Abbrechen führt den Benutzer zur Seitenansicht zurück. Ein Klick auf Speichern ruft die Datei save.php auf, welche die HTML-Formularangaben filtert und in die Datenbank schreibt.

Zusätzlich wird noch ein Textlink angezeigt, der über die onClick Methode eine externe Funktion aus der backend.js Datei aufruft um den im Backend angezeigten Namen des Benutzer in einer Messagebox auszugeben.

Datei: save.php

Die Datei save.php wird nach Klick auf Speichern von der Datei modify.php aufgerufen. Die Datei nimmt die per POST übergebenen Variable $simple_output entgegen, entfernt alle möglichen HTML, Javascript und PHP Tags und maskiert Sonderzeichen mittels \ um SQL-Injections zu vermeiden. Der so aufbereitete Text wird dann in das Feld simple_output der Modultabelle: mod_helloworld geschrieben. Nach Ausgabe einer Statusmeldung wird der Benutzer zur modify.php Seite weitergeleitet.

Datei: uninstall.php

Diese Datei wird automatisch beim Löschen eines Moduls über das WB-Backend: Erweiterungen -> Module -> Module deinstallieren aufgerufen. Die Datei löscht die DB-Tabelle: mod_helloworld und entfernt die Hello World Sucheinträge aus der WB-Tabelle search.

Datei: view.php

Die Datei wird beim Anzeigen einer Seite vom Typ: Hello world im Frontend aufgerufen. Die Datei enthält alle relevanten Modulfunktionen für das Frontend.

Die view.php des Beispielmoduls gibt den in der Datenbank gespeicherte Ausgabetext aus. Für die Formatierung des Ausgabetextes werden CSS-Angaben aus der Datei frontend.css verwendet. Sämtliche Textausgaben erfolgen abhängig von der Spracheinstellung der angezeigten Seite (Backend: Seiten -> Eigenschaften -> Sprache). Das Modul unterstützt Deutsch und Englisch (Standard). Zusätzlich wird noch ein Textlink angezeigt, der über die onClick Methode eine externe Funktion aus der frontend.js Datei aufruft.

Dateien: frontend.css / frontend.js

Die optionalen Dateien frontend.css und frontend.js können CSS-Anweisungen und Javascriptfunktionen für die Anzeige in der Datei view.php bereitstellen.

Seit WebsiteBaker v2.6.6 können diese Dateien automatisch in den HEAD Bereich der HTML-Seite geladen werden. Somit ist es möglich, externe CSS Anweisungen für Module zu verwenden und trotzdem validen (X)HTML Code zu erzeugen. In allen vorherigen WebsiteBaker Versionen wurden CSS Anweisungen in den BODY eingefügt, was ungültigen (X)HTML Code erzeugt.

Um eventuell vorhandene frontend.css und frontend.js Moduldateien automatisch in den HEAD Bereich zu linken, muss in der index.php des Templates folgender PHP-Code hinzugefügt werden.

<head>
...
<?php
if(function_exists('register_frontend_modfiles')) {
  register_frontend_modfiles('css');
  register_frontend_modfiles('js');
} ?>
</head>

Dateien: backend.css / backend.js

Die optionalen Dateien backend.css und backend.js können CSS-Anweisungen und Javascript Funktionen für die Anzeige in der Datei modify.php (Seitenmodule) und tool.php (Verwaltungsmodule) bereitstellen.

Die beiden Dateien werden seit WB v2.6.6 automatisch in den HEAD Bereich der HTML Seiten gelinkt. Es sind keine weiteren Einstellungen nötig.

Beispiel Modul: Verwaltungsprogramme (tools)

Die grundlegenden Mechanismen zum Erstellen eigener Module wurden anhand des Hello World Moduls vorgestellt. Für Verwaltungsprogramme gibt es derzeit noch kein Hello World Modul.

Eine gute Grundlage für eigene Versuche ist das Verwaltungsmodul: User Stats von der Addons-Seite. Diese Modul gibt eine Liste der in WebsiteBaker regestrierten Benutzer als Tabelle aus. Für jeden Benutzer wird der Benutzername, das Datum des letzen Logins, die Anzahl inaktiver Tage und die Emailadresse ausgegeben. Alle Textausgaben können über Sprachdateien festgelegt werden. Das Modul enthält Sprachdateien für Deutsch und Englisch (Standard).

Die externen Moduldateien: backend.css und backend.js werden nicht verwendet.

Beispiel Modul: Zusatzfunktionen (snippets)

Für Zusatzfunktionen gibt es derzeit noch kein Hello World Modul.

Eine gute Grundlage für eigene Versuche ist das Any News Snippet von der Addons-Seite. Diese Modul stellt die Funktion display_news_items() zur Verfügung. Die Funktion erlaubt die Anzeige von Nachrichten über eine Seite des Typs Code oder über die index.php Datei des Templates. Über zahlreiche Parameter kann die Ausgabe der Nachrichten verändert werden. Das Modul enthält eine README Datei mit weiteren Informationen. 

Bitte beachten:
Für Zusatzfunktionen (code snippets) stehen die optionalen Dateien frontend.css, frontend.js, backend.css und backend.js nicht zur Verfügung!!

Viel Spass bei der Erstellung von eigenen Modulen wünscht das WB-Team.