From 2bd31ee39509c99458860fe1b8b72fa5ef01227f Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Fri, 17 Apr 2015 16:08:41 +0200 Subject: [PATCH] Icinga\Web\Controller: Add helper functions to create control widgets refs #7876 --- library/Icinga/Web/Controller.php | 72 ++++++++++++++++++++++++++++--- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/library/Icinga/Web/Controller.php b/library/Icinga/Web/Controller.php index da9486b9e1..42bd94b5e9 100644 --- a/library/Icinga/Web/Controller.php +++ b/library/Icinga/Web/Controller.php @@ -3,8 +3,10 @@ namespace Icinga\Web; +use Zend_Paginator; use Icinga\Web\Controller\ModuleActionController; use Icinga\Web\Widget\SortBox; +use Icinga\Web\Widget\Limiter; /** * This is the controller all modules should inherit from @@ -16,15 +18,75 @@ class Controller extends ModuleActionController /** * Create a SortBox widget at the `sortBox' view property * + * In case the current view has been requested as compact this method does nothing. + * * @param array $columns An array containing the sort columns, with the * submit value as the key and the label as the value + * + * @return $this */ protected function setupSortControl(array $columns) { - $req = $this->getRequest(); - $this->view->sortBox = SortBox::create( - 'sortbox-' . $req->getActionName(), - $columns - )->applyRequest($req); + if (! $this->view->compact) { + $req = $this->getRequest(); + $this->view->sortBox = SortBox::create( + 'sortbox-' . $req->getActionName(), + $columns + )->applyRequest($req); + } + + return $this; + } + + /** + * Create a Limiter widget at the `limiter' view property + * + * In case the current view has been requested as compact this method does nothing. + * + * @return $this + */ + protected function setupLimitControl() + { + if (! $this->view->compact) { + $this->view->limiter = new Limiter(); + } + + return $this; + } + + /** + * Set the view property `paginator' to the given Zend_Paginator + * + * In case the current view has been requested as compact this method does nothing. + * + * @param Zend_Paginator $paginator The Zend_Paginator for which to show a pagination control + * + * @return $this + */ + protected function setupPaginationControl(Zend_Paginator $paginator) + { + if (! $this->view->compact) { + $this->view->paginator = $paginator; + } + + return $this; + } + + /** + * Set the view property `filterEditor' to the given FilterEditor + * + * In case the current view has been requested as compact this method does nothing. + * + * @param Form $editor The FilterEditor + * + * @return $this + */ + protected function setupFilterControl($editor) + { + if (! $this->view->compact) { + $this->view->filterEditor = $editor; + } + + return $this; } }