diff --git a/module/project/control.php b/module/project/control.php index 680aa085db..5311ba7e38 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -880,7 +880,10 @@ class project extends control $this->view->position = $position; $this->view->projects = $projects; $this->view->project = $project; - $this->view->users = $this->loadModel('user')->getPairs('noclosed,nodeleted'); + $this->view->poUsers = $this->loadModel('user')->getPairs('noclosed,nodeleted,pofirst'); + $this->view->pmUsers = $this->user->getPairs('noclosed,nodeleted,pmfirst'); + $this->view->qdUsers = $this->user->getPairs('noclosed,nodeleted,qdfirst'); + $this->view->rdUsers = $this->user->getPairs('noclosed,nodeleted,devfirst'); $this->view->groups = $this->loadModel('group')->getPairs(); $this->view->allProducts = $this->loadModel('product')->getPairs(); $this->view->linkedProducts = $linkedProducts; @@ -1097,10 +1100,11 @@ class project extends control * Manage members of the project. * * @param int $projectID + * @param int $team2Import the team to import. * @access public * @return void */ - public function manageMembers($projectID = 0) + public function manageMembers($projectID = 0, $team2Import = 0) { if(!empty($_POST)) { @@ -1110,17 +1114,18 @@ class project extends control } $this->loadModel('user'); - $project = $this->project->getById($projectID); - $users = $this->user->getPairs('noclosed, nodeleted'); - $users = array('' => '') + $users; - $members = $this->project->getTeamMembers($projectID); - $teams = $this->project->getTeams2Import($this->app->user->account, $projectID); - a($teams); + $project = $this->project->getById($projectID); + $users = $this->user->getPairs('noclosed, nodeleted, devfirst'); + $users = array('' => '') + $users; + $currentMembers = $this->project->getTeamMembers($projectID); + $members2Import = $this->project->getMembers2Import($team2Import, array_keys($currentMembers)); + $teams2Import = $this->project->getTeams2Import($this->app->user->account, $projectID); + $teams2Import = array($this->lang->project->copyTeam) + $teams2Import; /* The deleted members. */ - foreach($members as $account => $member) + foreach($currentMembers as $account => $member) { - if(!@$users[$member->account]) $member->account .= $this->lang->user->deleted; + if(!isset($users[$member->account])) $member->account .= $this->lang->user->deleted; } /* Set menu. */ @@ -1132,9 +1137,12 @@ class project extends control $this->view->header = $header; $this->view->position = $position; - $this->view->project = $project; - $this->view->users = $users; - $this->view->members = $members; + $this->view->project = $project; + $this->view->users = $users; + $this->view->currentMembers = $currentMembers; + $this->view->members2Import = $members2Import; + $this->view->teams2Import = $teams2Import; + $this->view->team2Import = $team2Import; $this->display(); } diff --git a/module/project/lang/en.php b/module/project/lang/en.php index 022fd38e40..2721df203d 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -161,6 +161,7 @@ $lang->project->howToUpdateBurn = "How? $lang->project->whyNoStories = "There no active stories to added to this project. Please check the linked product."; $lang->project->doneProjects = 'Done'; $lang->project->unDoneProjects = 'Undone'; +$lang->project->copyTeam = 'Copy a team'; /* Confirm. */ $lang->project->confirmDelete = 'Are you sure to delete project [%s]?'; diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index 2dc7aacac4..bd61914429 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -161,6 +161,7 @@ $lang->project->howToUpdateBurn = "如何更新 $lang->project->whyNoStories = "看起来没有需求可以关联。请检查下项目关联的产品中有没有需求,而且要确保它们已经审核通过。"; $lang->project->doneProjects = '已结束'; $lang->project->unDoneProjects = '未结束'; +$lang->project->copyTeam = '复制团队'; /* 交互提示。*/ $lang->project->confirmDelete = '您确定删除项目[%s]吗?'; diff --git a/module/project/model.php b/module/project/model.php index 12dd0f18e6..5644fcdd9e 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -934,16 +934,41 @@ class projectModel extends model return array('' => '') + $users; } + /** + * Get teams which can be imported. + * + * @param string $account + * @param int $currentProject + * @access public + * @return array + */ public function getTeams2Import($account, $currentProject) { - return $this->dao->select('t1.project, t2.name as projectName, t2.team as teamName') + return $this->dao->select('t1.project, t2.name as projectName') ->from(TABLE_TEAM)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') ->where('t1.account')->eq($account) ->andWhere('t1.project')->ne($currentProject) ->groupBy('t1.project') ->orderBy('t1.project DESC') - ->fetchAll('project'); + ->fetchPairs(); + } + + /** + * Get members of a project who can be imported. + * + * @param int $project + * @param array $currentMembers + * @access public + * @return array + */ + public function getMembers2Import($project, $currentMembers) + { + return $this->dao->select('account, role, hours') + ->from(TABLE_TEAM) + ->where('project')->eq($project) + ->andWhere('account')->notIN($currentMembers) + ->fetchAll('account'); } /** diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 376e755c4a..7baee5600e 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -46,19 +46,19 @@ project->PO;?> - PO, 'class=text-3');?> + PO, 'class=text-3');?> project->PM;?> - PM, 'class=text-3');?> + PM, 'class=text-3');?> project->QD;?> - QD, 'class=text-3');?> + QD, 'class=text-3');?> project->RD;?> - RD, 'class=text-3');?> + RD, 'class=text-3');?> project->manageProducts;?> diff --git a/module/project/view/managemembers.html.php b/module/project/view/managemembers.html.php index 032d281df4..f8ed3fc6de 100644 --- a/module/project/view/managemembers.html.php +++ b/module/project/view/managemembers.html.php @@ -11,16 +11,27 @@ */ ?> + + - project->manageMembers;?> + + project->manageMembers;?> + + team->account;?> team->role;?> team->days;?> team->hours;?> - $member):?> + $member):?> account], 2);?> account]);?> @@ -34,6 +45,21 @@ + + + + + + account, 'class=select-2');?> + + + + + + + + + PROJECTMODEL::LINK_MEMBERS_ONE_TIME) $count = PROJECTMODEL::LINK_MEMBERS_ONE_TIME;