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:

  1. function getConfig() {
  2.     $config = array();
  3.     $config['text'] = array(
  4.             "type" => "text",
  5.             "description" => "Allgemeine Textausgabe."
  6.     );        
  7.     return $config;
  8. }

Im Adminbereich sieht dies dann wie folgt aus:
Bild "Mozilo Plug-in Tutorial:DemoPluginSettingsText.png"

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:

  1. function getContent($value) {
  2.     $default = array('Text' => "Kein Text übergeben,", 'Farbe' => "000000");
  3.     $values = $this->makeUserParaArray($value,$default);
  4.     return '<div class="DemoPlugin">'.$this->settings->get("text").' <span style="color:#'.$values['Farbe'].'">'.$values['Text'].'</span></div>';
  5. }

Interessant ist hier die Zeile 4, $this->settings->get("text").

2. Mögliche Darstellungseigenschaften

Die folgenden Darstellungseigenschaften werden unterstützt:
Eigenschaftfür ElementtypBedeutungmögliche WertePflicht  
typealleArt des Eingabe-Elements
  • text (einzeiliges Textfeld)
  • textarea (mehrzeiliges Textfeld)
  • password (Passwort-Feld)
  • checkbox (Checkbox an/aus)
  • radio (Radiobutton entweder/oder)
  • select (Auswahlliste)
ja
descriptionalleWird im Admin als Beschreibung der Einstellung angezeigtText (auch HTML)ja
maxlengthtext,passwordmaximale EingabelängeGanzzahlnein
sizetext,passworddargestellte ZeichenGanzzahlnein
regextext,textarea,passwordregulärer Ausdruck, auf den die Benutzer-Eingabe passen muss. Passt sie nicht, wird beim Speichern der Plug-in-Einstellungen eine Fehlermeldung gezeigt. regulärer Ausdrucknein
regex_errortext,textarea,passwordeigene Fehlermeldung für nicht auf den RegEx passende EingabenTextnein
colstextareaAnzahl dargestellter SpaltenGanzzahlja
rowstextareaAnzahl dargestellter ZeilenGanzzahlja
saveasmd5passwordSoll das eingegebene Passwort als MD5-Hash in der plugin.conf abgelegt werden?
  • true
  • false
ja
descriptionsradio,selectBeschreibungen der einzelnen Radiobutton/Selection-Elemente
  • Einfaches Array:
        "descriptions" => array(
            "blau",
            "rot",
            "gruen"
        )
    (Die angezeigten Werte entsprechen dem Wert, der in die plugin.conf geschrieben wird.)
  • Assoziatives Array:
        "descriptions" => array(
            "blau" => "Blau",
            "rot" => "Rot",
            "gruen" => "Grün"
        )
    (Angezeigt wird "Grün", in die plugin.conf gespeichert wird "gruen".
ja
multipleselectMehrfachauswahl erlauben
  • true
  • false
nein

3. Template

Die Darstellung der einzelnen Eigenschaften lässt sich auch beeinflussen. Dazu gibt es die Eigenschaft template:

  1. $config['myTextarea']  = array(
  2.     "type" => "textarea",
  3.     "rows" => "3",
  4.     "description" => "Beschreibungstext für myTextarea",
  5.     "template" => "{myTextarea_description}<br />{myTextarea_textarea}"
  6. );

Zur Verfügung stehen hier die zwei Platzhalter {Name_description} für den Beschreibungstext und {Name_type} für das jeweilige Eingabeelement. Mit:

  1. $config['myTextarea']  = array(
  2.     "type" => "textarea",
  3.     "rows" => "3",
  4.     "description" => "Beschreibungstext für myTextarea",
  5.     "template" => "template_test"
  6. );

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:

  1. $config["--admin~~"] = array(
  2.     "buttontext" => "weitere Einstellung",
  3.     "description" => "zusätzliche Einstellungsmöglichkeiten",
  4.     "datei_admin" => "admin.php"
  5. );

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:

  1. <?php if(!defined('IS_ADMIN') or !IS_ADMIN) die();
  2.  
  3. $DemoPlugin_Admin = new DemoPlugin_Admin($plugin);
  4. return $DemoPlugin_Admin->out();
  5. class DemoPlugin_Admin extends DemoPlugin {
  6.  
  7.     private $a_settings;
  8.     private $self_url;
  9.  
  10.     function __construct($plugin) {
  11.         $this->a_settings = $plugin->settings;
  12.         $this->self_url = $plugin->PLUGIN_SELF_URL;
  13.     }    
  14.  
  15.     function out() {
  16.         $html  = 'DemoAdminFenster des DemoPlugin';
  17.         $html .= '<br />'.$this->self_url;
  18.         return $html;
  19.     }
  20. }
  21. ?>

5. Komplette Sourcen des DemoPlugin

Download