cModule
Aus CavoxCms Wiki
Damit das Modul funktioniert, wird eine Datei mit dem Namen module.php im Modulverzeichnis benötigt. Darin wird eine Klasse mit dem Namen cModule_Mymodule, wenn das Modulverzeichnis mymodule heisst. Diese Klasse leitet von cModule ab:
class cModule_Mymodule extends cModule{
function install(){
...
}
function update($previous_version){
...
}
function func_myfunction(){
...
}
...
}
Oben: Auszug aus der Datei module.php
Für Module gelten die allgemeinen Namenskonventionen
Inhaltsverzeichnis |
Methoden
install
Wird beim ersten Verwenden des Moduls aufgerufen und muss das Erstellen der Dateisystemstruktur und Datenbanktabellen bewerkstelligen. Gibt True oder False zurück.
Ist im Modulverzeichnis eine SQL-Datei mit dem Namen „install.sql“ vorhanden, wird diese beim Installieren des Modules automatisch ausgeführt (auch wenn die Funktion install() nicht vorhanden ist). Diese SQL-Datei muss die Tabellen erstellen, wie sie in der neusten Version (Version-Feld in der Datei module.txt) des Modules, sein müssen. Wird vom System ein neues Modul gefunden, wird dieses in der aktuellen Version registriert und die install.sql-Datei ausgeführt. Es werden also keine Updates ausgeführt.
function install()
update
Wird aufgerufen wenn das Modul aktualisiert werden muss. Diese Funktion muss Routinen zum Aktualisieren des Dateisystems und der Datenbank zur aktuellen Version bereitstellen. Gibt True oder False zurück.
function update($previous_version)
Erkennt das System ein Modul in einer älteren Version als in der Datei module.txt, dann wird die update-Funktion aufgerufen. Dort müssen dann alle Datenbanktabellen auf die neue Version angepasst werden.
function update($pv){
if(cArray::isOlderVersion($pv, "1.1.0")){
...
}
if(cArray::isOlderVersion($pv, "1.2.0")){
...
}
...
}
download
function download($path, $name)
Wird eine Datei aus dem Verzeichnis /files angefordert, wird die Modulklasse geladen, und diese Methode aufgerufen.
Parameter:
- path: pfad im Verzeichnis des jeweiligen Modules
- name: Dateiname im Dateisystem
Rückgabewert:
- false, wenn kein Recht zum Download vorhanden ist
- true, wenn Recht vorhanden, Dateiname wie im Dateisystem
- string mit neuem Dateinamen wenn Recht vorhanden und neuer Dateiname für Download
Aufbau eines Modules
Verzeichnisse:
controllers
Verzeichnis mit allen Kontrollern des Modules (abgeleitete Klassen von cController).
Namensgebung: class cMymodule_Mymodel_Controller.
models
Verzeichnis mit allen Modellen des Modules (Model, abgeleitete Klassen von cObject).
Namensgebung: class cMymodule_Mymodel.
views
Template-Dateien des Modules (cView)
pages
Verzeichnis mit modulabhängigen Seiten
permissions
Zugriffsrechte für Views und Commands werden im Verzeichnis permissions/ des Modules festgelegt.
commands.txt
[picture] get=all save=pictures rotate=pictures
- all: Alle Benutzer haben Zugriff
- Statische Sektion
views.txt
[picture] form=pictures form.redirect=list
- redirect: Gibt an welcher View angezeigt werden soll, wenn keine Rechte vorhanden sind.
sections.xy.txt
Beschreibt die statischen Sektionen in jeder Sprache. xy ist dabei die Sprache.
module.php
Enthält den Code des Modules (abgeleitete Klasse von cModule).
Namensgebung: class cModule_Mymodule.
module.txt
Einstellungsdatei des Modules
version=2.1.7 server=http://www.cavoxcms.ch type=module [dependencies] [features] backend=1 [backend] name_de=System name_en=System
- version: aktuelle Version des Modules
- server: Server, wo die neuste Version heruntergeladen werden kann
- type: wird nicht benötigt (TODO)
- features
- backend: Gibt an, ob das Modul in der Administration aufgeführt werden soll
- cloneable: Gibt an, ob das Modul geklont werden kann (klonbar)
- backend: Gibt die Menübeschriftungen in der Administration an
components.txt
Mögliche Einstiegspunkte für die Kontroller-Views, auch Komponenten genannt.
lib
Falls externe Bibliotheken benötigt werden, sollten diese im Verzeichnis lib zu finden sein.
Funktionen
Einbinden einer Funktion im HTML:
[[mymodule.myfunktion]]
Die oben gezeigte Funktion ist eine Methode der Modulklasse und könnte folgendermassen aussehen:
function func_myfunktion(){
return "Hallo Welt"; // normalerweise wird ein Template zurückgegeben (siehe cTemplate)
}
