* when manage a team, can select one project to copy.
* adjust the edit page.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -161,6 +161,7 @@ $lang->project->howToUpdateBurn = "<a href='%s' class='helplink'><i>How?</i></a>
|
||||
$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]?';
|
||||
|
||||
@@ -161,6 +161,7 @@ $lang->project->howToUpdateBurn = "<a href='%s' class='helplink'><i>如何更新
|
||||
$lang->project->whyNoStories = "看起来没有需求可以关联。请检查下项目关联的产品中有没有需求,而且要确保它们已经审核通过。";
|
||||
$lang->project->doneProjects = '已结束';
|
||||
$lang->project->unDoneProjects = '未结束';
|
||||
$lang->project->copyTeam = '复制团队';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->project->confirmDelete = '您确定删除项目[%s]吗?';
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,19 +46,19 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->project->PO;?></th>
|
||||
<td><?php echo html::select('PO', $users, $project->PO, 'class=text-3');?></td>
|
||||
<td><?php echo html::select('PO', $poUsers, $project->PO, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->project->PM;?></th>
|
||||
<td><?php echo html::select('PM', $users, $project->PM, 'class=text-3');?></td>
|
||||
<td><?php echo html::select('PM', $pmUsers, $project->PM, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->project->QD;?></th>
|
||||
<td><?php echo html::select('QD', $users, $project->QD, 'class=text-3');?></td>
|
||||
<td><?php echo html::select('QD', $qdUsers, $project->QD, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->project->RD;?></th>
|
||||
<td><?php echo html::select('RD', $users, $project->RD, 'class=text-3');?></td>
|
||||
<td><?php echo html::select('RD', $rdUsers, $project->RD, 'class=text-3');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->project->manageProducts;?></th>
|
||||
|
||||
@@ -11,16 +11,27 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<script>
|
||||
projectID = <?php echo $project->id;?>;
|
||||
function importTeam()
|
||||
{
|
||||
location.href = createLink('project', 'manageMembers', 'project=' + projectID + '&teamImport=' + $('#teams2Import').val());
|
||||
}
|
||||
</script>
|
||||
|
||||
<form method='post'>
|
||||
<table align='center' class='table-4 a-center'>
|
||||
<caption><?php echo $lang->project->manageMembers;?></caption>
|
||||
<caption>
|
||||
<div class='f-left'><?php echo $lang->project->manageMembers;?></div>
|
||||
<div class='f-right'><?php echo html::select('teams2Import', $teams2Import, $team2Import, 'onchange=importTeam()');?></div>
|
||||
</caption>
|
||||
<tr>
|
||||
<th><?php echo $lang->team->account;?></th>
|
||||
<th><?php echo $lang->team->role;?></th>
|
||||
<th><?php echo $lang->team->days;?></th>
|
||||
<th><?php echo $lang->team->hours;?></th>
|
||||
</tr>
|
||||
<?php foreach($members as $key => $member):?>
|
||||
<?php foreach($currentMembers as $key => $member):?>
|
||||
<?php $realname = substr($users[$member->account], 2);?>
|
||||
<?php unset($users[$member->account]);?>
|
||||
<tr>
|
||||
@@ -34,6 +45,21 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
|
||||
<?php if(!$currentMembers) $key = 0;?>
|
||||
<?php foreach($members2Import as $member2Import):?>
|
||||
<?php $key ++;?>
|
||||
<tr>
|
||||
<td><?php echo html::select('accounts[]', $users, $member2Import->account, 'class=select-2');?></td>
|
||||
<td><input type='text' name='roles[]' id='role<?php echo $key;?>' class='text-2' value='<?php echo $member2Import->role;?>' /></td>
|
||||
<td><input type='text' name='days[]' id='days<?php echo $key;?>' class='text-2' value='<?php echo $project->days?>'/></td>
|
||||
<td>
|
||||
<input type='text' name='hours[]' id='hours<?php echo $key;?>' class='text-2' value='<?php echo $member2Import->hours;?>' />
|
||||
<input type='hidden' name='modes[]' value='create' />
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
|
||||
<?php
|
||||
$count = count($users) - 1;
|
||||
if($count > PROJECTMODEL::LINK_MEMBERS_ONE_TIME) $count = PROJECTMODEL::LINK_MEMBERS_ONE_TIME;
|
||||
|
||||
Reference in New Issue
Block a user