diff --git a/ChangeLog b/ChangeLog
index f2051621c..30b6d0e2c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,7 +10,7 @@ New features:
Improvements:
-* Redesign task list view
+* Redesign task list view and project list view
* Allow people to remove missing automatic actions (installed from a removed plugins)
* Improve task view tables
* Simplify automatic actions table
diff --git a/app/Controller/ProjectListController.php b/app/Controller/ProjectListController.php
index 4de73c972..95ff5d91d 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 2295bd1f4..7e166124b 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 b88a8c8bd..aa7c002d3 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 000000000..24ac90417
--- /dev/null
+++ b/app/Template/project_list/header.php
@@ -0,0 +1,12 @@
+
diff --git a/app/Template/project_list/listing.php b/app/Template/project_list/listing.php
new file mode 100644
index 000000000..9c5dfe0e0
--- /dev/null
+++ b/app/Template/project_list/listing.php
@@ -0,0 +1,47 @@
+
+isEmpty()): ?>
+ = t('There is no project.') ?>
+
+
+ = $this->render('project_list/header', array('paginator' => $paginator)) ?>
+ getCollection() as $project): ?>
+
+ = $this->render('project_list/project_title', array(
+ 'project' => $project,
+ )) ?>
+
+ = $this->render('project_list/project_details', array(
+ 'project' => $project,
+ )) ?>
+
+
+
+
+ = $paginator ?>
+
diff --git a/app/Template/project_list/project_details.php b/app/Template/project_list/project_details.php
new file mode 100644
index 000000000..ccd7ba1b2
--- /dev/null
+++ b/app/Template/project_list/project_details.php
@@ -0,0 +1,15 @@
+
+
+ 0): ?>
+ - = $this->text->e($project['owner_name'] ?: $project['owner_username']) ?>
+
+
+
+ - = t('Start Date: %s', $this->dt->date($project['start_date'])) ?>
+
+
+
+ - = t('End Date: %s', $this->dt->date($project['end_date'])) ?>
+
+
+
\ 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 000000000..ddec41316
--- /dev/null
+++ b/app/Template/project_list/project_title.php
@@ -0,0 +1,33 @@
+
+ user->hasProjectAccess('ProjectViewController', 'show', $project['id'])): ?>
+ = $this->render('project/dropdown', array('project' => $project)) ?>
+
+ = '#'.$project['id'] ?>
+
+
+
+ = $this->url->link($this->text->e($project['name']), 'BoardViewController', 'show', array('project_id' => $project['id'])) ?>
+
+
+
+
+
+
+
+
+
+
+ user->hasAccess('ProjectUserOverviewController', 'managers')): ?>
+
+
+
+
+
+
+
+
+
+
+ = t('Closed') ?>
+
+
diff --git a/app/Template/project_list/show.php b/app/Template/project_list/show.php
deleted file mode 100644
index 9a8045889..000000000
--- a/app/Template/project_list/show.php
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
- isEmpty()): ?>
- = t('No project') ?>
-
-
-
- = $paginator ?>
-
-
diff --git a/app/Template/project_list/sort_menu.php b/app/Template/project_list/sort_menu.php
new file mode 100644
index 000000000..4c6c62383
--- /dev/null
+++ b/app/Template/project_list/sort_menu.php
@@ -0,0 +1,26 @@
+
+
+
+ -
+ = $paginator->order(t('Project ID'), \Kanboard\Model\ProjectModel::TABLE.'.id') ?>
+
+ -
+ = $paginator->order(t('Project Name'), \Kanboard\Model\ProjectModel::TABLE.'.name') ?>
+
+ -
+ = $paginator->order(t('Status'), \Kanboard\Model\ProjectModel::TABLE.'.is_active') ?>
+
+ -
+ = $paginator->order(t('Start Date'), \Kanboard\Model\ProjectModel::TABLE.'.start_date') ?>
+
+ -
+ = $paginator->order(t('End Date'), \Kanboard\Model\ProjectModel::TABLE.'.end_date') ?>
+
+ -
+ = $paginator->order(t('Public'), \Kanboard\Model\ProjectModel::TABLE.'.is_public') ?>
+
+ -
+ = $paginator->order(t('Private'), \Kanboard\Model\ProjectModel::TABLE.'.is_private') ?>
+
+
+
diff --git a/app/Template/task_list/header.php b/app/Template/task_list/header.php
index c0f9df961..fb05dbdc4 100644
--- a/app/Template/task_list/header.php
+++ b/app/Template/task_list/header.php
@@ -1,12 +1,12 @@
-