Pluginentwicklung
Aus DeDi-Help
Plugins sind Backenderweiterungen von DeDi und bringen Funktionaltät innerhalb von DeDi ein die nicht vom Core abgedeckt wird, dahingehend wurden Plugins viel Funktionalität ausgestattet.
Vorweg einiges an Begrifflichkeit.
Grundsätzlich haben wir zwei zustände von Plugins: gespeichert und installiert
Wobei ein installiertes Plugin immer auch ein gespeichertes Plugin ist
Installierte Plugins können natürlich auch deinstalliert werden, was abhöngig vom Speicherort einer Löschung gleichkommt!
Wir definieren auch zwei Speicherorte: Client (Projekt) und Store (Datenbank)
Plugins im Store sind nicht installiert sondern nur gespeichert. Plugins in einem Client sind immer installiert!
Installierte Plugins sind nur scheinbare Instanzen eines Parents im Store. In wirklichkeit gibt zu jedem installiertem Plugin nur die entsprechnden Informationen in der Datenbank, die Source das eigentliche Plugin bleibt immer gleich und wird unter 'plugins/' gespeichert!
Der Pluginname, Kennzeichnet das Verzeichnis des Plugins und ist in jedem Fall eindeutig und einmalig!
Die Source eines Plugins ist das eigentliche Herzstück, dort gibt es einiges zu finden:
- die pluginname.dediplug Datei beinhaltet alle weiterzugebenen Konfigurationsdaten eines Plugins (siehe auch Module)
- die pluginname_meta.php, ist die Steuerungsklasse für viele Funktionen
- das 'meta' Verzeichnis beinhaltet .meta Dateien die sowohl Php als auch Sql-Statements enthalten können
- das 'module' Verzeichnis beinhaltet Module die vom Plugin mitinstalliert werden
Ein Plugin kann das Backendmenü erweitern, eigene Konfiguration/Values/Langstrings/Rechte und Tabellen mitbringen!
Die Steuerung dieser Funktionalität übernimmt die pluginname_meta.php. Die Klasse ist erweiterbar und um eigene Code zu ergänzen.
Generell wird sie von DeDi in der aktuellen Version veröffentlicht.
Das gesammte Filehandlig und Verbindung zu DeDi während einer Installation/Deinstallation/Update übernimmt diese Klasse.
Ein Plugin kann in den .meta Dateien Sql-Statements oder Php verwenden um eigene Aktionen wärend der Installation/Deinstallation/Update auszuführen. Installation/Deinstallation/Update können auch Clientabhängig konfiguriert werden, so das für jeden Client eine eigene Installation gilt, generell gilt eine Plugininstallation für alle Clients!
Als SQL-Statements können auch Blöcke abgegeben werden die von DeDi einzeln abgearbeitet werden.
Einige Variablen stehen bei der Entwicklung der Statements zur Verfügung:
- {plug_client_prefix} <-> 'dedi_plug_x_' wird in beide Richtungen übersetzt
- {plug_prefix} <-> 'dedi_plug_' wird in beide Richtungen übersetzt
- {client_prefix} <-> 'client_x_' wird in beide Richtungen übersetzt
- {table_prefix} <-> 'dedi_' wird in beide Richtungen übersetzt
- {client_id} -> x wird nur in eine Richtung übersetzt
- {now} -> x wird nur in eine Richtung übersetzt
Zu den Plugins gibt es auch den Pluginmanager, der intern das entwickeln von Plugins unterstützt.
Values
Sind Werte/Parameter eines Plugins die in der dedi_value gespeichert werden, das ganze ist wie eine erweiterung der Systemeinstellung von DeDi zu verstehen. Ein Plugin kann also seine eigenen Einstellungen mitbringen und auch verwalten (unter Administration->Plugins->'Plugin konfigurieren').
Ebenfalls können dort komfortabel alle Einstellungen zu Pluginrechten und Backendmenü gepflegt werden (diese Einstellungen sind nur im Store möglich!).
Zu den Rechten gibt es noch eine erweiterung die Tage die sich auf folgendes bezieht:
Zugriffs-Rechte (in Verbindung mit dedi_access) und Area-Rechte eines Plugins area_plug_pluginname
Achtung: Änderung!
Wobei 'pluginname' der root_name des Verszeichnisses ist in dem Das Plugin gespeichert ist.
1. Unterebene der Rechte
plug_pluginname
2. Unterebene der Rechte
pluginname
Alle Einstellungen eines Plugin werden Systemweit ausgelesen und zur Verfügung gestellt im Array $pluginname_var, also ist ein übergreifendes arbeiten von Modulen und Plugins möglich.
Plugins werden als pluginname.tar Datei weitergegeben, auch ein Verzeichnisimport über Administration->Plugins->'neues Plugin erstellen'->'Verzeichnis importieren' ist möglich um ein Plugin zu importieren das selbst erstellt oder per FTP hochgeladen wurde.
Ein Plugin das per .tar Datei hochgeladen oder per Verzeichnis importiert wurde wird immer im Store gespeichert!
....................
Änderungen/Erweiterungen sind vorbehalten. Das ist nur eine vorläufige Dokumentation!
Die gesammte Entwicklung/Erweiterung ist nicht abgeschlossen und befindet sich teilweise in der jetzigen Beta im Test, abweichungen sind BUGS!
Einige Teilbereiche werden erst zur folgenden Beta/Final freigeschaltet und sind somit noch nicht zugänglich (Stichwort: Plugin-Manager, Online-Repository).
Gruss, STam