Jannis Moßhammer b3e0d5e8ce Remove AbstractWidget and make Widget an interface
As Widget's already denote an abstract concept, the name
'AbstractWidget' is redundant. Also this class didn't do anything except
fetching a view via a singleton (which is now injected into the render method)
and bypassing the PHP class properties by creating a 'properties' array which is
filled with magic getters and setters (which now are simply php class properties)

Further changes:
- toString is removed, as this incorporated a lot of
   application logic which would cause unrecoverable
   errors when throwing exceptions
- renderToHtml is now just render and the view dependency must be
   passed, as a widget shouldn't be responsible for getting
   view instance (this means that <?= $this->tabs ?> is now
   <?= $this->tabs->render($this); ?> in the templates
- Controllers don't have $this->widget anymore as Widgets are
   directly instanciated with their class, allowing better code completion
   and avoiding hidden dependencies, also Widget::create is now removed
   in favor of direct instanciation.

refs #4192
2013-08-07 17:41:43 +02:00

71 lines
2.1 KiB
PHP

<?php
use Icinga\Web\ModuleActionController;
use Icinga\Backend;
use Icinga\Web\Widget\Tabs;
class Monitoring_SummaryController extends ModuleActionController
{
protected $backend;
protected $host;
protected $service;
public function init()
{
$this->backend = Backend::getInstance($this->_getParam('backend'));
$this->view->compact = $this->_getParam('view') === 'compact';
$this->view->tabs = $this->getTabs();
}
protected function getTabs()
{
$tabs = new Tabs();
$tabs->add('hostgroup', array(
'title' => 'Hostgroups',
'url' => 'monitoring/summary/group',
'urlParams' => array('by' => 'hostgroup'),
));
$tabs->add('servicegroup', array(
'title' => 'Servicegroups',
'url' => 'monitoring/summary/group',
'urlParams' => array('by' => 'servicegroup'),
));
$tabs->activate($this->_getParam('by', 'hostgroup'));
return $tabs;
}
public function historyAction()
{
$this->_helper->viewRenderer('history');
}
public function groupAction()
{
if ($this->_getParam('by') === 'servicegroup') {
$view = 'servicegroupsummary';
} else {
$view = 'hostgroupsummary';
}
if (! $this->backend->hasView($view)) {
$this->view->backend = $this->backend;
$this->view->view_name = $view;
$this->_helper->viewRenderer('backend-is-missing');
return;
}
$this->view->preserve = array(
'problems' => $this->_getParam('problems') ? 'true' : 'false',
'search' => $this->_getParam('search')
);
$query = $this->backend->select()->from($view);
$query->where('problems', $this->_getParam('problems') ? 'true' : 'false');
//$query->where('ss.current_state > 0');
$query->where('search', $this->_getParam('search'));
// echo '<pre>' . $query->dump() . '</pre>'; exit;
$this->view->summary = $query->paginate();
}
}