From 7b53d47d467115a173c642526a7d2474a22f88fb Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Fri, 23 May 2014 09:49:26 -0400 Subject: Improve user interface --- app/Controller/App.php | 4 +- app/Controller/Base.php | 81 ++++++-------- app/Controller/Board.php | 12 +- app/Controller/Comment.php | 188 ++++++++++++++++--------------- app/Controller/File.php | 136 ++++++++++++++++++++++ app/Controller/Project.php | 4 +- app/Controller/Task.php | 192 +++++++------------------------- app/Locales/es_ES/translations.php | 5 + app/Locales/fr_FR/translations.php | 5 + app/Locales/pl_PL/translations.php | 5 + app/Locales/pt_BR/translations.php | 5 + app/Model/Acl.php | 13 +-- app/Model/Base.php | 4 +- app/Templates/comment_create.php | 17 +++ app/Templates/comment_edit.php | 15 +++ app/Templates/comment_remove.php | 26 ++--- app/Templates/comment_show.php | 48 ++++---- app/Templates/file_new.php | 12 ++ app/Templates/file_open.php | 6 + app/Templates/file_remove.php | 14 +++ app/Templates/task_edit.php | 7 +- app/Templates/task_edit_description.php | 16 +++ app/Templates/task_open_file.php | 6 - app/Templates/task_remove_file.php | 14 --- app/Templates/task_show.php | 150 ++++++++++++------------- app/Templates/task_sidebar.php | 8 +- app/Templates/task_upload.php | 10 -- 27 files changed, 532 insertions(+), 471 deletions(-) create mode 100644 app/Controller/File.php create mode 100644 app/Templates/comment_create.php create mode 100644 app/Templates/comment_edit.php create mode 100644 app/Templates/file_new.php create mode 100644 app/Templates/file_open.php create mode 100644 app/Templates/file_remove.php create mode 100644 app/Templates/task_edit_description.php delete mode 100644 app/Templates/task_open_file.php delete mode 100644 app/Templates/task_remove_file.php delete mode 100644 app/Templates/task_upload.php (limited to 'app') diff --git a/app/Controller/App.php b/app/Controller/App.php index 64f9461f..b7f79b1d 100644 --- a/app/Controller/App.php +++ b/app/Controller/App.php @@ -2,7 +2,7 @@ namespace Controller; -use Model\Project; +use Model\Project as ProjectModel; /** * Application controller @@ -19,7 +19,7 @@ class App extends Base */ public function index() { - if ($this->project->countByStatus(Project::ACTIVE)) { + if ($this->project->countByStatus(ProjectModel::ACTIVE)) { $this->response->redirect('?controller=board'); } else { diff --git a/app/Controller/Base.php b/app/Controller/Base.php index 183b9395..f8e7914b 100644 --- a/app/Controller/Base.php +++ b/app/Controller/Base.php @@ -11,6 +11,20 @@ use Model\LastLogin; * * @package controller * @author Frederic Guillot + * @property \Model\Acl $acl + * @property \Model\Action $action + * @property \Model\Board $board + * @property \Model\Category $category + * @property \Model\Comment $comment + * @property \Model\Config $config + * @property \Model\File $file + * @property \Model\Google $google + * @property \Model\LastLogin $lastlogin + * @property \Model\Ldap $ldap + * @property \Model\Project $project + * @property \Model\RememberMe $rememberme + * @property \Model\Task $task + * @property \Model\User $user */ abstract class Base { @@ -173,67 +187,36 @@ abstract class Base } /** - * Display the template show task (common between different actions) + * Common layout for task views * * @access protected - * @param array $task Task data - * @param array $comment_form Comment form data - * @param array $description_form Description form data - * @param array $comment_edit_form Comment edit form data + * @param string $template Template name + * @param array $params Template parameters */ - protected function showTask(array $task, array $comment_form = array(), array $description_form = array(), array $comment_edit_form = array()) + protected function taskLayout($template, array $params) { - if (empty($comment_form)) { - $comment_form = array( - 'values' => array('task_id' => $task['id'], 'user_id' => $this->acl->getUserId()), - 'errors' => array() - ); - } - - if (empty($description_form)) { - $description_form = array( - 'values' => array('id' => $task['id']), - 'errors' => array() - ); - } - - if (empty($comment_edit_form)) { - $comment_edit_form = array( - 'values' => array('id' => 0), - 'errors' => array() - ); - } - else { - $hide_comment_form = true; - } + $content = $this->template->load($template, $params); + $params['task_content_for_layout'] = $content; - $this->response->html($this->taskLayout('task_show', array( - 'hide_comment_form' => isset($hide_comment_form), - 'comment_edit_form' => $comment_edit_form, - 'comment_form' => $comment_form, - 'description_form' => $description_form, - 'comments' => $this->comment->getAll($task['id']), - 'task' => $task, - 'columns_list' => $this->board->getColumnsList($task['project_id']), - 'colors_list' => $this->task->getColors(), - 'files' => $this->file->getAll($task['id']), - 'menu' => 'tasks', - 'title' => $task['title'], - ))); + return $this->template->layout('task_layout', $params); } /** - * Common layout for task views + * Common method to get a task for task views * * @access protected - * @param string $template Template name - * @param array $params Template parameters + * @return array */ - protected function taskLayout($template, array $params) + protected function getTask() { - $content = $this->template->load($template, $params); - $params['task_content_for_layout'] = $content; + $task = $this->task->getById($this->request->getIntegerParam('task_id'), true); - return $this->template->layout('task_layout', $params); + if (! $task) { + $this->notfound(); + } + + $this->checkProjectPermissions($task['project_id']); + + return $task; } } diff --git a/app/Controller/Board.php b/app/Controller/Board.php index c727a422..4cf0d381 100644 --- a/app/Controller/Board.php +++ b/app/Controller/Board.php @@ -2,8 +2,8 @@ namespace Controller; -use Model\Project; -use Model\User; +use Model\Project as ProjectModel; +use Model\User as UserModel; /** * Board controller @@ -52,7 +52,7 @@ class Board extends Base { $task = $this->task->getById($this->request->getIntegerParam('task_id')); $project = $this->project->getById($task['project_id']); - $projects = $this->project->getListByStatus(Project::ACTIVE); + $projects = $this->project->getListByStatus(ProjectModel::ACTIVE); if ($this->acl->isRegularUser()) { $projects = $this->project->filterListByAccess($projects, $this->acl->getUserId()); @@ -143,7 +143,7 @@ class Board extends Base */ public function index() { - $projects = $this->project->getListByStatus(Project::ACTIVE); + $projects = $this->project->getListByStatus(ProjectModel::ACTIVE); if ($this->acl->isRegularUser()) { $projects = $this->project->filterListByAccess($projects, $this->acl->getUserId()); @@ -177,10 +177,10 @@ class Board extends Base public function show() { $project_id = $this->request->getIntegerParam('project_id'); - $user_id = $this->request->getIntegerParam('user_id', User::EVERYBODY_ID); + $user_id = $this->request->getIntegerParam('user_id', UserModel::EVERYBODY_ID); $this->checkProjectPermissions($project_id); - $projects = $this->project->getListByStatus(Project::ACTIVE); + $projects = $this->project->getListByStatus(ProjectModel::ACTIVE); if ($this->acl->isRegularUser()) { $projects = $this->project->filterListByAccess($projects, $this->acl->getUserId()); diff --git a/app/Controller/Comment.php b/app/Controller/Comment.php index c9f226f7..47eaf6b6 100644 --- a/app/Controller/Comment.php +++ b/app/Controller/Comment.php @@ -10,6 +10,27 @@ namespace Controller; */ class Comment extends Base { + /** + * Get the current comment + * + * @access private + * @return array + */ + private function getComment() + { + $comment = $this->comment->getById($this->request->getIntegerParam('comment_id')); + + if (! $comment) { + $this->notfound(); + } + + if (! $this->acl->isAdminUser() && $comment['user_id'] != $this->acl->getUserId()) { + $this->forbidden(); + } + + return $comment; + } + /** * Forbidden page for comments * @@ -23,6 +44,27 @@ class Comment extends Base ))); } + /** + * Add comment form + * + * @access public + */ + public function create() + { + $task = $this->getTask(); + + $this->response->html($this->taskLayout('comment_create', array( + 'values' => array( + 'user_id' => $this->acl->getUserId(), + 'task_id' => $task['id'], + ), + 'errors' => array(), + 'task' => $task, + 'menu' => 'tasks', + 'title' => t('Add a comment') + ))); + } + /** * Add a comment * @@ -30,12 +72,9 @@ class Comment extends Base */ public function save() { - $task = $this->task->getById($this->request->getIntegerParam('task_id'), true); + $task = $this->getTask(); $values = $this->request->getValues(); - if (! $task) $this->notfound(); - $this->checkProjectPermissions($task['project_id']); - list($valid, $errors) = $this->comment->validateCreation($values); if ($valid) { @@ -47,13 +86,16 @@ class Comment extends Base $this->session->flashError(t('Unable to create your comment.')); } - $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); + $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#comments'); } - $this->showTask( - $task, - array('values' => $values, 'errors' => $errors) - ); + $this->response->html($this->taskLayout('comment_create', array( + 'values' => $values, + 'errors' => $errors, + 'task' => $task, + 'menu' => 'tasks', + 'title' => t('Add a comment') + ))); } /** @@ -63,26 +105,17 @@ class Comment extends Base */ public function edit() { - $task_id = $this->request->getIntegerParam('task_id'); - $comment_id = $this->request->getIntegerParam('comment_id'); - - $task = $this->task->getById($task_id, true); - $comment = $this->comment->getById($comment_id); - - if (! $task || ! $comment) $this->notfound(); - $this->checkProjectPermissions($task['project_id']); - - if ($this->acl->isAdminUser() || $comment['user_id'] == $this->acl->getUserId()) { - - $this->showTask( - $task, - array(), - array(), - array('values' => array('id' => $comment['id']), 'errors' => array()) - ); - } - - $this->forbidden(); + $task = $this->getTask(); + $comment = $this->getComment(); + + $this->response->html($this->taskLayout('comment_edit', array( + 'values' => $comment, + 'errors' => array(), + 'comment' => $comment, + 'task' => $task, + 'menu' => 'tasks', + 'title' => t('Edit a comment') + ))); } /** @@ -92,42 +125,32 @@ class Comment extends Base */ public function update() { - $task_id = $this->request->getIntegerParam('task_id'); - $comment_id = $this->request->getIntegerParam('comment_id'); - - $task = $this->task->getById($task_id, true); - $comment = $this->comment->getById($comment_id); + $task = $this->getTask(); + $comment = $this->getComment(); $values = $this->request->getValues(); + list($valid, $errors) = $this->comment->validateModification($values); - if (! $task || ! $comment) $this->notfound(); - $this->checkProjectPermissions($task['project_id']); - - if ($this->acl->isAdminUser() || $comment['user_id'] == $this->acl->getUserId()) { - - list($valid, $errors) = $this->comment->validateModification($values); - - if ($valid) { - - if ($this->comment->update($values)) { - $this->session->flash(t('Comment updated successfully.')); - } - else { - $this->session->flashError(t('Unable to update your comment.')); - } + if ($valid) { - $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#comment-'.$comment_id); + if ($this->comment->update($values)) { + $this->session->flash(t('Comment updated successfully.')); + } + else { + $this->session->flashError(t('Unable to update your comment.')); } - $this->showTask( - $task, - array(), - array(), - array('values' => $values, 'errors' => $errors) - ); + $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#comment-'.$comment['id']); } - $this->forbidden(); + $this->response->html($this->taskLayout('comment_edit', array( + 'values' => $values, + 'errors' => $errors, + 'comment' => $comment, + 'task' => $task, + 'menu' => 'tasks', + 'title' => t('Edit a comment') + ))); } /** @@ -137,25 +160,15 @@ class Comment extends Base */ public function confirm() { - $project_id = $this->request->getIntegerParam('project_id'); - $comment_id = $this->request->getIntegerParam('comment_id'); + $task = $this->getTask(); + $comment = $this->getComment(); - $this->checkProjectPermissions($project_id); - - $comment = $this->comment->getById($comment_id); - if (! $comment) $this->notfound(); - - if ($this->acl->isAdminUser() || $comment['user_id'] == $this->acl->getUserId()) { - - $this->response->html($this->template->layout('comment_remove', array( - 'comment' => $comment, - 'project_id' => $project_id, - 'menu' => 'tasks', - 'title' => t('Remove a comment') - ))); - } - - $this->forbidden(); + $this->response->html($this->taskLayout('comment_remove', array( + 'comment' => $comment, + 'task' => $task, + 'menu' => 'tasks', + 'title' => t('Remove a comment') + ))); } /** @@ -165,25 +178,16 @@ class Comment extends Base */ public function remove() { - $project_id = $this->request->getIntegerParam('project_id'); - $comment_id = $this->request->getIntegerParam('comment_id'); + $task = $this->getTask(); + $comment = $this->getComment(); - $this->checkProjectPermissions($project_id); - - $comment = $this->comment->getById($comment_id); - if (! $comment) $this->notfound(); - - if ($this->acl->isAdminUser() || $comment['user_id'] == $this->acl->getUserId()) { - - if ($this->comment->remove($comment['id'])) { - $this->session->flash(t('Comment removed successfully.')); - } else { - $this->session->flashError(t('Unable to remove this comment.')); - } - - $this->response->redirect('?controller=task&action=show&task_id='.$comment['task_id']); + if ($this->comment->remove($comment['id'])) { + $this->session->flash(t('Comment removed successfully.')); + } + else { + $this->session->flashError(t('Unable to remove this comment.')); } - $this->forbidden(); + $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#comments'); } } diff --git a/app/Controller/File.php b/app/Controller/File.php new file mode 100644 index 00000000..1604ab13 --- /dev/null +++ b/app/Controller/File.php @@ -0,0 +1,136 @@ +getTask(); + + $this->response->html($this->taskLayout('file_new', array( + 'task' => $task, + 'menu' => 'tasks', + 'title' => t('Attach a document') + ))); + } + + /** + * File upload (save files) + * + * @access public + */ + public function save() + { + $task = $this->getTask(); + $this->file->upload($task['project_id'], $task['id'], 'files'); + $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#attachments'); + } + + /** + * File download + * + * @access public + */ + public function download() + { + $task = $this->getTask(); + $file = $this->file->getById($this->request->getIntegerParam('file_id')); + $filename = FileModel::BASE_PATH.$file['path']; + + if ($file['task_id'] == $task['id'] && file_exists($filename)) { + $this->response->forceDownload($file['name']); + $this->response->binary(file_get_contents($filename)); + } + + $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); + } + + /** + * Open a file (show the content in a popover) + * + * @access public + */ + public function open() + { + $task = $this->getTask(); + $file = $this->file->getById($this->request->getIntegerParam('file_id')); + + if ($file['task_id'] == $task['id']) { + $this->response->html($this->template->load('file_open', array( + 'file' => $file + ))); + } + } + + /** + * Return the file content (work only for images) + * + * @access public + */ + public function image() + { + $task = $this->getTask(); + $file = $this->file->getById($this->request->getIntegerParam('file_id')); + $filename = FileModel::BASE_PATH.$file['path']; + + if ($file['task_id'] == $task['id'] && file_exists($filename)) { + $metadata = getimagesize($filename); + + if (isset($metadata['mime'])) { + $this->response->contentType($metadata['mime']); + readfile($filename); + } + } + } + + /** + * Remove a file + * + * @access public + */ + public function remove() + { + $task = $this->getTask(); + $file = $this->file->getById($this->request->getIntegerParam('file_id')); + + if ($file['task_id'] == $task['id'] && $this->file->remove($file['id'])) { + $this->session->flash(t('File removed successfully.')); + } else { + $this->session->flashError(t('Unable to remove this file.')); + } + + $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); + } + + /** + * Confirmation dialog before removing a file + * + * @access public + */ + public function confirm() + { + $task = $this->getTask(); + $file = $this->file->getById($this->request->getIntegerParam('file_id')); + + $this->response->html($this->taskLayout('file_remove', array( + 'task' => $task, + 'file' => $file, + 'menu' => 'tasks', + 'title' => t('Remove a file') + ))); + } +} diff --git a/app/Controller/Project.php b/app/Controller/Project.php index 5cb244a2..e539f364 100644 --- a/app/Controller/Project.php +++ b/app/Controller/Project.php @@ -2,7 +2,7 @@ namespace Controller; -use Model\Task; +use Model\Task as TaskModel; /** * Project controller @@ -96,7 +96,7 @@ class Project extends Base $filters = array( array('column' => 'project_id', 'operator' => 'eq', 'value' => $project_id), - array('column' => 'is_active', 'operator' => 'eq', 'value' => Task::STATUS_CLOSED), + array('column' => 'is_active', 'operator' => 'eq', 'value' => TaskModel::STATUS_CLOSED), ); $tasks = $this->task->find($filters); diff --git a/app/Controller/Task.php b/app/Controller/Task.php index 1b67b6a0..8230eef3 100644 --- a/app/Controller/Task.php +++ b/app/Controller/Task.php @@ -2,8 +2,7 @@ namespace Controller; -use Model\Project; -use Model\File; +use Model\Project as ProjectModel; /** * Task controller @@ -13,19 +12,6 @@ use Model\File; */ class Task extends Base { - private function getTask() - { - $task = $this->task->getById($this->request->getIntegerParam('task_id'), true); - - if (! $task) { - $this->notfound(); - } - - $this->checkProjectPermissions($task['project_id']); - - return $task; - } - /** * Webhook to create a task (useful for external software) * @@ -71,41 +57,17 @@ class Task extends Base */ public function show() { - $this->showTask($this->getTask()); - } - - /** - * Add a description from the show task page - * - * @access public - */ - public function description() - { - $task = $this->task->getById($this->request->getIntegerParam('task_id'), true); - $values = $this->request->getValues(); - - if (! $task) $this->notfound(); - $this->checkProjectPermissions($task['project_id']); - - list($valid, $errors) = $this->task->validateDescriptionCreation($values); - - if ($valid) { - - if ($this->task->update($values)) { - $this->session->flash(t('Task updated successfully.')); - } - else { - $this->session->flashError(t('Unable to update your task.')); - } - - $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); - } + $task = $this->getTask(); - $this->showTask( - $task, - array(), - array('values' => $values, 'errors' => $errors) - ); + $this->response->html($this->taskLayout('task_show', array( + 'files' => $this->file->getAll($task['id']), + 'comments' => $this->comment->getAll($task['id']), + 'task' => $task, + 'columns_list' => $this->board->getColumnsList($task['project_id']), + 'colors_list' => $this->task->getColors(), + 'menu' => 'tasks', + 'title' => $task['title'], + ))); } /** @@ -127,7 +89,7 @@ class Task extends Base 'owner_id' => $this->request->getIntegerParam('owner_id'), 'another_task' => $this->request->getIntegerParam('another_task'), ), - 'projects_list' => $this->project->getListByStatus(\Model\Project::ACTIVE), + 'projects_list' => $this->project->getListByStatus(ProjectModel::ACTIVE), 'columns_list' => $this->board->getColumnsList($project_id), 'users_list' => $this->project->getUsersList($project_id), 'colors_list' => $this->task->getColors(), @@ -171,7 +133,7 @@ class Task extends Base $this->response->html($this->template->layout('task_new', array( 'errors' => $errors, 'values' => $values, - 'projects_list' => $this->project->getListByStatus(Project::ACTIVE), + 'projects_list' => $this->project->getListByStatus(ProjectModel::ACTIVE), 'columns_list' => $this->board->getColumnsList($values['project_id']), 'users_list' => $this->project->getUsersList($values['project_id']), 'colors_list' => $this->task->getColors(), @@ -188,10 +150,7 @@ class Task extends Base */ public function edit() { - $task = $this->task->getById($this->request->getIntegerParam('task_id')); - - if (! $task) $this->notfound(); - $this->checkProjectPermissions($task['project_id']); + $task = $this->getTask(); if (! empty($task['date_due'])) { $task['date_due'] = date(t('m/d/Y'), $task['date_due']); @@ -203,8 +162,9 @@ class Task extends Base $task['score'] = $task['score'] ?: ''; $this->response->html($this->template->layout('task_edit', array( - 'errors' => array(), 'values' => $task, + 'errors' => array(), + 'task' => $task, 'columns_list' => $this->board->getColumnsList($task['project_id']), 'users_list' => $this->project->getUsersList($task['project_id']), 'colors_list' => $this->task->getColors(), @@ -221,8 +181,8 @@ class Task extends Base */ public function update() { + $task = $this->getTask(); $values = $this->request->getValues(); - $this->checkProjectPermissions($values['project_id']); list($valid, $errors) = $this->task->validateModification($values); @@ -238,8 +198,9 @@ class Task extends Base } $this->response->html($this->template->layout('task_edit', array( - 'errors' => $errors, 'values' => $values, + 'errors' => $errors, + 'task' => $task, 'columns_list' => $this->board->getColumnsList($values['project_id']), 'users_list' => $this->project->getUsersList($values['project_id']), 'colors_list' => $this->task->getColors(), @@ -372,7 +333,7 @@ class Task extends Base $this->response->html($this->template->layout('task_new', array( 'errors' => array(), 'values' => $task, - 'projects_list' => $this->project->getListByStatus(Project::ACTIVE), + 'projects_list' => $this->project->getListByStatus(ProjectModel::ACTIVE), 'columns_list' => $this->board->getColumnsList($task['project_id']), 'users_list' => $this->project->getUsersList($task['project_id']), 'colors_list' => $this->task->getColors(), @@ -384,124 +345,53 @@ class Task extends Base } /** - * File upload form + * Edit description form * * @access public */ - public function file() + public function editDescription() { $task = $this->getTask(); - $this->response->html($this->taskLayout('task_upload', array( + $this->response->html($this->taskLayout('task_edit_description', array( + 'values' => $task, + 'errors' => array(), 'task' => $task, 'menu' => 'tasks', - 'title' => t('Attach a document') + 'title' => t('Edit the description') ))); } /** - * File upload (save files) + * Save and validation the description * * @access public */ - public function upload() + public function saveDescription() { $task = $this->getTask(); - $this->file->upload($task['project_id'], $task['id'], 'files'); - $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#attachments'); - } - - /** - * File download - * - * @access public - */ - public function download() - { - $task = $this->getTask(); - $file = $this->file->getById($this->request->getIntegerParam('file_id')); - $filename = File::BASE_PATH.$file['path']; - - if ($file['task_id'] == $task['id'] && file_exists($filename)) { - $this->response->forceDownload($file['name']); - $this->response->binary(file_get_contents($filename)); - } - - $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); - } - - /** - * Open a file (show the content in a popover) - * - * @access public - */ - public function openFile() - { - $task = $this->getTask(); - $file = $this->file->getById($this->request->getIntegerParam('file_id')); - - if ($file['task_id'] == $task['id']) { - $this->response->html($this->template->load('task_open_file', array( - 'file' => $file - ))); - } - } + $values = $this->request->getValues(); - /** - * Return the file content (work only for images) - * - * @access public - */ - public function image() - { - $task = $this->getTask(); - $file = $this->file->getById($this->request->getIntegerParam('file_id')); - $filename = File::BASE_PATH.$file['path']; + list($valid, $errors) = $this->task->validateDescriptionCreation($values); - if ($file['task_id'] == $task['id'] && file_exists($filename)) { - $metadata = getimagesize($filename); + if ($valid) { - if (isset($metadata['mime'])) { - $this->response->contentType($metadata['mime']); - readfile($filename); + if ($this->task->update($values)) { + $this->session->flash(t('Task updated successfully.')); + } + else { + $this->session->flashError(t('Unable to update your task.')); } - } - } - - /** - * Remove a file - * - * @access public - */ - public function removeFile() - { - $task = $this->getTask(); - $file = $this->file->getById($this->request->getIntegerParam('file_id')); - if ($file['task_id'] == $task['id'] && $this->file->remove($file['id'])) { - $this->session->flash(t('File removed successfully.')); - } else { - $this->session->flashError(t('Unable to remove this file.')); + $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); } - $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); - } - - /** - * Confirmation dialog before removing a file - * - * @access public - */ - public function confirmRemoveFile() - { - $task = $this->getTask(); - $file = $this->file->getById($this->request->getIntegerParam('file_id')); - - $this->response->html($this->taskLayout('task_remove_file', array( + $this->response->html($this->taskLayout('task_edit_description', array( + 'values' => $values, + 'errors' => $errors, 'task' => $task, - 'file' => $file, 'menu' => 'tasks', - 'title' => t('Remove a file') + 'title' => t('Edit the description') ))); } } diff --git a/app/Locales/es_ES/translations.php b/app/Locales/es_ES/translations.php index 7374f6b6..44e5934c 100644 --- a/app/Locales/es_ES/translations.php +++ b/app/Locales/es_ES/translations.php @@ -338,4 +338,9 @@ return array( // 'Do you really want to remove this file: "%s"?' => '', // 'open' => '', // 'Attachments' => '', + // 'Edit the task' => '', + // 'Edit the description' => '', + // 'Add a comment' => '', + // 'Edit a comment' => '', + // 'Summary' => '', ); diff --git a/app/Locales/fr_FR/translations.php b/app/Locales/fr_FR/translations.php index 26fee468..8cf37701 100644 --- a/app/Locales/fr_FR/translations.php +++ b/app/Locales/fr_FR/translations.php @@ -338,4 +338,9 @@ return array( 'Do you really want to remove this file: "%s"?' => 'Voulez-vous vraiment supprimer ce fichier « %s » ?', 'open' => 'ouvrir', 'Attachments' => 'Pièces-jointes', + 'Edit the task' => 'Modifier la tâche', + 'Edit the description' => 'Modifier la description', + 'Add a comment' => 'Ajouter un commentaire', + 'Edit a comment' => 'Modifier un commentaire', + 'Summary' => 'Résumé', ); diff --git a/app/Locales/pl_PL/translations.php b/app/Locales/pl_PL/translations.php index 43adb330..f8365d9c 100644 --- a/app/Locales/pl_PL/translations.php +++ b/app/Locales/pl_PL/translations.php @@ -343,4 +343,9 @@ return array( // 'Do you really want to remove this file: "%s"?' => '', // 'open' => '', // 'Attachments' => '', + // 'Edit the task' => '', + // 'Edit the description' => '', + // 'Add a comment' => '', + // 'Edit a comment' => '', + // 'Summary' => '', ); diff --git a/app/Locales/pt_BR/translations.php b/app/Locales/pt_BR/translations.php index 0b4765d1..6038670a 100644 --- a/app/Locales/pt_BR/translations.php +++ b/app/Locales/pt_BR/translations.php @@ -339,4 +339,9 @@ return array( // 'Do you really want to remove this file: "%s"?' => '', // 'open' => '', // 'Attachments' => '', + // 'Edit the task' => '', + // 'Edit the description' => '', + // 'Add a comment' => '', + // 'Edit a comment' => '', + // 'Summary' => '', ); diff --git a/app/Model/Acl.php b/app/Model/Acl.php index be32196a..c6ed8686 100644 --- a/app/Model/Acl.php +++ b/app/Model/Acl.php @@ -32,9 +32,10 @@ class Acl extends Base 'app' => array('index'), 'board' => array('index', 'show', 'assign', 'assigntask', 'save', 'check'), 'project' => array('tasks', 'index', 'forbidden', 'search'), - 'comment' => array('save', 'confirm', 'remove', 'update', 'edit'), 'user' => array('index', 'edit', 'update', 'forbidden', 'logout', 'index', 'unlinkgoogle'), 'config' => array('index', 'removeremembermetoken'), + 'comment' => array('create', 'save', 'confirm', 'remove', 'update', 'edit', 'forbidden'), + 'file' => array('create', 'save', 'download', 'confirm', 'remove', 'open', 'image'), 'task' => array( 'show', 'create', @@ -45,17 +46,11 @@ class Acl extends Base 'confirmclose', 'open', 'confirmopen', - 'description', 'duplicate', 'remove', 'confirmremove', - 'file', - 'upload', - 'download', - 'openfile', - 'image', - 'removefile', - 'confirmremovefile', + 'editdescription', + 'savedescription', ), ); diff --git a/app/Model/Base.php b/app/Model/Base.php index fef2ddbb..e95296bb 100644 --- a/app/Model/Base.php +++ b/app/Model/Base.php @@ -30,7 +30,7 @@ abstract class Base * Database instance * * @access protected - * @var PicoDb + * @var \PicoDb\Database */ protected $db; @@ -38,7 +38,7 @@ abstract class Base * Event dispatcher instance * * @access protected - * @var Core\Event + * @var \Core\Event */ protected $event; diff --git a/app/Templates/comment_create.php b/app/Templates/comment_create.php new file mode 100644 index 00000000..a566d9c8 --- /dev/null +++ b/app/Templates/comment_create.php @@ -0,0 +1,17 @@ + + +
+ + + +
+
+ +
+ + + +
+
diff --git a/app/Templates/comment_edit.php b/app/Templates/comment_edit.php new file mode 100644 index 00000000..0a17a95e --- /dev/null +++ b/app/Templates/comment_edit.php @@ -0,0 +1,15 @@ + + +
+ + +
+ +
+ + + +
+
diff --git a/app/Templates/comment_remove.php b/app/Templates/comment_remove.php index ad1b8e4a..02a23f93 100644 --- a/app/Templates/comment_remove.php +++ b/app/Templates/comment_remove.php @@ -1,18 +1,16 @@ -
- + -
-

- -

+
+

+ +

- $comment)) ?> + $comment, 'task' => $task, 'preview' => true)) ?> -
- - -
+
+ +
-
\ No newline at end of file + \ No newline at end of file diff --git a/app/Templates/comment_show.php b/app/Templates/comment_show.php index 24bf9070..227c0fcc 100644 --- a/app/Templates/comment_show.php +++ b/app/Templates/comment_show.php @@ -1,36 +1,28 @@ -
+
+

@

- -
    -
  • - -
  • - -
  • -
  • - -
  • - -
- - -
+
+ + +
    +
  • + +
  • + +
  • +
  • + +
  • + +
+ - -
+
+ +
-
- - - -
- - -
-
-
\ No newline at end of file diff --git a/app/Templates/file_new.php b/app/Templates/file_new.php new file mode 100644 index 00000000..43223d0c --- /dev/null +++ b/app/Templates/file_new.php @@ -0,0 +1,12 @@ + + +
+ +
+ + + +
+
\ No newline at end of file diff --git a/app/Templates/file_open.php b/app/Templates/file_open.php new file mode 100644 index 00000000..aa181d64 --- /dev/null +++ b/app/Templates/file_open.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/app/Templates/file_remove.php b/app/Templates/file_remove.php new file mode 100644 index 00000000..1d26c15e --- /dev/null +++ b/app/Templates/file_remove.php @@ -0,0 +1,14 @@ + + +
+

+ +

+ +
+ + +
+
\ No newline at end of file diff --git a/app/Templates/task_edit.php b/app/Templates/task_edit.php index 8c8bc107..d698c21d 100644 --- a/app/Templates/task_edit.php +++ b/app/Templates/task_edit.php @@ -1,9 +1,12 @@
-
+
@@ -44,7 +47,7 @@
- +
diff --git a/app/Templates/task_edit_description.php b/app/Templates/task_edit_description.php new file mode 100644 index 00000000..0bdc40a2 --- /dev/null +++ b/app/Templates/task_edit_description.php @@ -0,0 +1,16 @@ + + +
+ + +
+
+ +
+ + + +
+
diff --git a/app/Templates/task_open_file.php b/app/Templates/task_open_file.php deleted file mode 100644 index e0817f01..00000000 --- a/app/Templates/task_open_file.php +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/app/Templates/task_remove_file.php b/app/Templates/task_remove_file.php deleted file mode 100644 index 9687b602..00000000 --- a/app/Templates/task_remove_file.php +++ /dev/null @@ -1,14 +0,0 @@ - - -
-

- -

- -
- - -
-
\ No newline at end of file diff --git a/app/Templates/task_show.php b/app/Templates/task_show.php index 56f6cba5..53cdbae8 100644 --- a/app/Templates/task_show.php +++ b/app/Templates/task_show.php @@ -1,111 +1,99 @@ -
+

- - - -
    -
  • - -
  • - -
  • - -
  • - - -
  • - -
  • + + -
  • - - - - - +
      +
    • + +
    • + +
    • + +
    • -
      - -
    • - - - () -
    • - -
    • - -
    • - -
    • - - - - + +
    • + +
    • - -
    -
+
  • + + + + + + + +
  • +
  • + + + () +
  • + +
  • + +
  • + +
  • + + + + + +
  • + +
    + + + +
    + -

    -
    - -
    - - -
    -
    - -
    - -
    -
    +
    + -

    +
    + +
    • - + - , + , - +
    +
    -

    - - +
    - - -
    - - - -
    -
    - -
    - -
    -
    - \ No newline at end of file diff --git a/app/Templates/task_sidebar.php b/app/Templates/task_sidebar.php index 9dbc1a8c..8a3939b8 100644 --- a/app/Templates/task_sidebar.php +++ b/app/Templates/task_sidebar.php @@ -2,9 +2,11 @@