Exemple #1
0
 public function editskinAction()
 {
     $skin = null;
     $config = Zend_Registry::get('config');
     /*
      * Retrieve the skin.
      */
     try {
         $skin = new Model_Skin($this->_getParam('name'));
     } catch (Exception $e) {
         $this->view->errorMessage = $this->translate->_('Unable to locate skin.') . ' ' . $e->getMessage();
     }
     if ($skin != null) {
         /*
          * Build the delete form. Only show it if the skin is not the default system skin.
          */
         $deleteForm = null;
         if ($skin->name != $config->defaults->skin) {
             $deleteForm = new Zend_Form();
             $deleteForm->setMethod('post');
             $hidden = $deleteForm->createElement('hidden', 'mode');
             $hidden->setValue('delete');
             $deleteForm->addElement($hidden);
             $deleteForm->addElement('submit', 'submit', array('label' => $this->view->translate->_('Submit')));
         }
         /*
          * Build the edit forms. One for the logo, one for the css.
          */
         $skins = Model_Skin::getAllSkins();
         $logoForm = new Zend_Form();
         $logoForm->setMethod('post');
         $logoForm->setAttrib('enctype', 'multipart/form-data');
         $logo = $logoForm->createElement('file', 'logo');
         $logo->setLabel(ucfirst($this->view->translate->_('new logo')));
         $logo->addValidator('Count', false, 1);
         $logo->setRequired(true);
         $logo->addValidator('Extension', false, 'png');
         $logo->setDestination($skin->path . '/images');
         $hidden = $logoForm->createElement('hidden', 'mode');
         $hidden->setValue('logo');
         $logoForm->addElement($logo);
         $logoForm->addElement($hidden);
         $logoForm->addElement('submit', 'submit', array('label' => $this->view->translate->_('Submit')));
         $cssForm = new Zend_Form();
         $cssForm->setMethod('post');
         $css = $cssForm->createElement('textarea', 'css');
         $css->setRequired(true);
         $css->setValue($skin->getCssContent());
         $css->setAttrib('rows', '24');
         $css->setAttrib('cols', '80');
         $css->setAttrib('style', 'margin-left: 60px;');
         $hidden = $cssForm->createElement('hidden', 'mode');
         $hidden->setValue('css');
         $cssForm->addElement($css);
         $cssForm->addElement($hidden);
         $cssForm->addElement('submit', 'submit', array('label' => $this->view->translate->_('Submit')));
         /*
          * Process form submission.
          */
         if ($this->getRequest()->isPost()) {
             $formData = $this->getRequest()->getPost();
             switch ($formData['mode']) {
                 /*
                  * Delete the skin.
                  */
                 case 'delete':
                     /*
                      * You may not delete the default system skin.
                      */
                     if ($skin->name == $config->defaults->skin) {
                         $this->view->errorMessage = $this->view->translate->_('You may not delete the default system skin.');
                     } else {
                         try {
                             $skin->deleteSkin();
                             $this->_helper->_redirector->goToRouteAndExit(array('controller' => 'admin', 'action' => 'skins', 'id' => null, 'name' => null));
                         } catch (Exception $e) {
                             $this->view->errorMessage = $this->view->translate->_('Unable to delete skin.') . ' ' . $e->getMessage();
                         }
                     }
                     break;
                     /*
                      * Change the logo.
                      */
                 /*
                  * Change the logo.
                  */
                 case 'logo':
                     if ($logoForm->isValid($formData)) {
                         if ($logoForm->logo->receive()) {
                             rename($logoForm->logo->getFileName(), $skin->path . '/images/logo.png');
                             $this->view->statusMessage = $this->view->translate->_('Skin saved.');
                         } else {
                             $this->view->errorMessage = $this->view->translate->_('Unable to save skin.') . ' ' . $e->getMessage();
                         }
                     } else {
                         $this->view->errorMessage = $this->view->translate->_('Please completely fill out the configuration form.');
                     }
                     break;
                     /*
                      * Change the CSS
                      */
                 /*
                  * Change the CSS
                  */
                 case 'css':
                     if ($cssForm->isValid($formData)) {
                         try {
                             $skin->updateCss($cssForm->getValue('css'));
                             $this->view->statusMessage = $this->view->translate->_('Skin saved.');
                         } catch (Exception $e) {
                             $this->view->errorMessage = $this->view->translate->_('Unable to save skin.') . ' ' . $e->getMessage();
                         }
                     } else {
                         $this->view->errorMessage = $this->view->translate->_('Please completely fill out the configuration form.');
                     }
                     $cssForm->populate($formData);
                     break;
             }
         }
         $this->view->pageTitle = $this->view->translate->_('Edit') . ' ' . $skin->name;
         $this->view->headTitle($this->view->translate->_('Edit') . ' ' . $skin->name);
         $this->view->logoForm = $logoForm;
         $this->view->cssForm = $cssForm;
         $this->view->deleteForm = $deleteForm;
     }
     $this->view->skin = $skin;
 }