CMS - Der Dirigent » Entwicklung » DeDi-Entwicklung

Neue Umfrage | neues Thema | Antworten

Pluginentwicklung, Beschreibung der Funktionalität 'Plugin'

« Älteres Thema | Neueres Thema » Thema abonnieren | Thema versenden | Thema drucken

STam
  Geschrieben am: 07. Mar 2004 - 14:15


freelancer


Gruppe: Members
Beiträge: 1285
Mitgliedsnummer: 173
Mitglied seit: 03. Jun 2003


Hier eine vorab Doku

(alle Angaben gelten als Ergänzung/Änderung zur Admin-Doku, wenn nicht anders beschrieben)

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 laugh.gif

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
{client_id} -> x wird nur in eine Richtung übersetzt
{now} -> x wird nur in eine Richtung übersetzt
ALTER TABLE dedi_
ALTER TABLE `dedi_
DELETE FROM dedi_!
DELETE FROM `dedi_!
UPDATE dedi_!
UPDATE `dedi_!
REPAIR TABLE `dedi_!
OPTIMIZE TABLE `dedi_!
DROP TABLE IF EXISTS dedi_!
CREATE TABLE dedi_!
CREATE TABLE `dedi_!
INSERT INTO `dedi_!
INSERT INTO dedi_!
wird alles durch den entsprechenden Befehl & dem aktuellen DeDi_Prefix ersetzt.

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


Achtung: der Pluginmanager ist noch nicht ganz implementiert!

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

--------------------

... to watch out for sefrengo.de
Top    
KnudS
Geschrieben am: 08. Mar 2004 - 10:28


Member


Gruppe: Members
Beiträge: 95
Mitgliedsnummer: 88
Mitglied seit: 03. Apr 2003


hi STam,

super sache, so ein Plugin-system.
Leider bin ich aus deiner Doku noch nicht recht schlau geworden. was die Praxis angeht.
Vielleicht würde es helfen, wenn du es an einem einfachen beispiel erläuterst?
Hälst du das für machbar?
das wäre fantastisch.
grüsse
Knuds
Top   
saschapi
Geschrieben am: 08. Mar 2004 - 10:38


Felis silvestris forma catus


Gruppe: Members
Beiträge: 986
Mitgliedsnummer: 146
Mitglied seit: 22. May 2003


@ KnudS: Vielleicht hilft dir ja schon das in der Beta2 mitgelieferte Sample Plugin ein bissl weiter wink.gif

--------------------

DJ & Sascha machen einen Webdesign Podcast
Webdesign für Jedermann, möglichst ohne "Technikgebrabbel"
==
PoLi arbeitet nicht mehr mit DeDi!
Top    
STam
Geschrieben am: 08. Mar 2004 - 12:21


freelancer


Gruppe: Members
Beiträge: 1285
Mitgliedsnummer: 173
Mitglied seit: 03. Jun 2003


Ja so ist das .... wink.gif

Am besten ersmal basteln smile.gif

Wichtig ist unter anderem das:
- der Verzeichnisname eindeutig und einmalig ist!
- das in der pluginname_meta.php alle Beispiele aus dem Sample mit dem Pluginnamen ersetzt werden!
Also:

  • class pluginname_meta
  • $root_name = 'pluginname';
  • function pluginname_meta


Das wars schon im Moment, später wird diese Datei auch automatisch erzeugt!
Achtung: die pluginname.dediplug Datei muss nicht selbst erstellt werden! Die wird vom System erzeugt!

Gruss, STam

Hier noch ein Beispiel:
User Attached Image Angefügte Datei herunterladen
multi_sample.tar ( Anzahl der Downloads: 1417 )

--------------------

... to watch out for sefrengo.de
Top    
mvsxyz
Geschrieben am: 14. Jun 2004 - 18:48


Member


Gruppe: Tester
Beiträge: 1503
Mitgliedsnummer: 341
Mitglied seit: 16. Oct 2003


Hallo STam,
ich habe durch Zufall (bei meinem Update) mal in den Ordner xml geschaut und wunderbare Dinge gesehen, die mich unheimlich interessieren... biggrin.gif Mehr noch als deine Beispieldateien... laugh.gif

Ich denke, dass die XML-Dateien für Values und die Online-Repository (wie du bereits sagtest) ist.

Doch wie funktionieren denn nun die Values (im BE)? (In der Konfig eines Plugins)
Oder nur Aktionen beim Updaten?
Was muss ich für "<![CDATA[Text]]>" einsetzten?
Sind die Dateien überhaupt per Hand zueditieren?
In welchen Ordner kommen sie dann?

Damit ich die gleiche Frage nicht noch bei den Modulen stellen muss: Wie funktioniert es da?

Sorry wenn ich dich überrenne, aber da kribbelt es mir in den Fingern... rolleyes.gif

--------------------

Top   
mvsxyz
Geschrieben am: 17. Jun 2004 - 20:41


Member


Gruppe: Tester
Beiträge: 1503
Mitgliedsnummer: 341
Mitglied seit: 16. Oct 2003


STam... blink.gif
Willst du oder darfst du mir nicht antworten? huh.gif

--------------------

Top   
STam
Geschrieben am: 17. Jun 2004 - 20:55


freelancer


Gruppe: Members
Beiträge: 1285
Mitgliedsnummer: 173
Mitglied seit: 03. Jun 2003


wink.gif ich will noch nicht... unsure.gif

... STam

P.S.: deine Reime sind aber nicht schlecht und
CODE
<![CDATA[Text]]>
steht für einen String der innerhalb von <![CDATA[...]]> stehen muss.
Das ist XML und so definiert mann einen String der Sonderzeichen enthalten kann.
zB: bei Php das '<?' welches ohne die Kapselung innerhalb von <![CDATA[...]]> unweigerlich den XML-Parser abschießt oder das XML-Dokument invalid macht.
Die Dateien sind noch reine Muster und dazu da später den Dokumentenaustausch (Repository) zu validieren. Ansonsten hab ich nix gesagt...

--------------------

... to watch out for sefrengo.de
Top    
mvsxyz
Geschrieben am: 17. Jun 2004 - 21:25


Member


Gruppe: Tester
Beiträge: 1503
Mitgliedsnummer: 341
Mitglied seit: 16. Oct 2003


Okay, ich warte jetzt ganz geduldig auf die nächste Version... rolleyes.gif

--------------------

Top   

Thema wird von 0 Benutzer gelesen (0 Gäste und 0 Anonyme Benutzer)
0 Mitglieder:

7 Antworten seit 07. Mar 2004 - 14:15

Thema abonnieren | Thema versenden | Thema drucken


Neue Umfrage | neues Thema

Home | Das Projekt | Download | Entwicklung | Dokumentation | Forum | Impressum