コード例 #1
0
 /**
  * Action - tags
  * add/delete tags
  * 
  * Access to the action is possible in the following paths:
  * - /blogmanager/tags
  *
  * @return void
  */
 public function tagsAction()
 {
     $json = array();
     //-----------------------
     // Получим обьект записи
     $request = $this->getRequest();
     $post_id = (int) $request->getPost('id');
     $post = new Default_Model_DbTable_BlogPost($this->db);
     // Если конкретной записи нет, то перейдем к странице по умолчанию
     if (!$post->loadForUser($this->_identity->user_id, $post_id)) {
         $this->_redirect('/blogmanager');
     }
     $tag = $request->getPost('tag');
     try {
         if ($request->getPost('add')) {
             $addedTags = $post->addTags($tag);
             if (count($addedTags) == 0) {
                 throw new Exception("Значение добавляемой метки уже существует");
             }
             if ($this->_isAjaxRequest) {
                 // Создадим обьект шаблона
                 $templater = Default_Plugin_SysBox::createViewSmarty();
                 //Установим параметры шаблона
                 $templater->tags = $addedTags;
                 // Получим результат шаблона
                 $html = $templater->render('blogmanager/lib/download-tags.tpl');
                 $json = array('result' => $this->Translate('Метка добавлена к записи блога'), 'tag' => $addedTags[0]['tag'], 'html' => $html);
             } else {
                 $this->_flashMessenger->addMessage($this->Translate('Метка добавлена к записи блога'));
             }
         } else {
             if ($request->getPost('delete')) {
                 $post->deleteTags($tag);
                 if ($this->_isAjaxRequest) {
                     $json = array('result' => $this->Translate('Метка удалена из записи блога'), 'tag' => $tag);
                 } else {
                     $this->_flashMessenger->addMessage($this->Translate('Метка удалена из записи блога'));
                 }
             }
         }
     } catch (Exception $e) {
         if ($this->_isAjaxRequest) {
             $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при добавлении / удалении метки в блог') . '</em>', Default_Plugin_SysBox::getMessageError($e)));
         } else {
             $this->_flashMessenger->addMessage($this->Translate('Ошибка при добавлении / удалении метки в блог'));
         }
     }
     if ($this->_isAjaxRequest) {
         $this->sendJson($json);
     } else {
         $this->_redirect('/blogmanager/preview' . '?id=' . $post->getId());
     }
 }