Ergebnis 1 bis 1 von 1

Thema: tl_member um selective DCA Paletten erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    11.09.2016.
    Beiträge
    79

    Standard tl_member um selective DCA Paletten erweitern

    Hallo zusammen,

    ich hänge gerade bei einem Vorhaben. Ich habe folgende Situation: Es gibt drei Mitgliedergruppen für FE-Member (Administrator, Moderator und User). Darüber hinaus gibt es eine Tabelle "tl_my_tool_control_teams" (für Mitglieder die als Steuerungseinheit fungieren) und eine Tabelle "tl_my_tool_dl_teams" (für Dienstleister, die vom Steuerungsteam betreut werden).
    Die beiden Tabellen erhalten im Moment lediglich einen Namen, der im BE eingetragen werden kann. Es können also z.B. 5 Steuerungsteams und 8 Dienstleisterteams mit unterschiedlichen Namen angelegt werden.
    Diese "Gruppen" sollen den Mitgliedern in der Benutzerverwaltung nun zugewiesen können.

    Problem: Ist bei einem Mitglied die Gruppe "Administrator" ausgewählt worden, dürfen ausschließlich die Steuerungsgruppen zur Auswahl stehen, bei den anderen Gruppen (Moderator und User) dürfen ausschließlich die Dienstleistergruppen zur Auswahl stehen.

    Ich habe nun versucht, das Ganze über selektive DCA Paletten zu lösen (wie in diesem Tutorial nachzulesen: https://de.contaowiki.org/C3:_Tutori...nd_Subpaletten).
    Wenn ich nun eine Benutzergruppe auswähle, wird die Seite auch neu geladen und die neu gewählte Gruppe ist selektiert, es erscheint aber keine Auswahl für die Selektion der "Untergruppen" (Steuerung oder DL).

    Folgender Code trug die Hoffnung, die Aufgabe zu bewältigen (tl_member.php im DCA meines Moduls):

    PHP-Code:
    // Pallettes
    array_push($GLOBALS['TL_DCA']['tl_member']['palettes']['__selector__'], "groups");
    $GLOBALS['TL_DCA']['tl_member']['palettes']['assigned_control'] = "{title_legend},assigned_control_team";
    $GLOBALS['TL_DCA']['tl_member']['palettes']['assigned_dl'] = "{title_legend},assigned_dl_team";

    // Fields
    $GLOBALS['TL_DCA']['tl_member']['fields']['groups']['inputType'] = "select";
    $GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['multiple'] = false;
    $GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['includeBlankOption'] = true;
    $GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['submitOnChange'] = true;
    $GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['mandatory'] = true;
    $GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['tl_class'] = 'w50';

    $GLOBALS['TL_DCA']['tl_member']['fields']['groups']['options'] = array(
        
    'assigned_control',
        
    'assigned_dl'
    );

    $GLOBALS['TL_DCA']['tl_member']['fields']['assigned_control_team'] = array(
        
    'label' => $GLOBALS['TL_LANG']['tl_member']['assigned_control_team'],
        
    'exclude' => true,
        
    'search' => true,
        
    'inputType' => 'select',
        
    'foreignKey' => 'tl_my_tool_control_teams.name',
        
    'eval' => array(
            
    'mandatory' => true,
            
    'maxlength' => 100
        
    ),
        
    'sql' => "varchar(100) NOT NULL default ''"
    );

    $GLOBALS['TL_DCA']['tl_member']['fields']['assigned_dl_team'] = array(
        
    'label' => $GLOBALS['TL_LANG']['tl_member']['assigned_dl_team'],
        
    'exclude' => true,
        
    'search' => true,
        
    'inputType' => 'select',
        
    'foreignKey' => 'tl_my_tool_dl_teams.name',
        
    'eval' => array(
            
    'mandatory' => true,
            
    'maxlength' => 100
        
    ),
        
    'sql' => "varchar(100) NOT NULL default ''"
    ); 
    Ich vermute, dass es daran liegt, dass die <option> Felder bei der Gruppenwahl (also den herkömmlichen von Contao selbst) als value Wert die ID des Datenbankwerts enthalten und daher kein Match entstehen kann.
    Wenn ich eines der Auswahlfelder statisch einbinde:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace('groups''groups,assigned_control_team'$GLOBALS['TL_DCA']['tl_member']['palettes']['default']); 
    wird es korrekt angezeigt (die Select-Werte ziehe ich hier per foreignKey aus der jeweiligen Tabelle).

    Hat jemand eine Idee, wie ich es schaffen kann, das Ein- und Ausblenden der beiden Auswahlfelder in Abhängigkeit zu der gewählten Mitgliedergruppe zu realisieren (Contao 3.5.31)?

    Danke und viele Grüße
    *igi*
    Geändert von *igi* (15.12.2017 um 14:23 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •