diff --git a/db/update18.0.sql b/db/update18.0.sql
new file mode 100644
index 0000000000..61c3416fb5
--- /dev/null
+++ b/db/update18.0.sql
@@ -0,0 +1 @@
+ALTER TABLE `zt_project` ADD `division` enum('0','1') COLLATE 'utf8_general_ci' NOT NULL DEFAULT '1';
diff --git a/module/programplan/model.php b/module/programplan/model.php
index a3d20ecfad..da8c42342c 100755
--- a/module/programplan/model.php
+++ b/module/programplan/model.php
@@ -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. */
diff --git a/module/programplan/view/create.html.php b/module/programplan/view/create.html.php
index 9779a0db69..783ff44094 100644
--- a/module/programplan/view/create.html.php
+++ b/module/programplan/view/create.html.php
@@ -22,7 +22,7 @@
echo "{$title}";
?>
-
+ division):?>
diff --git a/module/project/control.php b/module/project/control.php
index cd216bd8cf..f2a9437eee 100644
--- a/module/project/control.php
+++ b/module/project/control.php
@@ -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']) : '');
diff --git a/module/project/js/create.js b/module/project/js/create.js
index fe2a8db61c..4ae6217d3e 100644
--- a/module/project/js/create.js
+++ b/module/project/js/create.js
@@ -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();
diff --git a/module/project/lang/de.php b/module/project/lang/de.php
index b00209d457..b59dea8fb2 100644
--- a/module/project/lang/de.php
+++ b/module/project/lang/de.php
@@ -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';
diff --git a/module/project/lang/en.php b/module/project/lang/en.php
index 544f00918f..e2e896ec13 100644
--- a/module/project/lang/en.php
+++ b/module/project/lang/en.php
@@ -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';
diff --git a/module/project/lang/fr.php b/module/project/lang/fr.php
index 7168356f4d..0f5591b24d 100644
--- a/module/project/lang/fr.php
+++ b/module/project/lang/fr.php
@@ -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';
diff --git a/module/project/lang/vi.php b/module/project/lang/vi.php
index 7c3bd62dcd..8b3fec9d3a 100644
--- a/module/project/lang/vi.php
+++ b/module/project/lang/vi.php
@@ -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';
diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php
index 1d0e642dd1..5965287bd9 100644
--- a/module/project/lang/zh-cn.php
+++ b/module/project/lang/zh-cn.php
@@ -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个)';
diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php
index d994c4f549..5c9a32a140 100755
--- a/module/project/view/create.html.php
+++ b/module/project/view/create.html.php
@@ -175,6 +175,10 @@
+