Example #1
0
 /**
  * Akce pro úpravu článku
  */
 public function editAction()
 {
     /** @var ArticlesModel $articlesModel */
     $articlesModel = ArticlesModel::getInstance();
     if (!($article = $articlesModel->find(@$_REQUEST['id'], true))) {
         $this->generateError(404, 'Požadovaný obsah nebyl nalezen.');
         return;
     }
     if (!empty($_POST['id']) && $this->checkEditForm($article)) {
         /** @var CurrentUser $currentUser */
         $currentUser = CurrentUser::getInstance();
         $article->author = $currentUser->id;
         if ($articlesModel->save($article)) {
             $this->addInfoMessage('Článek byl úspěšně uložen.');
         } else {
             $this->addInfoMessage('Článek nebyl uložen.', 'error');
         }
         $this->setRedirect('/article/show?id=' . $article->id);
     }
     $this->currentCategory = $article->category;
     $this->setTitle('Úprava článku');
     /** @var Article_EditView $view */
     $view = $this->getView('edit');
     $view->formError = $this->formErrors;
     $view->article = $article;
     $view->categories = $this->categories;
     $view->display();
 }
Example #2
0
 /**
  * Funkce připravující formulář pro zadání nového/úpravu existujícího článku
  * @return Form
  */
 public function createComponentEditForm()
 {
     $form = new Form();
     $form->addHidden('id');
     $form->addText('title', 'Název článku:', null, 200)->setRequired('Je nutné zadat název článku');
     $form->addTextArea('perex', 'Perex:')->setRequired('Je nutné zadat perex článku.')->setAttribute('class', 'wysiwyg');
     $form->addTextArea('content', 'Obsah článku:')->setRequired('Je nuté zadat obsah článku.')->setAttribute('class', 'wysiwyg');
     $categories = $this->categoriesModel->findAll();
     $categoriesArr = [];
     foreach ($categories as $category) {
         $categoriesArr[$category->id] = $category->name;
     }
     $form->addSelect('category', 'Kategorie', $categoriesArr)->setPrompt('--vyberte--')->setRequired('Je nutné vybrat kategorii.');
     $form->addSubmit('save', 'uložit')->onClick[] = function (SubmitButton $button) {
         //funkce po úspěšném odeslání formuláře
         $data = $button->form->getValues(true);
         if ($data['id'] > 0) {
             //aktualizujeme existující článek
             $article = $this->articlesModel->find($data['id']);
             $article->title = $data['title'];
             $article->perex = $data['perex'];
             $article->content = $data['content'];
             $article->category = $data['category'];
             $article->author = $this->user->id;
             $result = $this->articlesModel->save($article);
         } else {
             //zobrazíme nový článek
             $article = new Article();
             $article->title = $data['title'];
             $article->perex = $data['perex'];
             $article->content = $data['content'];
             $article->category = $data['category'];
             $article->author = $this->user->id;
             $result = $this->articlesModel->save($article);
         }
         if ($result) {
             $this->flashMessage('Článek byl úspěšně uložen.');
         } else {
             $this->flashMessage('Článek se nepodařilo uložit.', 'error');
         }
         if ($article->id > 0) {
             $this->redirect('Article:show', ['id' => $article->id]);
         } else {
             $this->redirect('Homepage:default');
         }
     };
     $form->addSubmit('storno', 'zrušit')->setValidationScope([])->onClick[] = function (SubmitButton $button) {
         //funkce po kliknutí na tlačítko pro zrušení
         $data = $button->form->getValues(true);
         if ($data['id'] > 0) {
             $this->redirect('Article:show', ['id' => $data['id']]);
             //přesměrování na zobrazení daného článku
         } elseif ($data['category'] > 0) {
             $this->redirect('Article:list', ['category' => $data['category']]);
             //přesměrování na zobrazení kategorie
         } else {
             $this->redirect('Homepage:default');
         }
     };
     return $form;
 }