/** * * called by wizard template action */ public function outputEditAction() { $thmServ = $this->getThemeService(); $translator = \Zend_Registry::get('container')->getService('translator'); // getting the theme entity $themeId = $this->_request->getParam('themeid'); $theme = $thmServ->findById($themeId); // getting selected output $outputId = $this->_request->getParam('outputid'); $output = $this->getOutputService()->getById($outputId); /* @var $settings Newscoop\Entity\Output */ $templates = array(); // getting all available templates foreach ($thmServ->getTemplates($theme) as $tpl) { /* @var $tpl Newscoop\Entity\Resource */ $templates[$tpl->getPath()] = $tpl->getName(); // couldn't get id cause it's null :) :) :) } // making the form $outputForm = new Admin_Form_Theme_OutputSettings(); $outputForm->setAction($this->_helper->url('output-edit')); // getting theme's output settings $settings = $thmServ->findOutputSetting($theme, $output); /* @var $settings Newscoop\Entity\OutputSettings */ $settingVals = array("frontpage" => null, "articlepage" => null, "sectionpage" => null, "errorpage" => null, "outputid" => $outputId, "themeid" => $themeId); if ($settings instanceof OutputSettings) { $settingVals["frontpage"] = $settings->getFrontPage(); $settingVals["articlepage"] = $settings->getArticlePage(); $settingVals["sectionpage"] = $settings->getSectionPage(); $settingVals["errorpage"] = $settings->getErrorPage(); } $outputForm->setValues($templates, $settingVals); try { // @todo maybe implement this a little smarter, little less code? if ($this->_request->isPost()) { if ($outputForm->isValid($this->_request->getPost())) { $settings->setFrontPage(new Resource($outputForm->getValue('frontpage'))); $settings->setSectionPage(new Resource($outputForm->getValue('sectionpage'))); $settings->setArticlePage(new Resource($outputForm->getValue('articlepage'))); $settings->setErrorPage(new Resource($outputForm->getValue('errorpage'))); $this->getThemeService()->assignOutputSetting($settings, $theme); $msg = $translator->trans('Theme settings saved.', array(), 'themes'); $this->view->success = $msg; $this->_helper->flashMessenger($msg); } else { throw new \Exception(); } } } catch (\Exception $e) { // $this->_helper->flashMessenger( ( $this->view->error = $translator->trans( 'Saving settings failed.' ) ) ); } $this->view->outputForm = $outputForm; // disabling layout for ajax and hide the submit button if ($this->_request->isXmlHttpRequest()) { $this->_helper->layout->disableLayout(); $outputForm->getElement('submit')->clearDecorators()->setAttrib('style', 'display:none'); } }