Exemplo n.º 1
0
 $form->setApplyUrl(rex_url::currentBackendPage());
 $form->setEditMode($func == 'edit');
 $field = $form->addTextField('name');
 $field->setLabel(rex_i18n::msg('name'));
 $field = $form->addTextAreaField('description');
 $field->setLabel(rex_i18n::msg('description'));
 $fieldContainer = $form->addContainerField('perms');
 $fieldContainer->setMultiple(false);
 $group = 'all';
 $fieldContainer->setActive($group);
 // Check all page permissions and add them to rex_perm if not already registered
 $registerImplicitePagePermissions = function ($pages) use(&$registerImplicitePagePermissions) {
     foreach ($pages as $page) {
         foreach ($page->getRequiredPermissions() as $perm) {
             // ignore admin perm and complex perms (with "/")
             if ($perm && !in_array($perm, ['isAdmin', 'admin', 'admin[]']) && strpos($perm, '/') === false && !rex_perm::has($perm)) {
                 rex_perm::register($perm);
             }
         }
         $registerImplicitePagePermissions($page->getSubpages());
     }
 };
 $registerImplicitePagePermissions(rex_be_controller::getPages());
 foreach ([rex_perm::GENERAL, rex_perm::OPTIONS, rex_perm::EXTRAS] as $permgroup) {
     $field = $fieldContainer->addGroupedField($group, 'select', $permgroup);
     $field->setLabel(rex_i18n::msg('user_' . $permgroup));
     $select = $field->getSelect();
     $select->setMultiple(true);
     $perms = rex_perm::getAll($permgroup);
     $select->setSize(min(10, max(3, count($perms))));
     $select->addArrayOptions($perms);