diff options
Diffstat (limited to 'modules/monitoring/application/forms/Command/Object/DeleteCommentsCommandForm.php')
-rw-r--r-- | modules/monitoring/application/forms/Command/Object/DeleteCommentsCommandForm.php | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/modules/monitoring/application/forms/Command/Object/DeleteCommentsCommandForm.php b/modules/monitoring/application/forms/Command/Object/DeleteCommentsCommandForm.php new file mode 100644 index 0000000..70ea7b8 --- /dev/null +++ b/modules/monitoring/application/forms/Command/Object/DeleteCommentsCommandForm.php @@ -0,0 +1,89 @@ +<?php +/* Icinga Web 2 | (c) 2014 Icinga Development Team | GPLv2+ */ + +namespace Icinga\Module\Monitoring\Forms\Command\Object; + +use Icinga\Module\Monitoring\Command\Object\DeleteCommentCommand; +use Icinga\Module\Monitoring\Forms\Command\CommandForm; +use Icinga\Web\Notification; + +/** + * Form for deleting host or service comments + */ +class DeleteCommentsCommandForm extends CommandForm +{ + /** + * The comments to delete + * + * @var array + */ + protected $comments; + + /** + * {@inheritdoc} + */ + public function init() + { + $this->setAttrib('class', 'inline'); + } + + /** + * Set the comments to delete + * + * @param iterable $comments + * + * @return $this + */ + public function setComments($comments) + { + $this->comments = $comments; + return $this; + } + + /** + * {@inheritdoc} + */ + public function createElements(array $formData = array()) + { + $this->addElements(array( + array( + 'hidden', + 'redirect', + array('decorators' => array('ViewHelper')) + ) + )); + return $this; + } + + /** + * {@inheritdoc} + */ + public function getSubmitLabel() + { + return $this->translatePlural('Remove', 'Remove All', count($this->comments)); + } + + /** + * {@inheritdoc} + */ + public function onSuccess() + { + foreach ($this->comments as $comment) { + $cmd = new DeleteCommentCommand(); + $cmd + ->setCommentId($comment->id) + ->setCommentName($comment->name) + ->setAuthor($this->Auth()->getUser()->getUsername()) + ->setIsService(isset($comment->service_description)); + $this->getTransport($this->request)->send($cmd); + } + $redirect = $this->getElement('redirect')->getValue(); + if (! empty($redirect)) { + $this->setRedirectUrl($redirect); + } + Notification::success( + $this->translatePlural('Deleting comment..', 'Deleting comments..', count($this->comments)) + ); + return true; + } +} |