public function saveAction()
 {
     $page_id = $this->_getParam('page_id');
     $pageTable = Engine_Api::_()->getDbtable('pages', 'core');
     $pageObject = $pageTable->fetchRow($pageTable->select()->where('name = ?', $page_id)->orWhere('page_id = ?', $page_id));
     $form = new Core_Form_Admin_Layout_Content_Page();
     if (!$pageObject->custom) {
         $form->removeElement('levels');
     }
     $form->populate($pageObject->toArray());
     $levels = $form->getElement('levels');
     if ($levels && !empty($pageObject->levels)) {
         $levels->setValue(Zend_Json_Decoder::decode($pageObject->levels));
     } else {
         if ($levels) {
             $levels->setValue(array_keys($levels->getMultiOptions()));
         }
     }
     if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
         $values = $form->getValues();
         unset($values['page_id']);
         if (empty($values['url'])) {
             $values['url'] = new Zend_Db_Expr('NULL');
         }
         if ($values['levels']) {
             $values['levels'] = Zend_Json_Encoder::encode($values['levels']);
         }
         // @todo add provides no-viewer or viewer based on whether the public level is selected?
         $pageObject->setFromArray($values);
         $pageObject->save();
         $form->addNotice($this->view->translate('Your changes have been saved.'));
     }
     $this->getResponse()->setBody($form->render($this->view));
     $this->_helper->layout->disableLayout(true);
     $this->_helper->viewRenderer->setNoRender(true);
     return;
 }
예제 #2
0
 public function saveAction()
 {
     $form = new Core_Form_Admin_Layout_Content_Page();
     if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
         $values = $form->getValues();
         $page_id = $values['page_id'];
         unset($values['page_id']);
         if (empty($values['url'])) {
             $values['url'] = new Zend_Db_Expr('NULL');
         }
         $pageTable = Engine_Api::_()->getDbtable('pages', 'core');
         $pageObject = $pageTable->fetchRow($pageTable->select()->where('name = ?', $page_id)->orWhere('page_id = ?', $page_id));
         $pageObject->setFromArray($values)->save();
         $form->addNotice($this->view->translate('Your changes have been saved.'));
     }
     $this->getResponse()->setBody($form->render($this->view));
     $this->_helper->layout->disableLayout(true);
     $this->_helper->viewRenderer->setNoRender(true);
     return;
 }