Druckbare Version des Themas
Hier klicken um das Thema im Original Format zu betrachten.
CMS - Der Dirigent > DeDi-Entwicklung > Eigenes Plugin
Geschrieben von: visioncom am 25. Feb 2005 - 11:32
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

Geschrieben von: mvsxyz am 25. Feb 2005 - 12:00
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

Geschrieben von: visioncom am 25. Feb 2005 - 13:05
@mvsxyz

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

Danke nochmals!

Greetz
Chris

Geschrieben von: STam am 25. Feb 2005 - 13:30
... 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

Geschrieben von: mvsxyz am 25. Feb 2005 - 13:35
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

Geschrieben von: STam am 25. Feb 2005 - 13:41
@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

Geschrieben von: visioncom am 25. Feb 2005 - 13:46
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

Geschrieben von: STam am 25. Feb 2005 - 13:51

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

Geschrieben von: visioncom am 25. Feb 2005 - 13:58
@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


Geschrieben von: STam am 25. Feb 2005 - 14:26
@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!

Geschrieben von: STam am 25. Feb 2005 - 14:56

QUOTE
Eigenes Plugin, wo finde ich Dokus

http://forum.der-dirigent.de/index.php?act=ST&f=5&t=1709
http://forum.der-dirigent.de/index.php?act=ST&f=5&t=826
...

Gruss, STam

Geschrieben von: visioncom am 25. Feb 2005 - 15:03
@ 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

Geschrieben von: STam am 25. Feb 2005 - 16:12
...ä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

Geschrieben von: STam am 25. Feb 2005 - 16:15
... 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

Geschrieben von: visioncom am 25. Feb 2005 - 17:25
@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

Geschrieben von: visioncom am 28. Feb 2005 - 09:57
Hallo Zusammen

Ich habe mich am Weekend weiter mit dem Plugin beschäftigt. Nun habe ich aber ein Problem!

Bei meinem Plugin habe ich mich für eine Ohne_Frame-Variante entschieden. Nun muss ich aber irgendwie an die User-ID (uid) herankommen. Ich habe das nötige Array auch in dem Entwicklungsmodul endeckt. Aber irgendwie komme ich nich an dieses Array ran. Wahrscheindlich weil dieses nur für den Modulbereich zurverfügung steht. Kann mir jemand sachen wie ich an die Userdaten herankomme?

Greetz
Chris

Geschrieben von: mvsxyz am 28. Feb 2005 - 11:13
Die User-ID des eingeloggten Benutzer bekommst du über $auth->auth['uid'].

Schau dir mal das Modul "Entwicklervariablen" an. Da wird alles an Daten aufgelistet, was du gebrauchen kannst.

Geschrieben von: visioncom am 01. Mar 2005 - 09:14
aha!
(Wollte immer über $auth['uid'] zugreifen.)

So klappt es!

@mvsxyz
Danke

greetz
Chris

Geschrieben von: HardCastle am 02. Mar 2005 - 12:19
Hi folks,

brauche auch etwas hilfe beim einbinden eines plugin in dedi.
Habe versucht mysqldumper nach eurer anleitung als plugin einzubinden. Klappt auch alles einigermaßen bis auf die tatsache, dass beim aufruf aus dem dedi menü mysqldumper das ganze browserfenster benutzt, also das dedi menü verschwindet. Habe mysqldumper versucht als frameversion einzubinden.

Was mache ich falsch?

Gruß hardcastle

Geschrieben von: visioncom am 02. Mar 2005 - 13:59
@HardCastle
Was machst du den für DB-Einträge bei der Installation?

Geschrieben von: Eppi am 02. Mar 2005 - 17:53
@hardcastle: schau dir mal den html-quellcode des mysqldumper an. hier findest du sicherlich ein js, welches überprüft ob es das oberste enster ist und wenn nicht sich auf die volle größe ausweitet.

gruß, paul

Geschrieben von: HardCastle am 02. Mar 2005 - 18:13
@visioncom: db-einträge sind bei dem tool nicht notwendig.

@eppi: bin gerad noch auf arbeit, versuche es aber heute abend mal mit deinem tip.

Gruß hardcastle

Geschrieben von: HardCastle am 03. Mar 2005 - 12:56
@eppi: hat geklappt mit deinem tip.

Aber nun zwei andere probleme:

1. Wie erreiche ich, dass das plugin nicht über die adresszeile erreichbar ist, sondern nur über einen ordentlichen login bei dedi (so wie beim phpmyadmin-plugin).

2. Wie automatisiere ich die installation des plugin über hochladen bzw. installation aus verzeichnis. Händisch klappt eigentlich schon alles (über neues plugin, dateien per ftp in das verzeichnis und dann importieren), mag ich aber niemandem zumuten. Wie werden name, version, beschreibung u. a. bei einer automatischen installation eingetragen?

Gruß Hardcastle

Geschrieben von: Eppi am 03. Mar 2005 - 13:35
das hat stam doch eigentlich sehr gut erklärt, sogar mit screenshots cool.gif

gruß, paul

Geschrieben von: HardCastle am 07. Mar 2005 - 13:15
Oooch menne,

sobald ich
CODE
if ($perm->have_perm(1, 'area_plug_MySQLDumper', 0)) {
//dein code
}
setze, bekomme ich nichts mehr angezeigt.

Meine install.php:
CODE
#encode '{table_prefix}' with your Settings

# Menüeintrag ins backendmenü hinzufügen
INSERT INTO {table_prefix}backendmenu VALUES ('', 4, 0, 30, 'nav_MySQLDumper', 'plugins/MySQLDumper/index.php?is_frame_plugin=true', 'frame', '$perm->have_perm(\'area_plug_MySQLDumper\')');

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

# 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_MySQLDumper', NULL, NULL, 'plug', 125, 'group_area_plug_MySQLDumper', '', 'txt', NULL, NULL, 0);

# Sprachstring für Rechte (Haupteintrag)
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_MySQLDumper', '', '', '', 'Bereich Plugin / MySQLDumper', 0, NULL, NULL, 'txt', NULL, NULL, 0);


Wie bekomme ich das mit dem access-recht für das plugin hin?

Gruß hardcastle

Geschrieben von: Eppi am 07. Mar 2005 - 13:30
das erste recht brauchst du garnicht abfragen, da du dies ja garnicht definiert hast. du hast die abfrage für das accessrecht eigentlich schon eingebaut und zwar über die datenbanktabelle dedi_backendmenu. hier steht $perm->have_perm('area_plug_MySQLDumper') und heißt das das recht auch abgefragt wird. hast du jetzt nach dem installieren einen neuen beitrag bei der rechtevergabe für die gruppe?

gruß, paul

Geschrieben von: STam am 07. Mar 2005 - 22:40
... soll heissen
QUOTE
if ($perm->have_perm(1, 'area_plug_MySQLDumper', 0)) {
//dein code
}
fragt etwas ab was es nicht gibt!
Definition von have_perm aus der 'class.user_perms.php':

CODE

function have_perm($perm_or_area, $type='dedi_access', $id = '0', $parent_id = 0) {}


Als Beispiel:

CODE
$perm->have_perm('area_plug_MySQLDumper', 'dedi_access', '1', 0)

würde funktionieren, also auf das erste Recht testen. Allerdings nur wenn du auch ein Recht
gespeichert hast:

QUOTE

#recht
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'user_perms', 'area_plug_MySQLDumper', '1',  NULL, NULL, '1', 10, 'group_area_plug_MySQLDumper_1', '', 'txt', NULL, NULL, 0);
#lang
INSERT INTO {table_prefix}values VALUES ('', 0, 0, 'lang', 'group_area_plug_MySQLDumper_1', '', '', '',  '&nbsp;&nbsp;darf MySQLDumper nutzen, 0, NULL, NULL, 'txt', NULL, NULL, 0);



Gruss, STam

Geschrieben von: Eppi am 07. Mar 2005 - 22:43
und
$perm->have_perm('area_plug_MySQLDumper')
=
$perm->have_perm('area_plug_MySQLDumper', 'dedi_access', '0', 0)

gruß, paul

Geschrieben von: HardCastle am 10. Mar 2005 - 13:03
So, nun wieder mal eine wasserstandsmeldung.

@stam: Hab es erst einmal nach deiner anleitung versucht. Neben dem access-recht noch ein weiteres eingefügt und das recht in der index.php abgefragt. Aber auch hier: jedesmal, wenn ich die abfrage eingeschaltet habe verschwindet mein mysqldumper unter dedi. (arbeite unter dedi-admin auf einem lokalen windows-system apache1. .. /php4. .. /mysql4. .. )

@eppi: Hab es dann nach deiner anleitung probiert, gleiches ergebnis

@beide: rechte werden unter admin/gruppen korrekt eingetragen.

Irgendwie ein denkfehler? Aber wo?

Wie kann ich den direktzugriff über die adresszeile verhindern? Beim phpmyadmin-plugin klappt das doch auch?

Hilfesuchend hardcastle

Geschrieben von: HardCastle am 10. Mar 2005 - 13:13
Mir ist da noch was aufgefallen:

beim vergleich mit dem phpmyadmin-plugin habe ich festgestellt, dass in der dedi-tabelle dedi_perm ein eintrag da ist, den ich nicht nachvollziehen kann:

152 3 1 dedi_access area_phpmyadmin -1

In der install.meta vom phphmyadmin steht er nicht drin. Wie kommt er dahin und was für eine funktion hat er?

hardcastle

Geschrieben von: HardCastle am 11. Mar 2005 - 16:26
So weiter mit dem selbstgespräch!

Habe das url-zugriffsproblem gelöst, dank dem tipp von eppi aus dem forum-thema http://forum.der-dirigent.de/index.php?act=ST&f=5&t=4199:
CODE
include("../../inc/inc.init_external.php");
eingefügt. Rechtesystem klappt auch.

Bleiben zwei probleme, um plugin zu veröffentlichen:

1. automatisierte installation (wie bei anderen plugins) klappt nicht.
Hab das ganze mit einer MySQLDumper.dediplug versehen
CODE
<?xml version='1.0' encoding='ISO-8859-1'?>
<dediplug version='0.3' date='1110480471'>
  <name>MySQLDumper</name>
  <cat>Tools</cat>
  <version>0.1 dev</version>
  <author>Burkhard Senst - MySQLDumper von Daniel Schlichtholz & Steffen Kamper</author>
  <created>1110480443</created>
  <lastmodified>1110480468</lastmodified>
  <deletable>1</deletable>
  <description>Entwicklerversion - NICHT FÜR PRODUKTIVUMGEBUNGEN!</description>
  <config></config>
  <repository_id></repository_id>
  <root_name>MySQLDumper</root_name>
  <index_file>index.php</index_file>
</dediplug>
und in ein tar-archiv gepackt.
Wenn ich das tar-archiv unter "Administration/Plugins/Plugin importieren" hochladen will, bekomme ich die Fehler meldung:
QUOTE
Es wurde keine Datei zum hochladen angegeben
Es ist dabei egal, ob ich MySQLDumper.tar oder MySQLDumper.dediplugin als dateinamen verwende.

Auch bei der anderen variante über erst entpacken, dann hochladen, neues plugin und verzeichnis importieren bekomme ich eine fehlermeldung:
QUOTE
Parameter ist fehlerhaft. Funktion wird nicht ausgeführt!

Wer kann mir da weiterhelfen, wem kann ich das ganze mal zuschicken?

2. Schutz vor auslesen der mysqldumper-konfigurationsdatei
MySQLDumper legt bei der installation eine konfigurationsdatei für sein cronjob-script an. Wer MySQLDumper kennt, kann sich leicht über den dateinamen zugriff auf die datei über die adressleiste verschaffen. Da liegen die db-zugriffsparameter, die geschützt werden sollten. Meine idee: kann man mittels php eine rein zufälligen dateinamen erzeugen oder reicht es vielleicht schon aus die datei mit der endung .php zu versehen, damit sie unsichtbar wird?

Wünsche allen ein schönes Wochenende, fahre morgen füe eine woche in den urlaub an die nordsee, bin also nicht erreichbar. Wäre schön, wenn sich bis heute abend noch jemand meldet.

Gruß hardcastle

Geschrieben von: schwaiger am 11. Mar 2005 - 22:25
hallo hardcastle,

hatte dir gestern abend doch noch alle meine daten geschickt (incl meinem plug...)...

sorry wenn dus nicht erhalten hasst blink.gif

dass mit dem plug erzeugen ist recht einfach ....

wenn es beidir im backend läuft einfach auf dass disketten simbol klicken und dedi erzeugt dir automatisch ne plug datei...

mail mir doch einfach wenn du noch hilfe brauchst...

lg flo

Geschrieben von: roberto am 11. Mar 2005 - 22:36

QUOTE (HardCastle @ 11. Mar 2005 - 16:26)
oder reicht es vielleicht schon aus die datei mit der endung .php zu versehen, damit sie unsichtbar wird?

Das sollte eigentlich reichen, weil Dateien mit der Endung ausgeführt werden, statt sie an den Browser zu senden. Vorausgesetzt, der Server hat PHP und ist auch so konfiguriert - versteht sich.
Jeder weiß ja auch, wo die config.php von DeDi liegt ...

Gehst Du baden an die Nordsee? Harter Kerl ... Heißt ja auch so biggrin.gif

Geschrieben von: HardCastle am 12. Mar 2005 - 03:36
so nu ab in urlaub!

Probleme behoben und (fast) alle features funktionieren. Hab schwaiger meinen arbeitsstand geschickt, er kann ja nach testung entscheiden, ob er es hier veröffentlicht. Ist aber bis auf weiteres ENTWICKLERVERSION. Vor weiterer intensiver prüfung nicht in produktivumgebungen benutzen.

gruß hardcastle

Geschrieben von: fx4u am 30. Mar 2006 - 13:09
Ein RIESEN-Dankeschoen an mvsxyz und STam

Ich habe soeben mein erstes Plugin erstellt!!!

Dank der hervorragenden Beschreibung von den beiden ist es sogar mir moeglich gewesen, eine eigene kleine Anwendung in DeDi einzubauen. Die Betonung liegt dabei auf "klein" biggrin.gif

Ich mag DeDi!!!

Geschrieben von: fx4u am 07. Jul 2006 - 10:53
edit

Powered by Invision Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)