cModule

Aus CavoxCms Wiki

Wechseln zu: Navigation, Suche

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)
}

Links

Persönliche Werkzeuge