* Add select all.
This commit is contained in:
@@ -410,7 +410,7 @@ class upgrade extends control
|
||||
$productlines = $this->dao->select('*')->from(TABLE_MODULE)->where('type')->eq('line')->andWhere('root')->eq(0)->orderBy('id_desc')->fetchAll('id');
|
||||
|
||||
$noMergedProducts = $this->dao->select('*')->from(TABLE_PRODUCT)->where('line')->in(array_keys($productlines))->orderBy('id_desc')->fetchAll('id');
|
||||
if(empty($productlines) || empty($noMergedProducts)) $this->locate($this->createLink('upgrade', 'mergeProgram', 'type=product'));
|
||||
if(empty($productlines) || empty($noMergedProducts)) $this->locate($this->createLink('upgrade', 'mergeProgram', "type=product&programID=0&projectType=$projectType"));
|
||||
|
||||
$noMergedSprints = $this->dao->select('t1.*')->from(TABLE_PROJECT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id=t2.project')
|
||||
@@ -482,7 +482,7 @@ class upgrade extends control
|
||||
/* Add products without sprints. */
|
||||
$noMergedProducts += $this->dao->select('*')->from(TABLE_PRODUCT)->where('program')->eq(0)->fetchAll('id');
|
||||
|
||||
if(empty($noMergedProducts)) $this->locate($this->createLink('upgrade', 'mergeProgram', 'type=sprint'));
|
||||
if(empty($noMergedProducts)) $this->locate($this->createLink('upgrade', 'mergeProgram', "type=sprint&programID=0&projectType=$projectType"));
|
||||
|
||||
|
||||
/* Group project by product. */
|
||||
@@ -506,7 +506,7 @@ class upgrade extends control
|
||||
$projectProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('project')->in(array_keys($noMergedSprints))->fetchGroup('project', 'product');
|
||||
foreach($projectProducts as $sprintID => $products) unset($noMergedSprints[$sprintID]);
|
||||
|
||||
if(empty($noMergedSprints)) $this->locate($this->createLink('upgrade', 'mergeProgram', 'type=moreLink'));
|
||||
if(empty($noMergedSprints)) $this->locate($this->createLink('upgrade', 'mergeProgram', "type=moreLink"));
|
||||
|
||||
$this->view->noMergedSprints = $noMergedSprints;
|
||||
}
|
||||
|
||||
@@ -30,3 +30,4 @@ div.divider {vertical-align: middle;}
|
||||
#source .lineGroup .productList {width: 170px;}
|
||||
#lineList .checkbox-primary {display: inline-block;}
|
||||
.main-row .side-col .check-allLine > label {font-weight: 700}
|
||||
.sprintGroup {margin-left: 6px;}
|
||||
|
||||
@@ -1,14 +1,48 @@
|
||||
$(function()
|
||||
{
|
||||
var checkedProduct = true;
|
||||
var productLine = $('.nav li.active').attr('lineid');
|
||||
$("[id^='products\[" + productLine + "\]']").each(function()
|
||||
if($('[id^=productLines]').length > 0)
|
||||
{
|
||||
if(!$(this).prop('checked')) checkedProduct = false;
|
||||
})
|
||||
$("[id^='productLines\[" + productLine + "\]']").prop('checked', checkedProduct);
|
||||
$('#checkAllProducts').prop('checked', checkedProduct);
|
||||
$('#checkAllProjects').prop('checked', checkedProduct);
|
||||
var checkedProduct = true;
|
||||
var productLine = $('.nav li.active').attr('lineid');
|
||||
$("[id^='products\[" + productLine + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProduct = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
$("[id^='productLines\[" + productLine + "\]']").prop('checked', checkedProduct);
|
||||
$('#checkAllProducts').prop('checked', checkedProduct);
|
||||
$('#checkAllProjects').prop('checked', checkedProduct);
|
||||
}
|
||||
else if($('[id^=products]').length > 0)
|
||||
{
|
||||
var checkedProduct = true;
|
||||
$('[id^=products]').each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProduct = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
$('#checkAllProducts').prop('checked', checkedProduct);
|
||||
$('#checkAllProjects').prop('checked', checkedProduct);
|
||||
}
|
||||
else if($('[id^=sprints]').length > 0)
|
||||
{
|
||||
var checkedProject = true;
|
||||
$('[id^=sprints]').each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProject = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
$('#checkAllProjects').prop('checked', checkedProject);
|
||||
}
|
||||
|
||||
/* Define drag to select relevant parameters. */
|
||||
var options = {
|
||||
@@ -23,31 +57,6 @@ $(function()
|
||||
var checkedProduct = true;
|
||||
var checkedProject = true;
|
||||
|
||||
/* All products selected. */
|
||||
$("[id^='products\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked')) checkedProduct = false;
|
||||
})
|
||||
$('#checkAllProducts').prop('checked', checkedProduct);
|
||||
$("[id^='productLines\[" + lineID + "\]']").prop('checked', checkedProduct);
|
||||
|
||||
/* All projects selected. */
|
||||
$("[id^='sprints\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProject = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var productID = $(this).attr('data-product');
|
||||
if(productID && $('[data-productid=' + productID + ']').length > 0 && !$('[data-productid=' + productID + ']').prop('checked')) $('[data-productid=' + productID + ']').prop('checked', true);
|
||||
}
|
||||
})
|
||||
$('#checkAllProjects').prop('checked', checkedProject);
|
||||
$('#checkAllProducts').prop('checked', checkedProject);
|
||||
$("[id^='productLines\[" + lineID + "\]']").prop('checked', checkedProject);
|
||||
|
||||
/* Select the product line of the current page. */
|
||||
if($('.nav li.active').find('[id^=productLines]').prop('checked'))
|
||||
{
|
||||
@@ -58,6 +67,82 @@ $(function()
|
||||
$("[id^='sprints\[" + lineID + "\]'").prop('checked', true);
|
||||
}
|
||||
|
||||
/* All products selected. */
|
||||
if($('[id^=productLines]').length > 0)
|
||||
{
|
||||
$("[id^='products\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProduct = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$('[data-product=' + $(this).val() +']').prop('checked', true);
|
||||
}
|
||||
})
|
||||
$("[id^='productLines\[" + lineID + "\]']").prop('checked', checkedProduct);
|
||||
}
|
||||
else
|
||||
{
|
||||
$("[id^=products]").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProduct = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$('[data-product=' + $(this).val() +']').prop('checked', true);
|
||||
}
|
||||
})
|
||||
}
|
||||
$('#checkAllProducts').prop('checked', checkedProduct);
|
||||
|
||||
/* All projects selected. */
|
||||
if($('[id^=productLines]').length > 0)
|
||||
{
|
||||
$("[id^='sprints\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProject = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var productID = $(this).attr('data-product');
|
||||
if(productID && $('[data-productid=' + productID + ']').length > 0 && !$('[data-productid=' + productID + ']').prop('checked')) $('[data-productid=' + productID + ']').prop('checked', true);
|
||||
}
|
||||
})
|
||||
}
|
||||
else if($('[id^=products]').length > 0)
|
||||
{
|
||||
$("[id^=sprints]").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProject = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var productID = $(this).attr('data-product');
|
||||
if(productID && $('[data-productid=' + productID + ']').length > 0 && !$('[data-productid=' + productID + ']').prop('checked')) $('[data-productid=' + productID + ']').prop('checked', true);
|
||||
}
|
||||
})
|
||||
}
|
||||
else
|
||||
{
|
||||
$("[id^=sprints]").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProject = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
$('#checkAllProjects').prop('checked', checkedProject);
|
||||
|
||||
/* All product lines selected. */
|
||||
$('[name^=productLines]').each(function()
|
||||
{
|
||||
@@ -413,10 +498,29 @@ $(function()
|
||||
|
||||
var checked = true;
|
||||
var lineID = $(this).attr('data-line');
|
||||
$("[id^='products\[" + lineID + "\]']").each(function()
|
||||
if($('[id^=productLines]').length > 0)
|
||||
{
|
||||
if(!$(this).prop('checked')) checked = false;
|
||||
})
|
||||
$("[id^='products\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checked = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
else if($('[id^=products]').length > 0)
|
||||
{
|
||||
$("[id^=products]").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checked = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$('#checkAllProducts').prop('checked', checked);
|
||||
$("[id^='productLines\[" + lineID + "\]']").prop('checked', checked);
|
||||
|
||||
@@ -433,10 +537,28 @@ $(function()
|
||||
}
|
||||
|
||||
var checkedSprint = true;
|
||||
$("[id^='sprints\[" + lineID + "\]']").each(function()
|
||||
if($('[id^=productLines]').length > 0)
|
||||
{
|
||||
if(!$(this).prop('checked')) checkedSprint = false;
|
||||
})
|
||||
$("[id^='sprints\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedSprint = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
else if($('[id^=products]').length > 0)
|
||||
{
|
||||
$("[id^=sprints]").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedSprint = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
$('#checkAllProjects').prop('checked', checkedSprint);
|
||||
|
||||
setProgramBegin(programBegin);
|
||||
@@ -450,18 +572,60 @@ $(function()
|
||||
{
|
||||
var checked = true;
|
||||
var checkedProduct = true;
|
||||
var lineID = $(this).attr('data-line');
|
||||
$("[id^='sprints\[" + lineID + "\]']").each(function()
|
||||
if($('[id^=productLines]').length > 0)
|
||||
{
|
||||
if(!$(this).prop('checked')) checked = false;
|
||||
})
|
||||
var lineID = $(this).attr('data-line');
|
||||
$("[id^='sprints\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checked = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
|
||||
$("[id^='products\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProduct = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
else if($('[id^=products]').length > 0)
|
||||
{
|
||||
$("[id^=sprints]").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checked = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
|
||||
$("[id^=products]").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checkedProduct = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
else if($('[id^=sprints]').length > 0)
|
||||
{
|
||||
$("[id^=sprints]").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked'))
|
||||
{
|
||||
checked = false;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$('#checkAllProjects').prop('checked', checked);
|
||||
|
||||
$("[id^='products\[" + lineID + "\]']").each(function()
|
||||
{
|
||||
if(!$(this).prop('checked')) checkedProduct = false;
|
||||
})
|
||||
|
||||
$('#checkAllProducts').prop('checked', checkedProduct);
|
||||
|
||||
if($(this).prop('checked'))
|
||||
|
||||
@@ -118,10 +118,10 @@ $lang->upgrade->selectProject = 'The target project';
|
||||
|
||||
$lang->upgrade->newProgram = 'Create';
|
||||
$lang->upgrade->projectEmpty = 'Project must be not empty.';
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s products and %s iterations in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED iterations: Consolidate the entire product line and the products and iterations below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED iterations: You can select multiple products and their lower iterations to merge into a large project, or you can select a product to merge its lower iterations into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent iterations: You can select several iterations and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s {$lang->productCommon} and %s {$lang->projectCommon} in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED {$lang->projectCommon}: Consolidate the entire product line and the {$lang->productCommon} and {$lang->projectCommon} below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED {$lang->projectCommon}: You can select multiple {$lang->productCommon} and their lower {$lang->projectCommon} to merge into a large project, or you can select a {$lang->productCommon} to merge its lower {$lang->projectCommon} into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent {$lang->projectCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeByMoreLink = "{$lang->projectCommon} that relates multiple {$lang->productCommon}: select which project the {$lang->projectCommon} belongs to.";
|
||||
$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product.";
|
||||
|
||||
@@ -137,7 +137,7 @@ $lang->upgrade->createProjectTip = <<<EOT
|
||||
<p>ZenTao will create an item in Execute with the same name of {$lang->projectCommon} according to the data in {$lang->projectCommon}, and move the tasks, stories, and bugs in {$lang->projectCommon} to it.</p>
|
||||
EOT;
|
||||
$lang->upgrade->createExecutionTip = <<<EOT
|
||||
<p>ZenTao will upgrade existing {$lang->projectCommon} as Iteration.</p>
|
||||
<p>ZenTao will upgrade existing {$lang->projectCommon} as execution.</p>
|
||||
<p>After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .</p>
|
||||
EOT;
|
||||
|
||||
|
||||
@@ -105,10 +105,10 @@ $lang->upgrade->selectProject = 'The target project';
|
||||
|
||||
$lang->upgrade->newProgram = 'Create';
|
||||
$lang->upgrade->projectEmpty = 'Project must be not empty.';
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s products and %s iterations in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED iterations: Consolidate the entire product line and the products and iterations below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED iterations: You can select multiple products and their lower iterations to merge into a large project, or you can select a product to merge its lower iterations into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent iterations: You can select several iterations and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s {$lang->productCommon} and %s {$lang->projectCommon} in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED {$lang->projectCommon}: Consolidate the entire product line and the {$lang->productCommon} and {$lang->projectCommon} below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED {$lang->projectCommon}: You can select multiple {$lang->productCommon} and their lower {$lang->projectCommon} to merge into a large project, or you can select a {$lang->productCommon} to merge its lower {$lang->projectCommon} into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent {$lang->projectCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeByMoreLink = "{$lang->projectCommon} that relates multiple {$lang->productCommon}: select which project the {$lang->projectCommon} belongs to.";
|
||||
$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product.";
|
||||
$lang->upgrade->needBuild4Add = 'Full text retrieval has been added in this upgrade. Need create index. Please go [Admin->System->BuildIndex] page to build index.';
|
||||
@@ -121,7 +121,7 @@ $lang->upgrade->createProjectTip = <<<EOT
|
||||
<p>ZenTao will create an item in Execute with the same name of {$lang->projectCommon} according to the data in {$lang->projectCommon}, and move the tasks, stories, and bugs in {$lang->projectCommon} to it.</p>
|
||||
EOT;
|
||||
$lang->upgrade->createExecutionTip = <<<EOT
|
||||
<p>ZenTao will upgrade existing {$lang->projectCommon} as Iteration.</p>
|
||||
<p>ZenTao will upgrade existing {$lang->projectCommon} as execution.</p>
|
||||
<p>After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .</p>
|
||||
EOT;
|
||||
|
||||
|
||||
@@ -119,10 +119,10 @@ $lang->upgrade->selectProject = 'The target project';
|
||||
|
||||
$lang->upgrade->newProgram = 'Create';
|
||||
$lang->upgrade->projectEmpty = 'Project must be not empty.';
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s products and %s iterations in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED iterations: Consolidate the entire product line and the products and iterations below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED iterations: You can select multiple products and their lower iterations to merge into a large project, or you can select a product to merge its lower iterations into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent iterations: You can select several iterations and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s {$lang->productCommon} and %s {$lang->projectCommon} in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED {$lang->projectCommon}: Consolidate the entire product line and the {$lang->productCommon} and {$lang->projectCommon} below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED {$lang->projectCommon}: You can select multiple {$lang->productCommon} and their lower {$lang->projectCommon} to merge into a large project, or you can select a {$lang->productCommon} to merge its lower {$lang->projectCommon} into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent {$lang->projectCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeByMoreLink = "{$lang->projectCommon} that relates multiple {$lang->productCommon}: select which project the {$lang->projectCommon} belongs to.";
|
||||
$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product.";
|
||||
|
||||
@@ -138,7 +138,7 @@ $lang->upgrade->createProjectTip = <<<EOT
|
||||
<p>ZenTao will create an item in Execute with the same name of {$lang->projectCommon} according to the data in {$lang->projectCommon}, and move the tasks, stories, and bugs in {$lang->projectCommon} to it.</p>
|
||||
EOT;
|
||||
$lang->upgrade->createExecutionTip = <<<EOT
|
||||
<p>ZenTao will upgrade existing {$lang->projectCommon} as Iteration.</p>
|
||||
<p>ZenTao will upgrade existing {$lang->projectCommon} as execution.</p>
|
||||
<p>After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .</p>
|
||||
EOT;
|
||||
|
||||
|
||||
@@ -119,10 +119,10 @@ $lang->upgrade->selectProject = 'The target project';
|
||||
|
||||
$lang->upgrade->newProgram = 'Create';
|
||||
$lang->upgrade->projectEmpty = 'Project must be not empty.';
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s products and %s iterations in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED iterations: Consolidate the entire product line and the products and iterations below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED iterations: You can select multiple products and their lower iterations to merge into a large project, or you can select a product to merge its lower iterations into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent iterations: You can select several iterations and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeSummary = "Dear users, there are %s {$lang->productCommon} and %s {$lang->projectCommon} in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:";
|
||||
$lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED {$lang->projectCommon}: Consolidate the entire product line and the {$lang->productCommon} and {$lang->projectCommon} below it into one large project.";
|
||||
$lang->upgrade->mergeByProduct = "PRODUCT-BASED {$lang->projectCommon}: You can select multiple {$lang->productCommon} and their lower {$lang->projectCommon} to merge into a large project, or you can select a {$lang->productCommon} to merge its lower {$lang->projectCommon} into a larger project";
|
||||
$lang->upgrade->mergeByProject = "Independent {$lang->projectCommon}: You can select several {$lang->projectCommon} and merge them into one large project, or merge them independently";
|
||||
$lang->upgrade->mergeByMoreLink = "{$lang->projectCommon} that relates multiple {$lang->productCommon}: select which project the {$lang->projectCommon} belongs to.";
|
||||
$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product.";
|
||||
$lang->upgrade->needBuild4Add = 'Full text retrieval has been added in this upgrad. Vui lòng create an index.';
|
||||
@@ -135,7 +135,7 @@ $lang->upgrade->createProjectTip = <<<EOT
|
||||
<p>ZenTao will create an item in Execute with the same name of {$lang->projectCommon} according to the data in {$lang->projectCommon}, and move the tasks, stories, and bugs in {$lang->projectCommon} to it.</p>
|
||||
EOT;
|
||||
$lang->upgrade->createExecutionTip = <<<EOT
|
||||
<p>ZenTao will upgrade existing {$lang->projectCommon} as Iteration.</p>
|
||||
<p>ZenTao will upgrade existing {$lang->projectCommon} as execution.</p>
|
||||
<p>After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .</p>
|
||||
EOT;
|
||||
|
||||
|
||||
@@ -106,10 +106,10 @@ $lang->upgrade->selectProject = '目标项目';
|
||||
|
||||
$lang->upgrade->newProgram = '新建';
|
||||
$lang->upgrade->projectEmpty = '所属项目不能为空!';
|
||||
$lang->upgrade->mergeSummary = "尊敬的用户,您的系统中共有%s个产品,%s个迭代等待迁移。";
|
||||
$lang->upgrade->mergeByProductLine = "以产品线组织的产品和迭代:将整个产品线及其下面的产品和迭代归并到一个项目集和项目中,也可以分开归并。";
|
||||
$lang->upgrade->mergeByProduct = "以产品组织的迭代:可以选择多个产品及其下面的迭代归并到一个项目集和项目中,也可以选择某一个产品将其下面所属的迭代归并到项目集和项目中。";
|
||||
$lang->upgrade->mergeByProject = "独立的迭代:可以选择若干迭代归并到一个项目中,也可以独立归并。";
|
||||
$lang->upgrade->mergeSummary = "尊敬的用户,您的系统中共有%s个{$lang->productCommon},%s个{$lang->projectCommon}等待迁移。";
|
||||
$lang->upgrade->mergeByProductLine = "以产品线组织的{$lang->productCommon}和{$lang->projectCommon}:将整个产品线及其下面的{$lang->productCommon}和{$lang->projectCommon}归并到一个项目集和项目中,也可以分开归并。";
|
||||
$lang->upgrade->mergeByProduct = "以{$lang->productCommon}组织的{$lang->projectCommon}:可以选择多个{$lang->productCommon}及其下面的{$lang->projectCommon}归并到一个项目集和项目中,也可以选择某一个{$lang->productCommon}将其下面所属的{$lang->projectCommon}归并到项目集和项目中。";
|
||||
$lang->upgrade->mergeByProject = "独立的{$lang->projectCommon}:可以选择若干{$lang->projectCommon}归并到一个项目中,也可以独立归并。";
|
||||
$lang->upgrade->mergeByMoreLink = "关联多个{$lang->productCommon}的{$lang->projectCommon}:选择这个{$lang->projectCommon}归属于哪一个项目。";
|
||||
$lang->upgrade->mergeRepoTips = "将选中的版本库归并到所选产品下。";
|
||||
$lang->upgrade->needBuild4Add = '本次升级需要创建索引。请到 [后台->系统->重建索引] 页面,重新创建索引。';
|
||||
@@ -123,7 +123,7 @@ $lang->upgrade->createProjectTip = <<<EOT
|
||||
EOT;
|
||||
|
||||
$lang->upgrade->createExecutionTip = <<<EOT
|
||||
<p>系统会把历史的{$lang->projectCommon}作为迭代进行升级。</p>
|
||||
<p>系统会把历史的{$lang->projectCommon}作为执行进行升级。</p>
|
||||
<p>升级后历史的{$lang->projectCommon}数据将对应新版本中项目下的执行。</p>
|
||||
EOT;
|
||||
include dirname(__FILE__) . '/version.php';
|
||||
|
||||
@@ -8,9 +8,11 @@
|
||||
<div class='table-col' id='source'>
|
||||
<div class='cell'>
|
||||
<div class='lineGroup-title'>
|
||||
<div class='item'><strong><?php echo $lang->upgrade->project;?></strong></div>
|
||||
<div class='item checkbox-primary' title="<?php echo $lang->selectAll?>">
|
||||
<input type='checkbox' id='checkAllProjects'><label for='checkAllProjects'><strong><?php echo $lang->projectCommon;?></strong></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class='line-groups'>
|
||||
<div class='line-groups sprintGroup'>
|
||||
<?php foreach($noMergedSprints as $sprintID => $sprint):?>
|
||||
<?php echo html::checkBox("sprints", array($sprint->id => $sprint->name), $sprint->id, "data-begin='{$sprint->begin}' data-end='{$sprint->end}' data-status='{$sprint->status}' data-pm='{$sprint->PM}'");?>
|
||||
<?php endforeach;?>
|
||||
|
||||
Reference in New Issue
Block a user