HosipLan

Untitled

Mar 20th, 2012
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.07 KB | None | 0 0
  1. <?php
  2. namespace Components\Comments;
  3.  
  4. use Forms\CommentForm,
  5.     Components\BaseControl,
  6.     Models\BaseModel,
  7.     Models\Comment\ICommentable,
  8.     Nette\Application\BadRequestException,
  9.     Nette\ComponentModel\IContainer;
  10.  
  11. class CommentsControl extends BaseControl
  12. {
  13.     /** @var Models\Comment\CommentModel */
  14.     private $commentsModel;
  15.  
  16.     /** @var Models\Comment\ICommentable */
  17.     private $entity;
  18.  
  19.     /** @var Models\BaseModel */
  20.     private $entityModel;
  21.    
  22.    
  23.     /**
  24.      * @param Models\Comment\CommentModel
  25.      * @param Models\Comment\ICommentable
  26.      * @param Models\BaseModel
  27.      * @return Components\Comments\CommentsControl
  28.      */
  29.     public function __construct(Models\Comment\CommentMode $commentsModel, ICommentable $entity, BaseModel $entityModel)
  30.     {
  31.         parent::__construct();
  32.        
  33.         $this->commentsModel = $commentsModel;
  34.  
  35.         $this->entity = $entity;
  36.         $this->entityModel = $entityModel;
  37.     }
  38.    
  39.     /**
  40.      * @param int
  41.      */
  42.     public function handleDelete($commentId)
  43.     {
  44.         $comment = $this->commentsModel->find($commentId);
  45.        
  46.         if(!$comment || !$this->entity->comments->contains($comment)) {
  47.             throw new BadRequestException('Požadovaný komentár sa nenašiel!', '404');
  48.         }
  49.        
  50.         $this->entity->removeComment($comment);
  51.         $this->commentsModel->delete($comment);
  52.         $this->entityModel->save($this->entity);
  53.        
  54.         $this->presenter->flashMessage('Komentár bol zmazaný.', 'success');
  55.        
  56.         if($this->presenter->isAjax()) {
  57.             $this->presenter->invalidateControl();
  58.  
  59.         } else {
  60.             $this->redirect('this');
  61.         }
  62.     }
  63.    
  64.     public function render()
  65.     {
  66.         $this->template->comments = $this->entity->comments;
  67.         $this->template->setFile(__DIR__ . '/CommentsControl.phtml');
  68.         $this->template->render();
  69.     }
  70.    
  71.     /**
  72.      * @param string
  73.      * @return Forms\CommentForm
  74.      */
  75.     public function createComponentCommentForm($name)
  76.     {
  77.         $form = new CommentForm($this, $name);
  78.        
  79.         $form->setEntityModel($this->commentsModel);
  80.         $form->bindEntity($this->commentsModel->create());
  81.         $form->setCommentableEntity($this->entity);
  82.         $form->setCommentableEntityModel($this->entityModel);
  83.        
  84.         return $form;
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment