Module definieren die einzelnen Funktionen des Programmes.
Sie sind die Grundlage dafür, dass Babesk flexibel und erweiterbar ist.
Die Module sind hierarchisch angeordnet, also als Baum.
Abgebildet wird der Baum auf zwei Wegen;
Einerseits in der Datenbank in der Tabelle "Modules",
andererseits im Sourcecode direkt als Klassen-Hierarchie.
Ausgehend von root, dem Anfang des Baumes, werden die Module in
"Subprograms", Unterprogramme, unterteilt.
Diese sind Codetechnisch voneinander getrennt und werden normalerweise benutzt
um unterschiedliche Oberflächen (Administrator-, Weboberfläche) zu erstellen.
Dann erst kommt die eigentliche Modulaufteilung in der Datenbank.
Module können beliebig tief verschachtelt werden. Ein Modul das unter einem
anderen Modul steht, ist eine Unterfunktion dessen. "Mahlzeiten hinzufügen"
würde man als Untermodul von "Mahlzeiten" definieren können.
Die Klasse "Module" definiert die Grundlagen eines Modules. Von diesem erben
alle Module, die kein Modul über sich haben (Auch Headmodules genannt). Die
Untermodule erben von ihrem jeweiligen Übermodul. Dies erlaubt den Modulen,
Funktionalität für alle ihre Untermodule bereitzustellen.
HINWEIS
Die jeweiligen Untermodule müssen von ihren übergeordneten Modulen erben,
sonst kann das Programm sie nicht finden und bricht mit einem Fehler die
Ausführung ab.
Ausgeführt werden die Module normalerweise, indem man entweder per GET oder
POST der Variablen "module" den Modulpfad zuweist.
Getrennt werden die Einzelnen Level mit "|". Sie beginnen mit dem Subprogram.
Auf Groß/Kleinschreibung wird geachtet.
Beispiel:
example.com/index.php?module=administrator|Babesk|Meals|AddMeal
Das Hinzufügen des Subprograms am Anfang dient momentan noch keinen
praktischen Zweck, was sich aber in zukünftig ändern wird.
Die erste Ebene ist der root, von dem alles ausgeht;
Er darf nicht verändert werden und muss immer "root" heißen.
Die zweite Ebene sind Subprograms; Sie sind Codetechnisch voneinander
getrennt. Beispiel: Web-Bereich und Administrator-Bereich.
Die dritte Ebene sind Headmodules (Kopfmodule).
Hier werden die eigentlichen Programme definiert, wie zum Beispiel das
Bargeldlose Bestellsystem oder das Kurswahlsystem.
Jedes Headmodule muss eine eigene Klasse sein, die von der Klasse HeadModule
erbt.
Die vierte Ebene besteht aus Modules (Module).
Auf sie werden die Aufgaben eines Headmodules feingradiger verteilt.
Beispielsweise wird das Bestellsystem in "bestellte Mahlzeiten anzeigen"
und "Bestellen" unterschieden.
Jedes Module muss eine eigene Klasse sein, die von der Klasse Module erbt.
Die fünfte und tiefere Ebenen sind Submodules (Untermodule).
Hier wird die Funktionalität des Modules noch weiter unterteilt.
Diese dienen dazu, dem Modul zu vermitteln was es genau tun soll,
zum Beispiel "Zeige Bestätigungsdialog an".
Sie zu verarbeiten ist die Aufgabe des Modules, somit benötigen die keine
eigene Klasse.
Wenn man ein Modul nicht sieht oder keinen Zugriff drauf hat, ist es entweder
Weitere Probleme beim Ausführen eines Modules können enstehen wenn