====== Module ====== wbs:suite:modul:module ===== Interne Struktur ===== Alle Module werden von der Klasse "core/modul/wbs_modul" abgeleitet. ==Eigenschaften== $name:string $wbs:wbsfw $modul_path $content:array $parameter:array $is_loaded:boolean $wildcards:array $tables:array $templates:array $variables:array ==Funktionen== __construct(name, path, wbs : \de\blessen\wbsfw\wbsfw):de\blessen\wbsfw\core\modul\wbs_modul db():de\blessen\wbsfw\core\db\myDB wbs():de\blessen\wbsfw\wbsfw getModulPath():string loadFrontend():void loadBackend():void loadBackendFunctions():void isLoaded():bool handshake():void createModulTables():void setParameter(key : string, value : string):void getParameter(key : string):mixed ParameterExists(key : string):bool setContent(key : string, value : string):void getContent(key : string):mixed hasContent(key : string):bool getName():string getTables() loadTables() getWildcards() loadWildcards() loadTemplates() ==== Modul anlegen ==== === Kurzfassung === $modul_name = 'modul_name'; $modul_pfad = "/modul/modul_name/"; Create "/modul/modul_name/modul_name.php"; class modul_name extends core\modul\wbs_modul {} [Create "/modul/modul_name/modul_name_constants.php";] [Create "/modul/modul_name/woerterbuch.de.php";] [Create "/modul/modul_name/woerterbuch.en.php";] Create "/modul/modul_name/modul_name_loader.php"; === Festlegen eines Modulnamens === Der Modulname muß klein geschrieben sein und darf keine Leerzeichen enthalten. $modul_name = 'modul_name'; === Entscheidung Internes Modul oder Modul === Interne Modul sind Systemmodule, die jeder Anwendung zur Verfügung stehen. Ein Beispiel ist install Interne Module haben das Modulverzeichnis $modul_pfad = "/modul_intern/modul_name/"; Alle anderen Module kommen in das Modulverzeichnis $modul_pfad = "/modul/modul_name/"; === Modulklasse anlegen === Die Klasse wird mit dem selben Namen wie das Verzeichnis als Ableitung von core\modul\wbs_modul angelegt. Beispiel: in der Datei "/modul/modul_name/modul_name.php" class modul_name extends core\modul\wbs_modul {} === Basis Eigenschaften des Moduls: === Das Modul wird mit seinem Namen, seinem Pfad $modul_pfad ( Siehe 1) und einer Instanz des wbsfw angelegt. public function __construct($name,$path,wbsfw\wbsfw $wbs){} Funktionen wbs_modul __construct(name, path, wbs : \de\blessen\wbsfw\wbsfw):de\blessen\wbsfw\core\modul\wbs_modul db():de\blessen\wbsfw\core\db\myDB wbs():de\blessen\wbsfw\wbsfw getModulPath():string loadFrontend():void loadBackend():void isLoaded():bool handshake():void setParameter(key : string, value : string):void getParameter(key : string):mixed ParameterExists(key : string):bool setContent(key : string, value : string):void getContent(key : string):mixed hasContent(key : string):bool getName():string === Einbindung === Handshake: Globale Module werden mit Komma getrennt in die Settings eingetragen, und dann geladen, dabei wird die Funktion handshake() aufgerufen, mit der zu einem sehr frühen Zeitpunkt in die Anwendung eingegriffen werden kann: (Z.B. Settings ändern) $app_modules = explode(',', $pp['ta_module']); foreach ($app_modules as $modulname) { if ($wbs->modul()->debug) shout('App Module ' . $modulname); $modulname = trim($modulname); if (!$modulname) continue; $failure = $wbs->modul()->loadModul($modulname); if (($failure)) { shout('Could not load Modul ' . $modulname . ' ' . $failure); } else { $wbs->modul()->get($modulname)->handshake(); } } Nach den globalen Modulen, werden die Module der Seite geladen, ansonsten werden die Module bei Einbindung geladen. === Laden der Module $wbs->modul()->loadModul() === Das Laden der Module geschieht in der Klasse modul() Zuerst wird automatisiert der Pfad ermittelt: [modul,module_intern,module] (Der Pfad module wird verschwinden, wenn die Module darin konvertiert wurden) Gibt es Modulkonstanten, werden diese eingebunden, Konstanten müssen in der Datei "modul_name_constants.php" liegen: if(file_exists($modul_path.$modul_name.'_constants.php')) { require_once($modul_path.$modul_name.'_constants.php'); } Gibt es ein Wörterbuch für die Übersetzung, wird es eingebunden: switch ($this->wbs->getLanguage()) { case 'en': $woerter_buch = $modul_path . 'woerterbuch.en.php'; break; case 'de': default: $woerter_buch = $modul_path . 'woerterbuch.de.php'; break; } Die Datei $modul_name.'_loader.php' muß vorhanden sein, in ihr wird eine Instanz des Modul erzeugt, die dann in die Modulcollection eingehängt werden kann. ===== Benutzung ===== Das CMS besteht aus Modulen. Für die Benutzung müssen sie in mehreren Stufen eingebunden werden. == Menü der Verwaltung== In der app_definition können Menüs oder Menüpunkte ein- und ausgeblendet werden. == Modul laden == In jeder angelegten [[cms#seiten|Seite]] können die zu ladenden Module angegeben werden. == Modul einbinden == Ein Modul wird über [[module#wildcards|Wildcards]] im [[cms#inhalt|Inhaltsbereich]] eingebunden. ===== Wildcards ===== Wildcards sind Platzhalter, die durch festgelegte Inhalte im [[cms#inhalt|Inhaltsbereich]] ersetzt werden, um daraus die Seite aufzubauen. Sie haben folgende Syntax: {{wbs}{module}MODUL} {{wbs}{module}MODUL(param1=1, param2=1, ...)} {{wbs}{module}MODUL[funktion]} Dieser modulunabhängige Typ kann auch in Templates angewendet werden: {{wbs}variable} Beispiele: {{wbs}{module}baumschule} {{wbs}{module}cms(typ=menu, parent=0, level=1, depth=2)} {{wbs}{module}baumschule[detail]} {{wbs}title}