diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-07-01 17:36:21 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-07-01 17:36:21 -0400 |
commit | 109a2a2e25e0e170d3df3860d054f82f70e78c4d (patch) | |
tree | 5aa324a06ba285ec7643589620e41411bf2d49eb /app/Controller | |
parent | 3f084916e3befbaadf8dc86c8329a408dfcdf351 (diff) |
Change dashboard
Diffstat (limited to 'app/Controller')
-rw-r--r-- | app/Controller/App.php | 181 | ||||
-rw-r--r-- | app/Controller/Base.php | 21 | ||||
-rw-r--r-- | app/Controller/User.php | 35 |
3 files changed, 167 insertions, 70 deletions
diff --git a/app/Controller/App.php b/app/Controller/App.php index 5c9c45b5..c26cb122 100644 --- a/app/Controller/App.php +++ b/app/Controller/App.php @@ -14,66 +14,177 @@ use Model\Task as TaskModel; class App extends Base { /** - * Check if the user is connected + * Common layout for dashboard views * - * @access public + * @access private + * @param string $template Template name + * @param array $params Template parameters + * @return string */ - public function status() + private function layout($template, array $params) { - $this->response->text('OK'); + $params['board_selector'] = $this->projectPermission->getAllowedProjects($this->userSession->getId()); + $params['content_for_sublayout'] = $this->template->render($template, $params); + + return $this->template->layout('app/layout', $params); } /** - * User dashboard view for admins + * Get project pagination * - * @access public + * @access private + * @param integer $user_id + * @param string $action + * @param integer $max */ - public function dashboard() + private function getProjectPaginator($user_id, $action, $max) { - $this->index($this->request->getIntegerParam('user_id'), 'dashboard'); + return $this->paginator + ->setUrl('app', $action, array('pagination' => 'projects', 'user_id' => $user_id)) + ->setMax($max) + ->setOrder('name') + ->setQuery($this->project->getQueryColumnStats($this->projectPermission->getActiveMemberProjectIds($user_id))) + ->calculateOnlyIf($this->request->getStringParam('pagination') === 'projects'); } /** - * Dashboard for the current user + * Get task pagination * - * @access public + * @access private + * @param integer $user_id + * @param string $action + * @param integer $max */ - public function index($user_id = 0, $action = 'index') + private function getTaskPaginator($user_id, $action, $max) { - $status = array(SubTaskModel::STATUS_TODO, SubtaskModel::STATUS_INPROGRESS); - $user_id = $user_id ?: $this->userSession->getId(); - $projects = $this->projectPermission->getActiveMemberProjects($user_id); - $project_ids = array_keys($projects); - - $task_paginator = $this->paginator + return $this->paginator ->setUrl('app', $action, array('pagination' => 'tasks', 'user_id' => $user_id)) - ->setMax(10) + ->setMax($max) ->setOrder('tasks.id') ->setQuery($this->taskFinder->getUserQuery($user_id)) ->calculateOnlyIf($this->request->getStringParam('pagination') === 'tasks'); + } - $subtask_paginator = $this->paginator + /** + * Get subtask pagination + * + * @access private + * @param integer $user_id + * @param string $action + * @param integer $max + */ + private function getSubtaskPaginator($user_id, $action, $max) + { + return $this->paginator ->setUrl('app', $action, array('pagination' => 'subtasks', 'user_id' => $user_id)) - ->setMax(10) + ->setMax($max) ->setOrder('tasks.id') - ->setQuery($this->subtask->getUserQuery($user_id, $status)) + ->setQuery($this->subtask->getUserQuery($user_id, array(SubTaskModel::STATUS_TODO, SubtaskModel::STATUS_INPROGRESS))) ->calculateOnlyIf($this->request->getStringParam('pagination') === 'subtasks'); + } - $project_paginator = $this->paginator - ->setUrl('app', $action, array('pagination' => 'projects', 'user_id' => $user_id)) - ->setMax(10) - ->setOrder('name') - ->setQuery($this->project->getQueryColumnStats($project_ids)) - ->calculateOnlyIf($this->request->getStringParam('pagination') === 'projects'); + /** + * Check if the user is connected + * + * @access public + */ + public function status() + { + $this->response->text('OK'); + } + + /** + * Dashboard overview + * + * @access public + */ + public function index() + { + $user = $this->getUser(); + + $this->response->html($this->layout('app/overview', array( + 'title' => t('Overview'), + 'project_paginator' => $this->getProjectPaginator($user['id'], 'index', 10), + 'task_paginator' => $this->getTaskPaginator($user['id'], 'index', 10), + 'subtask_paginator' => $this->getSubtaskPaginator($user['id'], 'index', 10), + 'user' => $user, + ))); + } + + /** + * My tasks + * + * @access public + */ + public function tasks() + { + $user = $this->getUser(); + + $this->response->html($this->layout('app/tasks', array( + 'title' => t('My tasks'), + 'paginator' => $this->getTaskPaginator($user['id'], 'tasks', 50), + 'user' => $user, + ))); + } + + /** + * My subtasks + * + * @access public + */ + public function subtasks() + { + $user = $this->getUser(); + + $this->response->html($this->layout('app/subtasks', array( + 'title' => t('My subtasks'), + 'paginator' => $this->getSubtaskPaginator($user['id'], 'subtasks', 50), + 'user' => $user, + ))); + } - $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, 5), - 'task_paginator' => $task_paginator, - 'subtask_paginator' => $subtask_paginator, - 'project_paginator' => $project_paginator, - 'user_id' => $user_id, + /** + * My projects + * + * @access public + */ + public function projects() + { + $user = $this->getUser(); + + $this->response->html($this->layout('app/projects', array( + 'title' => t('My projects'), + 'paginator' => $this->getProjectPaginator($user['id'], 'projects', 25), + 'user' => $user, + ))); + } + + /** + * My activity stream + * + * @access public + */ + public function activity() + { + $user = $this->getUser(); + + $this->response->html($this->layout('app/activity', array( + 'title' => t('My activity stream'), + 'events' => $this->projectActivity->getProjects($this->projectPermission->getActiveMemberProjectIds($user['id']), 100), + 'user' => $user, + ))); + } + + /** + * My calendar + * + * @access public + */ + public function calendar() + { + $this->response->html($this->layout('app/calendar', array( + 'title' => t('My calendar'), + 'user' => $this->getUser(), ))); } diff --git a/app/Controller/Base.php b/app/Controller/Base.php index cab70c6b..b7ee431f 100644 --- a/app/Controller/Base.php +++ b/app/Controller/Base.php @@ -306,4 +306,25 @@ abstract class Base extends \Core\Base return $project; } + + /** + * Common method to get the user + * + * @access protected + * @return array + */ + protected function getUser() + { + $user = $this->user->getById($this->request->getIntegerParam('user_id', $this->userSession->getId())); + + if (empty($user)) { + $this->notfound(); + } + + if (! $this->userSession->isAdmin() && $this->userSession->getId() != $user['id']) { + $this->forbidden(); + } + + return $user; + } } diff --git a/app/Controller/User.php b/app/Controller/User.php index 6628bcb6..119041e5 100644 --- a/app/Controller/User.php +++ b/app/Controller/User.php @@ -32,27 +32,6 @@ class User extends Base } /** - * Common method to get the user - * - * @access protected - * @return array - */ - protected function getUser() - { - $user = $this->user->getById($this->request->getIntegerParam('user_id')); - - if (empty($user)) { - $this->notfound(); - } - - if (! $this->userSession->isAdmin() && $this->userSession->getId() != $user['id']) { - $this->forbidden(); - } - - return $user; - } - - /** * List all users * * @access public @@ -139,20 +118,6 @@ class User extends Base } /** - * Display user calendar - * - * @access public - */ - public function calendar() - { - $user = $this->getUser(); - - $this->response->html($this->layout('user/calendar', array( - 'user' => $user, - ))); - } - - /** * Display timesheet * * @access public |