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');
= $this->sortControl->render($this); ?>
- = $this->paginationControl($this->services, null, null, array('preserve' => $this->preserve)); ?>
+ = $this->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)): ?>
-
-$commets = array();
-foreach ($object->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
-
-
+
+ Comments
+ comments)): ?>
+
+ comments as $comment): ?>
+
+ = sprintf(
+ '[%s] %s (%s): %s',
+ $this->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): ?>
-
- = date('d.m. H:i', $event->timestamp); ?> |
-
-
-
-
- = $event->service_description ?>
-
-
-
- = $event->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;
- }
- ?>
- = $icon ?>
-
- |
-
- endforeach; ?>
-
-
-
-
- All events for = $event->service_description ?>
-
-
-
- All events for = $event->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 @@
-= $this->render('show/components/header.phtml') ?>
-limit(10);
-$hhistory = $this->history->paginate();
+= $this->tabs->render($this); ?>
-?>
+
History
+
+
+ = $this->paginationControl($history, null, null, array('preserve' => $this->preserve)); ?>
+
+
+
+
+ = date('d.m. H:i', $event->timestamp); ?> |
+
+
+
+
+ = $event->service_description ?>
+
+
+
+ = $event->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;
+ }
+ ?>
+ = $icon ?>
+
+ |
+
+ endforeach; ?>
+
+
+
+
+ All events for = $event->service_description ?>
+
+
+
+ All events for = $event->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 @@
-
-
+= $this->tabs->render($this); ?>
+
+
+
+
object->host_icon_image): ?>

{{HOST_ICON}}
-
Host Status = $this->escape($this->object->host_name); ?>
+
+ Host Status
+ = $this->escape($this->object->host_name); ?>
+ object->host_address && $this->object->host_address !== $this->object->host_name): ?>
+ (= $this->object->host_address; ?>)
+
+ object->host_alias) && $this->object->host_alias !== $this->object->host_name): ?>
+ (= $this->object->host_alias; ?>)
+
+
+
+
+ = $this->util()->getHostStateName($this->object->host_state); ?>
+ since = $this->timeSince($this->object->host_last_state_change); ?>
+
-
+
+ = $this->pluginOutput($this->object->output); ?>
+
+
+
{{RECHECK_COMMAND}
+
+
+ = $this->perfdata($this->object->perfdata); ?>
+
+
+
+ = $this->pluginOutput($this->object->long_output); ?>
+
+
+ = $this->render('show/components/comments.phtml'); ?>
+
+
+ Check Statistics
+
+ - Last Check
+ - = $object->last_check; ?>
+ - Next Check
+ - = $object->next_check; ?> {{RESCHEDULE_COMMAND}}
+
+
+
+
host_handled && $object->host_state > 0): ?>
@@ -27,37 +70,19 @@
{{ACKNOWLEDGED_ICON}}
-
-
- Status
- |
-
- = $this->util()->getHostStateName($this->object->host_state); ?>
- since = $this->timeSince($this->object->host_last_state_change); ?>
- |
- {{RECHECK_COMMAND_BUTTON} |
Last Check |
- = $object->last_check ?> |
+ |
Next Check |
- = $object->next_check ?> |
- {{RESCHEDULE_COMMAND_BUTTON}} |
+ |
+ |
- object->host_address && $this->object->host_address !== $this->object->host_name): ?>
+
- Host Address |
- = $this->escape($this->object->host_address); ?> |
-
-
- object->host_alias) && $this->object->host_alias !== $this->object->host_name): ?>
-
- Alias |
- = $this->object->host_alias; ?> |
-
object->host_action_url || $this->object->host_notes_url): ?>
@@ -70,16 +95,6 @@
|
-
- Plugin Output |
-
- = $this->pluginOutput($this->object->output); ?>
- = $this->pluginOutput($this->object->long_output); ?>
- |
-
- {{SUBMIT_PASSIVE_CHECK_RESULT_COMMAND}}
- |
-
object->perfdata): ?>
Performance Data |
@@ -102,8 +117,6 @@
= $this->render('show/components/downtime.phtml'); ?>
-= $this->render('show/components/comments.phtml'); ?>
-
= $this->render('show/components/properties.phtml'); ?>
= $this->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 @@
+= $this->tabs->render($this); ?>
+
{{SERVICE_ICON}}
Service Status = $this->escape($this->object->service_description); ?>