Addons erstellen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche

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.

Addon-Informationen

Ihr Addon benötigt einen Konstruktor, der die aktuelle Sprache als Attribut nimmt. Der Konstruktor muss einige Infos zum Addon setzen, die in der Administration in der Addon-Verwaltung angezeigt werden:

public function __construct($language) {
    $this->name = self::$shortName;
    parent::__construct();
 
    $this->info = Array(
        'name' => "Modul-Name",
        'version' => "1.0",
        'company' => "sourceWAY.de",
        'url' => "https://sourceway.de/",
    );
}

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

Ihr Addon kann neue Seiten im Kundenbereich erstellen. Hierzu müssen die zu erstellenden Seite von der Methode clientPages() zurückgegeben werden. Hier muss auch definiert werden, welche Methode einen Aufruf behandeln soll:

public function clientPages() {
	return Array("dsgvo" => "displayClientPage");
}

Die Methode könnte dann zum Beispiel so aussehen:

public function displayClientPage() {
    global $pars, $title, $tpl, $var, $lang;
 
    switch ($pars[0]) {
        case 'av':
            $title = $this->getLang("AV");
            $tpl = __DIR__ . "/templates/av.tpl";
            $var['av'] = false;
            break;
 
        default:
            $title = $lang['ERROR']['TITLE'];
            $tpl = "error";
            break;
    }
}

Seiten in der Administration

Auch in der Administration kann ein Addon neue Seiten erstellen:

public function adminPages() {
	return Array("oauth2config" => "admin");
}

Sie können sehr einfach Einträge in das "Addons"-Menü hinzufügen, hierzu ist die Angabe des Link-Namens und der Ziel-Seite erforderlich:

public function adminMenu() {
	return Array("OAuth2" => "oauth2config");
}

Sprachsystem

...

Template-Dateien

...

Hooks

...

Widgets

...

Beispiel-Code

...