Settings im Adminbereich
1. Definition
Für ein Plug-in kann eine Vielzahl von Einstellungen im Adminbereich definiert werden. Für die Definition ist die getConfig() Funktion zuständig. Um eine einfach Texteingabe zu ermöglichen benötigen wir folgendes:function getConfig() {
$config = array();
$config['text'] = array(
"type" => "text",
"description" => "Allgemeine Textausgabe."
);
return $config;
}
Im Adminbereich sieht dies dann wie folgt aus:
In Zeile 3 legen wir mit $config['text'] fest wie diese Einstellung heißen soll. Da Name muss innerhalb des Plug-in eindeutig sein. Diesem weisen wir jetzt ein Array mit den Darstellungseigenschaften zu. Um jetzt, innerhalb des Plug-ins, auf den Wert von text zugreifen zu können verwenden wir die Settings Variable der Plug-in Basisklasse:
function getContent($value) {
$default = array('Text' => "Kein Text übergeben,", 'Farbe' => "000000");
$values = $this->makeUserParaArray($value,$default);
return '<div class="DemoPlugin">'.$this->settings->get("text").' <span style="color:#'.$values['Farbe'].'">'.$values['Text'].'</span></div>';
}
Interessant ist hier die Zeile 4, $this->settings->get("text").
2. Mögliche Darstellungseigenschaften
Die folgenden Darstellungseigenschaften werden unterstützt:Eigenschaft | für Elementtyp | Bedeutung | mögliche Werte | Pflicht |
---|---|---|---|---|
type | alle | Art des Eingabe-Elements |
| ja |
description | alle | Wird im Admin als Beschreibung der Einstellung angezeigt | Text (auch HTML) | ja |
maxlength | text,password | maximale Eingabelänge | Ganzzahl | nein |
size | text,password | dargestellte Zeichen | Ganzzahl | nein |
regex | text,textarea,password | regulärer Ausdruck, auf den die Benutzer-Eingabe passen muss. Passt sie nicht, wird beim Speichern der Plug-in-Einstellungen eine Fehlermeldung gezeigt. | regulärer Ausdruck | nein |
regex_error | text,textarea,password | eigene Fehlermeldung für nicht auf den RegEx passende Eingaben | Text | nein |
cols | textarea | Anzahl dargestellter Spalten | Ganzzahl | ja |
rows | textarea | Anzahl dargestellter Zeilen | Ganzzahl | ja |
saveasmd5 | password | Soll das eingegebene Passwort als MD5-Hash in der plugin.conf abgelegt werden? |
| ja |
descriptions | radio,select | Beschreibungen der einzelnen Radiobutton/Selection-Elemente |
| ja |
multiple | select | Mehrfachauswahl erlauben |
| nein |
3. Template
Die Darstellung der einzelnen Eigenschaften lässt sich auch beeinflussen. Dazu gibt es die Eigenschaft template:$config['myTextarea'] = array(
"type" => "textarea",
"rows" => "3",
"description" => "Beschreibungstext für myTextarea",
"template" => "{myTextarea_description}<br />{myTextarea_textarea}"
);
Zur Verfügung stehen hier die zwei Platzhalter {Name_description} für den Beschreibungstext und {Name_type} für das jeweilige Eingabeelement. Mit:
$config['myTextarea'] = array(
"type" => "textarea",
"rows" => "3",
"description" => "Beschreibungstext für myTextarea",
"template" => "template_test"
);
werden im Plug-in Bereich die beiden Platzhalternamen ausgegeben.
4. Button - eigenes Fenster
Benötigt man mehr als diese Einstellungen, kann auch eine komplett eigene Einstellungsseite erstellt werden. Dazu wird folgendes Darstellungselement angelegt:$config["--admin~~"] = array(
"buttontext" => "weitere Einstellung",
"description" => "zusätzliche Einstellungsmöglichkeiten",
"datei_admin" => "admin.php"
);
Beim Klick auf den Button erscheint ein JavaScript Fenster (ähnlich dem Inhaltsseiten bearbeiten Fenster). Den Inhalt dieses Fensters kann man frei gestalten. In unserem Beispiel benötigen wir dafür die Datei admin.php im selben Verzeichnis wie die index.php von unserem Plug-in. Als grundsätzlicher Aufbau empfiehlt sich folgendes:
<?php if(!defined('IS_ADMIN') or !IS_ADMIN) die();
$DemoPlugin_Admin = new DemoPlugin_Admin($plugin);
return $DemoPlugin_Admin->out();
class DemoPlugin_Admin extends DemoPlugin {
private $a_settings;
private $self_url;
function __construct($plugin) {
$this->a_settings = $plugin->settings;
$this->self_url = $plugin->PLUGIN_SELF_URL;
}
function out() {
$html = 'DemoAdminFenster des DemoPlugin';
$html .= '<br />'.$this->self_url;
return $html;
}
}
?>