From 8d843914d4defc0213bcdd104bbc0de7471fc22f Mon Sep 17 00:00:00 2001 From: chenfeiCF Date: Fri, 25 Mar 2016 17:27:08 +0800 Subject: [PATCH] * finish task #2543. * adjust method name createGroupLink to createGroupManageMemberLink. --- module/dept/model.php | 57 +++++++++++++++++----- module/group/control.php | 4 +- module/project/control.php | 18 +++---- module/project/view/managemembers.html.php | 34 ++++++++----- 4 files changed, 78 insertions(+), 35 deletions(-) diff --git a/module/dept/model.php b/module/dept/model.php index 15a564dc12..d746f82ba7 100644 --- a/module/dept/model.php +++ b/module/dept/model.php @@ -112,20 +112,20 @@ class deptModel extends model /** * Get the treemenu of departments. - * - * @param int $rootDeptID - * @param string $userFunc - * @param int $groupID + * + * @param int $rootDeptID + * @param string $userFunc + * @param array|int $param * @access public * @return string */ - public function getTreeMenu($rootDeptID = 0, $userFunc, $groupID = 0) + public function getTreeMenu($rootDeptID = 0, $userFunc, $param = 0) { $deptMenu = array(); $stmt = $this->dbh->query($this->buildMenuQuery($rootDeptID)); while($dept = $stmt->fetch()) { - $linkHtml = call_user_func($userFunc, $dept, $groupID); + $linkHtml = call_user_func($userFunc, $dept, $param); if(isset($deptMenu[$dept->id]) and !empty($deptMenu[$dept->id])) { @@ -204,18 +204,33 @@ class deptModel extends model } /** - * Create the group Link. + * Create the group manage members link. * * @param int $dept * @param int $groupID * @access public * @return string */ - public function createGroupLink($dept, $groupID) + public function createGroupManageMemberLink($dept, $groupID) { return html::a(helper::createLink('group', 'managemember', "groupID=$groupID&deptID={$dept->id}"), $dept->name, '_self', "id='dept{$dept->id}'"); } + /** + * Create project manage members link. + * + * @param int $dept + * @param array $params + * @access public + * @return void + */ + public function createPrjManageMemberLink($dept, $params) + { + $projectID = $params['projectID']; + $team2Import = $params['team2Import']; + return html::a(helper::createLink('project', 'managemembers', "projectID=$projectID&team2Import=$team2Import&deptID={$dept->id}"), $dept->name, '_self', "id='dept{$dept->id}'"); + } + /** * Get sons of a department. * @@ -338,16 +353,34 @@ class deptModel extends model * Get user pairs of a department. * * @param int $deptID + * @param string $params * @access public * @return array */ - public function getDeptUserPairs($deptID = 0) + public function getDeptUserPairs($deptID = 0, $params = '') { - return $this->dao->select('account, realname')->from(TABLE_USER) + $fields = 'account, realname'; + if(strpos($params, 'devfirst')!== false) $fields .= ", INSTR(',td,pm,qd,qa,dev,', role) AS roleOrder"; + $orderBy = strpos($params, 'first') !== false ? 'roleOrder DESC, account' : 'account'; + + $users = $this->dao->select($fields)->from(TABLE_USER) ->where('deleted')->eq(0) ->beginIF($deptID)->andWhere('dept')->eq((int)$deptID)->fi() - ->orderBy('account') - ->fetchPairs(); + ->orderBy($orderBy) + ->fetchAll('account'); + + /* Cycle the user records to append the first letter of his account. */ + foreach($users as $account => $user) + { + $firstLetter = ucfirst(substr($account, 0, 1)) . ':'; + if(strpos($params, 'noletter') !== false) $firstLetter = ''; + $users[$account] = $firstLetter . $user->realname; + } + + /* Append empty users. */ + if(strpos($params, 'noempty') === false) $users[''] = ''; + + return $users; } /** diff --git a/module/group/control.php b/module/group/control.php index e8f6e3c77b..ae4a0f1ae4 100644 --- a/module/group/control.php +++ b/module/group/control.php @@ -235,7 +235,7 @@ class group extends control } $group = $this->group->getById($groupID); $groupUsers = $this->group->getUserPairs($groupID); - $allUsers = $this->loadModel('dept')->getDeptUserPairs($deptID); + $allUsers = $this->loadModel('dept')->getDeptUserPairs($deptID, 'noempty, noletter'); $otherUsers = array_diff_assoc($allUsers, $groupUsers); $title = $this->lang->company->common . $this->lang->colon . $group->name . $this->lang->colon . $this->lang->group->manageMember; @@ -245,7 +245,7 @@ class group extends control $this->view->title = $title; $this->view->position = $position; $this->view->group = $group; - $this->view->deptTree = $this->loadModel('dept')->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createGroupLink'), $groupID); + $this->view->deptTree = $this->loadModel('dept')->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createGroupManageMemberLink'), $groupID); $this->view->groupUsers = $groupUsers; $this->view->otherUsers = $otherUsers; diff --git a/module/project/control.php b/module/project/control.php index 75dfd0ee34..e2f881ec57 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -1367,7 +1367,7 @@ class project extends control * @access public * @return void */ - public function manageMembers($projectID = 0, $team2Import = 0) + public function manageMembers($projectID = 0, $team2Import = 0, $deptID = 0) { if(!empty($_POST)) { @@ -1375,22 +1375,20 @@ class project extends control $this->locate($this->createLink('project', 'team', "projectID=$projectID")); exit; } + + /* Load model. */ $this->loadModel('user'); + $this->loadModel('dept'); $project = $this->project->getById($projectID); - $users = $this->user->getPairs('noclosed, nodeleted, devfirst'); - $roles = $this->user->getUserRoles(array_keys($users)); + $allUsers = $this->user->getPairs('noclosed, nodeleted, devfirst'); + $roles = $this->user->getUserRoles(array_keys($allUsers)); $currentMembers = $this->project->getTeamMembers($projectID); $members2Import = $this->project->getMembers2Import($team2Import, array_keys($currentMembers)); + $users = $this->dept->getDeptUserPairs($deptID, 'devfirst'); $teams2Import = $this->project->getTeams2Import($this->app->user->account, $projectID); $teams2Import = array($this->lang->project->copyTeam) + $teams2Import; - /* The deleted members. */ - foreach($currentMembers as $account => $member) - { - if(!isset($users[$member->account])) $member->account .= $this->lang->user->deleted; - } - /* Set menu. */ $this->project->setMenu($this->projects, $project->id); @@ -1402,7 +1400,9 @@ class project extends control $this->view->position = $position; $this->view->project = $project; $this->view->users = $users; + $this->view->allUsers = $allUsers; $this->view->roles = $roles; + $this->view->deptTree = $this->dept->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createPrjManageMemberLink'), array('projectID' => $projectID, 'team2Import' => $team2Import)); $this->view->currentMembers = $currentMembers; $this->view->members2Import = $members2Import; $this->view->teams2Import = $teams2Import; diff --git a/module/project/view/managemembers.html.php b/module/project/view/managemembers.html.php index 457a81e453..34135f751f 100644 --- a/module/project/view/managemembers.html.php +++ b/module/project/view/managemembers.html.php @@ -13,17 +13,25 @@ id);?> -
-
-
- icons['team']);?> - project->manageMembers;?> - -
-
- +
+
+ icons['team']);?> + project->manageMembers;?> + +
+
+ +
+
+
+
+
+
icons['company']);?> dept->common;?>
+
+
+
@@ -38,10 +46,10 @@ - account])) continue; $realname = substr($users[$member->account], 2);?> + account])) continue;?> account]);?> - + - +
@@ -57,7 +65,7 @@
account, "class='select-2 chosen' onchange='setRole(this.value, $i)'");?>account, "class='select-2 chosen' onchange='setRole(this.value, $i)'");?> @@ -93,6 +101,8 @@
+
+