/** * 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(); }
/** * 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; }