83 lines
2.3 KiB
PHP
83 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace Icinga\Module\Director\Controllers;
|
|
|
|
use Icinga\Module\Director\Forms\DirectorJobForm;
|
|
use Icinga\Module\Director\Web\Controller\ActionController;
|
|
use Icinga\Module\Director\Objects\DirectorJob;
|
|
use Icinga\Module\Director\Web\Widget\JobDetails;
|
|
|
|
class JobController extends ActionController
|
|
{
|
|
/**
|
|
* @throws \Icinga\Exception\MissingParameterException
|
|
* @throws \Icinga\Exception\NotFoundError
|
|
*/
|
|
public function indexAction()
|
|
{
|
|
$job = $this->requireJob();
|
|
$this
|
|
->addJobTabs($job, 'show')
|
|
->addTitle($this->translate('Job: %s'), $job->get('job_name'))
|
|
->content()->add(new JobDetails($job));
|
|
}
|
|
|
|
public function addAction()
|
|
{
|
|
$this
|
|
->addSingleTab($this->translate('New Job'))
|
|
->addTitle($this->translate('Add a new Job'))
|
|
->content()->add(
|
|
DirectorJobForm::load()
|
|
->setSuccessUrl('director/job')
|
|
->setDb($this->db())
|
|
->handleRequest()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @throws \Icinga\Exception\MissingParameterException
|
|
* @throws \Icinga\Exception\NotFoundError
|
|
*/
|
|
public function editAction()
|
|
{
|
|
$job = $this->requireJob();
|
|
$form = DirectorJobForm::load()
|
|
->setListUrl('director/jobs')
|
|
->setObject($job)
|
|
->handleRequest();
|
|
|
|
$this
|
|
->addJobTabs($job, 'edit')
|
|
->addTitle($this->translate('Job: %s'), $job->get('job_name'))
|
|
->content()->add($form);
|
|
}
|
|
|
|
/**
|
|
* @return DirectorJob
|
|
* @throws \Icinga\Exception\NotFoundError
|
|
* @throws \Icinga\Exception\MissingParameterException
|
|
*/
|
|
protected function requireJob()
|
|
{
|
|
return DirectorJob::loadWithAutoIncId((int) $this->params->getRequired('id'), $this->db());
|
|
}
|
|
|
|
protected function addJobTabs(DirectorJob $job, $active)
|
|
{
|
|
$id = $job->get('id');
|
|
|
|
$this->tabs()->add('show', [
|
|
'url' => 'director/job',
|
|
'urlParams' => ['id' => $id],
|
|
'label' => $this->translate('Job'),
|
|
])->add('edit', [
|
|
'url' => 'director/job/edit',
|
|
'urlParams' => ['id' => $id],
|
|
'label' => $this->translate('Config'),
|
|
])->activate($active);
|
|
|
|
return $this;
|
|
}
|
|
}
|