Admin_ThemesController::outputEditAction PHP Метод

outputEditAction() публичный Метод

called by wizard template action
public outputEditAction ( )
    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');
        }
    }