* Finish task 18883,add project team.

This commit is contained in:
liumengyi
2022-01-24 16:54:30 +08:00
parent 6bcb09a6d9
commit ecc9e22867
5 changed files with 92 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
ALTER TABLE `zt_kanbanspace` ADD `type` varchar(50) NOT NULL AFTER `name`;
UPDATE `zt_kanbanspace` SET `type` = 'cooperation', `whitelist` = '';
UPDATE `zt_kanbanspace` SET `type` = 'cooperation', `whitelist` = '' WHERE `type` = 'cooperation';
ALTER TABLE `zt_kanban` ADD `object` varchar(255) NOT NULL AFTER `displayCards`;
ALTER TABLE `zt_kanban` ADD `performable` enum ('0', '1') NOT NULL DEFAULT '0' AFTER `archived`;
@@ -9,4 +9,4 @@ ALTER TABLE `zt_kanbancard` ADD `fromID` mediumint(8) unsigned NOT NULL AFTER `g
ALTER TABLE `zt_kanbancard` ADD `fromType` varchar(30) NOT NULL AFTER `fromID`;
ALTER TABLE `zt_job` ADD `sonarqubeServer` mediumint(8) unsigned NOT NULL AFTER `triggerType`;
ALTER TABLE `zt_job` ADD `projectKey` varchar(255) NOT NULL AFTER `sonarqubeServer`;
ALTER TABLE `zt_job` ADD `projectKey` varchar(255) NOT NULL AFTER `sonarqubeServer`;

View File

@@ -629,6 +629,7 @@ class project extends control
$this->view->budgetUnitList = $this->project->getBudgetUnitList();
$this->view->model = $project->model;
$this->view->disableModel = (isset($canChangeModel) and $canChangeModel == true) ? '' : 'disabled';
$this->view->teamMembers = $this->user->getTeamMemberPairs($projectID, 'project');
$this->display();
}

View File

@@ -771,7 +771,7 @@ class projectModel extends model
->add('type', 'project')
->join('whitelist', ',')
->stripTags($this->config->project->editor->create['id'], $this->config->allowedTags)
->remove('products,branch,plans,delta,newProduct,productName,future,contactListMenu')
->remove('products,branch,plans,delta,newProduct,productName,future,contactListMenu,teamMembers')
->get();
$linkedProductsCount = 0;
@@ -859,14 +859,47 @@ class projectModel extends model
/* Add the creator to team. */
$this->app->loadLang('user');
$member = new stdclass();
$member->root = $projectID;
$member->account = $this->app->user->account;
$member->role = zget($this->lang->user->roleList, $this->app->user->role, '');
$member->join = helper::today();
$member->type = 'project';
$member->hours = $this->config->execution->defaultWorkhours;
$this->dao->insert(TABLE_TEAM)->data($member)->exec();
/* Set team of project. */
$creatorExists = false;
$teamMembers = array();
$members = isset($_POST['teamMembers']) ? $_POST['teamMembers'] : array();
array_push($members, $project->PM);
$members = array_unique($members);
$roles = $this->loadModel('user')->getUserRoles(array_values($members));
foreach($members as $account)
{
if(empty($account)) continue;
$member = new stdClass();
$member->root = $projectID;
$member->type = 'project';
$member->account = $account;
$member->role = zget($roles, $account, '');
$member->join = helper::now();
$member->days = zget($project, 'days', 0);
$member->hours = $this->config->execution->defaultWorkhours;
$this->dao->insert(TABLE_TEAM)->data($member)->exec();
if($member->account == $this->app->user->account) $creatorExists = true;
$teamMembers[$account] = $member;
}
if(!$creatorExists)
{
$member = new stdClass();
$member->root = $projectID;
$member->type = 'project';
$member->account = $this->app->user->account;
$member->role = zget($this->lang->user->roleList, $this->app->user->role, '');
$member->join = helper::now();
$member->days = zget($project, 'days', 0);
$member->hours = $this->config->execution->defaultWorkhours;
$this->dao->insert(TABLE_TEAM)->data($member)->exec();
$teamMembers[$member->account] = $member;
}
if($this->config->systemMode == 'new') $this->loadModel('execution')->addProjectMembers($projectID, $teamMembers);
$whitelist = explode(',', $project->whitelist);
$this->loadModel('personnel')->updateWhitelist($whitelist, 'project', $projectID);
@@ -999,7 +1032,7 @@ class projectModel extends model
->setIF($this->post->budget != 0, 'budget', round($this->post->budget, 2))
->join('whitelist', ',')
->stripTags($this->config->project->editor->edit['id'], $this->config->allowedTags)
->remove('products,branch,plans,delta,future,contactListMenu')
->remove('products,branch,plans,delta,future,contactListMenu,teamMembers')
->get();
if($project->parent)
@@ -1060,6 +1093,40 @@ class projectModel extends model
->where('id')->eq($projectID)
->exec();
/* Get team and language item. */
$this->loadModel('user');
$team = $this->user->getTeamMemberPairs($projectID, 'project');
$members = isset($_POST['teamMembers']) ? $_POST['teamMembers'] : array();
array_push($members, $project->PM);
$members = array_unique($members);
$roles = $this->user->getUserRoles(array_values($members));
$teamMembers = array();
foreach($members as $account)
{
if(empty($account) or isset($team[$account])) continue;
$member = new stdclass();
$member->root = (int)$projectID;
$member->account = $account;
$member->join = helper::today();
$member->role = zget($roles, $account, '');
$member->days = zget($project, 'days', 0);
$member->type = 'project';
$member->hours = $this->config->execution->defaultWorkhours;
$this->dao->replace(TABLE_TEAM)->data($member)->exec();
$teamMembers[$account] = $member;
}
$this->dao->delete()->from(TABLE_TEAM)
->where('root')->eq((int)$projectID)
->andWhere('type')->eq('project')
->andWhere('account')->in(array_keys($team))
->andWhere('account')->notin(array_values($members))
->andWhere('account')->ne($oldProject->openedBy)
->exec();
if(!empty($projectID) and !empty($teamMembers)) $this->loadModel('execution')->addProjectMembers($projectID, $teamMembers);
if(!dao::isError())
{
$this->updateProductProgram($oldProject->parent, $project->parent, $_POST['products']);

View File

@@ -146,6 +146,12 @@
</div>
</td>
</tr>
<?php if($model == 'kanban'):?>
<tr>
<th><?php echo $lang->execution->team;?></th>
<td colspan='3'><?php echo html::select('teamMembers[]', $users, '', "class='form-control chosen' multiple"); ?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->project->desc;?></th>
<td colspan='3'>

View File

@@ -165,6 +165,12 @@
</div>
</td>
</tr>
<?php if($project->model == 'kanban'):?>
<tr>
<th><?php echo $lang->execution->team;?></th>
<td colspan='2'><?php echo html::select('teamMembers[]', $users, array_keys($teamMembers), "class='form-control chosen' multiple"); ?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->project->desc;?></th>
<td colspan='3'>