/**
  * Manage action for Permission controller
  * @throws Zend_Exception
  * @return NULL
  */
 public function manageAction()
 {
     try {
         $translate = Zend_Registry::get('Zend_Translate');
         $roleId = $this->getRequest()->getParam('role', 0);
         $mdlRole = new Acl_Model_Role();
         $role = $mdlRole->find($roleId)->current();
         if (!$role) {
             throw new Exception($translate->translate("LBL_ROW_NOT_FOUND"));
         }
         $select = $mdlRole->select()->order('priority DESC')->limit(1);
         $childRole = $role->findDependentRowset('Acl_Model_Role', null, $select)->current();
         $frmManageResource = new Acl_Form_ManageResources();
         $action = $this->_request->getBaseUrl() . "/acl/permission/update";
         $frmManageResource->setAction($action);
         $frmManageResource->getElement('id')->setValue($role->id);
         $mdlResource = new Acl_Model_Resource();
         $mdlPermission = new Acl_Model_Permission();
         $modules = $mdlResource->getModules();
         $zfelements = array();
         $resourceDataIds = array();
         $order = 1;
         foreach ($modules as $module) {
             $resources = $mdlResource->getByModule($module);
             if (!array_key_exists(strtolower($module->module), $zfelements)) {
                 $zfelements[strtolower($module->module)] = array();
             }
             foreach ($resources as $resource) {
                 $resourceDataIds[] = $resource->id;
                 $cbResource = new Zend_Form_Element_Select("cb_res_" . $resource->id);
                 $zfelements[strtolower($module->module)][] = "cb_res_" . $resource->id;
                 $lblResource = $resource->controller . ' / ' . $resource->actioncontroller;
                 $cbResource->setLabel($lblResource);
                 $childPrivilege = $childRole ? $mdlPermission->getByResource($resource, $childRole) : null;
                 $rolePrivilege = $mdlPermission->getByResource($resource, $role);
                 #var_dump($childPrivilege, $rolePrivilege, $lblResource);
                 /*if ( strcasecmp($resource->controller, 'tag') == 0 && strcasecmp($resource->actioncontroller, 'list') == 0 ){
                       Zend_Debug::dump( $childPrivilege, 'child privilege' );
                       Zend_Debug::dump( $rolePrivilege, 'role privilege' );
                   }*/
                 if ($childPrivilege == null && $rolePrivilege == null) {
                     $cbResource->addMultiOption('deny', $translate->translate("ACL_DENIED_DEFAULT"));
                     $cbResource->addMultiOption('allow', $translate->translate("ACL_ALLOW"));
                 } elseif (isset($rolePrivilege->privilege) && strcasecmp($rolePrivilege->privilege, 'allow') == 0) {
                     $cbResource->addMultiOption('allow', $translate->translate("ACL_ALLOW"));
                     $cbResource->addMultiOption('deny', $translate->translate("ACL_DENY"));
                 } elseif (isset($rolePrivilege->privilege) && strcasecmp($rolePrivilege->privilege, 'deny') == 0) {
                     $cbResource->addMultiOption('deny', $translate->translate("ACL_DENY"));
                     $cbResource->addMultiOption('allow', $translate->translate("ACL_ALLOW"));
                 } elseif ($childPrivilege && strcasecmp($childPrivilege->privilege, 'allow') == 0 && !$rolePrivilege) {
                     $cbResource->addMultiOption('allow', sprintf($translate->translate("ACL_ALLOWED_INHERITED_FROM"), $privilege->name));
                     $cbResource->addMultiOption('deny', $translate->translate("ACL_DENY"));
                 } elseif ($childPrivilege && strcasecmp($childPrivilege->privilege, 'deny') == 0 && !$rolePrivilege) {
                     $cbResource->addMultiOption('deny', sprintf($translate->translate("ACL_DENIED_INHERITED_FROM"), $privilege->name));
                     $cbResource->addMultiOption('allow', $translate->translate("ACL_ALLOW"));
                 }
                 $cbResource->setOrder($order);
                 $frmManageResource->addElement($cbResource);
                 $order++;
             }
         }
         #$frmManageResource->getMessages()
         $resourceDataIds = implode(',', $resourceDataIds);
         $hrs = new Zend_Session_Namespace('resourceDataIds');
         $hrs->hrs = $resourceDataIds;
         #$frmManageResource->getElement('hrs')->setValue( $resourceDataIds );
         $this->view->modules = $modules;
         $this->view->zfelements = $zfelements;
         $this->view->role = $role;
         $this->view->formResources = $frmManageResource;
         $fields = array();
         foreach ($frmManageResource->getElements() as $element) {
             $fields[] = $element->getName();
         }
         $frmManageResource->addDisplayGroup($fields, 'form', array('legend' => "ACL_UPDATE_ROLE"));
     } catch (Exception $e) {
         $this->_helper->flashMessenger->addMessage(array('type' => 'error', 'header' => '', 'message' => $e->getMessage()));
         $this->_helper->redirector("list", "role", "acl");
     }
     return null;
 }