mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-27 15:54:03 +02:00
Controller: Make setupSortControl creating a Zend_Paginator on its own
We're accessing the url GET parameters `sort' and `dir' in a controller now. fixes #8339
This commit is contained in:
parent
fbf0ad4339
commit
9a043386de
@ -4,10 +4,12 @@
|
|||||||
namespace Icinga\Web;
|
namespace Icinga\Web;
|
||||||
|
|
||||||
use Zend_Paginator;
|
use Zend_Paginator;
|
||||||
use Icinga\Web\Controller\ModuleActionController;
|
|
||||||
use Icinga\Web\Widget\SortBox;
|
|
||||||
use Icinga\Web\Widget\Limiter;
|
|
||||||
use Icinga\Data\Sortable;
|
use Icinga\Data\Sortable;
|
||||||
|
use Icinga\Data\QueryInterface;
|
||||||
|
use Icinga\Web\Paginator\Adapter\QueryAdapter;
|
||||||
|
use Icinga\Web\Controller\ModuleActionController;
|
||||||
|
use Icinga\Web\Widget\Limiter;
|
||||||
|
use Icinga\Web\Widget\SortBox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the controller all modules should inherit from
|
* This is the controller all modules should inherit from
|
||||||
@ -94,17 +96,28 @@ class Controller extends ModuleActionController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the view property `paginator' to the given Zend_Paginator
|
* Apply the given page limit and number on the given query and setup a paginator for it
|
||||||
*
|
*
|
||||||
* In case the current view has been requested as compact this method does nothing.
|
* The $itemsPerPage and $pageNumber parameters are only applied if not available in the current request.
|
||||||
|
* The paginator is set on the `paginator' view property only if the current view has not been requested as compact.
|
||||||
*
|
*
|
||||||
* @param Zend_Paginator $paginator The Zend_Paginator for which to show a pagination control
|
* @param QueryInterface $query The query to create a paginator for
|
||||||
|
* @param int $itemsPerPage Number of items per page
|
||||||
|
* @param int $pageNumber Current page number
|
||||||
*
|
*
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
protected function setupPaginationControl(Zend_Paginator $paginator)
|
protected function setupPaginationControl(QueryInterface $query, $itemsPerPage = 25, $pageNumber = 0)
|
||||||
{
|
{
|
||||||
|
$request = $this->getRequest();
|
||||||
|
$limit = $request->getParam('limit', $itemsPerPage);
|
||||||
|
$page = $request->getParam('page', $pageNumber);
|
||||||
|
$query->limit($limit, $page * $limit);
|
||||||
|
|
||||||
if (! $this->view->compact) {
|
if (! $this->view->compact) {
|
||||||
|
$paginator = new Zend_Paginator(new QueryAdapter($query));
|
||||||
|
$paginator->setItemCountPerPage($limit);
|
||||||
|
$paginator->setCurrentPageNumber($page);
|
||||||
$this->view->paginator = $paginator;
|
$this->view->paginator = $paginator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user