/** * * @return */ protected function initTemplatePermissions() { global $rbacreview; if (self::$template_permissions !== NULL) { return true; } self::$template_permissions = $rbacreview->getAllOperationsOfRole($this->getRoleId(), $this->getRefId()); }
/** * Show template permissions * @return void */ protected function permObject($a_show_admin_permissions = false) { global $ilTabs, $ilErr, $ilToolbar, $objDefinition, $rbacreview; $ilTabs->setTabActive('default_perm_settings'); $this->setSubTabs('default_perm_settings'); if ($a_show_admin_permissions) { $ilTabs->setSubTabActive('rbac_admin_permissions'); } else { $ilTabs->setSubTabActive('rbac_repository_permissions'); } if (!$this->checkAccess('write', 'edit_permission')) { $ilErr->raiseError($this->lng->txt('msg_no_perm_perm'), $ilErr->MESSAGE); return true; } // Show copy role button $ilToolbar->setFormAction($this->ctrl->getFormAction($this)); $ilToolbar->addButton($this->lng->txt("adopt_perm_from_template"), $this->ctrl->getLinkTarget($this, 'adoptPerm')); if ($rbacreview->isDeleteable($this->object->getId(), $this->rolf_ref_id)) { $ilToolbar->addButton($this->lng->txt('rbac_delete_role'), $this->ctrl->getLinkTarget($this, 'confirmDeleteRole')); } $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.rbac_template_permissions.html', 'Services/AccessControl'); $this->tpl->setVariable('PERM_ACTION', $this->ctrl->getFormAction($this)); include_once './Services/Accordion/classes/class.ilAccordionGUI.php'; $acc = new ilAccordionGUI(); $acc->setBehaviour(ilAccordionGUI::FORCE_ALL_OPEN); $acc->setId('template_perm_' . $this->getParentRefId()); if ($this->rolf_ref_id == ROLE_FOLDER_ID) { if ($a_show_admin_permissions) { $subs = $objDefinition->getSubObjectsRecursively('adm', true, true); } else { $subs = $objDefinition->getSubObjectsRecursively('root', true, $a_show_admin_permissions); } } else { $subs = $objDefinition->getSubObjectsRecursively($this->getParentType(), true, $a_show_admin_permissions); } $sorted = array(); foreach ($subs as $subtype => $def) { if ($objDefinition->isPlugin($subtype)) { $translation = ilPlugin::lookupTxt("rep_robj", $subtype, "obj_" . $subtype); } elseif ($objDefinition->isSystemObject($subtype)) { $translation = $this->lng->txt("obj_" . $subtype); } else { $translation = $this->lng->txt('objs_' . $subtype); } $sorted[$subtype] = $def; $sorted[$subtype]['translation'] = $translation; } $sorted = ilUtil::sortArray($sorted, 'translation', 'asc', true, true); foreach ($sorted as $subtype => $def) { if ($objDefinition->isPlugin($subtype)) { $translation = ilPlugin::lookupTxt("rep_robj", $subtype, "obj_" . $subtype); } elseif ($objDefinition->isSystemObject($subtype)) { $translation = $this->lng->txt("obj_" . $subtype); } else { $translation = $this->lng->txt('objs_' . $subtype); } include_once 'Services/AccessControl/classes/class.ilObjectRoleTemplatePermissionTableGUI.php'; $tbl = new ilObjectRoleTemplatePermissionTableGUI($this, 'perm', $this->getParentRefId(), $this->object->getId(), $subtype, $a_show_admin_permissions); $tbl->parse(); $acc->addItem($translation, $tbl->getHTML()); } $this->tpl->setVariable('ACCORDION', $acc->getHTML()); // Add options table include_once './Services/AccessControl/classes/class.ilObjectRoleTemplateOptionsTableGUI.php'; $options = new ilObjectRoleTemplateOptionsTableGUI($this, 'perm', $this->rolf_ref_id, $this->object->getId(), $a_show_admin_permissions); $options->addMultiCommand($a_show_admin_permissions ? 'adminPermSave' : 'permSave', $this->lng->txt('save')); $options->parse(); $this->tpl->setVariable('OPTIONS_TABLE', $options->getHTML()); }