Addons erstellen: Unterschied zwischen den Versionen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche
(Seiten im Kundenbereich)
(Seiten in der Administration)
Zeile 83: Zeile 83:
  
 
== Seiten in der Administration ==
 
== Seiten in der Administration ==
...
+
Auch in der Administration kann ein Addon neue Seiten erstellen:
 +
 
 +
<source lang="php">
 +
public function adminPages() {
 +
return Array("oauth2config" => "admin");
 +
}
 +
</source>
 +
 
 +
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:
 +
 
 +
<source lang="php">
 +
public function adminMenu() {
 +
return Array("OAuth2" => "oauth2config");
 +
}
 +
</source>
  
 
== Sprachsystem ==
 
== Sprachsystem ==

Version vom 10. Oktober 2018, 09:34 Uhr

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

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

...