* Code for task #73233.

This commit is contained in:
Yagami
2022-10-24 15:43:36 +08:00
parent d4541ebf3d
commit c232ec7c7d
13 changed files with 63 additions and 15 deletions
+1
View File
@@ -0,0 +1 @@
ALTER TABLE `zt_project` ADD `division` enum('0','1') COLLATE 'utf8_general_ci' NOT NULL DEFAULT '1';
+5 -3
View File
@@ -727,7 +727,8 @@ class programplanModel extends model
$datas[] = $plan;
}
$project = $this->loadModel('project')->getByID($projectID);
$project = $this->loadModel('project')->getByID($projectID);
$productList = $this->loadModel('product')->getProductPairsByProject($projectID);
$totalPercent = 0;
$totalDevType = 0;
@@ -928,8 +929,9 @@ class programplanModel extends model
$this->setTreePath($stageID);
if($data->acl != 'open') $this->user->updateUserView($stageID, 'sprint');
$this->post->set('products', array(0 => $productID));
$linkProducts = $project->division ? array(0 => $productID) : array_keys($productList);
$this->post->set('products', $linkProducts);
$this->execution->updateProducts($stageID);
/* Record version change information. */
+1 -1
View File
@@ -22,7 +22,7 @@
echo "<span class='text'>{$title}</span>";
?>
</span>
<?php if($productList):?>
<?php if($productList and $project->division):?>
<div class='btn-group'>
<?php $viewName = $productID != 0 ? zget($productList,$productID) : current($productList);?>
<a href='javascript:;' class='btn btn-link btn-limit' data-toggle='dropdown'><span class='text' title='<?php echo $viewName;?>'><?php echo $viewName;?></span> <span class='caret'></span></a>
+9
View File
@@ -2042,6 +2042,7 @@ class project extends control
{
$this->loadModel('product');
$this->loadModel('program');
$this->loadModel('execution');
if(!empty($_POST))
{
@@ -2058,6 +2059,14 @@ class project extends control
$oldProducts = array_keys($oldProducts);
$newProducts = $this->product->getProducts($projectID);
$newProducts = array_keys($newProducts);
if(!$project->division and $newProducts)
{
$stages = $this->execution->getPairs($projectID);
$this->post->set('products', $newProducts);
foreach($stages as $stageID => $name) $this->execution->updateProducts($stageID);
}
$diffProducts = array_merge(array_diff($oldProducts, $newProducts), array_diff($newProducts, $oldProducts));
if($diffProducts) $this->loadModel('action')->create('project', $projectID, 'Managed', '', !empty($_POST['products']) ? join(',', $_POST['products']) : '');
+4
View File
@@ -253,9 +253,11 @@ function setAclList(programID)
*/
function loadBranches(product)
{
var chosenProducts = 0;
$("#productsBox select[name^='products']").each(function()
{
var $product = $(product);
if($(this).val() > 0) chosenProducts ++;
if($product.val() != 0 && $product.val() == $(this).val() && $product.attr('id') != $(this).attr('id') && !multiBranchProducts[$product.val()])
{
bootbox.alert(errorSameProducts);
@@ -265,6 +267,8 @@ function loadBranches(product)
}
});
chosenProducts > 1 ? $('.division').removeClass('hide') : $('.division').addClass('hide');
if($('#productsBox .row .input-group:last select:first').val() != 0)
{
var length = $('#productsBox .row .input-group').size();
+4
View File
@@ -127,6 +127,7 @@ $lang->project->realBeganAB = 'Actual Begin';
$lang->project->realEndAB = 'Actual End';
$lang->project->realBegan = 'Actual Began';
$lang->project->realEnd = 'Actual End';
$lang->project->division = 'Create Stages by Product';
$lang->project->bygrid = 'Kanban';
$lang->project->bylist = 'List';
$lang->project->bycard = 'Card';
@@ -177,6 +178,9 @@ $lang->project->typeList = array();
$lang->project->typeList['my'] = 'Projects Ownedbyme';
$lang->project->typeList['other'] = 'Other Projects';
$lang->project->divisionList['0'] = 'Disable';
$lang->project->divisionList['1'] = 'Enable';
$lang->project->waitProjects = 'Waiting Projects';
$lang->project->doingProjects = 'Ongoing Projects';
$lang->project->doingExecutions = 'Ongoing Executions';
+4
View File
@@ -127,6 +127,7 @@ $lang->project->realBeganAB = 'Actual Begin';
$lang->project->realEndAB = 'Actual End';
$lang->project->realBegan = 'Actual Begin';
$lang->project->realEnd = 'Actual End';
$lang->project->division = 'Create Stages by Product';
$lang->project->bygrid = 'Kanban';
$lang->project->bylist = 'List';
$lang->project->bycard = 'Card';
@@ -177,6 +178,9 @@ $lang->project->typeList = array();
$lang->project->typeList['my'] = 'Projects Ownedbyme';
$lang->project->typeList['other'] = 'Other Projects';
$lang->project->divisionList['0'] = 'Disable';
$lang->project->divisionList['1'] = 'Enable';
$lang->project->waitProjects = 'Waiting Projects';
$lang->project->doingProjects = 'Ongoing Projects';
$lang->project->doingExecutions = 'Ongoing Executions';
+4
View File
@@ -127,6 +127,7 @@ $lang->project->realBeganAB = 'Actual Begin';
$lang->project->realEndAB = 'Actual End';
$lang->project->realBegan = 'Actual Began';
$lang->project->realEnd = 'Actual End';
$lang->project->division = 'Create Stages by Product';
$lang->project->bygrid = 'Kanban';
$lang->project->bylist = 'List';
$lang->project->bycard = 'Card';
@@ -177,6 +178,9 @@ $lang->project->typeList = array();
$lang->project->typeList['my'] = 'Projects Ownedbyme';
$lang->project->typeList['other'] = 'Other Projects';
$lang->project->divisionList['0'] = 'Disable';
$lang->project->divisionList['1'] = 'Enable';
$lang->project->waitProjects = 'Waiting Projects';
$lang->project->doingProjects = 'Ongoing Projects';
$lang->project->doingExecutions = 'Ongoing Executions';
+1
View File
@@ -75,6 +75,7 @@ $lang->project->dateRange = 'Duration';
$lang->project->to = ' to ';
$lang->project->realEnd = 'Actual End';
$lang->project->realBegan = 'Actual Began';
$lang->project->division = 'Create Stages by Product';
$lang->project->bygrid = 'Kanban';
$lang->project->bylist = 'List';
$lang->project->bycard = 'Card';
+4
View File
@@ -127,6 +127,7 @@ $lang->project->realBeganAB = '实际开始';
$lang->project->realEndAB = '实际完成';
$lang->project->realBegan = '实际开始日期';
$lang->project->realEnd = '实际完成日期';
$lang->project->division = '按产品创建阶段';
$lang->project->bygrid = '看板';
$lang->project->bylist = '列表';
$lang->project->bycard = '卡片';
@@ -177,6 +178,9 @@ $lang->project->typeList = array();
$lang->project->typeList['my'] = '我负责的项目';
$lang->project->typeList['other'] = '其他项目';
$lang->project->divisionList['0'] = '关闭';
$lang->project->divisionList['1'] = '开启';
$lang->project->waitProjects = '未开始的项目';
$lang->project->doingProjects = '进行中的项目';
$lang->project->doingExecutions = '进行中的执行(最近1个)';
+4
View File
@@ -175,6 +175,10 @@
</div>
</td>
</tr>
<tr class='hide division'>
<th><?php echo $lang->project->division;?></th>
<td colspan='3'><?php echo html::radio('division', $lang->project->divisionList, '0');?></td>
</tr>
<?php if($model == 'kanban'):?>
<tr>
<th><?php echo $lang->execution->team;?></th>
+6
View File
@@ -175,6 +175,12 @@
</div>
</td>
</tr>
<?php if(!$project->division):?>
<tr>
<th><?php echo $lang->project->division;?></th>
<td colspan='3'><?php echo html::radio('division', $lang->project->divisionList, $project->division);?></td>
</tr>
<?php endif;?>
<?php if($project->model == 'kanban'):?>
<tr>
<th><?php echo $lang->execution->team;?></th>
+16 -11
View File
@@ -123,17 +123,22 @@ class stageModel extends model
*/
public function getStages($orderBy = 'id_desc', $projectID = 0)
{
$stages = $this->dao->select('id,name,type,percent,openedBy as createdBy,begin as createdDate,lastEditedBy as editedBy,end as editedDate,deleted')
->from(TABLE_EXECUTION)
->where('type')->in('sprint,stage,kanban')
->andWhere('deleted')->eq('0')
->andWhere('vision')->eq($this->config->vision)
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi()
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
->orderBy($orderBy)
->fetchAll('id');
$stages = !empty($stages) ? $stages : $this->dao->select('*')->from(TABLE_STAGE)->where('deleted')->eq(0)->orderBy($orderBy)->fetchAll('id');
return $stages;
if($projectID)
{
return $this->dao->select('id,name,type,percent,openedBy as createdBy,begin as createdDate,lastEditedBy as editedBy,end as editedDate,deleted')
->from(TABLE_EXECUTION)
->where('type')->in('sprint,stage,kanban')
->andWhere('deleted')->eq('0')
->andWhere('vision')->eq($this->config->vision)
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi()
->andWhere('project')->eq($projectID)
->orderBy($orderBy)
->fetchAll('id');
}
else
{
return $this->dao->select('*')->from(TABLE_STAGE)->where('deleted')->eq(0)->orderBy($orderBy)->fetchAll('id');
}
}
/**