Sehr “alpha” im Moment (28.12.2006).
Ein kleines Beispiel, wie ich mir das denke, ist das Modul under_construction.
An die Funktionen wird keinerlei Request-String übergeben. Die einzelnen Funktionen sollten $_REQUEST selbst auslesen.
$type ist eine der möglichen Arten des Contents, definiert durch die entsprechenden Konstanten. Die Funktion muß von einem Modul überschrieben werden. Wenn das Modul keinen Content erzeugt sollte eine Fehlermeldung kommen (die (”irgendwas”)). Wird aufgerufen mit unterschiedlichen Werten, die aussagen, was grade verlangt wird. Diese Funktion schreibt direkt, sollte also print- oder echo-Anweisungen enthalten.
Diese Funktion liefert den Inhalt für das entsprechende Modul im Admin-Bereich zurück. Sie muß von einem Modul überschrieben werden.
Diese Funktion wird aufgerufen, bevor die entsprechende Admin-Seite erstellt wird. Dient dazu, xajax-Anweisungen zu übermitteln. Da die Hauptklasse eine Möglichkeit bietet, xajax einzubetten, sollte das genutzt werden und der Parametername $CMSxajax sollte verwendet werden. Eine typische Verwendung ist:
function xajaxSettings( &$CMSxajax ){ global $CMS_DIRECTORIES; $CMSxajax->setRequestURI("../".$CMS_DIRECTORIES['modules']."/mein_modul/xajax.request.php"); if (file_exists("../".$CMS_DIRECTORIES['modules']."/mein_modul/xajax.request.php")){ require_once "../".$CMS_DIRECTORIES['modules']."/mein_modul/xajax.request.php"; } else { die ("xajax-File for module is missing!"); } }
Wenn ein Modul diese Funktion nicht überschreibt setzt diese Funktion $CMSxajax auf null und es wird kein xajax verwendet.
Setzt den Klartext-Namen des Moduls.
Setzt den Pfad zu einem Icon, was für das Modul im Admin-Bereich angezeigt wird. Wenn das nicht vorhanden ist (oder auf ““ gesetzt wird, wird eine default-Grafik angezeigt).
Setzt die Art des Inhalts, den das Modul erzeugt. Sollte eine der entsprechenden Konstanten sein. (hier ist noch lange nicht alles fertig...)
Setzt eine ausführlichere Beschreibung des Moduls. Wird momentan im title-Tag im Admin-Bereich untergebracht, besser wäre es in einem Info-Feld. Sowas kommt später...
Liefert den Klartext-Modulnamen.
Gibt die Art des Inhalts zurück.
Liefert die beschreibung des Moduls.
Liefert den Pfad zum Icon des Moduls.
<?php /** * Diese Klasse bildet die Grundklasse für alle Module */ abstract class CMSmodule { /** * Diese Variable speichert den Namen des Moduls. * @var string */ private $_moduleName; /** * Diese Variable speichert, ob das Modul Inhalt (1) erzeugt oder nur in einer Sidebar aufgerufen wird (2), oder ob es beides kann (3). * Dazu gibt es die drei Konstanten * * MODULE_CONTENT_ONLY * MODULES_SIDEBAR_ONLY * MODULES_CONTENT_AND_SIDEBAR * * @var integer */ private $_kindOfContent; /** * Diese Variable speichert den Pfad zu einem Icon, dass im Admin-bereich angezeigt wird. * * @var string */ private $_iconPath; /** * Diese Funktion erzeugt den Inhalt der Datei. Sollte von der Modul-Klasse überschrieben werden. * * * @params Art des Inhalts * @return string */ private $_description; abstract public function generateContent ($type); abstract public function generateAdminContent (); public function xajaxSettings(&$obj){ $obj = null; } final protected function setIconPath ($path){ $this->_iconPath = $path; } final public function getIconPath (){ return $this->_iconPath; } final protected function setModuleName ($name){ $this->_moduleName = $name; } final public function getModuleName (){ return $this->_moduleName; } final protected function setKindOfContent ($kind){ $this->_kinfOfContent = $kind; } final public function getKindOfContent () { return $this->_kindOfContent; } final protected function setDescription ($desc) { $this->_description = $desc; } final public function getDescription(){ return $this->_description; } } ?>