diff --git a/modules/monitoring/application/controllers/DowntimeController.php b/modules/monitoring/application/controllers/DowntimeController.php
new file mode 100644
index 000000000..13e7f9e14
--- /dev/null
+++ b/modules/monitoring/application/controllers/DowntimeController.php
@@ -0,0 +1,79 @@
+params->get('downtime_id');
+
+ $this->downtime = $this->backend->select()->from('downtime', array(
+ 'id' => 'downtime_internal_id',
+ 'objecttype' => 'downtime_objecttype',
+ 'comment' => 'downtime_comment',
+ 'author_name' => 'downtime_author_name',
+ 'start' => 'downtime_start',
+ 'scheduled_start' => 'downtime_scheduled_start',
+ 'scheduled_end' => 'downtime_scheduled_end',
+ 'end' => 'downtime_end',
+ 'duration' => 'downtime_duration',
+ 'is_flexible' => 'downtime_is_flexible',
+ 'is_fixed' => 'downtime_is_fixed',
+ 'is_in_effect' => 'downtime_is_in_effect',
+ 'entry_time' => 'downtime_entry_time',
+ 'host_state' => 'downtime_host_state',
+ 'service_state' => 'downtime_service_state',
+ 'host_name',
+ 'host',
+ 'service',
+ 'service_description',
+ 'host_display_name',
+ 'service_display_name'
+ ))->where('downtime_internal_id', $downtimeId)->getQuery()->fetchRow();
+
+ $this->getTabs()
+ ->add(
+ 'downtime',
+ array(
+ 'title' => $this->translate(
+ 'Display detailed information about a downtime.'
+ ),
+ 'icon' => 'plug',
+ 'label' => $this->translate('Downtime'),
+ 'url' =>'monitoring/downtimes/show'
+ )
+ )->activate('downtime')->extend(new DashboardAction());
+ }
+
+ public function showAction()
+ {
+ $this->view->downtime = $this->downtime;
+ $this->view->delDowntimeForm = new DeleteDowntimeCommandForm();
+ $this->view->delDowntimeForm->setObjects($this->downtime);
+ $this->view->listAllLink = Url::fromPath('monitoring/list/downtimes');
+ $this->view->showHostLink = Url::fromPath('monitoring/host/show')
+ ->setParam('host', $this->downtime->host);
+ $this->view->showServiceLink = Url::fromPath('monitoring/service/show')
+ ->setParam('host', $this->downtime->host)
+ ->setParam('service', $this->downtime->service_description);
+ }
+}
diff --git a/modules/monitoring/application/views/scripts/downtime/show.phtml b/modules/monitoring/application/views/scripts/downtime/show.phtml
new file mode 100644
index 000000000..806897e90
--- /dev/null
+++ b/modules/monitoring/application/views/scripts/downtime/show.phtml
@@ -0,0 +1,179 @@
+service_description)) {
+ $isService = true;
+ $stateName = Service::getStateText($downtime->service_state);
+} else {
+ $isService = false;
+ $stateName = Host::getStateText($downtime->host_state);
+}
+?>
+
+
+ compact): ?>
+ = $this->tabs; ?>
+
+
+
+ link()->service(
+ $downtime->service_description,
+ $downtime->service_display_name,
+ $downtime->host_name,
+ $downtime->host_display_name
+ );
+ $icon = $this->icon('service', $this->translate('Service'));
+ ?>
+
+ icon('host', $this->translate('Host'));
+ $link = $this->link()->host($downtime->host_name, $downtime->host_display_name)
+ ?>
+
+ = sprintf(
+ $this->translate(
+ 'Downtime for %s',
+ 'Downtime for host or service.'
+ ),
+ $link
+ ); ?>
+ = $icon ?>
+
+
+
+
+
+ is_flexible): ?>
+ is_in_effect): ?>
+ = sprintf(
+ $isService
+ ? $this->translate('This flexible service downtime was started on %s at %s and lasts for %s until %s at %s.')
+ : $this->translate('This flexible host downtime was started on %s at %s and lasts for %s until %s at %s.'),
+ date('d.m.y', $downtime->start),
+ date('H:i', $downtime->start),
+ $this->format()->duration($downtime->duration),
+ date('d.m.y', $downtime->end),
+ date('H:i', $downtime->end)
+ ); ?>
+
+ = sprintf(
+ $isService
+ ? $this->translate('This flexible service downtime has been scheduled to start between %s - %s and to last for %s.')
+ : $this->translate('This flexible host downtime has been scheduled to start between %s - %s and to last for %s.'),
+ date('d.m.y H:i', $downtime->scheduled_start),
+ date('d.m.y H:i', $downtime->scheduled_end),
+ $this->format()->duration($downtime->duration)
+ ); ?>
+
+
+ is_in_effect): ?>
+ = sprintf(
+ $isService
+ ? $this->translate('This fixed service downtime was started on %s at %s and expires on %s at %s.')
+ : $this->translate('This fixed host downtime was started on %s at %s and expires on %s at %s.'),
+ date('d.m.y', $downtime->start),
+ date('H:i', $downtime->start),
+ date('d.m.y', $downtime->end),
+ date('H:i', $downtime->end)
+ ); ?>
+
+ = sprintf(
+ $isService
+ ? $this->translate('This fixed service downtime has been scheduled to start on %s at %s and to end on %s at %s.')
+ : $this->translate('This fixed host downtime has been scheduled to start on %s at %s and to end on %s at %s.'),
+ date('d.m.y', $downtime->scheduled_start),
+ date('H:i', $downtime->scheduled_start),
+ date('d.m.y', $downtime->scheduled_end),
+ date('H:i', $downtime->scheduled_end)
+ ); ?>
+
+
+
+
+
+
+
+
+
+ = $this->translate('Author') ?> |
+ = $this->escape($this->downtime->author_name) ?> |
+
+
+ = $this->translate('Comments') ?> |
+ = $this->escape($this->downtime->comment) ?> |
+
+
+ = $this->translate('Scheduled start') ?> |
+ = date('d.m.y H:i', $this->downtime->scheduled_start) ?> |
+
+
+ = $this->translate('Scheduled end') ?> |
+ = date('d.m.y H:i', $this->downtime->scheduled_end) ?> |
+
+
+ = $this->translate('Is Flexible') ?> |
+
+ = $this->escape(
+ $this->downtime->is_flexible ?
+ $this->translate('Yes') : $this->translate('No')
+ );
+ ?>
+ |
+
+
+ = $this->translate('In Effect') ?> |
+
+ = $this->escape(
+ $this->downtime->is_in_effect ?
+ $this->translate('Yes') : $this->translate('No')
+ );
+ ?>
+ |
+
+
+ downtime->is_flexible && $this->downtime->is_in_effect): ?>
+
+ = $this->translate('Start') ?> |
+ = date('d.m.y H:i', $downtime->start); ?> |
+
+
+ = $this->translate('End') ?> |
+ = date('d.m.y H:i', $downtime->end); ?> |
+
+
+
+ = $this->translate('Duration') ?> |
+ = $this->format()->duration($this->escape($this->downtime->duration)); ?> |
+
+
+
+
+ = $this->translate('Commands') ?> |
+
+ populate(array('downtime_id' => $downtime->id, 'redirect' => $this->listAllLink));
+ if (! $isService) {
+ $delDowntimeForm->setAction(
+ $this->url('monitoring/host/delete-downtime',
+ array('host' => $downtime->host_name))
+ );
+ } else {
+ $delDowntimeForm->setAction(
+ $this->url('monitoring/service/delete-downtime', array(
+ 'host' => $downtime->host_name,
+ 'service' => $downtime->service_description
+ ))
+ );
+ }
+ echo $delDowntimeForm;
+ ?>
+ |
+
+
+
+
+
+
+