diff --git a/Classes/Controller/GroupAdminController.php b/Classes/Controller/GroupAdminController.php index 6131532..929dd5d 100644 --- a/Classes/Controller/GroupAdminController.php +++ b/Classes/Controller/GroupAdminController.php @@ -435,8 +435,35 @@ public function getGroupEdit() $content = ''; - // the default field to show - $showColumn = 'hidden,title,db_mountpoints,file_mountpoints,subgroup,members,description,TSconfig'; + $defaultShowColumnArray = [ + 'hidden', + 'title', + 'db_mountpoints', + 'file_mountpoints', + 'subgroup', + 'members', + 'description', + 'TSconfig', + ]; + $showColumnArray = []; + + if (!empty($this->getBackendUser()->groupData['non_exclude_fields'])) { + $nonExcludeFields = GeneralUtility::trimExplode(',', $this->getBackendUser()->groupData['non_exclude_fields'], true); + foreach ($nonExcludeFields as $field) { + if (strpos($field, 'be_groups:') === 0) { + list($_, $field) = explode(':', $field, 2); + $showColumnArray[] = $field; + } + } + } + if (!empty($showColumnArray)) { + $showColumn = implode(',', array_merge( + array_intersect($defaultShowColumnArray, $showColumnArray), + array_diff($showColumnArray, $defaultShowColumnArray) + )); + } else { + $showColumn = implode(',', $defaultShowColumnArray); + } // get hideColumnGroup from TS and remove it from the showColumn if ($this->getBackendUser()->userTS['tc_beuser.']['hideColumnGroup']) { diff --git a/Classes/Controller/UserAdminController.php b/Classes/Controller/UserAdminController.php index cd77874..51fab6c 100644 --- a/Classes/Controller/UserAdminController.php +++ b/Classes/Controller/UserAdminController.php @@ -557,7 +557,37 @@ public function getUserEdit() $content = ''; // the default field to show - $showColumn = 'disable,username,password,usergroup,realName,email,lang,name,first_name,last_name'; + $defaultShowColumnArray = [ + 'disable', + 'username', + 'password', + 'usergroup', + 'realName', + 'email', + 'lang', + 'name', + 'first_name', + 'last_name', + ]; + $showColumnArray = []; + + if (!empty($this->getBackendUser()->groupData['non_exclude_fields'])) { + $nonExcludeFields = GeneralUtility::trimExplode(',', $this->getBackendUser()->groupData['non_exclude_fields'], true); + foreach ($nonExcludeFields as $field) { + if (strpos($field, 'be_users:') === 0) { + list($_, $field) = explode(':', $field, 2); + $showColumnArray[] = $field; + } + } + } + if (!empty($showColumnArray)) { + $showColumn = implode(',', array_merge( + array_intersect($defaultShowColumnArray, $showColumnArray), + array_diff($showColumnArray, $defaultShowColumnArray) + )); + } else { + $showColumn = implode(',', $defaultShowColumnArray); + } // get hideColumnGroup from TS and remove it from the showColumn if ($this->getBackendUser()->userTS['tc_beuser.']['hideColumnGroup']) { diff --git a/Classes/Form/FormDataProvider/BackendExcludeTableDisable.php b/Classes/Form/FormDataProvider/BackendExcludeTableDisable.php new file mode 100644 index 0000000..a3bacd3 --- /dev/null +++ b/Classes/Form/FormDataProvider/BackendExcludeTableDisable.php @@ -0,0 +1,30 @@ + $configuration) { + $GLOBALS['TCA'][$table] = $configuration; + } + static::$tcaBackup = null; + } + + return $result; + } + +} diff --git a/Classes/Form/FormDataProvider/BackendExcludeTableEnable.php b/Classes/Form/FormDataProvider/BackendExcludeTableEnable.php new file mode 100644 index 0000000..14d665b --- /dev/null +++ b/Classes/Form/FormDataProvider/BackendExcludeTableEnable.php @@ -0,0 +1,42 @@ + $GLOBALS['TCA']['be_groups'], + 'be_users' => $GLOBALS['TCA']['be_users'], + ]; + } + + foreach (static::$tcaBackup as $table => $_) { + $GLOBALS['TCA'][$table]['ctrl']['rootLevel'] = 0; + foreach ($GLOBALS['TCA'][$table]['columns'] as &$fieldConfig) { + $fieldConfig['exclude'] = 1; + } + } + + return $result; + } + +} diff --git a/Documentation/Benutzerhandbuch/FlexibleBenutzerUndGruppenFelder/Images.txt b/Documentation/Benutzerhandbuch/FlexibleBenutzerUndGruppenFelder/Images.txt new file mode 100644 index 0000000..d84075e --- /dev/null +++ b/Documentation/Benutzerhandbuch/FlexibleBenutzerUndGruppenFelder/Images.txt @@ -0,0 +1,10 @@ +.. |img-2| image:: ../../Images/manual_html_m121583cf.png + :height: 455 + :width: 652 +.. |img-3| image:: ../../Images/manual_html_105994d.png + :height: 360 + :width: 170 +.. :align: left +.. :border: 0 +.. :name: Grafik2 + diff --git a/Documentation/Benutzerhandbuch/FlexibleBenutzerUndGruppenFelder/Index.rst b/Documentation/Benutzerhandbuch/FlexibleBenutzerUndGruppenFelder/Index.rst new file mode 100644 index 0000000..fcd2afb --- /dev/null +++ b/Documentation/Benutzerhandbuch/FlexibleBenutzerUndGruppenFelder/Index.rst @@ -0,0 +1,39 @@ +.. include:: Images.txt + +.. ================================================== +.. FOR YOUR INFORMATION +.. -------------------------------------------------- +.. -*- coding: utf-8 -*- with BOM. + +.. ================================================== +.. DEFINE SOME TEXTROLES +.. -------------------------------------------------- +.. role:: underline +.. role:: typoscript(code) +.. role:: ts(typoscript) + :class: typoscript +.. role:: php(code) + + +Flexible Benutzer- und Gruppenfelder +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Über die Gruppeneinstellungen des aktuellen Users lassen sich die +Felder bestimmen, welche über die Module „Benutzer-Admin“ und +„Gruppen-Admin“ editiert werden können. + +Die Extension stellt beim Bearbeiten einer Backend-Benutzergruppe unter +dem Feld "Erlaubte Ausschlussfelder" Einstellungsmöglichkeiten für +"Backend-Benutzer" und "Backend-Benutzergruppe" zur Verfügung. Die hier +ausgewählten Felder stehen den Benutzern der Gruppe als Felder in den +"TC Tools"-Modulen zur Verfügung. + +Um z.B. die Standardfelder (Inaktiv, Benutzername, Passwort, Gruppe, +Name, E-Mail, Standardsprache) beim „Benutzer-Admin“ um +Datenbankfreigaben (db_mountpoints) und Dateifreigaben (file_mountpoints) +zu erweitern, müssen die Standardfelder, sowie die Felder +Datenbankfreigaben und Dateifreigaben unter dem Punkt +"Erlaubte Ausschlussfelder" für Backend-Benutzer ausgewählt werden. + +|img-3| + diff --git a/Documentation/Benutzerhandbuch/Index.rst b/Documentation/Benutzerhandbuch/Index.rst index 5901f4d..85425ca 100644 --- a/Documentation/Benutzerhandbuch/Index.rst +++ b/Documentation/Benutzerhandbuch/Index.rst @@ -27,6 +27,7 @@ Benutzerhandbuch AlphabetischeAuflistungDerBackend-user/Index SortierungNachKriterien/Index FilterungDeaktivierterBackend-user/Index + FlexibleBenutzerUndGruppenFelder/Index SucheNachBackend-user/Index NeuenBenutzerAnlegen/Index FrontendBenutzerImportieren/Index diff --git a/Documentation/Images/manual_html_105994d.png b/Documentation/Images/manual_html_105994d.png new file mode 100644 index 0000000..8ab23b0 Binary files /dev/null and b/Documentation/Images/manual_html_105994d.png differ diff --git a/ext_localconf.php b/ext_localconf.php index 507bde7..9581882 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -21,4 +21,22 @@ $GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']['TYPO3\\CMS\\Backend\\Controller\\ContentElement\\ElementInformationController'] = array( 'className' => 'dkd\\TcBeuser\\Xclass\\RecordInfoController' ); + + //add formdataprovider to enable exclude of be_users fields + $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['tcaDatabaseRecord'][\dkd\TcBeuser\Form\FormDataProvider\BackendExcludeTableEnable::class] = [ + 'depends' => [ + \TYPO3\CMS\Backend\Form\FormDataProvider\TcaCheckboxItems::class, + ], + 'before' => [ + \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectItems::class, + ] + ]; + $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['tcaDatabaseRecord'][\dkd\TcBeuser\Form\FormDataProvider\BackendExcludeTableDisable::class] = [ + 'depends' => [ + \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectItems::class, + ], + 'before' => [ + \TYPO3\CMS\Backend\Form\FormDataProvider\TcaSelectTreeItems::class, + ] + ]; }