= $this->icon('reschedule') ?> = $this->translate('Commands') ?>
++ = sprintf( + $this->translate('Issue commands to all %s selected comments.'), + '' . count($comments) . '' + ) + ?> +
diff --git a/modules/monitoring/application/controllers/CommentsController.php b/modules/monitoring/application/controllers/CommentsController.php new file mode 100644 index 000000000..9e477d3bb --- /dev/null +++ b/modules/monitoring/application/controllers/CommentsController.php @@ -0,0 +1,86 @@ +filter = Filter::fromQueryString(str_replace( + 'comment_id', + 'comment_internal_id', + (string)$this->params + )); + $this->comments = $this->backend->select()->from('comment', array( + 'id' => 'comment_internal_id', + 'objecttype' => 'comment_objecttype', + 'comment' => 'comment_data', + 'author' => 'comment_author_name', + 'timestamp' => 'comment_timestamp', + 'type' => 'comment_type', + 'persistent' => 'comment_is_persistent', + 'expiration' => 'comment_expiration', + 'host_name', + 'service_description', + 'host_display_name', + 'service_display_name' + ))->addFilter($this->filter)->getQuery()->fetchAll(); + + if (false === $this->comments) { + throw new Zend_Controller_Action_Exception($this->translate('Comment not found')); + } + + $this->getTabs() + ->add( + 'comments', + array( + 'title' => $this->translate( + 'Display detailed information about multiple comments.' + ), + 'icon' => 'comment', + 'label' => $this->translate('Comments'), + 'url' =>'monitoring/comments/show' + ) + )->activate('comments')->extend(new DashboardAction()); + } + + public function showAction() + { + $this->view->comments = $this->comments; + $this->view->listAllLink = Url::fromPath('monitoring/list/comments') + ->setQueryString($this->filter->toQueryString()); + $this->view->removeAllLink = Url::fromPath('monitoring/comments/remove-all') + ->setParams($this->params); + } + + public function removeAllAction() + { + $this->assertPermission('monitoring/command/comment/delete'); + $this->view->comments = $this->comments; + $this->view->listAllLink = Url::fromPath('monitoring/list/comments') + ->setQueryString($this->filter->toQueryString()); + $delCommentForm = new DeleteCommentCommandForm(); + $delCommentForm->setTitle($this->view->translate('Remove all Comments')); + $delCommentForm->addDescription(sprintf( + $this->translate('Confirm removal of %d comments.'), + count($this->comments) + )); + $delCommentForm->setObjects($this->comments) + ->setRedirectUrl(Url::fromPath('monitoring/list/downtimes')) + ->handleRequest(); + $this->view->delCommentForm = $delCommentForm; + } +} diff --git a/modules/monitoring/application/views/scripts/comment/remove.phtml b/modules/monitoring/application/views/scripts/comment/remove.phtml new file mode 100644 index 000000000..73f8c68a8 --- /dev/null +++ b/modules/monitoring/application/views/scripts/comment/remove.phtml @@ -0,0 +1,11 @@ +
+ = sprintf( + $this->translate('Issue commands to all %s selected comments.'), + '' . count($comments) . '' + ) + ?> +
+ | = $this->render('partials/comment/comment-description.phtml'); ?> |
diff --git a/modules/monitoring/application/views/scripts/partials/comment/comments-header.phtml b/modules/monitoring/application/views/scripts/partials/comment/comments-header.phtml
new file mode 100644
index 000000000..4ec725549
--- /dev/null
+++ b/modules/monitoring/application/views/scripts/partials/comment/comments-header.phtml
@@ -0,0 +1,30 @@
+
+ = $this->qlink( + sprintf($this->translate('List all %d comments …'), count($comments)), + $listAllLink, + null, + array( + 'title' => $this->translate('List all'), + 'data-base-target' => "_next" + ) + ) ?> + |