Plugin erstellen

 

Wie wird ein Plugin ausgelesen

Plugins müssen immer unter bin/page/integrity/plugins/<meinPluginName> definiert werden.
Beim ersten Initialisieren des Objekts werden über die Funktion get_scripts() innerhalb von lib/page/functions.php alle benötigten Javascript Files mit dem Namen plugin.js ausgelesen und in das Frame geladen.

Innerhalb von lib/base werden in der Ego_Integrity.php alle plugin.php Dateien ausgelesen.

Die typische Hierarchie lautet wie folgt:

  • bin/page/integrity/plugins/<meinPluginName>
    • bin/page/integrity/plugins/<meinPluginName>/plugin.js
    • bin/page/integrity/plugins/<meinPluginName>/plugin.php

Bildschirmfoto vom 2020-03-13 14-27-25

Plugin.php

die Class Extension befindet sich immer innerhalb eines Namespaces mit dem Namen Integrity. Aus diesem Grund muss am Anfang immer das Namespace Integrity definiert werden.

Bildschirmfoto vom 2020-03-13 14-52-55

Der nächste Schritt wäre es, seine Klasse zu definieren.

wb_incandescent

Wichtig hierbei ist es, dass der Anfangsbuchstabe der Klasse immer groß ist und dem Parent Verzeichnis entspricht.
Ebenfalls zu beachten ist es, dass man aus seinem Namespace hinausgehen muss um die Ego_Integrity erweitern zu können. Gleichzeitg muss das auch für Methoden der Ego_System Klasse gemacht werden, da diese außerhalb des Namespaces  Integrity ist.

Innerhalb der Ego_Integrity.php werden alle plugin Dateien durchgegangen und innerhalb dessen die Methode fix() ausgeführt. Deshalb muss auch hier die Methode fix() heißen.
Existiert innerhalb des Pugins keine fix() Methode, so wird logischerweiße eine "Call to undefined method" Exception geworfen.

Bildschirmfoto vom 2020-03-13 15-05-04

Innerhalb der fix Methode kann nun die Prüfung erfolgen.

wb_incandescent

Diese Methode liefert kein Return Value, da diese eine Erweiterung der Ego_Integrity ist. Stattdessen wird über self::$errors[] die Variable der Ego_Integrity Klasse gefüllt.

Bildschirmfoto vom 2020-03-13 15-08-19
Key Priorität Beschreibung
orient wichtig Die Orientierung in dem der Block existiert
index wichtig Der Index in dem der Block existiert
key wichtig Der Name des Blocks
plugin wichtig Dies ist die zu aufrufende Javascript Funktion
autofix nicht wichtig

true => wird als Warnung behandelt
false | nicht gesetzt => wird als Hinweis behandelt

Plugin.js

Innerhalb der plugin.js muss man die addPlugin Funktion aufrufen.
Die addPlugin erwartet 2 Parameter.
Parameter 1 ist der Name der Javascript Funktion welche über den Parameter "plugin" aufgerufen wird. Deswegen ist es auch wichtig das die Bezeichnung hier identisch ist.
Parameter 2 ist die zu ausführende Funktion.

Bildschirmfoto vom 2020-03-13 15-20-47

Nach der Definierung der add_Plugin, müssen mindestens 3 Funktionen mit folgenden Namen hinzugefügt werden.

Bildschirmfoto vom 2020-03-13 15-30-44

this.fix

In der this.fix Funktion wird logischerweiße der erhaltene Fehler behoben. Das korrigierte Node muss immer zurückgeliefert werden!

error:
der zu behebende Fehler. Dieser wird automatisch übergeben, weshalb jener immer definiert werden muss

fix_contentpan:
fix_contentpan ist das Dojo Contentpane von dem der korrigierte Wert für den Fix entnommen werden muss. Definieren muss man ihn, einsetzen wiederum nicht.

Bildschirmfoto vom 2020-03-13 15-55-10

this.getErrorString

Hier wird der Text definiert welcher im Integritätsprüfer Dialog angezeigt werden soll.
Es kann ebenfalls error übergeben werden, um beispielsweiße den Text mit den Parametern zu erweitern.
Es muss ebenfalls ein String zurückgeliefert werden.

Bildschirmfoto vom 2020-03-13 15-56-38

 

this.createInput

Innerhalb der Funktion wird das entsprechende Input Feld zum eintragen des neuen Wertes festgelegt.

fix_contentpan:
Das Dojo Contentpan in dem das Input Feld geladen wird

error:
falls nötig, kann dies ebenfalls definiert werden.

Bildschirmfoto vom 2020-03-13 15-57-05