From 6acb8d7b80e2e269e25799455f18cf3ef1881bb2 Mon Sep 17 00:00:00 2001 From: hufangzhou Date: Thu, 5 Sep 2024 15:18:14 +0800 Subject: [PATCH] * [bug#54933,done,0.8h] Hints are given only when the removed members are also in the execution team. --- module/project/control.php | 35 +++++++++++++++--------- module/project/js/managemembers.ui.js | 2 +- module/project/ui/managemembers.html.php | 1 + 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index 5ddf1b7758..da7e06e21e 100755 --- a/module/project/control.php +++ b/module/project/control.php @@ -1148,23 +1148,32 @@ class project extends control return $this->send(array('message' => $this->lang->saveSuccess, 'result' => 'success', 'load' => $this->createLink('project', 'team', "projectID=$projectID"))); } - $users = $this->user->getPairs('noclosed|nodeleted|devfirst'); - $roles = $this->user->getUserRoles(array_keys($users)); - $deptUsers = $dept === '' ? array() : $this->dept->getDeptUserPairs((int)$dept); + $users = $this->user->getPairs('noclosed|nodeleted|devfirst'); + $roles = $this->user->getUserRoles(array_keys($users)); + $deptUsers = $dept === '' ? array() : $this->dept->getDeptUserPairs((int)$dept); + $executions = $this->project->getExecutionList(array($projectID)); + $executionTeams = $this->execution->getMembersByIdList(array_keys($executions)); + + $executionMembers = array(); + foreach($executionTeams as $executionID => $executionTeam) + { + $executionMembers += array_keys($executionTeam); + } $currentMembers = $this->project->getTeamMembers($projectID); $members2Import = $this->project->getMembers2Import($copyProjectID, array_keys($currentMembers)); - $this->view->title = $this->lang->project->manageMembers . $this->lang->hyphen . $project->name; - $this->view->project = $project; - $this->view->users = $users; - $this->view->roles = $roles; - $this->view->dept = $dept; - $this->view->depts = $this->dept->getOptionMenu(); - $this->view->teams2Import = $this->loadModel('personnel')->getCopiedObjects($projectID, 'project', true); - $this->view->currentMembers = $currentMembers; - $this->view->copyProjectID = $copyProjectID; - $this->view->teamMembers = $this->projectZen->buildMembers($currentMembers, $members2Import, $deptUsers, $project->days); + $this->view->title = $this->lang->project->manageMembers . $this->lang->hyphen . $project->name; + $this->view->project = $project; + $this->view->users = $users; + $this->view->roles = $roles; + $this->view->dept = $dept; + $this->view->depts = $this->dept->getOptionMenu(); + $this->view->teams2Import = $this->loadModel('personnel')->getCopiedObjects($projectID, 'project', true); + $this->view->currentMembers = $currentMembers; + $this->view->copyProjectID = $copyProjectID; + $this->view->teamMembers = $this->projectZen->buildMembers($currentMembers, $members2Import, $deptUsers, $project->days); + $this->view->executionMembers = $executionMembers; $this->display(); } diff --git a/module/project/js/managemembers.ui.js b/module/project/js/managemembers.ui.js index b9504ee6a9..043786e2f6 100644 --- a/module/project/js/managemembers.ui.js +++ b/module/project/js/managemembers.ui.js @@ -116,7 +116,7 @@ window.changeProjectMembers = function() oldAccountList.forEach(function(account) { - if(accountList.indexOf(account.toString()) < 0) + if(accountList.indexOf(account.toString()) < 0 && executionMembers.indexOf(account.toString()) !== -1) { isDeleted = true; return false; diff --git a/module/project/ui/managemembers.html.php b/module/project/ui/managemembers.html.php index a3363691f9..b8fd1c195a 100644 --- a/module/project/ui/managemembers.html.php +++ b/module/project/ui/managemembers.html.php @@ -16,6 +16,7 @@ jsVar('projectID', $project->id); jsVar('copyProjectID', $copyProjectID); jsVar('oldAccountList', array_keys($currentMembers)); jsVar('unlinkExecutionMembers', $lang->project->unlinkExecutionMembers); +jsVar('executionMembers', $executionMembers); /* zin: Define the set::module('team') feature bar on main menu. */ $copyTeamBox = '';