summaryrefslogtreecommitdiffstats
path: root/application/controllers
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--application/controllers/EditController.php92
-rw-r--r--application/controllers/IndexController.php24
-rw-r--r--application/controllers/ShowController.php93
3 files changed, 209 insertions, 0 deletions
diff --git a/application/controllers/EditController.php b/application/controllers/EditController.php
new file mode 100644
index 0000000..b91255c
--- /dev/null
+++ b/application/controllers/EditController.php
@@ -0,0 +1,92 @@
+<?php
+/* Icinga Web 2 | (c) 2016 Icinga Development Team | GPLv2+ */
+
+namespace Icinga\Module\Toplevelview\Controllers;
+
+use Icinga\Module\Toplevelview\Forms\EditForm;
+use Icinga\Module\Toplevelview\ViewConfig;
+use Icinga\Module\Toplevelview\Web\Controller;
+use Icinga\Web\Url;
+
+class EditController extends Controller
+{
+ public function init()
+ {
+ $this->assertPermission('toplevelview/edit');
+
+ $tabs = $this->getTabs();
+
+ if ($name = $this->getParam('name')) {
+ $tabs->add(
+ 'tiles',
+ array(
+ 'title' => $this->translate('Tiles'),
+ 'url' => Url::fromPath('toplevelview/show', array(
+ 'name' => $name
+ ))
+ )
+ );
+
+ $tabs->add(
+ 'index',
+ array(
+ 'title' => $this->translate('Edit'),
+ 'url' => Url::fromPath('toplevelview/edit', array(
+ 'name' => $name
+ ))
+ )
+ );
+ }
+
+
+ $action = $this->getRequest()->getActionName();
+ if ($tab = $tabs->get($action)) {
+ $tab->setActive();
+ }
+ }
+
+ public function indexAction()
+ {
+ $action = $this->getRequest()->getActionName();
+ if ($action === 'add') {
+ $this->view->title = sprintf(
+ '%s Top Level View',
+ $this->translate('Add')
+ );
+ $view = new ViewConfig();
+ $view->setConfigDir();
+ } elseif ($action === 'clone') {
+ $name = $this->params->getRequired('name');
+ $this->view->title = sprintf(
+ '%s Top Level View',
+ $this->translate('Clone')
+ );
+ $view = clone ViewConfig::loadByName($name);
+ } else {
+ $this->view->name = $name = $this->params->getRequired('name');
+ $this->view->title = sprintf(
+ '%s Top Level View: %s',
+ $this->translate('Edit'),
+ $this->params->getRequired('name')
+ );
+ $view = ViewConfig::loadByName($name);
+ }
+
+ $this->view->form = $form = new EditForm();
+ $view->setFormat(ViewConfig::FORMAT_YAML);
+ $form->setViewConfig($view);
+ $form->handleRequest();
+
+ $this->setViewScript('edit/index');
+ }
+
+ public function addAction()
+ {
+ $this->indexAction();
+ }
+
+ public function cloneAction()
+ {
+ $this->indexAction();
+ }
+}
diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php
new file mode 100644
index 0000000..e1353f3
--- /dev/null
+++ b/application/controllers/IndexController.php
@@ -0,0 +1,24 @@
+<?php
+/* Copyright (C) 2017 Icinga Development Team <info@icinga.com> */
+
+namespace Icinga\Module\Toplevelview\Controllers;
+
+use Icinga\Module\Toplevelview\ViewConfig;
+use Icinga\Module\Toplevelview\Web\Controller;
+
+class IndexController extends Controller
+{
+ public function indexAction()
+ {
+ $this->getTabs()->add(
+ 'index',
+ array(
+ 'title' => 'Top Level View',
+ 'url' => 'toplevelview',
+ )
+ )->activate('index');
+ $this->view->views = ViewConfig::loadAll();
+
+ $this->setAutorefreshInterval(30);
+ }
+}
diff --git a/application/controllers/ShowController.php b/application/controllers/ShowController.php
new file mode 100644
index 0000000..d0560f2
--- /dev/null
+++ b/application/controllers/ShowController.php
@@ -0,0 +1,93 @@
+<?php
+/* Icinga Web 2 | (c) 2016 Icinga Development Team | GPLv2+ */
+
+namespace Icinga\Module\Toplevelview\Controllers;
+
+use Icinga\Module\Toplevelview\ViewConfig;
+use Icinga\Module\Toplevelview\Web\Controller;
+use Icinga\Web\Url;
+use Icinga\Web\Widget\Tab;
+
+class ShowController extends Controller
+{
+ public function init()
+ {
+ $tabs = $this->getTabs();
+
+ $tiles = Url::fromPath('toplevelview/show', array(
+ 'name' => $this->params->getRequired('name')
+ ));
+
+ $tabs->add(
+ 'index',
+ array(
+ 'title' => $this->translate('Tiles'),
+ 'url' => $tiles
+ )
+ );
+
+ if (($id = $this->getParam('id')) !== null) {
+ $tabs->add(
+ 'tree',
+ array(
+ 'title' => $this->translate('Tree'),
+ 'url' => Url::fromPath('toplevelview/show/tree', array(
+ 'name' => $this->params->getRequired('name'),
+ 'id' => $id
+ ))
+ )
+ );
+ }
+
+ $fullscreen = new Tab(array(
+ 'title' => $this->translate('Go Fullscreen'),
+ 'icon' => 'dashboard',
+ 'url' => ((string) $tiles) . '&view=compact&showFullscreen'
+ ));
+ $fullscreen->setTargetBlank();
+ $tabs->addAsDropdown('fullscreen', $fullscreen);
+
+ $action = $this->getRequest()->getActionName();
+ if ($tab = $tabs->get($action)) {
+ $tab->setActive();
+ }
+ }
+
+ public function indexAction()
+ {
+ $this->view->name = $name = $this->params->getRequired('name');
+ $this->view->view = $view = ViewConfig::loadByName($name);
+ $tree = $view->getTree();
+ $tree->setBackend($this->monitoringBackend());
+
+ if (($lifetime = $this->getParam('cache')) !== null) {
+ $tree->setCacheLifetime($lifetime);
+ }
+
+ $this->setAutorefreshInterval(30);
+ }
+
+ public function treeAction()
+ {
+ $this->view->name = $name = $this->params->getRequired('name');
+ $this->view->view = $view = ViewConfig::loadByName($name);
+ $tree = $view->getTree();
+ $this->view->node = $tree->getById($this->params->getRequired('id'));
+ $tree->setBackend($this->monitoringBackend());
+
+ if (($lifetime = $this->getParam('cache')) !== null) {
+ $tree->setCacheLifetime($lifetime);
+ }
+
+ $this->setAutorefreshInterval(30);
+ }
+
+ public function sourceAction()
+ {
+ $this->view->name = $name = $this->params->getRequired('name');
+ $this->view->view = $view = ViewConfig::loadByName($name);
+
+ $this->view->text = $view->getText();
+ $this->setViewScript('index', 'text');
+ }
+}