diff --git a/application/controllers/ScheduledDowntimeController.php b/application/controllers/ScheduledDowntimeController.php index 2b295f08..65ba2572 100644 --- a/application/controllers/ScheduledDowntimeController.php +++ b/application/controllers/ScheduledDowntimeController.php @@ -5,7 +5,7 @@ namespace Icinga\Module\Director\Controllers; use Icinga\Module\Director\Forms\IcingaScheduledDowntimeRangeForm; use Icinga\Module\Director\Objects\IcingaScheduledDowntime; use Icinga\Module\Director\Web\Controller\ObjectController; -use Icinga\Module\Director\Web\Table\IcingaScheduledDowntimeTable; +use Icinga\Module\Director\Web\Table\IcingaScheduledDowntimeRangeTable; class ScheduledDowntimeController extends ObjectController { @@ -16,7 +16,7 @@ class ScheduledDowntimeController extends ObjectController $this->tabs()->activate('ranges'); $this->addTitle($this->translate('Time period ranges')); $form = IcingaScheduledDowntimeRangeForm::load() - ->setTimePeriod($object); + ->setScheduledDowntime($object); if (null !== ($name = $this->params->get('range'))) { $this->addBackLink($this->url()->without('range')); @@ -28,7 +28,7 @@ class ScheduledDowntimeController extends ObjectController } $this->content()->add($form->handleRequest()); - IcingaScheduledDowntimeTable::load($object)->renderTo($this); + IcingaScheduledDowntimeRangeTable::load($object)->renderTo($this); } public function getType() diff --git a/library/Director/Web/Table/IcingaScheduledDowntimeRangeTable.php b/library/Director/Web/Table/IcingaScheduledDowntimeRangeTable.php new file mode 100644 index 00000000..5edd5d87 --- /dev/null +++ b/library/Director/Web/Table/IcingaScheduledDowntimeRangeTable.php @@ -0,0 +1,67 @@ +getConnection()); + $table->downtime = $downtime; + $table->getAttributes()->set('data-base-target', '_self'); + + return $table; + } + + public function renderRow($row) + { + return $this::row([ + Link::create( + $row->range_key, + 'director/scheduled-downtime/ranges', + [ + 'name' => $this->downtime->getObjectName(), + 'range' => $row->range_key, + 'range_type' => 'include' + ] + ), + $row->range_value + ]); + } + + public function getColumnsToBeRendered() + { + return [ + $this->translate('Day(s)'), + $this->translate('Timeperiods'), + ]; + } + + public function prepareQuery() + { + return $this->db()->select()->from( + ['r' => 'icinga_scheduled_downtime_range'], + [ + 'scheduled_downtime_id' => 'r.scheduled_downtime_id', + 'range_key' => 'r.range_key', + 'range_value' => 'r.range_value', + ] + )->where('r.scheduled_downtime_id = ?', $this->downtime->id); + } +}