* Finish task 18883,add project team.
This commit is contained in:
@@ -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`;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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']);
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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'>
|
||||
|
||||
Reference in New Issue
Block a user