summaryrefslogtreecommitdiffstats
path: root/application/controllers/JobsController.php
diff options
context:
space:
mode:
Diffstat (limited to 'application/controllers/JobsController.php')
-rw-r--r--application/controllers/JobsController.php83
1 files changed, 83 insertions, 0 deletions
diff --git a/application/controllers/JobsController.php b/application/controllers/JobsController.php
new file mode 100644
index 0000000..0df196b
--- /dev/null
+++ b/application/controllers/JobsController.php
@@ -0,0 +1,83 @@
+<?php
+// Icinga Web 2 X.509 Module | (c) 2018 Icinga GmbH | GPLv2
+
+namespace Icinga\Module\X509\Controllers;
+
+use Icinga\Exception\NotFoundError;
+use Icinga\Module\X509\Forms\Config\JobConfigForm;
+use Icinga\Module\X509\JobsIniRepository;
+use Icinga\Web\Controller;
+use Icinga\Web\Url;
+
+class JobsController extends Controller
+{
+ /**
+ * List all jobs
+ */
+ public function indexAction()
+ {
+ $this->view->tabs = $this->Module()->getConfigTabs()->activate('jobs');
+
+ $repo = new JobsIniRepository();
+
+ $this->view->jobs = $repo->select(array('name'));
+ }
+
+ /**
+ * Create a job
+ */
+ public function newAction()
+ {
+ $form = $this->prepareForm()->add();
+
+ $form->handleRequest();
+
+ $this->renderForm($form, $this->translate('New Job'));
+ }
+
+ /**
+ * Update a job
+ */
+ public function updateAction()
+ {
+ $form = $this->prepareForm()->edit($this->params->getRequired('name'));
+
+ try {
+ $form->handleRequest();
+ } catch (NotFoundError $_) {
+ $this->httpNotFound($this->translate('Job not found'));
+ }
+
+ $this->renderForm($form, $this->translate('Update Job'));
+ }
+
+ /**
+ * Remove a job
+ */
+ public function removeAction()
+ {
+ $form = $this->prepareForm()->remove($this->params->getRequired('name'));
+
+ try {
+ $form->handleRequest();
+ } catch (NotFoundError $_) {
+ $this->httpNotFound($this->translate('Job not found'));
+ }
+
+ $this->renderForm($form, $this->translate('Remove Job'));
+ }
+
+ /**
+ * Assert config permission and return a prepared RepositoryForm
+ *
+ * @return JobConfigForm
+ */
+ protected function prepareForm()
+ {
+ $this->assertPermission('config/x509');
+
+ return (new JobConfigForm())
+ ->setRepository(new JobsIniRepository())
+ ->setRedirectUrl(Url::fromPath('x509/jobs'));
+ }
+}