Druckversion des Themas

Hier klicken um das Topic im Orginalformat anzusehen

Forum Sefrengo.org _ Entwicklung _ Plugin-Config

Geschrieben von: Chregu Thu. 4. September 2008, 17:15

Hallo Zusammen

Bei installierten Plugins hat man die Möglichkeit über den Schraubenschlüssel "Plugin-Einstellungen" zu machen.
Habe bis jetzt jedoch noch kein Plugin gefunden auf dem das möglich war.
Kann mir jemand sagen, was ich einem eigenen Plugin machen muss damit dort meine Einstellungen definieren kann?
In der Doku habe ich nichts gefunden.

Besten Dank.

Gruss
Chris

Geschrieben von: mvsxyz Thu. 4. September 2008, 17:56

Hallo Chris,

schau mal diesen Abschnitt an http://wiki.sefrengo.org/handbuch/entwicklung/plugins#konfigurationseinstellungen. Dort steht, was du tun musst, damit dein Plugin die Konfigurationsmöglichkeiten unterstützt.

Im Übrigen hast du recht - es gibt momentan kein Plugin, dass diese Möglichkeit nutzt.

Geschrieben von: Chregu Thu. 4. September 2008, 20:48

Danke für den Tip mvsxyz

Habe es getestet. Jedoch nicht mit dem gewünschten Erfolg. Nach dem ich die SQL-Anweisung ausgeführt hatte war es möglich unter Administration -> System -> Administration -> Projekt -> Konfigurieren meine neue Einstellung zu editieren. Ich möchte jedoch das Einstellung unter Administration -> Plugin -> Plugin konfigurieren sichtbar machen...
Hast du dazu auch eine Idee?

Gruss
Chris

Geschrieben von: bkm Thu. 4. September 2008, 21:57

keine ahnung ob du diese stelle in der pluginconfig meinst (noch ein altes screnn gefunden).
mir ist damals das formular in sf etwas aus der form geraden
<<bin aber der ursache , die ja bestimmt nicht am plugin liegt, nie auf den grund gegangen>>

wenn keiner dir nen tipp geben kann, werde ich nächste woche mal suchen, ob ich diese installation noch irgendwo finde.

Geschrieben von: STam Thu. 4. September 2008, 22:39

Hi,

eigentlich ganz einfach und am besten an einem Beispiel smile.gif
Wenn du schon alle Plugins getestet hast, hast du bestimmt auch das Plugin 'eMail Schutz' installiert!?
Also schaun wir mal in die dB, die Tabelle 'cms_values' ist die interessante!
Such den Eintrag group_name = 'mailprotector' & key1 = 'version':

QUELLTEXT
SELECT * FROM cms_values WHERE group_name = 'mailprotector' AND key1 = 'version'

Ansich nicht spannend der Eintrag... nun wollen wir den mal global sichtbar machen als Config-Parameter:
QUELLTEXT
UPDATE cms_values SET conf_desc_langstring = 'nav_mailprotector',  conf_visible = 1 WHERE group_name = 'mailprotector' AND key1 = 'version'

Voila... unter Administration -> Plugin -> Plugin konfigurieren -> Globale configuration ist das Value nun sichtbar und kann editiert werden biggrin.gif
Leider ist das Template wohl ein wenig Buggy umgesetzt worden oder man hat das ganze vergessen zu testen, es sieht ein wenig schräg aus aber funktioniert.
Als Langstring hab ich den vorhandenen Menueintrag 'nav_mailprotector' genommen
, natürlich sollte man dort einen sprechenderen verwenden wie zB 'mailprotector_version' nur den gabs eben nicht (selbst anlegen tongue.gif ).



Wenn man auch noch die Client id ändert bzw nicht auf '0' setzt, kann genauso Client abhängige Values definieren!
Zur Erklärung: http://forum.der-dirigent.de/index.php?act=ST&f=5&t=1709

Lg STam

P.S.: und Sorry das ich das Plugin 'eMail Schutz' hierfür Mißbraucht habe

Geschrieben von: Chregu Fri. 5. September 2008, 12:51

Danke an alle!

Die Variante vom Stam funktioniert genau so wie mir das vorgestellt habe. Beim Template gibt es da noch eine kleine Unschönheit.
Sowie ich das sehe sind da der Tabellenheader (Analog Modulkonfig) mit dem Tabellencontent (z.B. Projekt-Settings) nicht stimmig.

Weiss jedoch nicht welcher der korrekte Teil ist :-)


Überinges, gibt es im "conf_input_type" auch noch andere Möglichkeiten ausser TXT und TEXTAREA?


Gruss
chris

Geschrieben von: mvsxyz Fri. 5. September 2008, 13:32

@Chregu:
Wo hast du "conf_input_type" gefunden?

Geschrieben von: Chregu Fri. 5. September 2008, 14:24

@mvsxyz:
In der Tabelle "VALUES"!

Geschrieben von: mvsxyz Fri. 19. September 2008, 15:01

Ich bekomme es nicht hin. Ich habe folgenden SQL-Befenl in den client_install.meta eingefügt:

QUELLTEXT
INSERT INTO {table_prefix}values VALUES ('', {client_id}, 0, 'cfg_client', 'slim', 'enabled', NULL, NULL, 'true', 10, 'cfgclient_slim_enabled', 'cfgclient_slim', 'txt', NULL, '', 1);


In die DB wird er eingefügt, aber in der Konfig bekomme ich nur "es gibt keine Values!". Was habe ich nicht beachtet?

Geschrieben von: mvsxyz Fri. 19. September 2008, 15:37

Nachdem ich mir das eMail-Schutz-Plugin installiert habe, habe ich es verstanden.

Es muss so heißen, man beachte, dass das 'cfg_client' enfernt wurde:

QUELLTEXT
INSERT INTO {table_prefix}values VALUES ('', {client_id}, 0, 'slim', 'enabled', NULL, NULL, NULL, 'true', 10, 'cfgclient_slim_enabled', 'cfgclient_slim', 'txt', NULL, '', 1);


Ich bügle den Fehler im Wiki gleich mal aus.

Mir sind noch zwei Bugs im Sefrengo aufgefallen, die ich im entsprechenden Forum posten.

Geschrieben von: mvsxyz Sun. 21. September 2008, 22:26

Ich bin hier seit Stunden am testen und werde verrückt.

Wenn ich das habe:

QUELLTEXT
group_name = slimstat
  key1 = enabled

dann sehe ich die Konfiguration für das Plugin, bekomme aber keine Werte im Plugin selber über $cfg_client['slimstat']['enabled'].

Habe ich aber:
QUELLTEXT
group_name = cfg_client
  key1 = slimstat
  key2 = enabled

bekomme ich die Werte im Plugin über $cfg_client['slimstat']['enabled'], aber keine Konfig angezeigt.

Höchsteigenartig...

EDIT
Nutze ich übrigens letztere Variante, dann werden meine ganzen Plugin-Values auch in der Projekt-Konfiguration angezeigt. ohmy.gif
Damit nehme ich an, dass erste Variante richtig sein muss, aber die Values nicht dem $cfg_client-Array hinzugefügt werden.

Kann jemand weiterhelfen/aufklären? Björn?

Geschrieben von: mvsxyz Sun. 21. September 2008, 22:30

ZITAT(Chregu @ Fri. 5. September 2008, 13:51) *
Überinges, gibt es im "conf_input_type" auch noch andere Möglichkeiten ausser TXT und TEXTAREA?


Gerade gesehen: Ja, laut Quelltext gibt es noch "mutiple_groups". Das ist anscheinend nur für die Auswahl der Gruppen beim Anlegen eines Benutzers gedacht, kann also nicht mit eigenen Inhalten gefüllt werden.

Geschrieben von: feniweb Sun. 21. September 2008, 23:10

hai mvsxyz

Ich weiss nicht ob dir das weiter hilft, aber im Plugin Todo's gibt es ebenfalls eine Config in dem die Werte direkt bearbeitet werden können, unter Globale Konfiguration.

Gruss

Geschrieben von: mvsxyz Mon. 22. September 2008, 11:42

Danke für den Tipp. Ich habe mir jetzt auch CMS-Todo installiert und das hat ja eine ganze Menge an Values in die DB. Diese sind im Format

QUELLTEXT
group_name = cmsTodo
key1 = meinkey

vorhanden. Im Plugin selbst werden die Values über $cfg_cmsTodo['meinkey']. Ich habe nun mal versucht die Values des Mailprotectors oder SlimStat anzusprechen. Ohne Erfolg.

Nun frage ich mich doch, warum das ganze nur beim Plugin cmsTodo funktioniert?

Beim Mailprotector konnte ich nicht herausfinden, wie die Values angesprochen/genutzt werden.

Geschrieben von: STam Mon. 22. September 2008, 13:37

Also eigentlich recht einfach über die pluginname_meta.php

QUELLTEXT
/*
* enable auto load of plugin settings on D*DI startup
* this feature supports dedi_values with group_named settings
* sample:
*        dirname = /myplugin
*        group_name = myplugin
*        $cfg_myplugin = array()
*
*/
var $auto_settings = true;


Lg STam

Geschrieben von: mvsxyz Mon. 22. September 2008, 13:55

Danke STam. Das war ein sehr guter Tipp! Darauf wäre ich ohne dich wahrscheinlich viel später gestoßen.

Ich habe $auto_settings jetzt auf true, doch leider funktioniert es immer noch nicht. Kann es damit zusammenhängen, dass ich das Plugin in einem Frame zu laufen haben und über inc.init_external.php das $cfg_pluginname nicht erstellt wird?

Geschrieben von: STam Mon. 22. September 2008, 15:37

Da hast du Recht!
Auch das Einbinden der 'inc.init_external.php' würde nicht reichen, ist aber notwendig smile.gif
Erweitere mal deine '_config.php':

QUELLTEXT
require_once('../../inc/inc.init_external.php');
require_once($this_dir.'inc/fnc.libary.php');
lib_init_settings('slimstat');


... und du kannst auf das Array $cfg_slimstat zugreifen wink.gif
Ansonsten würde ich da noch jede Menge Entschlacken an deinem Plugin,
denn vieles bringt die 'inc.init_external.php' ja schon mit (Datenbank usw.).

Das die 'inc.init_external.php' das so nicht unterstützt ist ein Bug oder eine Nachlässigkeit huh.gif
Also ist das da oben ein Hack und keine Lösung für alle Plugins.
Richtig wäre es der in 'inc.init_external.php' implementiert und dort dann über das Repository
die Einbindung aller Plugins die angemeldet sind bzw. das Aufrufen des Plugins selbst über die 'pluginname_meta.php',
da diese es auch Unterstützt das die Konfiguration einfach nur eine Datei ist (hidden Feature) und nicht in der dB liegt!

Lg

Geschrieben von: mvsxyz Mon. 22. September 2008, 15:52

Wow, es funktioniert! smile.gif Vielen Dank STam.

ZITAT
Ansonsten würde ich da noch jede Menge Entschlacken an deinem Plugin,
denn vieles bringt die 'inc.init_external.php' ja schon mit (Datenbank usw.).

Das kann ich dann in einer weiteren Version machen. Erstmal werde ich es noch so veröffentlichen. Abermals Danke für den Hinweis. smile.gif

EDIT
Habe gerade noch ein Test gemacht. Im FE wird die _config.php auch includiert, um die Hits zuzählen. Aber hier werden die Einstellungen ($cfg_slimstat) trotz der beiden Zeilen von dir nicht geladen. Kann es hier wiederum Probleme mit dem Autostart geben?

Geschrieben von: STam Mon. 22. September 2008, 16:21

Im Frontend solltest du zusätzlich den Mechanismus der Authentifizierung abschalten!
Neue Zeile vor dem Include der 'inc.init_external.php':
define('SF_USE_FRONTEND_SESSION', true);

Edit:
Blödsinn...
Also deine Zeilen in der '_config.php' sollten so aussehen:

QUELLTEXT
//Load external Sefrengo configuration
if(!isset($cfg_cms)) {
    require_once('../../inc/inc.init_external.php');
}
require_once ($cms_path.'inc/fnc.libary.php');
lib_init_settings('slimstat');


Lg

Geschrieben von: mvsxyz Mon. 22. September 2008, 22:44

So, jetzt klappt es! Vielen Dank für die Hilfe. smile.gif

Ich werde die Erkenntnisse mal im Wiki verewigen, damit es nicht wieder in Vergessenheit gerät.

Unterstützt von Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)