icingaweb2-module-director/application/controllers/ImportsourceController.php

151 lines
4.8 KiB
PHP
Raw Normal View History

<?php
2015-10-20 22:34:04 +02:00
namespace Icinga\Module\Director\Controllers;
use Icinga\Module\Director\Forms\ImportRowModifierForm;
use Icinga\Module\Director\Forms\ImportSourceForm;
use Icinga\Module\Director\Web\Controller\ActionController;
use Icinga\Module\Director\Objects\ImportSource;
use Icinga\Module\Director\Web\Table\ImportrunTable;
use Icinga\Module\Director\Web\Table\ImportsourceHookTable;
use Icinga\Module\Director\Web\Table\PropertymodifierTable;
use Icinga\Module\Director\Web\Tabs\ImportsourceTabs;
use Icinga\Module\Director\Web\Widget\ImportSourceDetails;
use ipl\Html\Link;
2015-10-20 22:34:04 +02:00
class ImportsourceController extends ActionController
{
public function init()
{
parent::init();
$id = $this->params->get('source_id', $this->params->get('id'));
$tabs = $this->tabs(new ImportsourceTabs($id));
$action = $this->getRequest()->getActionName();
if ($tabs->has($action)) {
$tabs->activate($action);
}
}
public function indexAction()
{
$source = ImportSource::load($this->params->getRequired('id'), $this->db());
$this->addTitle(
$this->translate('Import source: %s'),
$source->get('source_name')
)->setAutorefreshInterval(10);
$this->content()->add(new ImportSourceDetails($source));
}
public function addAction()
{
$this->addTitle($this->translate('Add import source'))
->content()->add(
ImportSourceForm::load()->setDb($this->db())
->setSuccessUrl('director/importsources')
->handleRequest()
);
}
public function editAction()
{
$form = ImportSourceForm::load()->setDb($this->db())
->loadObject($this->params->getRequired('id'))
->setListUrl('director/importsources')
->handleRequest();
$this->content()->add($form);
}
2015-07-26 15:42:21 +02:00
public function previewAction()
{
$source = ImportSource::load($this->params->getRequired('id'), $this->db());
$this->addTitle(
2015-07-26 15:42:21 +02:00
$this->translate('Import source preview: "%s"'),
$source->get('source_name')
2015-07-26 15:42:21 +02:00
);
(new ImportsourceHookTable())->setImportSource($source)->renderTo($this);
2015-07-26 15:42:21 +02:00
}
protected function requireImportSourceAndAddModifierTable()
2016-02-18 11:25:51 +01:00
{
$source = ImportSource::load($this->params->getRequired('source_id'), $this->db());
PropertymodifierTable::load($source)->renderTo($this);
return $source;
}
2016-02-18 11:25:51 +01:00
public function modifierAction()
{
$source = $this->requireImportSourceAndAddModifierTable();
$this->addAddLink(
2016-06-13 20:21:33 +02:00
$this->translate('Add property modifier'),
'director/importsource/addmodifier',
['source_id' => $source->getId()],
'_self'
)->addTitle($this->translate('Property modifiers'));
2016-02-18 11:25:51 +01:00
}
public function historyAction()
{
$source = ImportSource::load($this->params->getRequired('id'), $this->db());
$this->addTitle($this->translate('Import run history'));
// TODO: temporarily disabled, find a better place for stats:
// $this->view->stats = $this->db()->fetchImportStatistics();
ImportrunTable::load($source)->renderTo($this);
}
public function addmodifierAction()
{
$source = $this->requireImportSourceAndAddModifierTable();
$this->addTitle(
$this->translate('%s: add Property Modifier'),
$source->get('source_name')
)->addBackToModifiersLink($source);
$this->tabs()->activate('modifier');
$this->content()->prepend(
ImportRowModifierForm::load()->setDb($this->db())
->setSource($source)
->setSuccessUrl(
'director/importsource/modifier',
['source_id' => $source->getId()]
)->handleRequest()
);
}
public function editmodifierAction()
{
$source = $this->requireImportSourceAndAddModifierTable();
$this->addTitle(
$this->translate('%s: Property Modifier'),
$source->get('source_name')
)->addBackToModifiersLink($source);
$this->tabs()->activate('modifier');
$this->content()->prepend(
ImportRowModifierForm::load()->setDb($this->db())
->loadObject($this->params->getRequired('id'))
->setSource($source)
->handleRequest()
);
}
protected function addBackToModifiersLink(ImportSource $source)
{
$this->actions()->add(
Link::create(
$this->translate('back'),
'director/importsource/modifier',
['source_id' => $source->getId()],
['class' => 'icon-left-big']
)
);
return $this;
}
}