Sie können die Funktionalität von sourceDESK mit Addons erweitern. Diese können Seiten in Kundenbereich sowie Administration erstellen und an verschiedenen Stellen in das System eingreifen.
Dateistruktur
Ein Addon bekommt einen Ordner in modules/addons. Innerhalb dieses Ordners muss eine gleichnamige PHP-Datei mit der Endung .php angelegt werden, die eine Klasse definiert, welche von der Klasse Addon erbt.
Attribute
Jedes Addon benötigt ein String-Attribut public static $shortName, das den Namen des Addon-Verzeichnisses enthält.
Einstellungen
Sie können über die Methode getSettings() definieren, welche Einstellungen der Administrator für das Modul durchführen können soll. Ein Beispiel:
public function getSettings() { return Array( "show_warning" => Array("default" => "0", "label" => $this->getLang("SHOWW"), "type" => "checkbox"), "exclude_ips" => Array("default" => "", "label" => $this->getLang("INTERNALN"), "type" => "text", "placeholder" => $this->getLang("INTERNALNP")), ); }
Auf die definierten Einstellungen können Sie innerhalb der Addon-Klasse bspw. mit dem Aufruf $this->getOption("show_warning") zugreifen.
System-Routinen
Sie können die System-Routinen für die Aktivierung und Deaktivierung eines Addons erweitern. Beispielsweise können Sie eine Tabellen-Spalte hinzufügen und entfernen:
public function activate() { global $CFG, $db; parent::activate(); $db->query("ALTER TABLE `" . $CFG['DB']['PREFIX'] . "clients` ADD `dsgvo_av` INT(11) NOT NULL DEFAULT '0';"); } public function deactivate() { global $CFG, $db; parent::deactivate(); $db->query("ALTER TABLE `" . $CFG['DB']['PREFIX'] . "clients` REMOVE `dsgvo_av`;"); }
Wichtig ist der Aufruf der original De-/aktivierungsfunktion.
Ferner müssen Sie eine Methode definieren, wenn Sie das Löschen des Moduls aus der Administration ermöglichen möchten. Standardmäßig bietet sich folgende Methode an:
public function delete() { return $this->deleteDir(realpath(__DIR__)); }
Natürlich können Sie die Löschfunktion um beliebige Routinen erweitern. Die Löschung eines Addons ist nur im deaktivierten Zustand möglich, sodass Sie sich nicht um das Aufräumen der Datenbank kümmern müssen, wenn Sie dies bereits bei der Deaktivierung machen.
Seiten im Kundenbereich
...
Seiten in der Administration
...
Sprachsystem
...
Template-Dateien
...
Hooks
...
Widgets
...
Beispiel-Code
...