public function editPageAction() { $id = $this->_getParam('id'); $this->view->user_id = $id; $model1 = new Application_Model_Page(); $model = $model1->find($id); if (false === $model) { $this->_flashMessenger->addMessage(array('error' => 'Invalid request! Please try again.')); $this->_helper->_redirector->gotoUrl($this->view->seoUrl('/hr/employees')); } $options = array('title' => $model->getTitle(), 'identifire' => $model->getIdentifire(), 'content' => $model->getContent(), 'metaTitle' => $model->getMetaTitle(), 'metaDescription' => $model->getMetaDescription(), 'metaKeyword' => $model->getMetaKeyword(), 'status' => $model->getStatus()); $request = $this->getRequest(); $form = new Application_Form_Page(); $form->populate($options); $options = $request->getPost(); if ($request->isPost()) { if ($form->isValid($options)) { $sanitize = new Base_Sanitize(); if (trim($options['identifire']) == "") { $options['identifire'] = $options['title']; } if (trim($options['identifire']) != "") { $options['identifire'] = $sanitize->clearInputs($options['identifire']); $options['identifire'] = $sanitize->sanitize($options['identifire']); //update seo url table $seo_url_title = $options['identifire']; $actual_url = "/index/contact"; $seo_url = "/contact"; $actual_url = "/employee/page/identifire/{$model->getIdentifire()}"; $new_actual_url = "/employee/page/identifire/{$seo_url_title}"; $seo_url = "/{$seo_url_title}"; $seoUrlM = new Application_Model_SeoUrl(); $soeUrl = $seoUrlM->fetchRow("actual_url='{$actual_url}'"); if (false !== $soeUrl) { if ($seo_url != "") { $soeUrl->setActualUrl($new_actual_url); $soeUrl->setSeoUrl($seo_url); $soeUrl->save(); } } else { if ($seo_url != "") { $seoUrl = new Application_Model_SeoUrl(); $seoUrl->setActualUrl($new_actual_url); $seoUrl->setSeoUrl($seo_url); $seoUrl->save(); } } } $model->setOptions($options); $model->save(); $this->_flashMessenger->addMessage(array('success' => 'Page has been updated successfully!')); $this->_helper->_redirector->gotoUrl($this->view->seoUrl('/cms/edit-page/id/' . $id)); } else { $this->_flashMessenger->addMessage(array('error' => 'Unable to save the data. Please provide valid inputs and try again.')); $form->reset(); $form->populate($options); } } $this->view->form = $form; }
public function pageAction() { $checkFaPull = false; //flag shows that system needs to check featured areas in session $pageForm = new Application_Form_Page(); $pageId = $this->getRequest()->getParam('id'); $mapper = Application_Model_Mappers_PageMapper::getInstance(); $page = $pageId ? $mapper->find($pageId) : new Application_Model_Models_Page(); if (!$this->getRequest()->isPost()) { $pageForm->getElement('pageCategory')->addMultiOptions($this->_getMenuOptions($page)); $pageForm->getElement('pageCategory')->setValue($page->getParentId()); if ($page instanceof Application_Model_Models_Page) { $pageForm->setOptions($page->toArray()); $pageForm->getElement('pageId')->setValue($page->getId()); $pageForm->getElement('draft')->setValue($page->getDraft()); //will be like this for now until page will support multiple options set (from the interface) $pageOptions = $page->getExtraOptions(); $pageForm->getElement('extraOptions')->setValue(isset($pageOptions[0]) ? $pageOptions[0] : 0); $defaultPageUrl = $this->_helper->website->getDefaultpage(); if ($pageForm->getElement('url')->getValue() == $this->_helper->page->clean($defaultPageUrl)) { $pageForm->getElement('url')->setAttribs(array('readonly' => true, 'class' => 'noedit')); } } } else { $params = $this->getRequest()->getParams(); $messages = $params['pageCategory'] == -4 ? array('pageCategory' => array('Please make your selection')) : array(); $optimized = isset($params['optimized']) && $params['optimized']; //if page is optimized by samba unset optimized values from update if ($optimized) { $params = $this->_restoreOriginalValues($params); } if ($pageForm->isValid($params)) { $pageData = $pageForm->getValues(); $pageData['url'] = $this->_helper->page->filterUrl($pageData['url']); //if we'r creating page -> check that we do not have an identical urls if (!$pageId) { $pageExists = $mapper->findByUrl($pageData['url']); if ($pageExists instanceof Application_Model_Models_Page) { $this->_helper->response->fail('Page with url <strong>' . $pageData['url'] . '</strong> already exists.'); exit; } $checkFaPull = true; } //saving old data for seo routine $this->_helper->session->oldPageUrl = $page->getUrl(); $this->_helper->session->oldPageH1 = $page->getH1(); $this->_helper->session->oldPageDraft = $page->getDraft(); if (!$optimized) { $page->registerObserver(new Tools_Seo_Watchdog()); } $page->registerObserver(new Tools_Search_Watchdog()); $page->registerObserver(new Tools_Page_GarbageCollector(array('action' => Tools_System_GarbageCollector::CLEAN_ONUPDATE))); if ($page->getId() && $page->getParentId() == 0 && ($pageData['inMenu'] != Application_Model_Models_Page::IN_MAINMENU || $pageData['pageCategory'] != 0)) { if ($this->_hasSubpages($page->getId())) { $this->_helper->response->fail($this->_helper->language->translate('Cannot downgrade the category.<br />This page is a category page and has subpages. Please remove or move subpages to another category first')); exit; } } $page->setOptions($pageData); //prevent renaming of the index page if ($page->getUrl() != $this->_helper->website->getDefaultpage()) { $page->setUrl($pageData['url']); } $page->setTargetedKeyPhrase($page->getH1()); $page->setParentId($pageData['pageCategory']); $page->setShowInMenu($pageData['inMenu']); // saving new page preview image is recieved it in request if (isset($params['pagePreviewImage']) && !empty($params['pagePreviewImage'])) { $previewImageName = Tools_Page_Tools::processPagePreviewImage(!$optimized ? $page->getUrl() : $this->_helper->session->oldPageUrl, $params['pagePreviewImage']); } elseif (!$optimized && $this->_helper->session->oldPageUrl !== $page->getUrl()) { // TODO: Refactor this part $previewImageName = Tools_Page_Tools::processPagePreviewImage(!$optimized ? $page->getUrl() : $this->_helper->session->oldPageUrl, Tools_Page_Tools::processPagePreviewImage($this->_helper->session->oldPageUrl)); } if (isset($previewImageName)) { $page->setPreviewImage($previewImageName); } $page = $mapper->save($page); if ($checkFaPull) { $this->_processFaPull($page->getId()); } $page->notifyObservers(); $this->_helper->response->success(array('redirectTo' => $page->getUrl())); exit; } $messages = array_merge($pageForm->getMessages(), $messages); $this->_helper->response->fail(Tools_Content_Tools::proccessFormMessages($messages)); exit; } $this->view->faCount = $page->getId() ? sizeof(Application_Model_Mappers_FeaturedareaMapper::getInstance()->findAreasByPageId($page->getId())) : 0; //page preview image $this->view->pagePreviewImage = Tools_Page_Tools::getPreview($page); //Tools_Page_Tools::processPagePreviewImage($page->getUrl()); $this->view->sambaOptimized = $page->getOptimized(); // page help section $this->view->helpSection = $pageId ? 'editpage' : 'addpage'; if ($page->getOptimized()) { $pageForm->lockFields(array('h1', 'headerTitle', 'url', 'navName', 'metaDescription', 'metaKeywords', 'teaserText')); } $this->view->pageForm = $pageForm; }