From a43f71dda953ab1ca130af875b221569e4767f05 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sun, 19 Feb 2017 18:27:57 -0500 Subject: Redesign project list view --- app/Controller/ProjectListController.php | 15 ++-- app/Model/ColorModel.php | 2 +- app/Model/ProjectModel.php | 20 +++++ app/Template/project_list/header.php | 12 +++ app/Template/project_list/listing.php | 47 ++++++++++++ app/Template/project_list/project_details.php | 15 ++++ app/Template/project_list/project_title.php | 33 +++++++++ app/Template/project_list/show.php | 101 -------------------------- app/Template/project_list/sort_menu.php | 26 +++++++ app/Template/task_list/header.php | 6 +- app/Template/task_list/listing.php | 4 +- app/Template/task_list/task_avatars.php | 2 +- app/Template/task_list/task_details.php | 4 +- app/Template/task_list/task_title.php | 2 +- 14 files changed, 169 insertions(+), 120 deletions(-) create mode 100644 app/Template/project_list/header.php create mode 100644 app/Template/project_list/listing.php create mode 100644 app/Template/project_list/project_details.php create mode 100644 app/Template/project_list/project_title.php delete mode 100644 app/Template/project_list/show.php create mode 100644 app/Template/project_list/sort_menu.php (limited to 'app') diff --git a/app/Controller/ProjectListController.php b/app/Controller/ProjectListController.php index 4de73c97..95ff5d91 100644 --- a/app/Controller/ProjectListController.php +++ b/app/Controller/ProjectListController.php @@ -18,24 +18,21 @@ class ProjectListController extends BaseController public function show() { if ($this->userSession->isAdmin()) { - $project_ids = $this->projectModel->getAllIds(); + $projectIds = $this->projectModel->getAllIds(); } else { - $project_ids = $this->projectPermissionModel->getProjectIds($this->userSession->getId()); + $projectIds = $this->projectPermissionModel->getProjectIds($this->userSession->getId()); } - $nb_projects = count($project_ids); - $paginator = $this->paginator ->setUrl('ProjectListController', 'show') ->setMax(20) ->setOrder('name') - ->setQuery($this->projectModel->getQueryColumnStats($project_ids)) + ->setQuery($this->projectModel->getQueryByProjectIds($projectIds)) ->calculate(); - $this->response->html($this->helper->layout->app('project_list/show', array( - 'paginator' => $paginator, - 'nb_projects' => $nb_projects, - 'title' => t('Projects').' ('.$nb_projects.')' + $this->response->html($this->helper->layout->app('project_list/listing', array( + 'paginator' => $paginator, + 'title' => t('Projects') . ' (' . $paginator->getTotal() . ')', ))); } } diff --git a/app/Model/ColorModel.php b/app/Model/ColorModel.php index 2295bd1f..7e166124 100644 --- a/app/Model/ColorModel.php +++ b/app/Model/ColorModel.php @@ -223,7 +223,7 @@ class ColorModel extends Base $buffer .= 'border-color: '.$values['border']; $buffer .= '}'; $buffer .= 'td.color-'.$color.' { background-color: '.$values['background'].'}'; - $buffer .= '.task-list-row.color-'.$color.' {border-left: 5px solid '.$values['border'].'}'; + $buffer .= '.table-list-row.color-'.$color.' {border-left: 5px solid '.$values['border'].'}'; } return $buffer; diff --git a/app/Model/ProjectModel.php b/app/Model/ProjectModel.php index b88a8c8b..aa7c002d 100644 --- a/app/Model/ProjectModel.php +++ b/app/Model/ProjectModel.php @@ -317,6 +317,26 @@ class ProjectModel extends Base ->callback(array($this, 'applyColumnStats')); } + /** + * Get query for list of project without column statistics + * + * @access public + * @param array $projectIds + * @return \PicoDb\Table + */ + public function getQueryByProjectIds(array $projectIds) + { + if (empty($projectIds)) { + return $this->db->table(ProjectModel::TABLE)->eq(ProjectModel::TABLE.'.id', 0); + } + + return $this->db + ->table(ProjectModel::TABLE) + ->columns(self::TABLE.'.*', UserModel::TABLE.'.username AS owner_username', UserModel::TABLE.'.name AS owner_name') + ->join(UserModel::TABLE, 'id', 'owner_id') + ->in(self::TABLE.'.id', $projectIds); + } + /** * Create a project * diff --git a/app/Template/project_list/header.php b/app/Template/project_list/header.php new file mode 100644 index 00000000..24ac9041 --- /dev/null +++ b/app/Template/project_list/header.php @@ -0,0 +1,12 @@ +
+
+ getTotal() > 1): ?> + getTotal()) ?> + + getTotal()) ?> + +
+
+ render('project_list/sort_menu', array('paginator' => $paginator)) ?> +
+
diff --git a/app/Template/project_list/listing.php b/app/Template/project_list/listing.php new file mode 100644 index 00000000..9c5dfe0e --- /dev/null +++ b/app/Template/project_list/listing.php @@ -0,0 +1,47 @@ + +isEmpty()): ?> +

+ +
+ render('project_list/header', array('paginator' => $paginator)) ?> + getCollection() as $project): ?> +
+ render('project_list/project_title', array( + 'project' => $project, + )) ?> + + render('project_list/project_details', array( + 'project' => $project, + )) ?> +
+ +
+ + + diff --git a/app/Template/project_list/project_details.php b/app/Template/project_list/project_details.php new file mode 100644 index 00000000..ccd7ba1b --- /dev/null +++ b/app/Template/project_list/project_details.php @@ -0,0 +1,15 @@ +
+ +
\ No newline at end of file diff --git a/app/Template/project_list/project_title.php b/app/Template/project_list/project_title.php new file mode 100644 index 00000000..ddec4131 --- /dev/null +++ b/app/Template/project_list/project_title.php @@ -0,0 +1,33 @@ +
+ user->hasProjectAccess('ProjectViewController', 'show', $project['id'])): ?> + render('project/dropdown', array('project' => $project)) ?> + + + + + + url->link($this->text->e($project['name']), 'BoardViewController', 'show', array('project_id' => $project['id'])) ?> + + + + + + + + + + + user->hasAccess('ProjectUserOverviewController', 'managers')): ?> +   + + + + + + + + + + + +
diff --git a/app/Template/project_list/show.php b/app/Template/project_list/show.php deleted file mode 100644 index 9a804588..00000000 --- a/app/Template/project_list/show.php +++ /dev/null @@ -1,101 +0,0 @@ -
- - isEmpty()): ?> -

- - - - - - - - - - user->hasAccess('ProjectUserOverviewController', 'managers')): ?> - - - - - getCollection() as $project): ?> - - - - - - - - user->hasAccess('ProjectUserOverviewController', 'managers')): ?> - - - - - -
order(t('Id'), 'id') ?>order(t('Status'), 'is_active') ?>order(t('Project'), 'name') ?>order(t('Start date'), 'start_date') ?>order(t('End date'), 'end_date') ?>order(t('Owner'), 'owner_id') ?>
- render('project/dropdown', array('project' => $project)) ?> - - - - - - - - url->link($this->text->e($project['name']), 'BoardViewController', 'show', array('project_id' => $project['id'])) ?> - - - - - - - - - - - - - - - dt->date($project['start_date']) ?> - - dt->date($project['end_date']) ?> - - 0): ?> - text->e($project['owner_name'] ?: $project['owner_username']) ?> - - - - - - - - text->e($column['title']) ?> - -
- - - -
diff --git a/app/Template/project_list/sort_menu.php b/app/Template/project_list/sort_menu.php new file mode 100644 index 00000000..4c6c6238 --- /dev/null +++ b/app/Template/project_list/sort_menu.php @@ -0,0 +1,26 @@ + diff --git a/app/Template/task_list/header.php b/app/Template/task_list/header.php index c0f9df96..fb05dbdc 100644 --- a/app/Template/task_list/header.php +++ b/app/Template/task_list/header.php @@ -1,12 +1,12 @@ -
-
+
+
getTotal() > 1): ?> getTotal()) ?> getTotal()) ?>
-
+
render('task_list/sort_menu', array('paginator' => $paginator)) ?>
\ No newline at end of file diff --git a/app/Template/task_list/listing.php b/app/Template/task_list/listing.php index 793c13d4..171c148d 100644 --- a/app/Template/task_list/listing.php +++ b/app/Template/task_list/listing.php @@ -4,10 +4,10 @@ isEmpty()): ?>

isEmpty()): ?> -
+
render('task_list/header', array('paginator' => $paginator)) ?> getCollection() as $task): ?> -
+
render('task_list/task_title', array( 'task' => $task, )) ?> diff --git a/app/Template/task_list/task_avatars.php b/app/Template/task_list/task_avatars.php index 6a43b1a6..143fd8ea 100644 --- a/app/Template/task_list/task_avatars.php +++ b/app/Template/task_list/task_avatars.php @@ -17,4 +17,4 @@ ) ?>text->e($task['assignee_name'] ?: $task['assignee_username']) ?>
- \ No newline at end of file + diff --git a/app/Template/task_list/task_details.php b/app/Template/task_list/task_details.php index 33ae380a..78b7ede7 100644 --- a/app/Template/task_list/task_details.php +++ b/app/Template/task_list/task_details.php @@ -1,4 +1,4 @@ -
+
text->e($task['project_name']) ?> > text->e($task['swimlane_name']) ?> > text->e($task['column_name']) ?> @@ -20,4 +20,4 @@ -
\ No newline at end of file +
diff --git a/app/Template/task_list/task_title.php b/app/Template/task_list/task_title.php index 5e9c7284..028e9b70 100644 --- a/app/Template/task_list/task_title.php +++ b/app/Template/task_list/task_title.php @@ -5,7 +5,7 @@ - + url->link($this->text->e($task['title']), 'TaskViewController', 'show', array('project_id' => $task['project_id'], 'task_id' => $task['id'])) ?>
-- cgit v1.2.3