diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-04-11 17:38:41 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-04-11 17:38:41 -0400 |
commit | ea9d402587d6fbcb39080a5d9a26e94ff4575443 (patch) | |
tree | acd1a97de1f7fd541529d154912ddde6eda3ce23 /app/Controller | |
parent | 340f4f912b46ff711be304ecb3a12115f82e5f48 (diff) |
Add column controller
Diffstat (limited to 'app/Controller')
-rw-r--r-- | app/Controller/Board.php | 303 | ||||
-rw-r--r-- | app/Controller/Column.php | 170 |
2 files changed, 246 insertions, 227 deletions
diff --git a/app/Controller/Board.php b/app/Controller/Board.php index 47248fa2..89272393 100644 --- a/app/Controller/Board.php +++ b/app/Controller/Board.php @@ -11,101 +11,6 @@ namespace Controller; class Board extends Base { /** - * Move a column down or up - * - * @access public - */ - public function moveColumn() - { - $this->checkCSRFParam(); - $project = $this->getProject(); - $column_id = $this->request->getIntegerParam('column_id'); - $direction = $this->request->getStringParam('direction'); - - if ($direction === 'up' || $direction === 'down') { - $this->board->{'move'.$direction}($project['id'], $column_id); - } - - $this->response->redirect('?controller=board&action=edit&project_id='.$project['id']); - } - - /** - * Change a task assignee directly from the board - * - * @access public - */ - public function changeAssignee() - { - $task = $this->getTask(); - $project = $this->project->getById($task['project_id']); - - $this->response->html($this->template->render('board/assignee', array( - 'values' => $task, - 'users_list' => $this->projectPermission->getMemberList($project['id']), - 'project' => $project, - ))); - } - - /** - * Validate an assignee modification - * - * @access public - */ - public function updateAssignee() - { - $values = $this->request->getValues(); - - list($valid,) = $this->taskValidator->validateAssigneeModification($values); - - if ($valid && $this->taskModification->update($values)) { - $this->session->flash(t('Task updated successfully.')); - } - else { - $this->session->flashError(t('Unable to update your task.')); - } - - $this->response->redirect('?controller=board&action=show&project_id='.$values['project_id']); - } - - /** - * Change a task category directly from the board - * - * @access public - */ - public function changeCategory() - { - $task = $this->getTask(); - $project = $this->project->getById($task['project_id']); - - $this->response->html($this->template->render('board/category', array( - 'values' => $task, - 'categories_list' => $this->category->getList($project['id']), - 'project' => $project, - ))); - } - - /** - * Validate a category modification - * - * @access public - */ - public function updateCategory() - { - $values = $this->request->getValues(); - - list($valid,) = $this->taskValidator->validateCategoryModification($values); - - if ($valid && $this->taskModification->update($values)) { - $this->session->flash(t('Task updated successfully.')); - } - else { - $this->session->flashError(t('Unable to update your task.')); - } - - $this->response->redirect('?controller=board&action=show&project_id='.$values['project_id']); - } - - /** * Display the public version of a board * Access checked by a simple token, no user login, read only, auto-refresh * @@ -202,138 +107,6 @@ class Board extends Base } /** - * Display a form to edit a board - * - * @access public - */ - public function edit(array $values = array(), array $errors = array()) - { - $project = $this->getProject(); - $columns = $this->board->getColumns($project['id']); - - foreach ($columns as $column) { - $values['title['.$column['id'].']'] = $column['title']; - $values['description['.$column['id'].']'] = $column['description']; - $values['task_limit['.$column['id'].']'] = $column['task_limit'] ?: null; - } - - $this->response->html($this->projectLayout('board/edit', array( - 'errors' => $errors, - 'values' => $values + array('project_id' => $project['id']), - 'columns' => $columns, - 'project' => $project, - 'title' => t('Edit board') - ))); - } - - /** - * Display a form to edit a board - * - * @access public - */ - public function editColumn(array $values = array(), array $errors = array()) - { - $project = $this->getProject(); - $column = $this->board->getColumn($this->request->getIntegerParam('column_id')); - - $this->response->html($this->projectLayout('board/edit_column', array( - 'errors' => $errors, - 'values' => $values ?: $column, - 'project' => $project, - 'column' => $column, - 'title' => t('Edit column "%s"', $column['title']) - ))); - } - - /** - * Validate and update a column - * - * @access public - */ - public function updateColumn() - { - $project = $this->getProject(); - $values = $this->request->getValues(); - - list($valid, $errors) = $this->board->validateModification($values); - - if ($valid) { - - if ($this->board->updateColumn($values['id'], $values['title'], $values['task_limit'], $values['description'])) { - $this->session->flash(t('Board updated successfully.')); - $this->response->redirect('?controller=board&action=edit&project_id='.$project['id']); - } - else { - $this->session->flashError(t('Unable to update this board.')); - } - } - - $this->editcolumn($values, $errors); - } - - /** - * Validate and add a new column - * - * @access public - */ - public function add() - { - $project = $this->getProject(); - $columns = $this->board->getColumnsList($project['id']); - $data = $this->request->getValues(); - $values = array(); - - foreach ($columns as $column_id => $column_title) { - $values['title['.$column_id.']'] = $column_title; - } - - list($valid, $errors) = $this->board->validateCreation($data); - - if ($valid) { - - if ($this->board->addColumn($project['id'], $data['title'], $data['task_limit'], $data['description'])) { - $this->session->flash(t('Board updated successfully.')); - $this->response->redirect('?controller=board&action=edit&project_id='.$project['id']); - } - else { - $this->session->flashError(t('Unable to update this board.')); - } - } - - $this->edit($values, $errors); - } - - /** - * Remove a column - * - * @access public - */ - public function remove() - { - $project = $this->getProject(); - - if ($this->request->getStringParam('remove') === 'yes') { - - $this->checkCSRFParam(); - $column = $this->board->getColumn($this->request->getIntegerParam('column_id')); - - if (! empty($column) && $this->board->removeColumn($column['id'])) { - $this->session->flash(t('Column removed successfully.')); - } else { - $this->session->flashError(t('Unable to remove this column.')); - } - - $this->response->redirect('?controller=board&action=edit&project_id='.$project['id']); - } - - $this->response->html($this->projectLayout('board/remove', array( - 'column' => $this->board->getColumn($this->request->getIntegerParam('column_id')), - 'project' => $project, - 'title' => t('Remove a column from a board') - ))); - } - - /** * Save the board (Ajax request made by the drag and drop) * * @access public @@ -486,4 +259,80 @@ class Board extends Base 'task' => $task ))); } + + /** + * Change a task assignee directly from the board + * + * @access public + */ + public function changeAssignee() + { + $task = $this->getTask(); + $project = $this->project->getById($task['project_id']); + + $this->response->html($this->template->render('board/assignee', array( + 'values' => $task, + 'users_list' => $this->projectPermission->getMemberList($project['id']), + 'project' => $project, + ))); + } + + /** + * Validate an assignee modification + * + * @access public + */ + public function updateAssignee() + { + $values = $this->request->getValues(); + + list($valid,) = $this->taskValidator->validateAssigneeModification($values); + + if ($valid && $this->taskModification->update($values)) { + $this->session->flash(t('Task updated successfully.')); + } + else { + $this->session->flashError(t('Unable to update your task.')); + } + + $this->response->redirect($this->helper->url('board', 'show', array('project_id' => $values['project_id']))); + } + + /** + * Change a task category directly from the board + * + * @access public + */ + public function changeCategory() + { + $task = $this->getTask(); + $project = $this->project->getById($task['project_id']); + + $this->response->html($this->template->render('board/category', array( + 'values' => $task, + 'categories_list' => $this->category->getList($project['id']), + 'project' => $project, + ))); + } + + /** + * Validate a category modification + * + * @access public + */ + public function updateCategory() + { + $values = $this->request->getValues(); + + list($valid,) = $this->taskValidator->validateCategoryModification($values); + + if ($valid && $this->taskModification->update($values)) { + $this->session->flash(t('Task updated successfully.')); + } + else { + $this->session->flashError(t('Unable to update your task.')); + } + + $this->response->redirect($this->helper->url('board', 'show', array('project_id' => $values['project_id']))); + } } diff --git a/app/Controller/Column.php b/app/Controller/Column.php new file mode 100644 index 00000000..69ca5dd2 --- /dev/null +++ b/app/Controller/Column.php @@ -0,0 +1,170 @@ +<?php + +namespace Controller; + +/** + * Column controller + * + * @package controller + * @author Frederic Guillot + */ +class Column extends Base +{ + /** + * Display columns list + * + * @access public + */ + public function index(array $values = array(), array $errors = array()) + { + $project = $this->getProject(); + $columns = $this->board->getColumns($project['id']); + + foreach ($columns as $column) { + $values['title['.$column['id'].']'] = $column['title']; + $values['description['.$column['id'].']'] = $column['description']; + $values['task_limit['.$column['id'].']'] = $column['task_limit'] ?: null; + } + + $this->response->html($this->projectLayout('column/index', array( + 'errors' => $errors, + 'values' => $values + array('project_id' => $project['id']), + 'columns' => $columns, + 'project' => $project, + 'title' => t('Edit board') + ))); + } + + /** + * Validate and add a new column + * + * @access public + */ + public function create() + { + $project = $this->getProject(); + $columns = $this->board->getColumnsList($project['id']); + $data = $this->request->getValues(); + $values = array(); + + foreach ($columns as $column_id => $column_title) { + $values['title['.$column_id.']'] = $column_title; + } + + list($valid, $errors) = $this->board->validateCreation($data); + + if ($valid) { + + if ($this->board->addColumn($project['id'], $data['title'], $data['task_limit'], $data['description'])) { + $this->session->flash(t('Board updated successfully.')); + $this->response->redirect($this->helper->url('column', 'index', array('project_id' => $project['id']))); + } + else { + $this->session->flashError(t('Unable to update this board.')); + } + } + + $this->index($values, $errors); + } + + /** + * Display a form to edit a column + * + * @access public + */ + public function edit(array $values = array(), array $errors = array()) + { + $project = $this->getProject(); + $column = $this->board->getColumn($this->request->getIntegerParam('column_id')); + + $this->response->html($this->projectLayout('column/edit', array( + 'errors' => $errors, + 'values' => $values ?: $column, + 'project' => $project, + 'column' => $column, + 'title' => t('Edit column "%s"', $column['title']) + ))); + } + + /** + * Validate and update a column + * + * @access public + */ + public function update() + { + $project = $this->getProject(); + $values = $this->request->getValues(); + + list($valid, $errors) = $this->board->validateModification($values); + + if ($valid) { + + if ($this->board->updateColumn($values['id'], $values['title'], $values['task_limit'], $values['description'])) { + $this->session->flash(t('Board updated successfully.')); + $this->response->redirect($this->helper->url('column', 'index', array('project_id' => $project['id']))); + } + else { + $this->session->flashError(t('Unable to update this board.')); + } + } + + $this->edit($values, $errors); + } + + /** + * Move a column up or down + * + * @access public + */ + public function move() + { + $this->checkCSRFParam(); + $project = $this->getProject(); + $column_id = $this->request->getIntegerParam('column_id'); + $direction = $this->request->getStringParam('direction'); + + if ($direction === 'up' || $direction === 'down') { + $this->board->{'move'.$direction}($project['id'], $column_id); + } + + $this->response->redirect($this->helper->url('column', 'index', array('project_id' => $project['id']))); + } + + /** + * Confirm column suppression + * + * @access public + */ + public function confirm() + { + $project = $this->getProject(); + + $this->response->html($this->projectLayout('column/remove', array( + 'column' => $this->board->getColumn($this->request->getIntegerParam('column_id')), + 'project' => $project, + 'title' => t('Remove a column from a board') + ))); + } + + /** + * Remove a column + * + * @access public + */ + public function remove() + { + $project = $this->getProject(); + $this->checkCSRFParam(); + $column = $this->board->getColumn($this->request->getIntegerParam('column_id')); + + if (! empty($column) && $this->board->removeColumn($column['id'])) { + $this->session->flash(t('Column removed successfully.')); + } + else { + $this->session->flashError(t('Unable to remove this column.')); + } + + $this->response->redirect($this->helper->url('column', 'index', array('project_id' => $project['id']))); + } +} |