Änderungen

Wechseln zu: Navigation, Suche

Addons erstellen

3.749 Byte hinzugefügt, 09:43, 10. Okt. 2018
/* Beispiel-Code */
== Sprachsystem ==
Sie können eigene Sprachdateien für Ihr Addon nutzen.Dazu erstellen Sie im Addonverzeichnis einen Ordner ''language''.Darin nehmen Sie Sprachdateien für die gewünschten Sprache auf, zum Beispiel eine ''deutsch.php'': <source lang="php"><?php$addonlang = Array();$addonlang['NAME'] = "DSGVO";$addonlang['AV'] = "Auftragsverarbeitungs-Vertrag";</source> Die Initialisierung des Sprach-Systems muss anschließend im Konstruktor des Addons erfolgen: <source lang="php">$this->language = $language; if (!include (__DIR__ . "/language/$language.php")) { throw new ModuleException();} if (!is_array($addonlang) || !isset($addonlang["NAME"])) { throw new ModuleException();} $this->lang = $addonlang;</source> Anschließend kann eine Methode verwendet werden, um Sprachvariablen zu bekommen. Bei Verwendung des Templatesystems müssen die Sprachvariablen extra übergeben werden. <source lang="php">$this->getLang("NAME"); // Bestimmte Sprachvariable$this->getLang(); // Das komplette Sprach-Array $var['l'] = $this->getLang();</source>
== Template-Dateien ==
Sie können das Template-System sowohl für Seiten im Kundenbereich als auch in der Administration verwenden.Hierzu bietet es sich an, im Addon-Verzeichnis einen neuen Ordner ''templates'' zu erstellenZur Verwendung des Template-Systems müssen Sie in der Methode für die jeweilige Seite die Variable ''$tpl'' auf den vollständigen Pfad zum gewünschten Template setzen. Beachten Sie hierbei bitte, dass Sie diese Variable erst am Anfang der Methode per <code>global $tpl;</code> freigeben müssen.
== Hooks ==
..Mit Addons können Sie [[Hooks]] nutzen, um in Systemabläufe von sourceDESK einzugreifen und bei Events informiert zu werden.
== Widgets ==
..Es ist möglich, mit Ihrem Addon [[Widgets#Widget erstellen|eigene Widgets zu erstellen]], die dann auf der Startseite der Administration angezeigt werden können.
== Beispiel-Code ==
<source lang="php"><?php// Addon for monitoring log class LogMonitor extends Addon { public static $shortName = "log_monitor";  public function __construct($language) { $this->name = self::$shortName; parent::__construct(); $this->info = Array( 'name' => "Log-Monitor", 'version' => "1.0", 'company' => "sourceWAY.de", 'url' => "https://sourceway.de/", ); }  public function delete() { return $this->deleteDir(realpath(__DIR__)); }  public function hooks() { return Array( Array("UserLogEntry", "log", 0), ); }  public function log($params) { $user = $params['user']; $log = $params['log'];  if ($this->interestingUser($user) || $this->interestingText($log)) { Telegram::sendMessage($this->buildMsg($user, $log)); }  }  private function buildMsg($user, $log) { global $raw_cfg; if (!($user instanceof User)) { return false; }  return '<a href="' . $raw_cfg['PAGEURL'] . 'admin/?p=customers&edit=' . $user->get()['ID'] . '">' . htmlentities($user->get()['name']) . '</a>: ' . htmlentities($log); }  private function interestingUser($user) { if (!($user instanceof User)) { return false; }  $ex = explode(",", $this->options["user"]); foreach ($ex as &$v) { $v = intval(trim($v)); }  return in_array($user->get()["ID"], $ex); }  private function interestingText($log) { $log = trim($log);  $ex = explode(",", $this->options["text"]); foreach ($ex as $v) { if (strpos($log, trim($v)) !== false && !empty(trim($v))) { return true; } }  return false; }  public function getSettings() { return Array( "user" => Array("placeholder" => "1,5,7,...", "label" => "Zu &uuml;berwachende Benutzer (mehrere mit Komma trennen)", "type" => "text"), "text" => Array("placeholder" => "Domain,...", "label" => "Zu &uuml;berwachender Text (mehrere mit Komma trennen)", "type" => "text"), ); }}</source>