From 907b7f24cc7ac4526d0804e1ce5317b2bc5dd166 Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Thu, 10 Oct 2013 11:54:51 +0200 Subject: [PATCH] Monitoring/Show actions: Readd tabs refs #4823 --- .../controllers/ListController.php | 39 +------ .../controllers/ShowController.php | 88 ++++++++++++--- .../views/scripts/list/services.phtml | 2 +- .../scripts/show/components/comments.phtml | 46 +++----- .../show/components/eventHistory.phtml | 103 ----------------- .../views/scripts/show/history.phtml | 106 +++++++++++++++++- .../application/views/scripts/show/host.phtml | 89 ++++++++------- .../views/scripts/show/service.phtml | 2 + 8 files changed, 246 insertions(+), 229 deletions(-) diff --git a/modules/monitoring/application/controllers/ListController.php b/modules/monitoring/application/controllers/ListController.php index 1cc61a2a9..bbea98652 100644 --- a/modules/monitoring/application/controllers/ListController.php +++ b/modules/monitoring/application/controllers/ListController.php @@ -31,7 +31,7 @@ use \Icinga\Application\Benchmark; use \Icinga\Data\Db\Query; use \Icinga\File\Csv; -use \Icinga\Web\Controller\ActionController; +use \Icinga\Module\Monitoring\Controller as MonitoringController; use \Icinga\Web\Hook; use \Icinga\Web\Widget\Tabextension\DashboardAction; use \Icinga\Web\Widget\Tabextension\OutputFormat; @@ -47,7 +47,7 @@ use Icinga\Module\Monitoring\DataView\Contactgroup as ContactgroupView; use Icinga\Module\Monitoring\DataView\HostAndServiceStatus as HostAndServiceStatusView; use Icinga\Module\Monitoring\DataView\Comment as CommentView; -class Monitoring_ListController extends ActionController +class Monitoring_ListController extends MonitoringController { /** * The backend used for this controller @@ -137,39 +137,7 @@ class Monitoring_ListController extends ActionController public function servicesAction() { $this->compactView = 'services-compact'; - $query = HostAndServiceStatusView::fromRequest( - $this->_request, - array( - 'host_name', - 'host_state', - 'host_state_type', - 'host_last_state_change', - 'host_address', - 'host_handled', - 'service_description', - 'service_display_name', - 'service_state' => 'service_state', - 'service_in_downtime', - 'service_acknowledged', - 'service_handled', - 'service_output', - 'service_last_state_change' => 'service_last_state_change', - 'service_icon_image', - 'service_long_output', - 'service_is_flapping', - 'service_state_type', - 'service_handled', - 'service_severity', - 'service_last_check', - 'service_notifications_enabled', - 'service_action_url', - 'service_notes_url', - 'service_last_comment', - 'service_active_checks_enabled', - 'service_passive_checks_enabled' - ) - )->getQuery(); - $this->view->services = $query->paginate(); + $this->view->services = $this->fetchServices(); $this->setupSortControl(array( 'service_last_check' => 'Last Service Check', 'service_severity' => 'Severity', @@ -182,7 +150,6 @@ class Monitoring_ListController extends ActionController 'host_address' => 'Host Address', 'host_last_check' => 'Last Host Check' )); - $this->handleFormatRequest($query); } /** diff --git a/modules/monitoring/application/controllers/ShowController.php b/modules/monitoring/application/controllers/ShowController.php index 79b6d6c6e..046c894dd 100644 --- a/modules/monitoring/application/controllers/ShowController.php +++ b/modules/monitoring/application/controllers/ShowController.php @@ -28,7 +28,7 @@ // @codingStandardsIgnoreStart use \Icinga\Module\Monitoring\Backend; -use \Icinga\Web\Controller\ActionController; +use Icinga\Module\Monitoring\Controller as MonitoringController; use \Icinga\Web\Hook; use \Icinga\Module\Monitoring\Object\Host; use \Icinga\Module\Monitoring\Object\Service; @@ -43,7 +43,7 @@ use \Icinga\Web\Widget\Tabs; * * Actions for show context */ -class Monitoring_ShowController extends ActionController +class Monitoring_ShowController extends MonitoringController { /** * @var Backend @@ -86,7 +86,6 @@ class Monitoring_ShowController extends ActionController public function serviceAction() { $this->view->object->prefetch(); - $this->view->object->eventHistory = $this->view->object->eventHistory->limit(10)->fetchAll(); $this->view->preserve = array(); } @@ -96,14 +95,27 @@ class Monitoring_ShowController extends ActionController public function hostAction() { $this->view->object->prefetch(); - $this->view->object->eventHistory = $this->view->object->eventHistory->limit(10)->fetchAll(); $this->view->preserve = array(); } + public function historyAction() + { + $this->view->object->fetchEventHistory(); + $this->view->history = $this->view->object->eventHistory->limit(10)->paginate(); + } + + public function servicesAction() + { + $params = $this->_request->getParams(); + unset($params['service']); + $this->view->services = $this->fetchServices($params); + } + + /** * History entries for objects */ - public function historyAction() +/* public function historyAction() { $this->view->history = $this->backend->select() ->from( @@ -130,7 +142,7 @@ class Monitoring_ShowController extends ActionController $this->view->preserve['sort'] = $this->_getParam('sort'); } $this->view->preserve = $this->view->history->getAppliedFilter()->toParams(); - } + }*/ /** * Creating tabs for this controller @@ -140,26 +152,66 @@ class Monitoring_ShowController extends ActionController { $object = $this->view->object; $tabs = $this->getTabs(); - if (!$this->view->host) { - return $tabs; - } $params = array( - 'host' => $this->view->host->host_name, + 'host' => $object->host_name, ); - if ($backend = $this->_getParam('backend')) { - $params['backend'] = $backend; - } if ($object instanceof Service) { $params['service'] = $object->service_description; } elseif ($service = $this->_getParam('service')) { $params['service'] = $service; } - + if (isset($params['service'])) { + $tabs->add( + 'service', + array( + 'title' => 'Service', + 'icon' => '', + 'url' => 'monitoring/show/service', + 'urlParams' => $params, + 'tagParams' => array( + 'data-icinga-target' => 'detail' + ) + ) + ); + } + $tabs->add( + 'host', + array( + 'title' => 'Host', + 'icon' => '', + 'url' => 'monitoring/show/host', + 'urlParams' => $params, + 'tagParams' => array( + 'data-icinga-target' => 'detail' + ) + ) + ); + $tabs->add( + 'services', + array( + 'title' => 'Services', + 'icon' => 'img/classic/service.png', + 'url' => 'monitoring/show/services', + 'urlParams' => $params, + 'tagParams' => array( + 'data-icinga-target' => 'detail' + ) + ) + ); + $tabs->add( + 'history', + array( + 'title' => 'History', + 'icon' => '', + 'url' => 'monitoring/show/history', + 'urlParams' => $params, + 'tagParams' => array( + 'data-icinga-target' => 'detail' + ) + ) + ); $tabs->extend(new OutputFormat()) - ->extend(new DashboardAction()) - ->extend(new BasketAction); - - return $tabs; + ->extend(new DashboardAction()); } } // @codingStandardsIgnoreEnd diff --git a/modules/monitoring/application/views/scripts/list/services.phtml b/modules/monitoring/application/views/scripts/list/services.phtml index abc6a4ae8..e1190e9f5 100644 --- a/modules/monitoring/application/views/scripts/list/services.phtml +++ b/modules/monitoring/application/views/scripts/list/services.phtml @@ -8,7 +8,7 @@ $viewHelper = $this->getHelper('MonitoringState');
sortControl->render($this); ?> - paginationControl($this->services, null, null, array('preserve' => $this->preserve)); ?> + paginationControl($services, null, null, array('preserve' => $this->preserve)); ?> diff --git a/modules/monitoring/application/views/scripts/show/components/comments.phtml b/modules/monitoring/application/views/scripts/show/components/comments.phtml index 0099f0f93..cf7c2ede9 100644 --- a/modules/monitoring/application/views/scripts/show/components/comments.phtml +++ b/modules/monitoring/application/views/scripts/show/components/comments.phtml @@ -1,29 +1,19 @@ -comments)): ?> -comments as $comment) { - $text = $this->escape($comment->comment_data); - $commets[] = sprintf( - '[%s] %s (%s): %s', - $this->escape($comment->comment_author), - $this->format()->timeSince($comment->comment_timestamp), - $comment->comment_type, - $text - ); -} -?> - -
-
- {{COMMENT_ICON}} Comments -
-
- {{COMMENT_COMMAND_BUTTON}} - {{NOTIFICATION_COMMAND_BUTTON}}
- comments)): ?> -
', $commets); ?>{{REMOVE_COMMENT_COMMAND}}
- - No comments - -
+
+ Comments + comments)): ?> +
+ comments as $comment): ?> +

+ escape($comment->comment_author), + $this->format()->timeSince($comment->comment_timestamp), + $comment->comment_type, + $comment->comment_data + ); ?> + {{REMOVE_ICON}} +

+ +
+
diff --git a/modules/monitoring/application/views/scripts/show/components/eventHistory.phtml b/modules/monitoring/application/views/scripts/show/components/eventHistory.phtml index fa806a27e..e69de29bb 100644 --- a/modules/monitoring/application/views/scripts/show/components/eventHistory.phtml +++ b/modules/monitoring/application/views/scripts/show/components/eventHistory.phtml @@ -1,103 +0,0 @@ -eventHistory)): ?> -
-
- History -
-
-
- - eventHistory as $event): ?> - - - - - - - - - -
timestamp); ?> - - - service_description ?> - - - - host_name ?> - - - - type) { - case 'notify': - $icon = '{{NOTIFICATION_ICON}}'; - $title = 'Notification'; - $msg = $event->output; - break; - case 'comment': - $icon = '{{COMMENT_ICON}}'; - $title = 'Comment'; - $msg = $event->output; - break; - case 'ack': - $icon = '{{ACKNOWLEDGEMENT_ICON}}'; - $title = 'Acknowledgement'; - $msg = ''; - break; - case 'dt_comment': - $icon = '{{IN_DOWNTIME_ICON}}'; - $title = 'In Downtime'; - $msg = $event->output; - break; - case 'flapping': - $icon = '{{FLAPPING_ICON}}'; - $title = 'Flapping'; - $msg = ''; - break; - case 'hard_state': - $icon = '{{HARDSTATE_ICON}}'; - $title = 'Hard State'; - $msg = '[' . $event->attempt . '/' . $event->max_attempts . ']'; - break; - case 'soft_state': - $icon = '{{SOFTSTATE_ICON}}'; - $title = 'Soft State'; - $msg = '[' . $event->attempt . '/' . $event->max_attempts . ']'; - break; - case 'dt_start': - $icon = '{{DOWNTIME_START_ICON}}'; - $title = 'Downtime Start'; - $msg = $event->output; - break; - case 'dt_end': - $icon = '{{DOWNTIME_END_ICON}}'; - $title = 'Downtime End'; - $msg = $event->output; - break; - } - ?> - - -
- - - All events for service_description ?> - - - - All events for host_name ?> - - -
- - diff --git a/modules/monitoring/application/views/scripts/show/history.phtml b/modules/monitoring/application/views/scripts/show/history.phtml index f5f4254b7..457f56b89 100644 --- a/modules/monitoring/application/views/scripts/show/history.phtml +++ b/modules/monitoring/application/views/scripts/show/history.phtml @@ -1,7 +1,103 @@ -render('show/components/header.phtml') ?> -limit(10); -$hhistory = $this->history->paginate(); +tabs->render($this); ?> -?> +

History

+ +
+ paginationControl($history, null, null, array('preserve' => $this->preserve)); ?> + + + + + + + + + + + + +
timestamp); ?> + + + service_description ?> + + + + host_name ?> + + + + type) { + case 'notify': + $icon = '{{NOTIFICATION_ICON}}'; + $title = 'Notification'; + $msg = $event->output; + break; + case 'comment': + $icon = '{{COMMENT_ICON}}'; + $title = 'Comment'; + $msg = $event->output; + break; + case 'ack': + $icon = '{{ACKNOWLEDGEMENT_ICON}}'; + $title = 'Acknowledgement'; + $msg = ''; + break; + case 'dt_comment': + $icon = '{{IN_DOWNTIME_ICON}}'; + $title = 'In Downtime'; + $msg = $event->output; + break; + case 'flapping': + $icon = '{{FLAPPING_ICON}}'; + $title = 'Flapping'; + $msg = ''; + break; + case 'hard_state': + $icon = '{{HARDSTATE_ICON}}'; + $title = 'Hard State'; + $msg = '[' . $event->attempt . '/' . $event->max_attempts . ']'; + break; + case 'soft_state': + $icon = '{{SOFTSTATE_ICON}}'; + $title = 'Soft State'; + $msg = '[' . $event->attempt . '/' . $event->max_attempts . ']'; + break; + case 'dt_start': + $icon = '{{DOWNTIME_START_ICON}}'; + $title = 'Downtime Start'; + $msg = $event->output; + break; + case 'dt_end': + $icon = '{{DOWNTIME_END_ICON}}'; + $title = 'Downtime End'; + $msg = $event->output; + break; + } + ?> + + +
+ + + All events for service_description ?> + + + + All events for host_name ?> + + +
+ diff --git a/modules/monitoring/application/views/scripts/show/host.phtml b/modules/monitoring/application/views/scripts/show/host.phtml index a00320520..acc0fba24 100644 --- a/modules/monitoring/application/views/scripts/show/host.phtml +++ b/modules/monitoring/application/views/scripts/show/host.phtml @@ -1,14 +1,57 @@ -
-
+tabs->render($this); ?> + +
+
+
object->host_icon_image): ?> Host image {{HOST_ICON}} -

Host Status escape($this->object->host_name); ?>

+

+ Host Status + escape($this->object->host_name); ?> + object->host_address && $this->object->host_address !== $this->object->host_name): ?> + (object->host_address; ?>) + + object->host_alias) && $this->object->host_alias !== $this->object->host_name): ?> + (object->host_alias; ?>) + +

+
+
+ util()->getHostStateName($this->object->host_state); ?> + since timeSince($this->object->host_last_state_change); ?> +
-
+
+ pluginOutput($this->object->output); ?> +
+ + {{RECHECK_COMMAND} + +
+ perfdata($this->object->perfdata); ?> +
+ +
+ pluginOutput($this->object->long_output); ?> +
+ + render('show/components/comments.phtml'); ?> + +
+ Check Statistics +
+
Last Check
+
last_check; ?>
+
Next Check
+
next_check; ?> {{RESCHEDULE_COMMAND}}
+
+
+ +
host_handled && $object->host_state > 0): ?> @@ -27,37 +70,19 @@ {{ACKNOWLEDGED_ICON}} - - - - - + - - + + - object->host_address && $this->object->host_address !== $this->object->host_name): ?> + - - - - - object->host_alias) && $this->object->host_alias !== $this->object->host_name): ?> - - - - object->host_action_url || $this->object->host_notes_url): ?> - - - - - object->perfdata): ?> @@ -102,8 +117,6 @@ render('show/components/downtime.phtml'); ?> -render('show/components/comments.phtml'); ?> - render('show/components/properties.phtml'); ?> render('show/components/flags.phtml'); ?> diff --git a/modules/monitoring/application/views/scripts/show/service.phtml b/modules/monitoring/application/views/scripts/show/service.phtml index 75a05d2f5..ea95d53b4 100644 --- a/modules/monitoring/application/views/scripts/show/service.phtml +++ b/modules/monitoring/application/views/scripts/show/service.phtml @@ -1,3 +1,5 @@ +tabs->render($this); ?> +
{{SERVICE_ICON}}

Service Status escape($this->object->service_description); ?>

- Status - - util()->getHostStateName($this->object->host_state); ?> - since timeSince($this->object->host_last_state_change); ?> - {{RECHECK_COMMAND_BUTTON}
Last Checklast_check ?>
Next Checknext_check ?>{{RESCHEDULE_COMMAND_BUTTON}}
Host Addressescape($this->object->host_address); ?>
Aliasobject->host_alias; ?>
@@ -70,16 +95,6 @@
Plugin Output - pluginOutput($this->object->output); ?> - pluginOutput($this->object->long_output); ?> - - {{SUBMIT_PASSIVE_CHECK_RESULT_COMMAND}} -
Performance Data