Details
[tocbox|]Die Datei index.php eines Plugins enthält eine PHP-Klasse. Diese muss genau so benannt sein wie das Plugin-Verzeichnis.Sie muss die im Folgenden aufgeführten Funktionen enthalten, kann aber natürlich um eigene Funktionen erweitert werden.
Desweiteren kann das Plugin natürlich auch andere Dateien und Unterverzeichnisse enthalten, z.B. weitere PHP-Scripte und -Klassen, Stylesheet, Templates et cetera.
Hinweis
Dem Downloadpaket von moziloCMS liegt das DEMOPLUGIN bei, in dem man die hier aufgeführten Details sehr schön "am lebenden Objekt" nachvollziehen kann. Für offene Fragen steht natürlich auch das mozilo-Supportforum zur Verfügung.Pflicht-Funktionen
getContent($value)
Diese Funktion gibt die eigentliche Plugin-Ausgabe zurück - also das, womit zur Ausführung der Plugin-Platzhalter ersetzt wird.Der String-Parameter $value entspricht dem Wert bei erweiterten Plugin-Variablen: {Pluginname|Wert}. Ist der Plugin-Platzhalter nicht erweitert ({Pluginname}), enthält $value einen Leerstring ("").
Man kann den $value-Parameter nutzen, muss es aber nicht.
Standardmäßig ist nur ein Parameter nutzbar. Benötigt man mehrere, empfiehlt es sich, sie kommasepariert entgegenzunehmen und dann in der Pluginlogik mit der Funktion explode() wieder zu vereinzeln.
getConfig()
In moziloCMS installierte Plugins können im moziloAdmin-Reiter "Plugins" konfiguriert werden. Die dafür zur Verfügung stehenden Eingabe-Elemente (Textfelder, Auswahllisten etc.) werden nicht von Hand in HTML kodiert, sondern in der Plugin-Funktion getConfig() definiert; die Funktion gibt die Konfigurationsoptionen des Plugins als Array zurück.Soll der Benutzer Plugin-Optionen setzen können, stehen die im Folgenden aufgelisteten Eingabeelemente zur Verfügung. Verwendet werden sie als assoziative Arrays mit den dazu beschriebenen Schlüsseln.
Mit ihrem Namen als Schlüssel bilden die Arrays das assoziative Array $config, was letztlich der Rückgabewert der Funktion getConfig() ist.
Soll das Plugin keine Konfigurationsoptionen anbieten, ist das zurückgegebene Array einfach leer:
return array();
Die im moziloAdmin vom Benutzer konfigurierten Werte für ein Plugin werden beim Speichern der Plugin-Einstellungen in dessen plugin.conf geschrieben. Dabei wird der Name des Eingabeelements als Schlüssel verwendet. Beispiel: Das Textfeld heißt "texteingabe"; gibt der Benutzer "abc" ein und speichert die Plugin-Einstellungen, wird in der Pluginkonfiguration folgende Zeile angelegt bzw. überschrieben: texteingabe = abc
Verfügbare Schlüssel:
| für Elementtyp | Schlüssel | Bedeutung | mögliche Werte | Pflicht |
|---|---|---|---|---|
| alle | type | Art des Eingabe-Elements | text (einzeiliges Textfeld) textarea (mehrzeiliges Textfeld) password (Passwort-Feld) checkbox (Checkbox an/aus) radio (Radiobutton entweder/oder) select (Auswahlliste) | Pflicht für alle Eingabe-Elemente |
| alle | description | Wird im Admin als Beschreibung der Option angezeigt | beliebiger Text | Pflicht für alle Eingabe-Elemente |
| text password | maxlength | maximale Eingabelänge | Ganzzahl | optional |
| text password | size | dargestellte Zeichen | Ganzzahl | optional |
| text textarea password | regex | regulärer Ausdruck, auf den die Benutzer-Eingabe passen muss. Passt sie nicht, wird beim Speichern der Plugin-Einstellungen eine Fehlermeldung gezeigt. | regulärer Ausdruck, z.B. /^[a-z]{3}$/ | optional |
| text textarea password | regex_error | eigene Fehlermeldung für nicht auf den RegEx passende Eingaben | Text | optional |
| textarea | cols | Anzahl dargestellter Spalten | Ganzzahl | Pflicht für textarea |
| textarea | rows | Anzahl dargestellter Zeilen | Ganzzahl | Pflicht für textarea |
| password | saveasmd5 | Soll das eingegebene Passwort als MD5-Hash in der plugin.conf abgelegt werden? (Wir empfehlen das.) | true / false | Pflicht für password |
| radio select | descriptions | Beschreibungen der einzelnen Radiobutton-Elemente | Zwei Möglichkeiten
| Pflicht für radio und select |
| select | multiple | Mehrfachauswahl erlauben | true / false | optional |
Mehrsprachigkeit läßt sich auch realisieren. Dazu wird das Array $config in mehrere Sub-Arrays unterteilt, welche den Sprachcode als Namen bekommen (z.B. "deDE" oder "enEN"). Die Sprachcodes müssen genau denen der CMS-Sprachdateien entsprechen ("language_deDE.conf").
$config['deDE']['janeinoption'] = array(
"type" => "checkbox",
"description" => "Ja oder nein?"
);
$config['enEN']['janeinoption'] = array(
"type" => "checkbox",
"description" => "Yes or no?"
);
Wird moziloAdmin dann in Englisch betrieben, sind auch die Plugin-Optionen englisch - in einem auf deutsche Sprache konfigurierten moziloAdmin sind sie deutsch. Mit folgendem Konstrukt wird die Standardsprache für den Fall festgelegt, dass die im Admin konfigurierte Sprache nicht im $config-Array vorkommt: "type" => "checkbox",
"description" => "Ja oder nein?"
);
$config['enEN']['janeinoption'] = array(
"type" => "checkbox",
"description" => "Yes or no?"
);
global $ADMIN_CONF;
$language = $ADMIN_CONF->get("language");
if(isset($config[$language])) {
return $config[$language];
} else {
return $config['deDE'];
}
$language = $ADMIN_CONF->get("language");
if(isset($config[$language])) {
return $config[$language];
} else {
return $config['deDE'];
}
getInfo()
Diese Funktion gibt in einem Array die Details zum Plugin zurück. Folgende Werte müssen (in dieser Reihenfolge!) im Array vorhanden sein:- Plugin-Name (ggfs. inkl. -Version) (z.B. "FlashGalerie 1.0")
- für das Plugin benötigte moziloCMS-Version (z.B. "1.12")
- Kurzbeschreibung, Nutzungshinweise (normaler Text; erlaubt sind die HTML-Elemente <span> und <br />)
- Name des Autors (z.B. "Max Mustermann")
- Link zu Plugin-Dokumentation / Website des Autors (z.B. "http://www.mozilo.de")
- Ein assoziatives Array mit den Platzhaltern für die Auswahlliste "Plugins" in der Editieransicht und einer Kurzbeschreibung dazu. Beispiel für ein Plugin, das sowohl mit als auch ohne Parameter genutzt werden kann:
array(Sollen für das Plugin keine Platzhalter in der Auswahlliste auftauchen, muss das Array einfach leer zurückgegeben werden:
'{ZeitPlugin}' => 'Die aktuelle Uhrzeit',
'{ZeitPlugin|}' => 'Die aktuelle Uhrzeit in der angegebenen Zeitzone'
)array()
Das Info-Array kann, genau wie das Config-Array in der Funktion getConfig(), mehrsprachig zurückgegeben werden. Dabei gelten die gleichen Regeln wie beim Config-Array, siehe oben.