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; }
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; }