Seite 1 von 1
Wie erstellt/(verwendet eigene Mandantenvariable
Verfasst: Mi 9. Jul 2008, 14:18
von rethus
Ich habe Contenido dahingehend angepasst, dass ich ein Modul (das gleiche für Layouts ist gerade in Arbeit) für mehrere Mandanten freigeben kann. Somit entfällt das lästige hin und Herkopieren, wenn man vielen vielen Mandanten die gleichen Funktionen geben will
Da ich die Lösung schön sauber Programmieren will, möchte ich gerne diese Funktion über Mandantenvariablen steuern (share_layouts = true, share_modules=true).
Hab aber noch nicht mit Mandantenvariablen gearbeitet.
Kan mir jemand einen kurzen excurs darüber geben, wo und wie ich die einbaue, und verwende?
Verfasst: Mi 9. Jul 2008, 14:28
von emergence
ähm auf true oder false zu setzen ist keine gute idee
-> besser ist auf 0 oder 1 dezitiert zu prüfen
denn "false" als string ist auch true
ist ganz easy zu kontrollieren
da deine änderung nur auf system basis stattfinden sollte
siehe functions.general.php -> getSystemProperty($type, $name)
ich würd folgendes snippet verwenden
Code: Alles auswählen
if (getSystemProperty("share", "layouts") == 1) {
echo "erlaubt";
} else {
echo "nicht erlaubt";
}
Verfasst: Mi 9. Jul 2008, 14:52
von rethus
Danke für die schnelle Hilfe. Werde ich entsprechend einbauen.
Hast du auch einen Tipp für mich, wie ich ein weiteren Baustein in die Subnavigation eines Bereiches integriere (so wie bei Artikel die Subnavi: Übersicht, Eigenschaften, Konfiguration, Editor usw.)?
Verfasst: Mi 9. Jul 2008, 16:18
von rethus
Irgendwie geht getSystemProperty("share", "layouts") nicht. Hast du einen Tipp, woran das liegen kann?
Muss ich noch eine Klasse inkludieren?
Verfasst: Mi 9. Jul 2008, 16:41
von emergence
die functions.general.php steht innerhalb contenidos immer zur verfügung... ein includen ist somit nicht notwendig..
...und du musst schon genauer sein...
hellseher bin ich keiner...
was geht irgendwie nicht ?
gibts ne fehlermeldung ? wenn ja welche ?
hast du definiert das share layout 1 ist ? wenn ja wo ?
zu deiner vorrigen anfrage -> such mal nach "plugin richtlinien"
da gibts ein hello_world plugin. aus dem code und der beschreibung im thread sollte ersichtlich sein, wie das funktioniert... ist leider etwas komplizierter...
Verfasst: Mi 9. Jul 2008, 16:48
von rethus
Ok es ist scheint ein BUG zu sein!
Die Funktion getSystemProperty fragt die DB-Tabelle con_system_prop ab. Die Mandanteneinstellungen werden aber in die Tabelle
con_properties gespeichert.
Code: Alles auswählen
SELECT value FROM con_system_prop WHERE type='shared' AND name='layouts'
Weit und Breit gibt es aber keine Funktion die auf con_properties zugreift.
Hat sich da in vielleicht etwas überschnitten mit irgend einer Neuerung?
Verfasst: Mi 9. Jul 2008, 16:58
von emergence
das ist kein bug...
getSystemProperty ließt nur system eigenschaften aus...
wie der name schon sagt...
hab ich aber geschrieben...
da deine änderung nur auf system basis stattfinden sollte
wie das auslesen von client settings funktoniert ist zb in der getEffectiveSettings enthalten...
Verfasst: Mi 9. Jul 2008, 16:58
von Dodger77
rethus hat geschrieben:Weit und Breit gibt es aber keine Funktion die auf con_properties zugreift.
Na klar, gibt es eine entsprechende Funktion. Von emergence gepostete Code würde dann so aussehen:
Code: Alles auswählen
if (getEffectiveSetting("share", "layouts") == 1) {
echo "erlaubt";
} else {
echo "nicht erlaubt";
}
Damit wäre dann aber auch Gruppe-/Benutzereinstellungen möglich. Beschränken auf System-/Mandanteneinstellungen ließe sich das so:
Code: Alles auswählen
//Mandanteneinstellung auslesen
cInclude('classes', 'contenido/class.client.php');
$oClient = new cApiClient($client);
$bShareLayouts = $oClient->getProperty("share", "layouts");
//Systemeinstellung auslesen
if ($bShareLayouts != 1) {
$bShareLayouts = getSystemProperty("share", "layouts");
}
if ($bShareLayouts == 1) {
echo "erlaubt";
} else {
echo "nicht erlaubt";
}
Verfasst: Mi 9. Jul 2008, 16:59
von rethus
sorry, da war ich wohl etwas zu schnell. Danke dir. Hab es jetzt als Systemvariable gesetzt. Nun geht es.
Danke euch beiden für die ausführliche Info.