From 6ae97d399dc96bd9a0e854bea6d09fa68e078ab5 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Wed, 9 May 2018 11:21:57 -0700 Subject: Improve dashboard pagination --- app/Core/Paginator.php | 22 +++++++++++++++++++--- app/Pagination/DashboardPagination.php | 6 +++--- app/Template/dashboard/overview.php | 2 +- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/Core/Paginator.php b/app/Core/Paginator.php index 7b0a9c1b..9776a03d 100644 --- a/app/Core/Paginator.php +++ b/app/Core/Paginator.php @@ -102,6 +102,14 @@ class Paginator */ private $action = ''; + /** + * URL anchor + * + * @access private + * @var string + */ + private $anchor = ''; + /** * Url params * @@ -183,13 +191,15 @@ class Paginator * @param string $controller * @param string $action * @param array $params + * @param string $anchor * @return $this */ - public function setUrl($controller, $action, array $params = array()) + public function setUrl($controller, $action, array $params = array(), $anchor = '') { $this->controller = $controller; $this->action = $action; $this->params = $params; + $this->anchor = $anchor; return $this; } @@ -399,7 +409,10 @@ class Paginator $this->action, $this->getUrlParams($this->page - 1, $this->order, $this->direction), false, - 'js-modal-replace' + 'js-modal-replace', + t('Previous'), + false, + $this->anchor ); } else { $html .= '← '.t('Previous'); @@ -427,7 +440,10 @@ class Paginator $this->action, $this->getUrlParams($this->page + 1, $this->order, $this->direction), false, - 'js-modal-replace' + 'js-modal-replace', + t('Next'), + false, + $this->anchor ); } else { $html .= t('Next').' →'; diff --git a/app/Pagination/DashboardPagination.php b/app/Pagination/DashboardPagination.php index 0149a42b..9669cb9d 100644 --- a/app/Pagination/DashboardPagination.php +++ b/app/Pagination/DashboardPagination.php @@ -32,13 +32,13 @@ class DashboardPagination extends Base $this->hook->reference('pagination:dashboard:task:query', $query); $paginator = $this->paginator - ->setUrl('DashboardController', 'show', array('user_id' => $userId)) - ->setMax(50) + ->setUrl('DashboardController', 'show', array('user_id' => $userId, 'pagination' => 'tasks-'.$projectId), 'project-tasks-'.$projectId) + ->setMax(15) ->setOrder(TaskModel::TABLE.'.priority') ->setDirection('DESC') ->setFormatter($this->taskListSubtaskAssigneeFormatter->withUserId($userId)) ->setQuery($query) - ->calculate(); + ->calculateOnlyIf($this->request->getStringParam('pagination') === 'tasks-'.$projectId); if ($paginator->getTotal() > 0) { $paginators[] = array( diff --git a/app/Template/dashboard/overview.php b/app/Template/dashboard/overview.php index e732a387..c0cde10b 100644 --- a/app/Template/dashboard/overview.php +++ b/app/Template/dashboard/overview.php @@ -51,7 +51,7 @@ isEmpty()): ?>
-- cgit v1.2.3