diff options
Diffstat (limited to 'app/Controller/App.php')
-rw-r--r-- | app/Controller/App.php | 169 |
1 files changed, 28 insertions, 141 deletions
diff --git a/app/Controller/App.php b/app/Controller/App.php index 80d4f275..cf8d606f 100644 --- a/app/Controller/App.php +++ b/app/Controller/App.php @@ -29,157 +29,44 @@ class App extends Base */ public function index() { - $paginate = $this->request->getStringParam('paginate', 'userTasks'); - $offset = $this->request->getIntegerParam('offset', 0); - $direction = $this->request->getStringParam('direction'); - $order = $this->request->getStringParam('order'); - + $status = array(SubTaskModel::STATUS_TODO, SubTaskModel::STATUS_INPROGRESS); $user_id = $this->userSession->getId(); $projects = $this->projectPermission->getMemberProjects($user_id); $project_ids = array_keys($projects); - $params = array( + $task_paginator = $this->paginator + ->setUrl('app', 'index', array('pagination' => 'tasks')) + ->setMax(10) + ->setOrder('tasks.id') + ->setQuery($this->taskFinder->getUserQuery($user_id)) + ->calculateOnlyIf($this->request->getStringParam('pagination') === 'tasks'); + + $subtask_paginator = $this->paginator + ->setUrl('app', 'index', array('pagination' => 'subtasks')) + ->setMax(10) + ->setOrder('tasks.id') + ->setQuery($this->subTask->getUserQuery($user_id, $status)) + ->calculateOnlyIf($this->request->getStringParam('pagination') === 'subtasks'); + + $project_paginator = $this->paginator + ->setUrl('app', 'index', array('pagination' => 'projects')) + ->setMax(10) + ->setOrder('name') + ->setQuery($this->project->getQueryColumnStats($project_ids)) + ->calculateOnlyIf($this->request->getStringParam('pagination') === 'projects'); + + $this->response->html($this->template->layout('app/dashboard', array( 'title' => t('Dashboard'), 'board_selector' => $this->projectPermission->getAllowedProjects($user_id), 'events' => $this->projectActivity->getProjects($project_ids, 10), - ); - - $params += $this->getTaskPagination($user_id, $paginate, $offset, $order, $direction); - $params += $this->getSubtaskPagination($user_id, $paginate, $offset, $order, $direction); - $params += $this->getProjectPagination($project_ids, $paginate, $offset, $order, $direction); - - $this->response->html($this->template->layout('app/dashboard', $params)); - } - - /** - * Get tasks pagination - * - * @access public - * @param integer $user_id - * @param string $paginate - * @param integer $offset - * @param string $order - * @param string $direction - */ - private function getTaskPagination($user_id, $paginate, $offset, $order, $direction) - { - $limit = 10; - - if (! in_array($order, array('tasks.id', 'project_name', 'title', 'date_due'))) { - $order = 'tasks.id'; - $direction = 'ASC'; - } - - if ($paginate === 'userTasks') { - $tasks = $this->taskPaginator->userTasks($user_id, $offset, $limit, $order, $direction); - } - else { - $offset = 0; - $tasks = $this->taskPaginator->userTasks($user_id, $offset, $limit); - } - - return array( - 'tasks' => $tasks, - 'task_pagination' => array( - 'controller' => 'app', - 'action' => 'index', - 'params' => array('paginate' => 'userTasks'), - 'direction' => $direction, - 'order' => $order, - 'total' => $this->taskPaginator->countUserTasks($user_id), - 'offset' => $offset, - 'limit' => $limit, - ) - ); - } - - /** - * Get subtasks pagination - * - * @access public - * @param integer $user_id - * @param string $paginate - * @param integer $offset - * @param string $order - * @param string $direction - */ - private function getSubtaskPagination($user_id, $paginate, $offset, $order, $direction) - { - $status = array(SubTaskModel::STATUS_TODO, SubTaskModel::STATUS_INPROGRESS); - $limit = 10; - - if (! in_array($order, array('tasks.id', 'project_name', 'status', 'title'))) { - $order = 'tasks.id'; - $direction = 'ASC'; - } - - if ($paginate === 'userSubtasks') { - $subtasks = $this->subtaskPaginator->userSubtasks($user_id, $status, $offset, $limit, $order, $direction); - } - else { - $offset = 0; - $subtasks = $this->subtaskPaginator->userSubtasks($user_id, $status, $offset, $limit); - } - - return array( - 'subtasks' => $subtasks, - 'subtask_pagination' => array( - 'controller' => 'app', - 'action' => 'index', - 'params' => array('paginate' => 'userSubtasks'), - 'direction' => $direction, - 'order' => $order, - 'total' => $this->subtaskPaginator->countUserSubtasks($user_id, $status), - 'offset' => $offset, - 'limit' => $limit, - ) - ); - } - - /** - * Get projects pagination - * - * @access public - * @param array $project_ids - * @param string $paginate - * @param integer $offset - * @param string $order - * @param string $direction - */ - private function getProjectPagination(array $project_ids, $paginate, $offset, $order, $direction) - { - $limit = 10; - - if (! in_array($order, array('id', 'name'))) { - $order = 'name'; - $direction = 'ASC'; - } - - if ($paginate === 'projectSummaries') { - $projects = $this->projectPaginator->projectSummaries($project_ids, $offset, $limit, $order, $direction); - } - else { - $offset = 0; - $projects = $this->projectPaginator->projectSummaries($project_ids, $offset, $limit); - } - - return array( - 'projects' => $projects, - 'project_pagination' => array( - 'controller' => 'app', - 'action' => 'index', - 'params' => array('paginate' => 'projectSummaries'), - 'direction' => $direction, - 'order' => $order, - 'total' => count($project_ids), - 'offset' => $offset, - 'limit' => $limit, - ) - ); + 'task_paginator' => $task_paginator, + 'subtask_paginator' => $subtask_paginator, + 'project_paginator' => $project_paginator, + ))); } /** - * Render Markdown Text and reply with the HTML Code + * Render Markdown text and reply with the HTML Code * * @access public */ |