public function addAction() { $form = new Zetta_Form(Zend_Registry::get('config')->Access->form->resource); $routes = Modules_Router_Model_Router::getInstance()->getRoutesTreeHash(); $menuIdElement = $form->getElement('route_id'); $menuIdElement->addMultiOptions($routes); if ($resource_id = $this->getParam('resource')) { $resource = $this->_modelResources->getResource($resource_id)->toArray(); $resource['type'] = 'free'; if (preg_match('/route_(\\d*)/', $resource['resource_name'], $matches)) { $resource['route_id'] = $matches[1]; $resource['type'] = 'router'; } $this->view->resource = $resource; $form->setDefaults($resource); $form->getElement('type')->setAttrib('disabled', 'disabled'); $form->getElement('resource_name')->setAttrib('disabled', 'disabled'); } if (!sizeof($_POST) || !$form->isValid($_POST)) { $this->view->form = $form; } else { if ($form->getValue('type') == 'router') { $arrayData = array('resource_name' => $resource_name = 'route_' . $form->getValue('route_id'), 'description' => 'Ограничение доступа к разделу "' . trim($routes[$form->getValue('route_id')], '- ') . '"'); } else { $arrayData = array('resource_name' => $resource_name = $form->getValue('resource_name'), 'description' => $form->getValue('description')); } if (!$arrayData['resource_name'] || !$arrayData['description']) { // проверка, чтобы не добавлялись пустые привелегии return $this->renderScript('admin/addComplete.ajax.phtml'); } if ($resource_id) { $this->_modelResources->update($arrayData, $this->_modelResources->getAdapter()->quoteInto('resource_name = ?', $resource_id)); } else { $this->_modelResources->insert($arrayData); // дадим доступ администраторам по умолчанию $this->_modelRules->addRule($resource_name, 'admin', 'allow'); } $this->renderScript('admin/addComplete.ajax.phtml'); } }