public function testMatchingGetPermissionsForView() { $permissionsNames = ModulePermissionsEditViewUtil::getPermissionNamesForView(); $permissions = ModulePermissionsEditViewUtil::getPermissionsForView(); $this->assertEquals(count($permissionsNames), count($permissions)); $this->assertEquals(3, count($permissionsNames)); }
public function actionEditModulePermissions($id) { $group = Group::getById(intval($id)); $title = Zurmo::t('ZurmoModule', 'Record Permissions'); $breadCrumbLinks = array(strval($group) => array('group/' . static::resolveBreadCrumbActionByGroup($group), 'id' => $id), $title); $data = PermissionsUtil::getAllModulePermissionsDataByPermitable($group); $permissionsForm = ModulePermissionsFormUtil::makeFormFromPermissionsData($data); $postVariableName = get_class($permissionsForm); if (isset($_POST[$postVariableName])) { $this->clearCaches(); $castedPostData = ModulePermissionsFormUtil::typeCastPostData($_POST[$postVariableName]); $readyToSetPostData = ModulePermissionsEditViewUtil::resolveWritePermissionsFromArray($castedPostData); if (ModulePermissionsFormUtil::setPermissionsFromCastedPost($readyToSetPostData, $group)) { Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'Record Permissions Saved Successfully.')); $action = $this->resolveActionToGoToAfterSave($group); $this->redirect(array($this->getId() . '/' . $action, 'id' => $group->id)); Yii::app()->end(0, false); } } $permissionsData = GroupModulePermissionsDataToEditViewAdapater::resolveData($data); $metadata = ModulePermissionsEditViewUtil::resolveMetadataFromData($permissionsData, ModulePermissionsEditAndDetailsView::getMetadata()); $titleBarAndEditView = new GroupActionBarAndSecurityEditView($this->getId(), $this->getModule()->getId(), $permissionsForm, $group, $this->getModule()->getPluralCamelCasedName(), $metadata, 'ModulePermissionsEditAndDetailsView', 'GroupModulePermissionsEditMenu'); $view = new GroupsPageView(ZurmoDefaultAdminViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $titleBarAndEditView, $breadCrumbLinks, 'GroupBreadCrumbView')); echo $view->render(); }
/** * @depends testSettingChangeOwnerChangePermissionFromPost */ public function testModulePermissionsFormUtilSetRightsFromPost() { $group = Group::getByName('modulePermissionsGroup'); $data = PermissionsUtil::getAllModulePermissionsDataByPermitable($group); $form = ModulePermissionsFormUtil::makeFormFromPermissionsData($data); $compareData = array('AccountsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => Permission::ALLOW, 'inherited' => null, 'actual' => Permission::ALLOW), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'ContactsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => Permission::ALLOW, 'actual' => Permission::ALLOW), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'LeadsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'MeetingsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'NotesModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'OpportunitiesModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'ContractsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'TasksModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'UsersModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null))); $this->assertEquals($compareData['AccountsModule'], $form->data['AccountsModule']); $this->assertEquals($compareData['ContactsModule'], $form->data['ContactsModule']); $this->assertEquals($compareData['LeadsModule'], $form->data['LeadsModule']); $this->assertEquals($compareData['OpportunitiesModule'], $form->data['OpportunitiesModule']); $this->assertEquals($compareData['ContractsModule'], $form->data['ContractsModule']); $this->assertEquals($compareData['TasksModule'], $data['TasksModule']); $this->assertEquals($compareData['NotesModule'], $data['NotesModule']); $this->assertEquals($compareData['MeetingsModule'], $data['MeetingsModule']); $this->assertEquals($compareData['UsersModule'], $form->data['UsersModule']); $fakePost = array('LeadsModule__' . Permission::READ => strval(Permission::ALLOW), 'LeadsModule__' . Permission::WRITE => strval(Permission::ALLOW), 'AccountsModule__' . Permission::READ => '', 'OpportunitiesModule__' . Permission::DELETE => strval(Permission::DENY), 'ContractsModule__' . Permission::DELETE => strval(Permission::DENY)); $validatedPost = ModulePermissionsFormUtil::typeCastPostData($fakePost); $readyToSetPostData = ModulePermissionsEditViewUtil::resolveWritePermissionsFromArray($validatedPost); $readyToSetPostDataCompare = array('LeadsModule__' . Permission::READ => strval(Permission::ALLOW), 'LeadsModule__' . Permission::CHANGE_OWNER => strval(Permission::ALLOW), 'LeadsModule__' . Permission::WRITE => strval(Permission::ALLOW), 'LeadsModule__' . Permission::CHANGE_PERMISSIONS => strval(Permission::ALLOW), 'AccountsModule__' . Permission::READ => '', 'OpportunitiesModule__' . Permission::DELETE => strval(Permission::DENY), 'ContractsModule__' . Permission::DELETE => strval(Permission::DENY)); $this->assertEquals($readyToSetPostDataCompare, $readyToSetPostData); $saved = ModulePermissionsFormUtil::setPermissionsFromCastedPost($readyToSetPostData, $group); $this->assertTrue($saved); $group->forget(); $group = Group::getByName('modulePermissionsGroup'); $newItem = NamedSecurableItem::getByName('LeadsModule'); $this->assertEquals(array(Permission::READ | Permission::WRITE | Permission::CHANGE_OWNER | Permission::CHANGE_PERMISSIONS, Permission::NONE), $newItem->getExplicitActualPermissions($group)); $newItem->forget(); $compareData = array('AccountsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'ContactsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => Permission::ALLOW, 'actual' => Permission::ALLOW), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'LeadsModule' => array(Permission::CHANGE_OWNER => array('explicit' => Permission::ALLOW, 'inherited' => null, 'actual' => Permission::ALLOW), Permission::CHANGE_PERMISSIONS => array('explicit' => Permission::ALLOW, 'inherited' => null, 'actual' => Permission::ALLOW), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => Permission::ALLOW, 'inherited' => null, 'actual' => Permission::ALLOW), Permission::WRITE => array('explicit' => Permission::ALLOW, 'inherited' => null, 'actual' => Permission::ALLOW)), 'MeetingsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'NotesModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'OpportunitiesModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => Permission::DENY, 'inherited' => null, 'actual' => Permission::DENY), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'ContractsModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => Permission::DENY, 'inherited' => null, 'actual' => Permission::DENY), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'TasksModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null)), 'UsersModule' => array(Permission::CHANGE_OWNER => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::CHANGE_PERMISSIONS => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::DELETE => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::READ => array('explicit' => null, 'inherited' => null, 'actual' => null), Permission::WRITE => array('explicit' => null, 'inherited' => null, 'actual' => null))); $data = PermissionsUtil::getAllModulePermissionsDataByPermitable($group); $this->assertEquals($compareData['AccountsModule'], $data['AccountsModule']); $this->assertEquals($compareData['ContactsModule'], $data['ContactsModule']); $this->assertEquals($compareData['LeadsModule'], $data['LeadsModule']); $this->assertEquals($compareData['OpportunitiesModule'], $data['OpportunitiesModule']); $this->assertEquals($compareData['ContractsModule'], $data['ContractsModule']); $this->assertEquals($compareData['TasksModule'], $data['TasksModule']); $this->assertEquals($compareData['NotesModule'], $data['NotesModule']); $this->assertEquals($compareData['MeetingsModule'], $data['MeetingsModule']); $this->assertEquals($compareData['UsersModule'], $data['UsersModule']); $group->forget(); }
/** * Override to produce a form layout that does not follow the * standard form layout for EditView. */ protected function renderFormLayout($form = null) { $content = ''; $metadata = $this->getFormLayoutMetadata(); $permissions = ModulePermissionsEditViewUtil::getPermissionsForView(); assert('count($permissions) > 0'); foreach ($metadata['global']['panels'] as $panel) { if (!empty($panel['title'])) { $content .= '<div class="panelTitle">' . $panel['title'] . '</div>'; } $content .= '<table>'; $content .= '<colgroup>'; $content .= '<col style="width:20%" />'; $width = 80 / count($permissions); foreach ($permissions as $permission) { $content .= '<col style="width:' . $width . '%" />'; } $content .= '</colgroup>'; $content .= '<tbody>'; $content .= '<tr>'; $content .= '<th> </th>'; $permissionNames = ModulePermissionsEditViewUtil::getPermissionNamesForView(); $permissionLabels = ModulePermissionsEditViewUtil::getPermissionLabelsForView(); foreach ($permissionNames as $permission) { $content .= '<th>' . $permissionLabels[$permission] . '</th>'; } $content .= '</tr>'; foreach ($panel['rows'] as $row) { assert('!empty($row["title"])'); $title = Zurmo::t('ZurmoModule', $row['title']); $rowTitlesAndContent[$title] = '<th>' . $title . '</th>'; foreach ($row['cells'] as $cell) { if (is_array($cell['elements']) && $this->shouldDisplayCell(ArrayUtil::getArrayValue($cell, 'detailViewOnly'))) { foreach ($cell['elements'] as $elementInformation) { $editableTemplate = '<td colspan="{colspan}">{content}{error}</td>'; $this->resolveElementInformationDuringFormLayoutRender($elementInformation); $elementclassname = $elementInformation['type'] . 'Element'; $element = new $elementclassname($this->model, $elementInformation['attributeName'], $form, array_slice($elementInformation, 2)); $element->editableTemplate = $editableTemplate; $rowTitlesAndContent[$title] .= $element->render(); } } } } ksort($rowTitlesAndContent); foreach ($rowTitlesAndContent as $rowcontent) { if (!empty($rowcontent)) { $content .= '<tr>'; $content .= $rowcontent; $content .= '</tr>'; } } $content .= '</tbody>'; $content .= '</table>'; } return $content; }