CMS - Der Dirigent » Entwicklung » DeDi-Entwicklung

Neue Umfrage | neues Thema | Antworten

Seiten: (3) [1] 2 3  ( Zum ersten neuen Beitrag )

Eigenes Plugin, wo finde ich Dokus

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

visioncom
Geschrieben am: 25. Feb 2005 - 11:32


Member


Gruppe: Members
Beiträge: 276
Mitgliedsnummer: 686
Mitglied seit: 29. Jul 2004


Hallo Zusammen

Ich möchte nun entlich ein eigenes Plugin erstellen. Wie gehe ich dabei am besten vor?
Habe schon einige Masken generiert die danach im Plugin eingebunden werden sollen! Was für Datenbankeinträge muss ich machen,
damit ich im Backend einen eingenen Navigationpunkt erhalte? Was muss ich tun um in diesem Menu verschiedene Unterpunkte zu bekommen?Sind das alles Datenbankeinträge oder reicht es, wenn ich unter backend/plugins/xyz speziele Files erstelle?

Bis jetzt habe ich nur eine Datei in meinem pluginorderner. (xyz.dediplug) Diese habe ich von einem anderen Plugin kopiert und angepasst.

(So viel ich bis jetzt gelesen habe, kann ich meine Modul auch mit den Berechtigungen aus der Benutzer/Gruppen-Verwaltung ausstatten!?)

Gruss
Chris
Top  
mvsxyz
Geschrieben am: 25. Feb 2005 - 12:00


Member


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


Also erstmal musst du dir darüber im Klaren sein, ob dein Plugin in Dedi (Statistik-Plugin) oder quasi "standalone" in einem Frame angezeigt (News-System oder PMA) werden soll.

Als nächstes musst du wissen, ob das Plugin Multi-Client-Fähig sein soll. Das Plugin wird also von jedem Projekt als neues Plugin behandelt. Wenn nein, dann würden sich die Daten der einzelnen Projekte überschneiden.

Nach diesen beiden Kriterien richtet sich erstmal die Installation des Plugins (meta-Ordner + meta-Dateien).

Ich habe es so gemacht, dass ich mir das passende Plugin als Vorlage kopiert habe, die Grundstruktur angepasst und den Rest eingefügt habe.

Also ich versuche mich mal mit einer kleinen Anleitung. smile.gif

ALLGEMEINES
1. Neuen Ordner unter backend/plugins anlegen. Der Name des Ordners ist gleichzeitig der Pluginname (im folgenden immer rot markiert und heißt pluginname) und sollte klein und ohne Sonderzeichen geschrieben werden.
2. Kopieren der Dateien aus der Pluginvorlage.tar (backend/tpl) in den neuen Ordner
3. Dateiname von Pluginvorlage.php in pluginname_meta.php
4. In der Datei {pluginname} durch pluginname (den Ordnernamen) ersetzen.
5. Wenn das Plugin im Multi-Client-Modus betrieben wird die Einstellung

QUOTE
var $multi_client = false;

auf true setzen.
6. Die Meta-Dateien im Ordner Meta anpassen. (siehe unten)
(7. Es wird im Folgenden von einer Startdatei mit dem Namen index.php ausgegangen)



BACKEND-MENÜPUNKT
Multi-Client mit Frame in die install_client.meta

QUOTE
# Menüeintrag ins backendmenü hinzufügen
INSERT INTO {table_prefix}backendmenu VALUES ('', 1, {client_id}, 10, 'nav_pluginname', 'plugins/pluginname/index.php?is_frame_plugin=true', 'frame', '$perm->have_perm(\'area_plug_pluginname\')');


Multi-Client ohne Frame in die install_client.meta

QUOTE
# Menüeintrag ins backendmenü hinzufügen
INSERT INTO {table_prefix}backendmenu VALUES ('', 1, {client_id}, 10, 'nav_pluginname', 'main.php?area=plugin&dedi_plugin=pluginname/index.php', 'single', '$perm->have_perm(\'1\', \'plugin\', \'pluginname\')');


Single-Client mit Frame in die install.meta

QUOTE
# Menüeintrag ins backendmenü hinzufügen
INSERT INTO {table_prefix}backendmenu VALUES ('', 1, 0, 10, 'nav_pluginname', 'plugins/pluginname/index.php?is_frame_plugin=true', 'frame', '$perm->have_perm(\'area_plug_pluginname\')');


Single-Client ohne Frame in die install.meta

QUOTE
# Menüeintrag ins backendmenü hinzufügen
INSERT INTO {table_prefix}backendmenu VALUES ('', 1, 0, 10, 'nav_pluginname', 'main.php?area=plugin&dedi_plugin=pluginname/index.php', 'single', '$perm->have_perm(\'1\', \'plugin\', \'pluginname\')');



Sprachstring für alle Varianten in die install.meta

QUOTE
# Sprachstring für Menüeintrag
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'nav_pluginname', '', '', '', 'Angezeigter Name Deines Plugins', 0, NULL, NULL, 'txt', NULL, NULL, 0);


Pluginname: sollte immer kleingeschrieben werden und dient als Erkennungsmerkmal für Dedi (wie eine ID)
Projekt-ID: entscheidet über Multi- oder Single-Client-Fähigkeit. {client_id} wird beim installieren durch die aktuelle Projekt-ID ersetzt in dem das Plugin installiert wird. Steht dort eine 0 gilt dieser Punkt unabhängig von der aktuellen Projekt-ID (wird immer angezeigt).
Menü-Ebene: Mit dieser Zahl bestimmst du wo dein Menüpunkt erscheinen soll.
0 = neuer Menüpkt (wie Redaktion, Design, Administration)
1 = Unterpunkt für Redaktion
2 = Unterpunkt für Design
3 = Unterpunkt für Administration
4 = Unterpunkt für Plugins
Sortierung: Je größer die Zahl, umso weiterhinten erscheint dein Eintrag im Untermenü. Zahlen in 10-Schritten hochzählen (10, 20, 30, ...)




RECHTE

QUOTE
(So viel ich bis jetzt gelesen habe, kann ich meine Modul auch mit den Berechtigungen aus der Benutzer/Gruppen-Verwaltung ausstatten!?)

Rechte eines Moduls kannst du nicht vorinstallieren. Die Rechte kannst du nur in der Modul-Konfig selber anpassen. Du meinst bestimmt, dass man die Rechte die in einem Plugin verfügbar sind, installiert (vgl. News-System).

Das machst du über den folgenden Code in der install.meta:

QUOTE
# Sprachstring für Menüeintrag
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'nav_pluginname', '', '', '', 'Angezeigter Name Deines Plugins', 0, NULL, NULL, 'txt', NULL, NULL, 0);




QUOTE
#newssystem access recht - Menüpunkt unter Plugins-> dein Plugin wid angezeigt oder ausgeblendet
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'user_perms', '{table_prefix}access', 'area_plug_pluginname', NULL, NULL, 'plug', 125, 'group_area_plug_pluginname', '', 'txt', NULL, NULL, 0);



QUOTE
#newssystem rechte
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'user_perms', 'area_plug_pluginname', '1', NULL, NULL, '1', 10, 'group_area_plug_pluginname_1', '', 'txt', NULL, NULL, 0);
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'user_perms', 'area_plug_pluginname', '2', NULL, NULL, '2', 20, 'group_area_plug_pluginname_2', '', 'txt', NULL, NULL, 0);
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'user_perms', 'area_plug_pluginname', '3', NULL, NULL, '4', 30, 'group_area_plug_pluginname_3', '', 'txt', NULL, NULL, 0);
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'user_perms', 'area_plug_pluginname', '4', NULL, NULL, '8', 40, 'group_area_plug_pluginname_4', '', 'txt', NULL, NULL, 0);



QUOTE
# Sprachstring für Rechte (Haupteintrag)
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_pluginname', '', '', '', 'Bereich Plugin / Angezeigter Name Deines Plugins', 0, NULL, NULL, 'txt', NULL, NULL, 0);



QUOTE
# Sprachstring für Rechte (Untereinträge)
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_pluginname_1', '', '', '', 'Angezeigter Titel des 1. Rechte-Punktes', 0, NULL, NULL, 'txt', NULL, NULL, 0);
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_pluginname_2', '', '', '', 'Angezeigter Titel des 2. Rechte-Punktes', 0, NULL, NULL, 'txt', NULL, NULL, 0);
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_pluginname_3', '', '', '', 'Angezeigter Titel des 3. Rechte-Punktes', 0, NULL, NULL, 'txt', NULL, NULL, 0);
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_pluginname_4', '', '', '', 'Angezeigter Titel des 4. Rechte-Punktes', 0, NULL, NULL, 'txt', NULL, NULL, 0);


rot: Pluginname sollte immer kleingeschrieben werden und dient als Erkennungsmerkmal für Dedi (wie eine ID)
orange: Zahlen in 10-Schritten hochzählen (10, 20, 30, ...)
blau: Zahlen in einer Schritten hochzählen (1, 2, 3, 4, ...)
grün: Zahlen immer vordoppeln (1, 2, 4, 8, 16, 32,...)


Und im Plugin selber musst du folgendes einbauen um die Rechte abzufragen.
Bsp. für das 1. Recht:

QUOTE
if ($perm->have_perm(1, 'area_plug_pluginname', 0)) {
//dein code
}




Wenn ich jetzt keinen Fehler gemacht habe, dann sollte das so funktionieren. smile.gif

Bearbeitet von mvsxyz am 25. Feb 2005 - 13:00

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

Top   
visioncom
Geschrieben am: 25. Feb 2005 - 13:05


Member


Gruppe: Members
Beiträge: 276
Mitgliedsnummer: 686
Mitglied seit: 29. Jul 2004


@mvsxyz

Besten Dank für dein promtes Posting! Ich werde es gleich testen!

Danke nochmals!

Greetz
Chris
Top  
STam
Geschrieben am: 25. Feb 2005 - 13:30


freelancer


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


... nicht das ich mich einmischen will.
Ein neues Plugin (Punkte oben 1.-4.) erreicht man auch durch:
Administration->Plugins->neues Plugin
Fotostory:
user posted image
user posted image
user posted image
user posted image
... diese Funktion nutzt die von mvsxyz erwähnte 'Pluginvorlage.tar'.

Dachte ja nur so am Rande,

Gruss, STam

EDIT: Bilder .jpg

Bearbeitet von STam am 26. Feb 2005 - 09:51

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

... to watch out for sefrengo.de
Top    
mvsxyz
Geschrieben am: 25. Feb 2005 - 13:35


Member


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


Na, wenn das funktioniert, dann ist das doch super. Damit habe ich auch gleich noch etwas dazu gelernt.

@stam:
Aber Rechte und Backendmenue-Punkt muss ich immer noch per Hand in die Meta-Dateien eintragen? (Ich meine damit nicht das Eingabeformular im BE sondern eine "richtige" Automatik.)

Kannst du bei den Bildern beim nächsten Mal vielleicht das schwarz im Bild lassen? Danke. smile.gif

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

Top   
STam
Geschrieben am: 25. Feb 2005 - 13:41


freelancer


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


@mvsxyz,


QUOTE
Aber Rechte und Backendmenue-Punkt muss ich immer noch per Hand in die Meta-Dateien eintragen?
... ja leider wurde da die Entwicklung eingestellt ph34r.gif es war ja geplant das ganze Menügeführt zu gestalten, allerdings in einem Developer-Plugin
(das dann seperat Released hätte_werden_sollen) das DeDi um diese Funktionalität erweitert hätte.


QUOTE
Kannst du bei den Bildern beim nächsten Mal vielleicht das schwarz im Bild lassen?
... seltsam, die Bilder hab ich in ner VMware gemacht. Hier sehen sie noch gut aus rolleyes.gif

gruss, STam

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

... to watch out for sefrengo.de
Top    
visioncom
Geschrieben am: 25. Feb 2005 - 13:46


Member


Gruppe: Members
Beiträge: 276
Mitgliedsnummer: 686
Mitglied seit: 29. Jul 2004


Habe jetzt alle Daten sauber erstellt. Nun wollte ich das Plugin in den DeDi importieren dabei ergibt es folgenden fehler:

QUOTE
Warning: is_dir(): Stat failed for
/srv/www/htdocs/DeDi/backend/plugins/inserateVerwaltungocs/DeDi/backend/plugins/inserateVerwaltung/srv/www
in /srv/www/htdocs/DeDi/backend/inc/class.plugin_meta.php on line 233

...


kann mir bei diesem Fehler jemand sagen, was das soll?

thanx
chris
Top  
STam
Geschrieben am: 25. Feb 2005 - 13:51


freelancer


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



QUOTE (visioncom @ 25. Feb 2005 - 14:46)
class.plugin_meta.php on line 233

... tsss, das passiert dann wenn man das falsch macht ph34r.gif

Machs so wie ich das beschrieben hab!

Gruss, STam

P.S.: und kürze mal deinen Post ....

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

... to watch out for sefrengo.de
Top    
visioncom
Geschrieben am: 25. Feb 2005 - 13:58


Member


Gruppe: Members
Beiträge: 276
Mitgliedsnummer: 686
Mitglied seit: 29. Jul 2004


@STam

Eintrag gekürzt laugh.gif

Ich habe es jetzt auf deine Weise versucht und folgende Metadaten verwendet:

QUOTE

# encode '{table_prefix}' with your Settings
# Menüeintrag ins backendmenü hinzufügen
INSERT INTO {table_prefix}backendmenu VALUES ('', 0, 0, 50, 'nav_inserateVerwaltung', 'plugins/inserateVerwaltung/index.php?is_frame_plugin=true', 'frame', '$perm->have_perm(\'area_plug_inserateVerwaltung\')');

# Sprachstring für Menüeintrag
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'nav_inserateVerwaltung', '', '', '', 'Inserateverwaltung', 0, NULL, NULL, 'txt', NULL, NULL, 0);


Leider wird kein Neuer Menueintrag eingefügt!
Kannst du mir sagen, warum?

greetz
Chris

Top  
STam
Geschrieben am: 25. Feb 2005 - 14:26


freelancer


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


@visioncom,


QUOTE
Leider wird kein Neuer Menueintrag eingefügt!

Dir fehlt die Rechteverwaltung.

CODE
INSERT INTO {table_prefix}backendmenu VALUES ('', 0, 0, 50, 'nav_inserateVerwaltung', 'plugins/inserateVerwaltung/index.php?is_frame_plugin=true', 'frame', '$perm->have_perm(\'area_plug_inserateVerwaltung\')');
... erzeugt einen Eintrag im Backendmenue mit den Rechten 'area_plug_inserateVerwaltung'.

QUOTE
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'nav_inserateVerwaltung', '', '', '', 'Inserateverwaltung', 0, NULL, NULL, 'txt', NULL, NULL, 0);
... erzeugt den Langstring für Diesen Backendmenue Entrag.

Aber wo sind Deine Rechte? Wenn du einen Menuepunkt im Backendmenue mit Rechten schützt, dann musst du auch jemanden diese Rechte geben!
Also:

QUOTE
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'user_perms', 'dedi_access', 'area_plug_inserateVerwaltung', NULL, NULL, 'plug_inserateVerwaltung,inserateVerwaltung', 10, 'group_area_plug_inserateVerwaltung', '', 'txt', NULL, NULL, 0);
... erzeugt den Rechteeintrag und:

QUOTE
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_inserateVerwaltung', '', '', '',    '<b>Darf die Inserate Verwaltung benutzen</b>', 0, NULL, NULL, 'txt', NULL, NULL, 0);
... den Langeintrag dafür rolleyes.gif

Gruss, STam

P.S.: und die andere Fehlermeldung ist weg? Wäre ja erwähnenswert, aber Bitte gerne geschehen wub.gif
P.S.: im zweifelsfall muss ich dich fragen ob du die aktuelle Version hast? Und dann könnte auch noch ein 'Seite neu Laden' im Browser helfen!

Bearbeitet von STam am 25. Feb 2005 - 14:35

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

... to watch out for sefrengo.de
Top    
STam
Geschrieben am: 25. Feb 2005 - 14:56


freelancer


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



QUOTE
Eigenes Plugin, wo finde ich Dokus

Plugin-Entwicklung
Plugins -> Frage zum Backend
...

Gruss, STam

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

... to watch out for sefrengo.de
Top    
visioncom
Geschrieben am: 25. Feb 2005 - 15:03


Member


Gruppe: Members
Beiträge: 276
Mitgliedsnummer: 686
Mitglied seit: 29. Jul 2004


@ STam

Leider funktioniert es immer noch nicht!

Habe das Plugin deinstalliert + Datenbankeinträge gelöscht!

Nun abe ich das Plugin neu installiert
Hier meine install-Meta-Daten:

QUOTE
#encode '{table_prefix}' with your Settings
# encode '{table_prefix}' with your Settings
# Menüeintrag ins backendmenü hinzufügen
INSERT INTO {table_prefix}backendmenu VALUES ('', 0, 0, 50, 'nav_inserateVerwaltung', 'plugins/inserateVerwaltung/index.php?is_frame_plugin=true', 'frame', '$perm->have_perm(\'area_plug_inserateVerwaltung\')');

# Sprachstring für Menüeintrag
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'nav_inserateVerwaltung', '', '', '', 'Inserateverwaltung', 0, NULL, NULL, 'txt', NULL, NULL, 0);

# Rechteverwaltung
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'user_perms', '{table_prefix}access', 'area_plug_inserateVerwaltung', NULL, NULL, 'plug_inserateVerwaltung,inserateVerwaltung', 10, 'group_area_plug_inserateVerwaltung', '', 'txt', NULL, NULL, 0);
# Langsstring
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_inserateVerwaltung', '', '', '',    '<b>Darf die Inserate Verwaltung benutzen</b>', 0, NULL, NULL, 'txt', NULL, NULL, 0);


Leider erscheint jedoch der Menupunkt nicht im Backend! (login als "admin")

PS: Der Fehler "class.plugin_meta.php on line 233" ist verschwunden!

Danke für deine Mühe STAM!

gruss
Chris
Top  
STam
Geschrieben am: 25. Feb 2005 - 16:12


freelancer


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


...ändere mal:

QUOTE
INSERT INTO {table_prefix}backendmenu VALUES ('', 1, 0, 50, 'nav_inserateVerwaltung', 'plugins/inserateVerwaltung/index.php?is_frame_plugin=true', 'frame', '$perm->have_perm(\'area_plug_inserateVerwaltung\')');
... es scheint da noch einen Bug zu geben, allerdings liegt das daran das mit der 'VALUES ('', 0,' vorher das Menue in die oberste Ebene gelegt wird. Dein Menue hatte aber keine Unterebenen, das mag DeDi nicht!
Die 'VALUES ('', 1,' stellt dein Menue unter 'Redaktion' ein!
Wenn du wissen willst wie man Unterebenen anlegt schau dir das Plugin 'DeDiTodo' an wink.gif

Gruss, STam

Bearbeitet von STam am 25. Feb 2005 - 16:23

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

... to watch out for sefrengo.de
Top    
STam
Geschrieben am: 25. Feb 2005 - 16:15


freelancer


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


... und bevor du fragst, hier ist eine passende 'uninstall.meta'

CODE
#encode '{table_prefix}' with your Settings
#Menüeintrag löschen
DELETE FROM {table_prefix}backendmenu WHERE entry_langstring LIKE 'nav_inserateVerwaltung%';
#Sprachstrings, Values und Pluginrechte löschen
DELETE FROM {table_prefix}values WHERE group_name = 'inserateVerwaltung';
DELETE FROM {table_prefix}values WHERE key1 LIKE '%inserateVerwaltung%' OR key2 LIKE '%inserateVerwaltung%';
DELETE FROM {table_prefix}perms WHERE type LIKE '%inserateVerwaltung%' OR id LIKE '%inserateVerwaltung%';


Gruss, STam

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

... to watch out for sefrengo.de
Top    
visioncom
Geschrieben am: 25. Feb 2005 - 17:25


Member


Gruppe: Members
Beiträge: 276
Mitgliedsnummer: 686
Mitglied seit: 29. Jul 2004


@STam

Danke!

Das habe ich bereits selber hingekriegt. rolleyes.gif

Aber Danke...


Nun funktioniert alles so, wie ich mir das vorgestellt habe!

.. Danke allen für die rasche Unterstützung ..

Gruss,
Chris ph34r.gif
Top  

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

35 Antworten seit 25. Feb 2005 - 11:32

Thema abonnieren | Thema versenden | Thema drucken


Seiten: (3) [1] 2 3 

<< Zurück zu DeDi-Entwicklung

Neue Umfrage | neues Thema

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