From 6bdc25490f02649242b1d96025f8da1f4c41884b Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Wed, 4 May 2016 21:51:38 -0400 Subject: Unify task drop-down menu between different views --- app/Controller/BoardPopover.php | 4 ++-- app/Controller/Task.php | 4 ++-- app/Core/Base.php | 1 - app/Helper/UserHelper.php | 33 ++++++++++++++++++++++++++++----- app/Model/TaskFinder.php | 2 ++ app/Model/TaskPermission.php | 34 ---------------------------------- app/ServiceProvider/ClassProvider.php | 1 - app/Template/board/task_menu.php | 18 ------------------ app/Template/board/task_private.php | 4 ++-- app/Template/task/dropdown.php | 18 ++++++++++++++++++ app/Template/task/remove.php | 4 ++-- app/Template/task/sidebar.php | 2 +- 12 files changed, 57 insertions(+), 68 deletions(-) delete mode 100644 app/Model/TaskPermission.php delete mode 100644 app/Template/board/task_menu.php (limited to 'app') diff --git a/app/Controller/BoardPopover.php b/app/Controller/BoardPopover.php index 63dab302..10584137 100644 --- a/app/Controller/BoardPopover.php +++ b/app/Controller/BoardPopover.php @@ -44,7 +44,7 @@ class BoardPopover extends Base $this->flash->failure(t('Unable to update your task.')); } - $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $values['project_id']))); + $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $values['project_id'])), true); } /** @@ -81,7 +81,7 @@ class BoardPopover extends Base $this->flash->failure(t('Unable to update your task.')); } - $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $values['project_id']))); + $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $values['project_id'])), true); } /** diff --git a/app/Controller/Task.php b/app/Controller/Task.php index 902a32d6..072df87b 100644 --- a/app/Controller/Task.php +++ b/app/Controller/Task.php @@ -151,7 +151,7 @@ class Task extends Base { $task = $this->getTask(); - if (! $this->taskPermission->canRemoveTask($task)) { + if (! $this->helper->user->canRemoveTask($task)) { $this->forbidden(); } @@ -164,7 +164,7 @@ class Task extends Base $this->flash->failure(t('Unable to remove this task.')); } - $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $task['project_id']))); + $this->response->redirect($this->helper->url->to('board', 'show', array('project_id' => $task['project_id'])), true); } $this->response->html($this->template->render('task/remove', array( diff --git a/app/Core/Base.php b/app/Core/Base.php index 2b619af5..c065ea2a 100644 --- a/app/Core/Base.php +++ b/app/Core/Base.php @@ -92,7 +92,6 @@ use Pimple\Container; * @property \Kanboard\Model\TaskFinder $taskFinder * @property \Kanboard\Model\TaskLink $taskLink * @property \Kanboard\Model\TaskModification $taskModification - * @property \Kanboard\Model\TaskPermission $taskPermission * @property \Kanboard\Model\TaskPosition $taskPosition * @property \Kanboard\Model\TaskStatus $taskStatus * @property \Kanboard\Model\TaskMetadata $taskMetadata diff --git a/app/Helper/UserHelper.php b/app/Helper/UserHelper.php index c3369dfd..b39d7b62 100644 --- a/app/Helper/UserHelper.php +++ b/app/Helper/UserHelper.php @@ -3,6 +3,7 @@ namespace Kanboard\Helper; use Kanboard\Core\Base; +use Kanboard\Core\Security\Role; /** * User helpers @@ -41,6 +42,17 @@ class UserHelper extends Base return mb_strtoupper($initials); } + /** + * Return the user full name + * + * @param array $user User properties + * @return string + */ + public function getFullname(array $user = array()) + { + return $this->user->getFullname(empty($user) ? $this->userSession->getAll() : $user); + } + /** * Get user id * @@ -149,13 +161,24 @@ class UserHelper extends Base } /** - * Return the user full name + * Return true if the user can remove a task * - * @param array $user User properties - * @return string + * Regular users can't remove tasks from other people + * + * @public + * @param array $task + * @return bool */ - public function getFullname(array $user = array()) + public function canRemoveTask(array $task) { - return $this->user->getFullname(empty($user) ? $this->userSession->getAll() : $user); + if (isset($task['creator_id']) && $task['creator_id'] == $this->userSession->getId()) { + return true; + } + + if ($this->userSession->isAdmin() || $this->getProjectUserRole($task['project_id']) === Role::PROJECT_MANAGER) { + return true; + } + + return false; } } diff --git a/app/Model/TaskFinder.php b/app/Model/TaskFinder.php index a1aa0f58..28ddb88f 100644 --- a/app/Model/TaskFinder.php +++ b/app/Model/TaskFinder.php @@ -71,6 +71,8 @@ class TaskFinder extends Base 'tasks.priority', 'tasks.time_spent', 'tasks.time_estimated', + 'tasks.is_active', + 'tasks.creator_id', 'projects.name AS project_name' ) ->join(Project::TABLE, 'id', 'project_id') diff --git a/app/Model/TaskPermission.php b/app/Model/TaskPermission.php deleted file mode 100644 index b1e02589..00000000 --- a/app/Model/TaskPermission.php +++ /dev/null @@ -1,34 +0,0 @@ -userSession->isAdmin() || $this->projectUserRole->getUserRole($task['project_id'], $this->userSession->getId()) === Role::PROJECT_MANAGER) { - return true; - } elseif (isset($task['creator_id']) && $task['creator_id'] == $this->userSession->getId()) { - return true; - } - - return false; - } -} diff --git a/app/ServiceProvider/ClassProvider.php b/app/ServiceProvider/ClassProvider.php index 18c1d578..54e2ad78 100644 --- a/app/ServiceProvider/ClassProvider.php +++ b/app/ServiceProvider/ClassProvider.php @@ -63,7 +63,6 @@ class ClassProvider implements ServiceProviderInterface 'TaskFile', 'TaskLink', 'TaskModification', - 'TaskPermission', 'TaskPosition', 'TaskStatus', 'TaskMetadata', diff --git a/app/Template/board/task_menu.php b/app/Template/board/task_menu.php deleted file mode 100644 index c0d97cda..00000000 --- a/app/Template/board/task_menu.php +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/Template/board/task_private.php b/app/Template/board/task_private.php index 19bcbcfa..57623042 100644 --- a/app/Template/board/task_private.php +++ b/app/Template/board/task_private.php @@ -17,7 +17,7 @@
user->hasProjectAccess('taskmodification', 'edit', $task['project_id'])): ?> - render('board/task_menu', array('task' => $task)) ?> + render('task/dropdown', array('task' => $task)) ?> @@ -33,7 +33,7 @@
user->hasProjectAccess('taskmodification', 'edit', $task['project_id'])): ?> - render('board/task_menu', array('task' => $task)) ?> + render('task/dropdown', array('task' => $task)) ?> diff --git a/app/Template/task/dropdown.php b/app/Template/task/dropdown.php index 6fea3728..567249df 100644 --- a/app/Template/task/dropdown.php +++ b/app/Template/task/dropdown.php @@ -7,6 +7,14 @@ url->link(t('Set automatically the start date'), 'taskmodification', 'start', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?> +
  • + + url->link(t('Change assignee'), 'BoardPopover', 'changeAssignee', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> +
  • +
  • + + url->link(t('Change category'), 'BoardPopover', 'changeCategory', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> +
  • url->link(t('Edit the task'), 'taskmodification', 'edit', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> @@ -31,6 +39,10 @@ url->link(t('Add a comment'), 'comment', 'create', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?>
  • +
  • + + url->link(t('Add a screenshot'), 'BoardPopover', 'screenshot', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> +
  • url->link(t('Duplicate'), 'taskduplication', 'duplicate', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> @@ -43,6 +55,12 @@ url->link(t('Move to another project'), 'taskduplication', 'move', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?>
  • + user->canRemoveTask($task)): ?> +
  • + + url->link(t('Remove'), 'task', 'remove', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> +
  • +
  • diff --git a/app/Template/task/remove.php b/app/Template/task/remove.php index eb0809b1..b869b646 100644 --- a/app/Template/task/remove.php +++ b/app/Template/task/remove.php @@ -8,8 +8,8 @@

    - url->link(t('Yes'), 'task', 'remove', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'confirmation' => 'yes'), true, 'btn btn-red') ?> + url->link(t('Yes'), 'task', 'remove', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'confirmation' => 'yes'), true, 'btn btn-red popover-link') ?> url->link(t('cancel'), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'close-popover') ?>
    -
  • \ No newline at end of file +
    diff --git a/app/Template/task/sidebar.php b/app/Template/task/sidebar.php index a2d73b8c..46f9e1a2 100644 --- a/app/Template/task/sidebar.php +++ b/app/Template/task/sidebar.php @@ -87,7 +87,7 @@ url->link(t('Open this task'), 'taskstatus', 'open', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> - task->canRemove($task)): ?> + user->canRemoveTask($task)): ?>
  • url->link(t('Remove'), 'task', 'remove', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> -- cgit v1.2.3