diff --git a/ChangeLog b/ChangeLog
index d8b4f297c..656fa32af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,7 +11,7 @@ Improvements:
* Add toggle button to show/hide subtasks in task list view
* Display tags in task list view
* Make user actions available from contextual menu
-* Change users list layout
+* Change users and groups list layout
* Project priority is always rendered now
Breaking Changes:
diff --git a/app/Controller/GroupListController.php b/app/Controller/GroupListController.php
index 4486bbff4..11081e4a3 100644
--- a/app/Controller/GroupListController.php
+++ b/app/Controller/GroupListController.php
@@ -2,6 +2,9 @@
namespace Kanboard\Controller;
+use Kanboard\Model\GroupModel;
+use Kanboard\Model\UserModel;
+
/**
* Group Controller
*
@@ -20,7 +23,7 @@ class GroupListController extends BaseController
$paginator = $this->paginator
->setUrl('GroupListController', 'index')
->setMax(30)
- ->setOrder('name')
+ ->setOrder(GroupModel::TABLE.'.name')
->setQuery($this->groupModel->getQuery())
->calculate();
@@ -43,7 +46,7 @@ class GroupListController extends BaseController
$paginator = $this->paginator
->setUrl('GroupListController', 'users', array('group_id' => $group_id))
->setMax(30)
- ->setOrder('username')
+ ->setOrder(UserModel::TABLE.'.username')
->setQuery($this->groupMemberModel->getQuery($group_id))
->calculate();
diff --git a/app/Model/GroupModel.php b/app/Model/GroupModel.php
index b43423b39..5acf7e3f0 100644
--- a/app/Model/GroupModel.php
+++ b/app/Model/GroupModel.php
@@ -27,7 +27,9 @@ class GroupModel extends Base
*/
public function getQuery()
{
- return $this->db->table(self::TABLE);
+ return $this->db->table(self::TABLE)
+ ->columns('id', 'name', 'external_id')
+ ->subquery('SELECT COUNT(*) FROM '.GroupMemberModel::TABLE.' WHERE group_id='.self::TABLE.'.id', 'nb_users');
}
/**
@@ -39,7 +41,7 @@ class GroupModel extends Base
*/
public function getById($group_id)
{
- return $this->getQuery()->eq('id', $group_id)->findOne();
+ return $this->db->table(self::TABLE)->eq('id', $group_id)->findOne();
}
/**
@@ -51,7 +53,7 @@ class GroupModel extends Base
*/
public function getByExternalId($external_id)
{
- return $this->getQuery()->eq('external_id', $external_id)->findOne();
+ return $this->db->table(self::TABLE)->eq('external_id', $external_id)->findOne();
}
/**
diff --git a/app/Template/group/dropdown.php b/app/Template/group/dropdown.php
new file mode 100644
index 000000000..9d807dc53
--- /dev/null
+++ b/app/Template/group/dropdown.php
@@ -0,0 +1,9 @@
+
+
+
+ - = $this->modal->medium('plus', t('Add group member'), 'GroupListController', 'associate', array('group_id' => $group['id'])) ?>
+ - = $this->url->icon('users', t('Members'), 'GroupListController', 'users', array('group_id' => $group['id'])) ?>
+ - = $this->modal->medium('edit', t('Edit'), 'GroupModificationController', 'show', array('group_id' => $group['id'])) ?>
+ - = $this->modal->confirm('trash-o', t('Remove'), 'GroupListController', 'confirm', array('group_id' => $group['id'])) ?>
+
+
diff --git a/app/Template/group/index.php b/app/Template/group/index.php
index 8370dc533..f85eab8b9 100644
--- a/app/Template/group/index.php
+++ b/app/Template/group/index.php
@@ -1,42 +1,62 @@
-
-
- isEmpty()): ?>
- = t('There is no group.') ?>
-
-
+
+isEmpty()): ?>
+ = t('There is no group.') ?>
+
+
+
- = $paginator ?>
-
-
+ getCollection() as $group): ?>
+
+
+ = $this->render('group/dropdown', array('group' => $group)) ?>
+ = $this->url->link($this->text->e($group['name']), 'GroupListController', 'users', array('group_id' => $group['id'])) ?>
+
+
+
+
+ 1): ?>
+ - = t('%d users', $group['nb_users']) ?>
+
+ - = t('%d user', $group['nb_users']) ?>
+
+
+
+ - = $this->text->e($group['external_id']) ?>
+
+
+
+
+
+
+
+ = $paginator ?>
+
diff --git a/app/Template/group/users.php b/app/Template/group/users.php
index 63cec3380..5025ca7af 100644
--- a/app/Template/group/users.php
+++ b/app/Template/group/users.php
@@ -1,6 +1,7 @@
= $paginator ?>
diff --git a/tests/units/Model/GroupModelTest.php b/tests/units/Model/GroupModelTest.php
index 4ad0a167c..7329a23bf 100644
--- a/tests/units/Model/GroupModelTest.php
+++ b/tests/units/Model/GroupModelTest.php
@@ -37,6 +37,7 @@ class GroupModelTest extends Base
$this->assertEquals('uuid', $groups[0]['external_id']);
$this->assertEquals('B', $groups[1]['name']);
$this->assertEquals('', $groups[1]['external_id']);
+ $this->assertEquals(0, $groups[1]['nb_users']);
}
public function testUpdate()