Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Components\Comments;
- use Forms\CommentForm,
- Components\BaseControl,
- Models\BaseModel,
- Models\Comment\ICommentable,
- Nette\Application\BadRequestException,
- Nette\ComponentModel\IContainer;
- class CommentsControl extends BaseControl
- {
- /** @var Models\Comment\CommentModel */
- private $commentsModel;
- /** @var Models\Comment\ICommentable */
- private $entity;
- /** @var Models\BaseModel */
- private $entityModel;
- /**
- * @param Models\Comment\CommentModel
- * @param Models\Comment\ICommentable
- * @param Models\BaseModel
- * @return Components\Comments\CommentsControl
- */
- public function __construct(Models\Comment\CommentMode $commentsModel, ICommentable $entity, BaseModel $entityModel)
- {
- parent::__construct();
- $this->commentsModel = $commentsModel;
- $this->entity = $entity;
- $this->entityModel = $entityModel;
- }
- /**
- * @param int
- */
- public function handleDelete($commentId)
- {
- $comment = $this->commentsModel->find($commentId);
- if(!$comment || !$this->entity->comments->contains($comment)) {
- throw new BadRequestException('Požadovaný komentár sa nenašiel!', '404');
- }
- $this->entity->removeComment($comment);
- $this->commentsModel->delete($comment);
- $this->entityModel->save($this->entity);
- $this->presenter->flashMessage('Komentár bol zmazaný.', 'success');
- if($this->presenter->isAjax()) {
- $this->presenter->invalidateControl();
- } else {
- $this->redirect('this');
- }
- }
- public function render()
- {
- $this->template->comments = $this->entity->comments;
- $this->template->setFile(__DIR__ . '/CommentsControl.phtml');
- $this->template->render();
- }
- /**
- * @param string
- * @return Forms\CommentForm
- */
- public function createComponentCommentForm($name)
- {
- $form = new CommentForm($this, $name);
- $form->setEntityModel($this->commentsModel);
- $form->bindEntity($this->commentsModel->create());
- $form->setCommentableEntity($this->entity);
- $form->setCommentableEntityModel($this->entityModel);
- return $form;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment