From 49c8e5c1be15b9732023703473bb7e15864770f6 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 18 Feb 2017 13:38:51 -0500 Subject: Prevent people to remove swimlanes that contains tasks --- app/Controller/ColumnController.php | 2 +- app/Controller/ProjectOverviewController.php | 2 +- app/Controller/ProjectViewController.php | 2 +- app/Controller/SwimlaneController.php | 5 +-- app/Model/ColumnModel.php | 4 +-- app/Model/ProjectModel.php | 2 +- app/Model/SwimlaneModel.php | 34 +++++++++++++++++++ app/Template/column/index.php | 39 ++++++++++------------ app/Template/swimlane/index.php | 2 +- app/Template/swimlane/table.php | 50 ++++++++++++++++------------ 10 files changed, 91 insertions(+), 51 deletions(-) (limited to 'app') diff --git a/app/Controller/ColumnController.php b/app/Controller/ColumnController.php index 3facbebc..7047d30e 100644 --- a/app/Controller/ColumnController.php +++ b/app/Controller/ColumnController.php @@ -20,7 +20,7 @@ class ColumnController extends BaseController public function index() { $project = $this->getProject(); - $columns = $this->columnModel->getAllWithTasksCount($project['id']); + $columns = $this->columnModel->getAllWithTaskCount($project['id']); $this->response->html($this->helper->layout->project('column/index', array( 'columns' => $columns, diff --git a/app/Controller/ProjectOverviewController.php b/app/Controller/ProjectOverviewController.php index 33bec078..477c1dd5 100644 --- a/app/Controller/ProjectOverviewController.php +++ b/app/Controller/ProjectOverviewController.php @@ -16,7 +16,7 @@ class ProjectOverviewController extends BaseController public function show() { $project = $this->getProject(); - $columns = $this->columnModel->getAllWithTasksCount($project['id']); + $columns = $this->columnModel->getAllWithTaskCount($project['id']); $this->response->html($this->helper->layout->app('project_overview/show', array( 'project' => $project, diff --git a/app/Controller/ProjectViewController.php b/app/Controller/ProjectViewController.php index 8ccf36ab..8ff79343 100644 --- a/app/Controller/ProjectViewController.php +++ b/app/Controller/ProjectViewController.php @@ -18,7 +18,7 @@ class ProjectViewController extends BaseController public function show() { $project = $this->getProject(); - $columns = $this->columnModel->getAllWithTasksCount($project['id']); + $columns = $this->columnModel->getAllWithTaskCount($project['id']); $this->response->html($this->helper->layout->project('project_view/show', array( 'project' => $project, diff --git a/app/Controller/SwimlaneController.php b/app/Controller/SwimlaneController.php index d99cfa7a..0d81d83c 100644 --- a/app/Controller/SwimlaneController.php +++ b/app/Controller/SwimlaneController.php @@ -40,10 +40,11 @@ class SwimlaneController extends BaseController public function index() { $project = $this->getProject(); + $swimlanes = $this->swimlaneModel->getAllWithTaskCount($project['id']); $this->response->html($this->helper->layout->project('swimlane/index', array( - 'active_swimlanes' => $this->swimlaneModel->getAllByStatus($project['id'], SwimlaneModel::ACTIVE), - 'inactive_swimlanes' => $this->swimlaneModel->getAllByStatus($project['id'], SwimlaneModel::INACTIVE), + 'active_swimlanes' => $swimlanes['active'], + 'inactive_swimlanes' => $swimlanes['inactive'], 'project' => $project, 'title' => t('Swimlanes') ))); diff --git a/app/Model/ColumnModel.php b/app/Model/ColumnModel.php index da5ea856..05f76fb9 100644 --- a/app/Model/ColumnModel.php +++ b/app/Model/ColumnModel.php @@ -121,13 +121,13 @@ class ColumnModel extends Base } /** - * Get all columns with tasks count + * Get all columns with task count * * @access public * @param integer $project_id Project id * @return array */ - public function getAllWithTasksCount($project_id) + public function getAllWithTaskCount($project_id) { return $this->db->table(self::TABLE) ->columns('id', 'title', 'position', 'task_limit', 'description', 'hide_in_dashboard', 'project_id') diff --git a/app/Model/ProjectModel.php b/app/Model/ProjectModel.php index a4d75a0b..b88a8c8b 100644 --- a/app/Model/ProjectModel.php +++ b/app/Model/ProjectModel.php @@ -270,7 +270,7 @@ class ProjectModel extends Base */ public function getColumnStats(array &$project) { - $project['columns'] = $this->columnModel->getAllWithTasksCount($project['id']); + $project['columns'] = $this->columnModel->getAllWithTaskCount($project['id']); $project['nb_active_tasks'] = 0; foreach ($project['columns'] as $column) { diff --git a/app/Model/SwimlaneModel.php b/app/Model/SwimlaneModel.php index 30012096..2b3be912 100644 --- a/app/Model/SwimlaneModel.php +++ b/app/Model/SwimlaneModel.php @@ -163,6 +163,40 @@ class SwimlaneModel extends Base return $query->findAll(); } + /** + * Get all swimlanes with task count + * + * @access public + * @param integer $project_id Project id + * @return array + */ + public function getAllWithTaskCount($project_id) + { + $result = array( + 'active' => array(), + 'inactive' => array(), + ); + + $swimlanes = $this->db->table(self::TABLE) + ->columns('id', 'name', 'description', 'project_id', 'position', 'is_active') + ->subquery("SELECT COUNT(*) FROM ".TaskModel::TABLE." WHERE swimlane_id=".self::TABLE.".id AND is_active='1'", 'nb_open_tasks') + ->subquery("SELECT COUNT(*) FROM ".TaskModel::TABLE." WHERE swimlane_id=".self::TABLE.".id AND is_active='0'", 'nb_closed_tasks') + ->eq('project_id', $project_id) + ->asc('position') + ->asc('name') + ->findAll(); + + foreach ($swimlanes as $swimlane) { + if ($swimlane['is_active']) { + $result['active'][] = $swimlane; + } else { + $result['inactive'][] = $swimlane; + } + } + + return $result; + } + /** * Get list of all swimlanes * diff --git a/app/Template/column/index.php b/app/Template/column/index.php index 6108661b..3c60d021 100644 --- a/app/Template/column/index.php +++ b/app/Template/column/index.php @@ -15,19 +15,31 @@ data-save-position-url="url->href('ColumnController', 'move', array('project_id' => $project['id'])) ?>"> - + - - - - + + + - +   + text->e($column['title']) ?> @@ -47,21 +59,6 @@ - - - diff --git a/app/Template/swimlane/index.php b/app/Template/swimlane/index.php index 35bbb589..59133db3 100644 --- a/app/Template/swimlane/index.php +++ b/app/Template/swimlane/index.php @@ -23,6 +23,6 @@ render('swimlane/table', array( 'swimlanes' => $inactive_swimlanes, 'project' => $project, - 'disable_handler' => true, + 'disable_handle' => true, )) ?> diff --git a/app/Template/swimlane/table.php b/app/Template/swimlane/table.php index 4f87924d..708b67f5 100644 --- a/app/Template/swimlane/table.php +++ b/app/Template/swimlane/table.php @@ -4,17 +4,39 @@ - + + - - + +   + + text->e($swimlane['name']) ?> @@ -24,24 +46,10 @@ - + + + + -- cgit v1.2.3