felder für gruppen ausblenden, probleme mit catalog und dcaconfig

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • oliver
    Gesperrt
    • 20.06.2009
    • 162

    #1

    felder für gruppen ausblenden, probleme mit catalog und dcaconfig

    hallo,

    ich möchte gerne für eine benutzergruppe (backend) im catalog ein paar felder ausblenden. dazu habe ich in dcaconfig.php folgenden code inkludiert:

    Code:
    if (!$this->User->isAdmin) {
    	if (in_array(5,$this->User->groups)) {
    		$GLOBALS['TL_DCA']['customtabelle']['palettes']['default']=str_replace('feld_zu_ersetzen,','',$GLOBALS['TL_DCA']['customtabelle']['palettes']['default']);
    	}
    }
    das problem ist nun, dass $GLOBALS['TL_DCA']['customtabelle']['palettes']['default'] nach dieser zuordnung immer leer ist.
    auch wenn ich ein $GLOBALS['TL_DCA']['customtabelle']['palettes']['default']=$GLOBALS['TL_DCA']['customtabelle']['palettes']['default']; mache, ist es leer.
    nicht jedoch wenn ich der variable einen string zuweise.

    bitte um hilfe, steh schon völlig auf der leitung!

    danke
    oliver
  • xtra
    Maintainer
    • 02.07.2009
    • 2007

    #2
    Das wird so nicht klappen, da die dcaconfig.php VOR der Initialisierung des DCA durch den Catalog included wird.
    Somit ist die Palette zu diesem Zeitpunkt noch nicht vorhanden.
    Der Catalog erkennt dann jedoch deine "leere" Palette als bereits vorhanden an und erzeugt somit keine eigene mehr.

    Du musst deinen Code somit abaendern in:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_catalog_items'][] = array('MyRestrictedCatalog', 'restrictUsers');
    
    class MyRestrictedCatalog
    {
      public function restrictUsers($strTable)
      {
        if (($strTable=='customtabelle') && (!$this->User->isAdmin) && in_array(5,$this->User->groups))
        {
            $GLOBALS['TL_DCA']['customtabelle']['palettes']['default']=str_replace('feld_zu_ersetzen,','',$GLOBALS['TL_DCA']['customtabelle']['palettes']['default']);
        }
      }
    } 
    
    Dann sollte es funktionieren.

    PS: das ist eigentlich schon eine kleine mini extension, und koennte man ggf. konfigurierbar aufbohren.

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

    Kommentar

    • faelkchen
      Contao-Nutzer
      • 22.08.2009
      • 10

      #3
      Hallo zusammen,

      ich weiß, dass dieses Thema schon etwas älter ist, ich stehe aber aktuell vor der gleichen Herausforderung. Ich muss im Katalog-Backend so etwas wie einen Workflow implementieren und da wäre es super, wenn ich einzelne Felder für einzelne Backend-Benutzergruppen ausblenden könnte. Ich habe es mit der hier beschriebenen Technik probiert, doch die dcaconfig beschwert sich mit einem "Cannot redeclare class MyRestrictedCatalog ...". Lagere ich das ganze aus in einen eigenen Modulordner und da in die Datei dca/tl_catalog_items.php passiert gar nichts - das gewünschte Feld verschwindet leider nicht. Die Methode wird auch gar nicht aufgerufen. Ich habe probiert, die Zeile
      Code:
      $GLOBALS['TL_DCA']['tl_catalog_items'][] = array('MyRestrictedCatalog', 'restrictUsers');
      wieder zurück in die dcaconfig zu packen, doch das hat auch nichts bewirkt.

      Gibt es mittlerweile vielleicht einen anderen Weg, dieses Ziel zu erreichen?

      Vielen Dank schon mal!

      Kommentar

      Lädt...