系统会根据历史{$lang->projectCommon}分别创建一个与该{$lang->projectCommon}同名的执行,并将之前{$lang->projectCommon}的任务、需求、Bug等数据迁移至执行中。
@@ -163,11 +162,11 @@ EOT;
$lang->upgrade->mergeModes = array();
$lang->upgrade->mergeModes['project'] = '自动归并数据,将历史的项目作为项目升级';
$lang->upgrade->mergeModes['execution'] = '自动归并数据,将历史的项目作为迭代升级';
-$lang->upgrade->mergeModes['manual'] = '手工归并数据';
+$lang->upgrade->mergeModes['manually'] = '手工归并数据';
$lang->upgrade->mergeProjectTip = '历史的项目将直接同步到新版本的项目中,同时系统将会根据历史项目分别创建一个与该项目同名的迭代,并将之前项目下的任务、需求、Bug等数据迁移至迭代中。';
$lang->upgrade->mergeExecutionTip = '系统将自动按年创建项目,将历史的迭代数据按照年份归并到对应的项目下。';
-$lang->upgrade->mergeManualTip = '可以手工选择数据归并的方式';
+$lang->upgrade->mergeManuallyTip = '可以手工选择数据归并的方式。';
include dirname(__FILE__) . '/version.php';
diff --git a/module/upgrade/view/selectmergemode.html.php b/module/upgrade/view/selectmergemode.html.php
index 98c9b6f464..4dbcd69461 100644
--- a/module/upgrade/view/selectmergemode.html.php
+++ b/module/upgrade/view/selectmergemode.html.php
@@ -40,7 +40,7 @@
From fe13c4de38d8247985acb5d42c084a4636765052 Mon Sep 17 00:00:00 2001
From: daitingting
Date: Fri, 16 Sep 2022 01:02:13 +0000
Subject: [PATCH 3/8] * Doing task #69253.
---
framework/router.class.php | 17 ++--
module/block/lang/zh-cn.php | 42 ++++----
module/block/model.php | 5 +-
module/common/lang/menu.php | 192 ++++++++++++++++-------------------
module/common/lang/zh-cn.php | 2 +-
module/common/model.php | 9 +-
module/custom/lang/zh-cn.php | 4 +-
module/upgrade/model.php | 42 ++++++++
8 files changed, 167 insertions(+), 146 deletions(-)
diff --git a/framework/router.class.php b/framework/router.class.php
index 2ce88d9cd5..1efaa3d059 100755
--- a/framework/router.class.php
+++ b/framework/router.class.php
@@ -171,7 +171,7 @@ class router extends baseRouter
try
{
- $commonSettings = $this->dbh->query('SELECT section, `key`, value FROM' . TABLE_CONFIG . "WHERE `owner`='system' AND (`module`='custom' or `module`='common') and `key` in ('sprintConcept', 'hourPoint', 'URSR', 'mode', 'URAndSR', 'scoreStatus')")->fetchAll();
+ $commonSettings = $this->dbh->query('SELECT section, `key`, value FROM' . TABLE_CONFIG . "WHERE `owner`='system' AND (`module`='custom' or `module`='common') and `key` in ('sprintConcept', 'hourPoint', 'URSR', 'mode', 'URAndSR', 'scoreStatus', 'projectMode')")->fetchAll();
}
catch (PDOException $exception)
{
@@ -187,12 +187,14 @@ class router extends baseRouter
foreach($commonSettings as $setting)
{
- if($setting->key == 'sprintConcept') $projectKey = $setting->value;
- if($setting->key == 'hourPoint') $hourKey = $setting->value;
- if($setting->key == 'URSR') $URSR = $setting->value;
- if($setting->key == 'URAndSR') $URAndSR = $setting->value;
- if($setting->key == 'mode' and $setting->section == 'global') $mode = $setting->value;
- if($setting->key == 'scoreStatus' and $setting->section == 'global') $score = $setting->value;
+ if($setting->key == 'sprintConcept') $projectKey = $setting->value;
+ if($setting->key == 'hourPoint') $hourKey = $setting->value;
+ if($setting->key == 'URSR') $URSR = $setting->value;
+ if($setting->key == 'URAndSR') $URAndSR = $setting->value;
+ if($setting->key == 'mode' and $setting->section == 'global') $mode = $setting->value;
+ if($setting->key == 'scoreStatus' and $setting->section == 'global') $score = $setting->value;
+
+ if($setting->key == 'projectMode' && $setting->section == 'global') $config->projectMode = $setting->value;
}
/* Lite Version is compatible with classic modes */
@@ -200,7 +202,6 @@ class router extends baseRouter
/* Record system mode. */
$config->systemMode = $mode;
- if($config->systemMode == 'classic') $this->config->executionCommonList = $this->config->projectCommonList;
/* Record system score.*/
$config->systemScore = $score;
diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php
index adcf517d1d..4b564ba80f 100644
--- a/module/block/lang/zh-cn.php
+++ b/module/block/lang/zh-cn.php
@@ -284,14 +284,11 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
-if($config->systemMode == 'new')
-{
- $lang->block->default['full']['my']['5']['title'] = '项目统计';
- $lang->block->default['full']['my']['5']['block'] = 'statistic';
- $lang->block->default['full']['my']['5']['source'] = 'project';
- $lang->block->default['full']['my']['5']['grid'] = 8;
- $lang->block->default['full']['my']['5']['params']['count'] = '20';
-}
+$lang->block->default['full']['my']['5']['title'] = '项目统计';
+$lang->block->default['full']['my']['5']['block'] = 'statistic';
+$lang->block->default['full']['my']['5']['source'] = 'project';
+$lang->block->default['full']['my']['5']['grid'] = 8;
+$lang->block->default['full']['my']['5']['params']['count'] = '20';
$lang->block->default['full']['my']['6']['title'] = '我的贡献';
$lang->block->default['full']['my']['6']['block'] = 'contribute';
@@ -316,19 +313,16 @@ $lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
-if($config->systemMode == 'new')
-{
- $lang->block->default['full']['my']['9']['title'] = '项目人力投入';
- $lang->block->default['full']['my']['9']['block'] = 'projectteam';
- $lang->block->default['full']['my']['9']['source'] = 'project';
- $lang->block->default['full']['my']['9']['grid'] = 8;
-}
+$lang->block->default['full']['my']['9']['title'] = '项目人力投入';
+$lang->block->default['full']['my']['9']['block'] = 'projectteam';
+$lang->block->default['full']['my']['9']['source'] = 'project';
+$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = '项目列表';
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
-if($config->systemMode == 'classic')
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution')
{
$lang->block->default['full']['my']['10']['block'] = 'execution';
$lang->block->default['full']['my']['10']['source'] = 'execution';
@@ -359,18 +353,18 @@ $lang->block->availableBlocks->issue = '问题';
$lang->block->availableBlocks->meeting = '会议';
$lang->block->availableBlocks->feedback = '反馈';
-if($config->systemMode == 'new') $lang->block->moduleList['project'] = '项目';
-$lang->block->moduleList['product'] = $lang->productCommon;
-$lang->block->moduleList['execution'] = $lang->execution->common;
-$lang->block->moduleList['qa'] = '测试';
-$lang->block->moduleList['todo'] = '待办';
+$lang->block->moduleList['product'] = $lang->productCommon;
+$lang->block->moduleList['project'] = '项目';
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->block->moduleList['execution'] = $lang->execution->common;
+$lang->block->moduleList['qa'] = '测试';
+$lang->block->moduleList['todo'] = '待办';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = '项目列表';
$lang->block->modules['project']->availableBlocks->recentproject = '近期项目';
$lang->block->modules['project']->availableBlocks->statistic = '项目统计';
-if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = '项目人力投入';
+$lang->block->modules['project']->availableBlocks->projectteam = '项目人力投入';
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
@@ -527,7 +521,7 @@ $lang->block->typeList->testtask['done'] = '已测版本';
$lang->block->typeList->testtask['all'] = '全部';
$lang->block->modules['project']->moreLinkList = new stdclass();
-$lang->block->modules['project']->moreLinkList->recentproject = $config->systemMode == 'new' ? 'project|browse|' : 'execution|all|';
+$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
@@ -573,7 +567,7 @@ $lang->block->flowchart['admin'] = array('管理员', '维护公司', '添加
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('项目集负责人', '创建项目集', '关联产品', "创建项目", "制定预算和规划", '添加干系人');
$lang->block->flowchart['product'] = array($lang->productCommon . '经理', '创建' . $lang->productCommon, '维护模块', "维护计划", "维护需求", '创建发布');
$lang->block->flowchart['project'] = array('项目经理', '创建' . $lang->executionCommon, '维护团队', "关联需求", '分解任务', '跟踪进度');
-if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('项目经理', '创建项目、' . $lang->executionCommon, '维护团队', "关联需求", '分解任务', '跟踪进度');
+$lang->block->flowchart['project'] = array('项目经理', '创建项目、' . $lang->executionCommon, '维护团队', "关联需求", '分解任务', '跟踪进度');
$lang->block->flowchart['dev'] = array('研发人员', '领取任务和Bug', '设计实现方案', '更新状态', '完成任务和Bug', '提交代码');
$lang->block->flowchart['tester'] = array('测试人员', '撰写用例', '执行用例', '提交Bug', '验证Bug', '关闭Bug');
diff --git a/module/block/model.php b/module/block/model.php
index 97d52b15b3..3d3f6aeaff 100644
--- a/module/block/model.php
+++ b/module/block/model.php
@@ -132,15 +132,14 @@ class blockModel extends model
*/
public function getBlockList($module = 'my', $type = '')
{
- $blocks = $this->dao->select('*')->from(TABLE_BLOCK)->where('account')->eq($this->app->user->account)
+ return $this->dao->select('*')->from(TABLE_BLOCK)->where('account')->eq($this->app->user->account)
->andWhere('module')->eq($module)
->andWhere('vision')->eq($this->config->vision)
->andWhere('hidden')->eq(0)
->beginIF($type)->andWhere('type')->eq($type)->fi()
+ ->beginIF(isset($this->config->projectMode) && $this->config->projectMode == 'noExecution')->andWhere('source')->ne('execution')->fi()
->orderBy('`order`')
->fetchAll('id');
-
- return $blocks;
}
/**
diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php
index 856fe405a8..932706646a 100644
--- a/module/common/lang/menu.php
+++ b/module/common/lang/menu.php
@@ -14,9 +14,9 @@ $lang->navIcons['system'] = " ";
$lang->navIcons['admin'] = " ";
global $config;
-list($programModule, $programMethod) = explode('-', $config->programLink);
-list($productModule, $productMethod) = explode('-', $config->productLink);
-list($projectModule, $projectMethod) = explode('-', $config->projectLink);
+list($programModule, $programMethod) = explode('-', $config->programLink);
+list($productModule, $productMethod) = explode('-', $config->productLink);
+list($projectModule, $projectMethod) = explode('-', $config->projectLink);
list($executionModule, $executionMethod) = explode('-', $config->executionLink);
if(defined('TUTORIAL'))
@@ -32,34 +32,25 @@ if(defined('TUTORIAL'))
}
/* Main Navigation. */
-$lang->mainNav = new stdclass();
-$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
-if($config->systemMode == 'new') $lang->mainNav->program = "{$lang->navIcons['program']} {$lang->program->common}|$programModule|$programMethod|";
+$lang->mainNav = new stdclass();
+$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
$lang->mainNav->product = "{$lang->navIcons['product']} {$lang->product->common}|$productModule|$productMethod|";
-if($config->systemMode == 'new') $lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
+$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
+$lang->mainNav->qa = "{$lang->navIcons['qa']} {$lang->qa->common}|qa|index|";
+$lang->mainNav->devops = "{$lang->navIcons['devops']} DevOps|repo|browse|";
+$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
+$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
+$lang->mainNav->report = "{$lang->navIcons['report']} {$lang->report->common}|report|productSummary|";
+$lang->mainNav->system = "{$lang->navIcons['system']} {$lang->system->common}|my|team|";
+$lang->mainNav->admin = "{$lang->navIcons['admin']} {$lang->admin->common}|admin|index|";
+if($config->systemMode == 'new') $lang->mainNav->program = "{$lang->navIcons['program']} {$lang->program->common}|$programModule|$programMethod|";
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->mainNav->execution = "{$lang->navIcons['execution']} {$lang->execution->common}|$executionModule|$executionMethod|";
-if($config->systemMode == 'new')
-{
- $lang->mainNav->execution = "{$lang->navIcons['execution']} {$lang->execution->common}|$executionModule|$executionMethod|";
-}
-else
-{
- $lang->mainNav->execution = "{$lang->navIcons['project']} {$lang->execution->common}|$executionModule|$executionMethod|";
-}
-$lang->mainNav->qa = "{$lang->navIcons['qa']} {$lang->qa->common}|qa|index|";
-$lang->mainNav->devops = "{$lang->navIcons['devops']} DevOps|repo|browse|";
-$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
-$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
-$lang->mainNav->report = "{$lang->navIcons['report']} {$lang->report->common}|report|productSummary|";
-$lang->mainNav->system = "{$lang->navIcons['system']} {$lang->system->common}|my|team|";
-$lang->mainNav->admin = "{$lang->navIcons['admin']} {$lang->admin->common}|admin|index|";
+$lang->dividerMenu = ',kanban,oa,admin,';
-$lang->dividerMenu = ',kanban,oa,admin,';
-$lang->mainNav->menuOrder[5] = 'my';
-if($config->systemMode == 'new') $lang->mainNav->menuOrder[10] = 'program';
+$lang->mainNav->menuOrder[5] = 'my';
$lang->mainNav->menuOrder[15] = 'product';
-if($config->systemMode == 'new') $lang->mainNav->menuOrder[20] = 'project';
-$lang->mainNav->menuOrder[21] = 'execution';
+$lang->mainNav->menuOrder[20] = 'project';
$lang->mainNav->menuOrder[23] = 'qa';
$lang->mainNav->menuOrder[25] = 'devops';
$lang->mainNav->menuOrder[30] = 'kanban';
@@ -67,18 +58,20 @@ $lang->mainNav->menuOrder[35] = 'doc';
$lang->mainNav->menuOrder[40] = 'report';
$lang->mainNav->menuOrder[45] = 'system';
$lang->mainNav->menuOrder[65] = 'admin';
+if($config->systemMode == 'new') $lang->mainNav->menuOrder[10] = 'program';
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->mainNav->menuOrder[21] = 'execution';
/* My menu. */
-$lang->my->menu = new stdclass();
-$lang->my->menu->index = array('link' => "$lang->dashboard|my|index");
-$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo');
-$lang->my->menu->work = array('link' => "{$lang->my->work}|my|work|mode=task", 'subModule' => 'task');
-if($config->systemMode == 'new') $lang->my->menu->project = array('link' => "{$lang->project->common}|my|project|");
-$lang->my->menu->execution = array('link' => "{$lang->execution->common}|my|execution|type=undone");
+$lang->my->menu = new stdclass();
+$lang->my->menu->index = array('link' => "$lang->dashboard|my|index");
+$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo');
+$lang->my->menu->work = array('link' => "{$lang->my->work}|my|work|mode=task", 'subModule' => 'task');
+$lang->my->menu->project = array('link' => "{$lang->project->common}|my|project|");
$lang->my->menu->contribute = array('link' => "$lang->contribute|my|contribute|mode=task");
$lang->my->menu->dynamic = array('link' => "$lang->dynamic|my|dynamic|");
+$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
if($config->systemScore) $lang->my->menu->score = array('link' => "{$lang->score->shortCommon}|my|score|", 'subModule' => 'score');
-$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->my->menu->execution = array('link' => "{$lang->execution->common}|my|execution|type=undone");
/* My menu order. */
$lang->my->menuOrder[5] = 'index';
@@ -92,13 +85,13 @@ $lang->my->menuOrder[40] = 'dynamic';
$lang->my->menuOrder[45] = 'score';
$lang->my->menuOrder[50] = 'contacts';
-$lang->my->menu->work['subMenu'] = new stdclass();
-$lang->my->menu->work['subMenu']->task = array('link' => "{$lang->task->common}|my|work|mode=task", 'subModule' => 'task');
-if($config->URAndSR) $lang->my->menu->work['subMenu']->requirement = "$lang->URCommon|my|work|mode=requirement";
+$lang->my->menu->work['subMenu'] = new stdclass();
+$lang->my->menu->work['subMenu']->task = array('link' => "{$lang->task->common}|my|work|mode=task", 'subModule' => 'task');
$lang->my->menu->work['subMenu']->story = "$lang->SRCommon|my|work|mode=story";
$lang->my->menu->work['subMenu']->bug = "{$lang->bug->common}|my|work|mode=bug";
$lang->my->menu->work['subMenu']->testcase = array('link' => "{$lang->testcase->common}|my|work|mode=testcase&type=assigntome", 'subModule' => 'testtask');
$lang->my->menu->work['subMenu']->testtask = "{$lang->testtask->common}|my|work|mode=testtask&type=wait";
+if($config->URAndSR) $lang->my->menu->work['subMenu']->requirement = "$lang->URCommon|my|work|mode=requirement";
$lang->my->menu->work['menuOrder'][5] = 'task';
$lang->my->menu->work['menuOrder'][10] = 'requirement';
@@ -107,14 +100,14 @@ $lang->my->menu->work['menuOrder'][20] = 'bug';
$lang->my->menu->work['menuOrder'][25] = 'testcase';
$lang->my->menu->work['menuOrder'][30] = 'testtask';
-$lang->my->menu->contribute['subMenu'] = new stdclass();
-$lang->my->menu->contribute['subMenu']->task = "{$lang->task->common}|my|contribute|mode=task";
-if($config->URAndSR) $lang->my->menu->contribute['subMenu']->requirement = "$lang->URCommon|my|contribute|mode=requirement";
+$lang->my->menu->contribute['subMenu'] = new stdclass();
+$lang->my->menu->contribute['subMenu']->task = "{$lang->task->common}|my|contribute|mode=task";
$lang->my->menu->contribute['subMenu']->story = "$lang->SRCommon|my|contribute|mode=story";
$lang->my->menu->contribute['subMenu']->bug = "{$lang->bug->common}|my|contribute|mode=bug";
$lang->my->menu->contribute['subMenu']->testcase = "{$lang->testcase->shortCommon}|my|contribute|mode=testcase&type=openedbyme";
$lang->my->menu->contribute['subMenu']->testtask = "{$lang->testtask->common}|my|contribute|mode=testtask&type=done";
$lang->my->menu->contribute['subMenu']->doc = "{$lang->doc->common}|my|contribute|mode=doc&type=openedbyme";
+if($config->URAndSR) $lang->my->menu->contribute['subMenu']->requirement = "$lang->URCommon|my|contribute|mode=requirement";
$lang->my->menu->contribute['menuOrder'][5] = 'task';
$lang->my->menu->contribute['menuOrder'][10] = 'requirement';
@@ -127,11 +120,11 @@ $lang->my->menu->contribute['menuOrder'][35] = 'doc';
$lang->my->dividerMenu = ',work,dynamic,';
/* Program menu. */
-$lang->program->homeMenu = new stdclass();
+$lang->program->homeMenu = new stdclass();
$lang->program->homeMenu->browse = array('link' => "{$lang->program->list}|program|browse|", 'alias' => 'create,edit', 'subModule' => 'project');
$lang->program->homeMenu->kanban = array('link' => "{$lang->program->kanban}|program|kanban|");
-$lang->program->menu = new stdclass();
+$lang->program->menu = new stdclass();
$lang->program->menu->product = array('link' => "{$lang->product->common}|program|product|programID=%s", 'alias' => 'view');
$lang->program->menu->project = array('link' => "{$lang->project->common}|program|project|programID=%s");
$lang->program->menu->personnel = array('link' => "{$lang->personnel->common}|personnel|invest|programID=%s");
@@ -143,30 +136,29 @@ $lang->program->menuOrder[10] = 'project';
$lang->program->menuOrder[15] = 'personnel';
$lang->program->menuOrder[20] = 'stakeholder';
-$lang->program->menu->personnel['subMenu'] = new stdClass();
+$lang->program->menu->personnel['subMenu'] = new stdClass();
$lang->program->menu->personnel['subMenu']->invest = array('link' => "{$lang->personnel->invest}|personnel|invest|programID=%s");
$lang->program->menu->personnel['subMenu']->accessible = array('link' => "{$lang->personnel->accessible}|personnel|accessible|programID=%s");
$lang->program->menu->personnel['subMenu']->whitelist = array('link' => "{$lang->whitelist}|personnel|whitelist|objectID=%s", 'alias' => 'addwhitelist');
/* Product menu. */
-$lang->product->homeMenu = new stdclass();
+$lang->product->homeMenu = new stdclass();
$lang->product->homeMenu->home = array('link' => "{$lang->dashboard}|product|index|");
$lang->product->homeMenu->list = array('link' => $lang->product->list . '|product|all|', 'alias' => 'create,batchedit,manageline');
$lang->product->homeMenu->kanban = array('link' => "{$lang->product->kanban}|product|kanban|");
-$lang->product->menu = new stdclass();
+$lang->product->menu = new stdclass();
$lang->product->menu->dashboard = array('link' => "{$lang->dashboard}|product|dashboard|productID=%s");
+$lang->product->menu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
+$lang->product->menu->plan = array('link' => "{$lang->productplan->shortCommon}|productplan|browse|productID=%s", 'subModule' => 'productplan,bug');
+$lang->product->menu->project = array('link' => "{$lang->project->common}|product|project|status=all&productID=%s");
+$lang->product->menu->release = array('link' => "{$lang->release->common}|release|browse|productID=%s", 'subModule' => 'release');
+$lang->product->menu->roadmap = array('link' => "{$lang->roadmap}|product|roadmap|productID=%s");
+$lang->product->menu->track = array('link' => "{$lang->track}|product|track|productID=%s");
+$lang->product->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=product&objectID=%s", 'subModule' => 'doc');
+$lang->product->menu->dynamic = array('link' => "{$lang->dynamic}|product|dynamic|productID=%s");
+$lang->product->menu->settings = array('link' => "{$lang->settings}|product|view|productID=%s", 'subModule' => 'tree,branch', 'alias' => 'edit,whitelist,addwhitelist');
if($config->URAndSR) $lang->product->menu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
-$lang->product->menu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
-$lang->product->menu->plan = array('link' => "{$lang->productplan->shortCommon}|productplan|browse|productID=%s", 'subModule' => 'productplan,bug');
-$lang->product->menu->release = array('link' => "{$lang->release->common}|release|browse|productID=%s", 'subModule' => 'release');
-$lang->product->menu->roadmap = array('link' => "{$lang->roadmap}|product|roadmap|productID=%s");
-if($config->systemMode == 'new') $lang->product->menu->project = array('link' => "{$lang->project->common}|product|project|status=all&productID=%s");
-if($config->systemMode == 'classic') $lang->product->menu->project = array('link' => "{$lang->execution->common}|product|project|status=all&productID=%s");
-$lang->product->menu->track = array('link' => "{$lang->track}|product|track|productID=%s");
-$lang->product->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=product&objectID=%s", 'subModule' => 'doc');
-$lang->product->menu->dynamic = array('link' => "{$lang->dynamic}|product|dynamic|productID=%s");
-$lang->product->menu->settings = array('link' => "{$lang->settings}|product|view|productID=%s", 'subModule' => 'tree,branch', 'alias' => 'edit,whitelist,addwhitelist');
/* Product menu order. */
$lang->product->menuOrder[5] = 'dashboard';
@@ -185,7 +177,7 @@ $lang->product->menuOrder[65] = 'all';
$lang->product->menu->doc['subMenu'] = new stdclass();
-$lang->product->menu->settings['subMenu'] = new stdclass();
+$lang->product->menu->settings['subMenu'] = new stdclass();
$lang->product->menu->settings['subMenu']->view = array('link' => "{$lang->overview}|product|view|productID=%s", 'alias' => 'edit');
$lang->product->menu->settings['subMenu']->module = array('link' => "{$lang->module}|tree|browse|product=%s&view=story", 'subModule' => 'tree');
$lang->product->menu->settings['subMenu']->branch = array('link' => "@branch@|branch|manage|product=%s", 'subModule' => 'branch');
@@ -194,12 +186,12 @@ $lang->product->menu->settings['subMenu']->whitelist = array('link' => "{$lang->
$lang->product->dividerMenu = $config->URAndSR ? ',story,requirement,settings,' : ',story,track,settings,';
/* Project menu. */
-$lang->project->homeMenu = new stdclass();
+$lang->project->homeMenu = new stdclass();
$lang->project->homeMenu->browse = array('link' => ($config->systemMode == 'new' ? $lang->project->list : $lang->executionCommon) . '|project|browse|', 'alias' => 'batchedit,create');
if($config->systemMode == 'new') $lang->project->homeMenu->kanban = array('link' => "{$lang->project->kanban}|project|kanban|");
/* Scrum menu. */
-$lang->scrum->menu = new stdclass();
+$lang->scrum->menu = new stdclass();
$lang->scrum->menu->index = array('link' => "{$lang->dashboard}|project|index|project=%s");
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s", 'exclude' => 'execution-testreport', 'subModule' => 'task');
$lang->scrum->menu->story = array('link' => "$lang->SRCommon|projectstory|story|projectID=%s", 'subModule' => 'projectstory,tree', 'alias' => 'story,track');
@@ -244,19 +236,19 @@ $lang->scrum->menu->settings['subMenu']->group = array('link' => "{$lang->
/* Waterfall menu. */
$lang->waterfall->menu = new stdclass();
-$lang->waterfall->menu->index = array('link' => "$lang->dashboard|project|index|project=%s");
-$lang->waterfall->menu->execution = array('link' => "{$lang->stage->common}|project|execution|status=all&projectID=%s", 'subModule' => 'programplan,task');
-$lang->waterfall->menu->story = array('link' => "$lang->SRCommon|projectstory|story|project=%s", 'subModule' => 'projectstory,tree', 'exclude' => 'projectstory-track');
-$lang->waterfall->menu->design = array('link' => "{$lang->design->common}|design|browse|project=%s");
-$lang->waterfall->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport');
-$lang->waterfall->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=project&objectID=%s");
-$lang->waterfall->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
-$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
-$lang->waterfall->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
-$lang->waterfall->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
+$lang->waterfall->menu->index = array('link' => "$lang->dashboard|project|index|project=%s");
+$lang->waterfall->menu->execution = array('link' => "{$lang->stage->common}|project|execution|status=all&projectID=%s", 'subModule' => 'programplan,task');
+$lang->waterfall->menu->story = array('link' => "$lang->SRCommon|projectstory|story|project=%s", 'subModule' => 'projectstory,tree', 'exclude' => 'projectstory-track');
+$lang->waterfall->menu->design = array('link' => "{$lang->design->common}|design|browse|project=%s");
+$lang->waterfall->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport');
+$lang->waterfall->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=project&objectID=%s");
+$lang->waterfall->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
+$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
+$lang->waterfall->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
+$lang->waterfall->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
+$lang->waterfall->menu->settings = $lang->scrum->menu->settings;
-$lang->waterfall->menu->settings = $lang->scrum->menu->settings;
-$lang->waterfall->dividerMenu = ',programplan,build,dynamic,';
+$lang->waterfall->dividerMenu = ',programplan,build,dynamic,';
/* Waterfall menu order. */
$lang->waterfall->menuOrder[5] = 'index';
@@ -291,8 +283,8 @@ $lang->waterfall->menu->design['subMenu']->ads = array('link' => "{$lang->d
$lang->waterfall->menu->design['subMenu']->bysearch = array('link' => ' ' . $lang->searchAB . ' ');
/* Kanban project menu. */
-$lang->kanbanProject = new stdclass();
-$lang->kanbanProject->menu = new stdclass();
+$lang->kanbanProject = new stdclass();
+$lang->kanbanProject->menu = new stdclass();
$lang->kanbanProject->menu->index = array('link' => "{$lang->kanban->common}|project|index|project=%s");
$lang->kanbanProject->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
$lang->kanbanProject->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team');
@@ -304,23 +296,22 @@ $lang->kanbanProject->menuOrder[5] = 'index';
$lang->kanbanProject->menuOrder[10] = 'build';
$lang->kanbanProject->menuOrder[15] = 'settings';
-$lang->kanbanProject->menu->settings['subMenu'] = new stdclass();
-$lang->kanbanProject->menu->settings['subMenu']->view = array('link' => "$lang->overview|project|view|project=%s", 'alias' => 'edit');
-$lang->kanbanProject->menu->settings['subMenu']->products = array('link' => "{$lang->product->common}|project|manageProducts|project=%s", 'alias' => 'manageproducts');
-$lang->kanbanProject->menu->settings['subMenu']->members = array('link' => "{$lang->team->common}|project|team|project=%s", 'alias' => 'managemembers,team');
-$lang->kanbanProject->menu->settings['subMenu']->whitelist = array('link' => "{$lang->whitelist}|project|whitelist|project=%s", 'subModule' => 'personnel');
+$lang->kanbanProject->menu->settings['subMenu'] = new stdclass();
+$lang->kanbanProject->menu->settings['subMenu']->view = array('link' => "$lang->overview|project|view|project=%s", 'alias' => 'edit');
+$lang->kanbanProject->menu->settings['subMenu']->products = array('link' => "{$lang->product->common}|project|manageProducts|project=%s", 'alias' => 'manageproducts');
+$lang->kanbanProject->menu->settings['subMenu']->members = array('link' => "{$lang->team->common}|project|team|project=%s", 'alias' => 'managemembers,team');
+$lang->kanbanProject->menu->settings['subMenu']->whitelist = array('link' => "{$lang->whitelist}|project|whitelist|project=%s", 'subModule' => 'personnel');
/* Execution menu. */
-$lang->execution->homeMenu = new stdclass();
-$lang->execution->homeMenu->all = array('link' => "{$lang->execution->all}|execution|all|", 'alias' => 'create,batchedit');
-if($config->systemMode == 'new') $lang->execution->homeMenu->executionkanban = array('link' => "{$lang->execution->executionKanban}|execution|executionkanban|");
-
-$lang->execution->menu = new stdclass();
-$lang->execution->menu->task = array('link' => "{$lang->task->common}|execution|task|executionID=%s", 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
-$lang->execution->menu->kanban = array('link' => "$lang->executionKanban|execution|taskkanban|executionID=%s");
-$lang->execution->menu->burn = array('link' => "$lang->burn|execution|burn|executionID=%s");
-$lang->execution->menu->view = array('link' => "$lang->view|execution|grouptask|executionID=%s", 'alias' => 'grouptask,tree,taskeffort,gantt,calendar,relation,maintainrelation');
+$lang->execution->homeMenu = new stdclass();
+$lang->execution->homeMenu->all = array('link' => "{$lang->execution->all}|execution|all|", 'alias' => 'create,batchedit');
+$lang->execution->homeMenu->executionkanban = array('link' => "{$lang->execution->executionKanban}|execution|executionkanban|");
+$lang->execution->menu = new stdclass();
+$lang->execution->menu->task = array('link' => "{$lang->task->common}|execution|task|executionID=%s", 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
+$lang->execution->menu->kanban = array('link' => "$lang->executionKanban|execution|taskkanban|executionID=%s");
+$lang->execution->menu->burn = array('link' => "$lang->burn|execution|burn|executionID=%s");
+$lang->execution->menu->view = array('link' => "$lang->view|execution|grouptask|executionID=%s", 'alias' => 'grouptask,tree,taskeffort,gantt,calendar,relation,maintainrelation');
if($config->edition != 'open') $lang->execution->menu->view = array('link' => "$lang->view|execution|gantt|executionID=%s", 'alias' => 'grouptask,tree,taskeffort,gantt,calendar,relation,maintainrelation');
$lang->execution->menu->story = array('link' => "$lang->SRCommon|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'batchcreate,linkstory,storykanban,batchtotask');
@@ -330,7 +321,7 @@ $lang->execution->menu->doc = array('link' => "{$lang->doc->common}|doc|tab
$lang->execution->menu->build = array('link' => "{$lang->build->common}|execution|build|executionID=%s", 'subModule' => 'build');
$lang->execution->menu->action = array('link' => "$lang->dynamic|execution|dynamic|executionID=%s");
$lang->execution->menu->settings = array('link' => "$lang->settings|execution|view|executionID=%s", 'subModule' => 'personnel', 'alias' => 'edit,manageproducts,team,whitelist,addwhitelist,managemembers', 'class' => 'dropdown dropdown-hover');
-if($config->systemMode == 'new') $lang->execution->menu->more = array('link' => "$lang->more|execution|more|%s");
+$lang->execution->menu->more = array('link' => "$lang->more|execution|more|%s");
/* Execution menu order. */
$lang->execution->menuOrder[5] = 'task';
@@ -366,7 +357,7 @@ $lang->execution->menu->qa['menuOrder'][10] = 'bug';
$lang->execution->menu->qa['menuOrder'][15] = 'testcase';
$lang->execution->menu->qa['menuOrder'][20] = 'testtask';
-$lang->execution->menu->settings['subMenu'] = new stdclass();
+$lang->execution->menu->settings['subMenu'] = new stdclass();
$lang->execution->menu->settings['subMenu']->view = array('link' => "$lang->overview|execution|view|executionID=%s", 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
$lang->execution->menu->settings['subMenu']->products = array('link' => "$lang->productCommon|execution|manageproducts|executionID=%s");
$lang->execution->menu->settings['subMenu']->team = array('link' => "{$lang->team->common}|execution|team|executionID=%s", 'alias' => 'managemembers');
@@ -375,7 +366,7 @@ $lang->execution->menu->settings['subMenu']->whitelist = array('link' => "$lang-
$lang->execution->dividerMenu = ',story,build,';
/* QA menu.*/
-$lang->qa->menu = new stdclass();
+$lang->qa->menu = new stdclass();
$lang->qa->menu->index = array('link' => "$lang->dashboard|qa|index");
$lang->qa->menu->bug = array('link' => "{$lang->bug->common}|bug|browse|productID=%s", 'subModule' => 'bug');
$lang->qa->menu->testcase = array('link' => "{$lang->testcase->shortCommon}|testcase|browse|productID=%s", 'subModule' => 'testcase,story');
@@ -406,7 +397,7 @@ $lang->qa->menuOrder[45] = 'automation';
$lang->qa->dividerMenu = ',bug,testtask,caselib,';
/* DevOps menu. */
-$lang->devops->menu = new stdclass();
+$lang->devops->menu = new stdclass();
$lang->devops->menu->code = array('link' => "{$lang->repo->common}|repo|browse|repoID=%s", 'alias' => 'diff,view,revision,log,blame,showsynccommit');
$lang->devops->menu->mr = array('link' => "{$lang->devops->mr}|mr|browse|repoID=%s");
$lang->devops->menu->compile = array('link' => "{$lang->devops->compile}|job|browse|repoID=%s", 'subModule' => 'compile,job');
@@ -434,16 +425,16 @@ $lang->devops->menu->set['subMenu']->setrules = array('link' => "{$lang->devops
$lang->kanban->menu = new stdclass();
/* Doc menu. */
-$lang->doc->menu = new stdclass();
+$lang->doc->menu = new stdclass();
$lang->doc->menu->dashboard = array('link' => "{$lang->dashboard}|doc|index");
$lang->doc->menu->recent = array('link' => "{$lang->doc->recent}|doc|browse|browseTyp=byediteddate", 'alias' => 'recent');
$lang->doc->menu->my = array('link' => "{$lang->doc->my}|doc|browse|browseTyp=openedbyme", 'alias' => 'my');
$lang->doc->menu->collect = array('link' => "{$lang->doc->favorite}|doc|browse|browseTyp=collectedbyme", 'alias' => 'collect');
$lang->doc->menu->product = array('link' => "{$lang->doc->product}|doc|tableContents|type=product", 'alias' => 'showfiles,product');
$lang->doc->menu->api = array('link' => "{$lang->doc->api}|api|index", 'alias' => 'api');
-if($config->systemMode == 'new') $lang->doc->menu->project = array('link' => "{$lang->doc->project}|doc|tableContents|type=project", 'alias' => 'showfiles,project');
-$lang->doc->menu->execution = array('link' => "{$lang->doc->execution}|doc|tableContents|type=execution", 'alias' => 'showfiles,execution');
+$lang->doc->menu->project = array('link' => "{$lang->doc->project}|doc|tableContents|type=project", 'alias' => 'showfiles,project');
$lang->doc->menu->custom = array('link' => "{$lang->doc->custom}|doc|tableContents|type=custom", 'alias' => 'custom');
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->doc->menu->execution = array('link' => "{$lang->doc->execution}|doc|tableContents|type=execution", 'alias' => 'showfiles,execution');
$lang->doc->dividerMenu = ',product,';
@@ -453,15 +444,15 @@ $lang->doc->menuOrder[10] = 'recent';
$lang->doc->menuOrder[15] = 'my';
$lang->doc->menuOrder[20] = 'collect';
$lang->doc->menuOrder[25] = 'product';
-if($config->systemMode == 'new') $lang->doc->menuOrder[30] = 'project';
-$lang->doc->menuOrder[35] = 'execution';
+$lang->doc->menuOrder[30] = 'project';
$lang->doc->menuOrder[36] = 'api';
$lang->doc->menuOrder[40] = 'custom';
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->doc->menuOrder[35] = 'execution';
$lang->doc->menu->product['subMenu'] = new stdclass();
-if($config->systemMode == 'new') $lang->doc->menu->project['subMenu'] = new stdclass();
-$lang->doc->menu->execution['subMenu'] = new stdclass();
-$lang->doc->menu->custom['subMenu'] = new stdclass();
+$lang->doc->menu->project['subMenu'] = new stdclass();
+$lang->doc->menu->custom['subMenu'] = new stdclass();
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->doc->menu->execution['subMenu'] = new stdclass();
$lang->doc->menu->api['subMenu'] = new stdclass();
$lang->doc->menu->api['subMenu']->index = array('link' => "{$lang->doc->apiDoc}|api|index|libID=%s", 'alias' => 'create,edit');
@@ -512,10 +503,7 @@ $lang->admin->menu->model['dropMenu']->allModel = array('link' => "{$lang->globa
if($config->edition == 'max') $lang->admin->menu->model['dropMenu']->scrum = array('link' => "{$lang->scrumModel}|auditcl|scrumbrowse|processID=0&browseType=scrum", 'subModule' => 'auditcl,process,activity,zoutput,classify,');
-if($config->systemMode == 'new')
-{
- $lang->admin->menu->model['dropMenu']->waterfall = array('link' => "{$lang->waterfallModel}|stage|setType|", 'subModule' => 'stage,auditcl,cmcl,process,activity,zoutput,classify,reviewcl,reviewsetting,design');
-}
+$lang->admin->menu->model['dropMenu']->waterfall = array('link' => "{$lang->waterfallModel}|stage|setType|", 'subModule' => 'stage,auditcl,cmcl,process,activity,zoutput,classify,reviewcl,reviewsetting,design');
$lang->admin->menu->allModel['subMenu'] = new stdclass();
$lang->admin->menu->allModel['subMenu']->storyConcept = array('link' => "{$lang->storyConcept}|custom|browsestoryconcept|");
diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php
index a27488d59e..dd93f2b400 100644
--- a/module/common/lang/zh-cn.php
+++ b/module/common/lang/zh-cn.php
@@ -160,7 +160,7 @@ $lang->my->common = '地盘';
$lang->program->common = '项目集';
$lang->product->common = '产品';
$lang->project->common = '项目';
-$lang->execution->common = $config->systemMode == 'new' ? '执行' : $lang->executionCommon;
+$lang->execution->common = '执行';
$lang->kanban->common = '看板';
$lang->qa->common = '测试';
$lang->devops->common = 'DevOps';
diff --git a/module/common/model.php b/module/common/model.php
index 7532ce25be..fe83b77fde 100644
--- a/module/common/model.php
+++ b/module/common/model.php
@@ -619,15 +619,14 @@ class commonModel extends model
if(empty($object)) unset($lang->createIcons['story'], $lang->createIcons['task'], $lang->createIcons['execution']);
}
- if($config->edition == 'open') unset($lang->createIcons['effort']);
- if($config->systemMode == 'classic') unset($lang->createIcons['project'], $lang->createIcons['program']);
+ if($config->edition == 'open') unset($lang->createIcons['effort']);
+ if($config->systemMode != 'new') unset($lang->createIcons['program']);
+ if(!isset($config->projectMode) || $config->projectMode == 'noExecution') unset($lang->createIcons['execution']);
+
/* Check whether the creation permission is available, and print create buttons. */
foreach($lang->createIcons as $objectType => $objectIcon)
{
- /* Change icon when object type is execution and mode is classic. */
- if($config->systemMode == 'classic' and $objectType == 'execution') $objectIcon = 'project';
-
$createMethod = 'create';
$module = $objectType == 'kanbanspace' ? 'kanban' : $objectType;
if($objectType == 'effort') $createMethod = 'batchCreate';
diff --git a/module/custom/lang/zh-cn.php b/module/custom/lang/zh-cn.php
index 4d9a67aeeb..9df24eb8c7 100644
--- a/module/custom/lang/zh-cn.php
+++ b/module/custom/lang/zh-cn.php
@@ -56,9 +56,7 @@ $lang->custom->role = '职位';
$lang->custom->dept = '部门';
$lang->custom->code = $lang->code;
$lang->custom->setCode = '是否启用代号';
-
-if($config->systemMode == 'new') $lang->custom->execution = '执行';
-if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = $lang->executionCommon;
+$lang->custom->execution = '执行';
$lang->custom->unitList['efficiency'] = '工时/';
$lang->custom->unitList['manhour'] = '人时/';
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index c0fd3dd323..7846a5d053 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -7528,4 +7528,46 @@ class upgradeModel extends model
}
return true;
}
+
+ /*
+ * Upgrade from classic mode of 15 version to the lite mode of 18 version.
+ *
+ * @access public
+ * @return bool
+ */
+ public function classic2Lite()
+ {
+ /* Set mode as lite. */
+ $this->loadModel('setting')->setItem('system.common.global.mode', 'lite');
+ /* Set project mode as noExecution. */
+ $this->loadModel('setting')->setItem('system.common.global.projectMode', 'noExecution');
+
+ $defaultProgram = $this->config->global->defaultProgram;
+
+ $projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('deleted')->eq('0')->andWhere('project')->eq(0)->andWhere('type')->eq('sprint')->fetchAll('id');
+
+ $this->dao->update(TABLE_PRODUCT)->set('program')->eq($defaultProgram)->exec();
+
+ /* Add default execution for project. */
+ foreach($projects as $project)
+ {
+ $this->dao->update(TABLE_PROJECT)->set('noExecution')->eq('1')->set('type')->eq('project')->set('parent')->eq($defaultProgram)->set('path')->eq(",{$defaultProgram},{$project->id},")->where('id')->eq($project->id)->exec();
+
+ $execution = clone $project;
+ $execution->project = $project->id;
+ $execution->parent = $project->id;
+ $execution->grade = 1;
+ unset($execution->id);
+
+ $this->dao->insert(TABLE_PROJECT)->data($execution)->autoCheck()->exec();
+ if(dao::isError()) return false;
+
+ $executionID = $this->dao->lastInsertID();
+ $this->dao->update(TABLE_PROJECT)->set('path')->eq(",{$project->id},{$executionID},")->where('id')->eq($executionID)->exec();
+
+ $this->dao->update(TABLE_TASK)->set('execution')->eq($executionID)->where('project')->eq($project->id)->exec();
+ }
+
+ return !dao::isError();
+ }
}
From 3d54c6ea822ac3e5865f8fc2fb2fb7c31a4b655d Mon Sep 17 00:00:00 2001
From: wangyuting2 <851424971@qq.com>
Date: Fri, 16 Sep 2022 01:25:47 +0000
Subject: [PATCH 4/8] * Finish task #69256.
---
module/upgrade/control.php | 14 +-
module/upgrade/lang/de.php | 1 +
module/upgrade/lang/en.php | 1 +
module/upgrade/lang/fr.php | 1 +
module/upgrade/lang/vi.php | 1 +
module/upgrade/lang/zh-cn.php | 1 +
module/upgrade/model.php | 229 ++++++++++++++++++-
module/upgrade/view/selectmergemode.html.php | 4 +-
8 files changed, 244 insertions(+), 8 deletions(-)
diff --git a/module/upgrade/control.php b/module/upgrade/control.php
index 22c0fef9f2..d8d5593280 100644
--- a/module/upgrade/control.php
+++ b/module/upgrade/control.php
@@ -635,18 +635,22 @@ class upgrade extends control
* Select the merge mode when upgrading to zentaopms 18.0.
*
* @param string $fromVersion
+ * @param string $mode lean | new
* @access public
* @return void
*/
- public function selectMergeMode($fromVersion)
+ public function selectMergeMode($fromVersion, $mode = 'lean')
{
if($_POST)
{
- $mode = $this->post->mode;
- if($mode == 'project') echo 'execute mergeData method';
- if($mode == 'execution') echo 'execute mergeData method';
- if($mode == 'manually') $this->locate(inlink('mergeProgram'));
+ $mergeMode = $this->post->projectType;
+ if($mergeMode == 'manually') $this->locate(inlink('mergeProgram'));
+ $program = $this->upgrade->createDefaultProgram();
+ if($mergeMode == 'project') $this->upgrade->upgradeInProjectMode($program->id);
+ if($mergeMode == 'execution') $this->upgrade->upgradeInExecutionMode($program->id);
+
+ if(dao::isError()) return print(js::error(dao::getError()));
$this->locate(inlink('afterExec', "fromVersion=$fromVersion"));
}
$this->view->title = $this->lang->upgrade->selectMergeMode;
diff --git a/module/upgrade/lang/de.php b/module/upgrade/lang/de.php
index 1e0920a538..14ddc72fc1 100644
--- a/module/upgrade/lang/de.php
+++ b/module/upgrade/lang/de.php
@@ -102,6 +102,7 @@ $lang->upgrade->selectedModeTips['new'] = 'Switching to the program manageme
$lang->upgrade->line = 'Product Line';
$lang->upgrade->allLines = "All Product Lines";
$lang->upgrade->program = 'Merge Project';
+$lang->upgrade->defaultProgram = 'Default Program';
$lang->upgrade->existProgram = 'Existing programs';
$lang->upgrade->existProject = 'Existing projects';
$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines';
diff --git a/module/upgrade/lang/en.php b/module/upgrade/lang/en.php
index 882f75a2ac..11703f3871 100644
--- a/module/upgrade/lang/en.php
+++ b/module/upgrade/lang/en.php
@@ -102,6 +102,7 @@ $lang->upgrade->selectedModeTips['new'] = 'Switching to the program manageme
$lang->upgrade->line = 'Product Line';
$lang->upgrade->allLines = "All Product Lines";
$lang->upgrade->program = 'Merge Project';
+$lang->upgrade->defaultProgram = 'Default Program';
$lang->upgrade->existProgram = 'Existing programs';
$lang->upgrade->existProject = 'Existing projects';
$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines';
diff --git a/module/upgrade/lang/fr.php b/module/upgrade/lang/fr.php
index 02e766e464..79555a5524 100644
--- a/module/upgrade/lang/fr.php
+++ b/module/upgrade/lang/fr.php
@@ -102,6 +102,7 @@ $lang->upgrade->selectedModeTips['new'] = 'Switching to the program manageme
$lang->upgrade->line = 'Product Line';
$lang->upgrade->allLines = "All Product Lines";
$lang->upgrade->program = 'Merge Project';
+$lang->upgrade->defaultProgram = 'Default Program';
$lang->upgrade->existProgram = 'Existing programs';
$lang->upgrade->existProject = 'Existing projects';
$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines';
diff --git a/module/upgrade/lang/vi.php b/module/upgrade/lang/vi.php
index e3f454e7c2..06aab7e2c5 100644
--- a/module/upgrade/lang/vi.php
+++ b/module/upgrade/lang/vi.php
@@ -99,6 +99,7 @@ $lang->upgrade->selectedModeTips['new'] = 'Switching to the program manageme
$lang->upgrade->line = 'Product Line';
$lang->upgrade->allLines = "All Product Lines";
$lang->upgrade->program = 'Merge Project';
+$lang->upgrade->defaultProgram = 'Default Program';
$lang->upgrade->existProgram = 'Existing programs';
$lang->upgrade->existProject = 'Existing projects';
$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines';
diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php
index cc919f92ef..20a409caab 100644
--- a/module/upgrade/lang/zh-cn.php
+++ b/module/upgrade/lang/zh-cn.php
@@ -102,6 +102,7 @@ $lang->upgrade->selectedModeTips['new'] = '切换为项目集管理模式需
$lang->upgrade->line = '产品线';
$lang->upgrade->allLines = "所有{$lang->productCommon}线";
$lang->upgrade->program = '目标项目集和项目';
+$lang->upgrade->defaultProgram = '默认项目集';
$lang->upgrade->existProgram = '已有项目集';
$lang->upgrade->existProject = '已有项目';
$lang->upgrade->existLine = '已有' . $lang->productCommon . '线';
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index c0fd3dd323..4a9788acdd 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -4941,7 +4941,7 @@ class upgradeModel extends model
* @access public
* @return void
*/
- public function processMergedData($programID, $projectID, $lineID, $productIdList = array(), $sprintIdList = array())
+ public function processMergedData($programID, $projectID, $lineID = 0, $productIdList = array(), $sprintIdList = array())
{
/* Product linked objects. */
$this->dao->update(TABLE_RELEASE)->set('project')->eq($projectID)->where('product')->in($productIdList)->exec();
@@ -7528,4 +7528,231 @@ class upgradeModel extends model
}
return true;
}
+
+ /**
+ * Create a default program.
+ *
+ * @access public
+ * @return object
+ */
+ public function createDefaultProgram()
+ {
+ $program = $this->dao->select('*')->from(TABLE_PROGRAM)->where('name')->eq($this->lang->upgrade->defaultProgram)->fetch();
+ if($program) return $program;
+
+ $account = isset($this->app->user->account) ? $this->app->user->account : '';
+
+ $program = new stdclass();
+ $program->name = $this->lang->upgrade->defaultProgram;
+ $program->type = 'program';
+ $program->status = 'doing';
+ $program->begin = helper::now();
+ $program->end = LONG_TIME;
+ $program->openedBy = $account;
+ $program->openedDate = helper::now();
+ $program->openedVersion = $this->config->version;
+ $program->acl = 'open';
+ $program->days = $this->computeDaysDelta($program->begin, $program->end);
+ $program->grade = 1;
+ $program->vision = 'rnd';
+
+ $this->app->loadLang('program');
+ $this->app->loadLang('project');
+ $this->lang->project->name = $this->lang->program->name;
+
+ $this->dao->insert(TABLE_PROGRAM)->data($program)->exec();
+ if(dao::isError()) return false;
+
+ $programID = $this->dao->lastInsertId();
+
+ $this->dao->update(TABLE_PROGRAM)->set('path')->eq(",{$programID},")->set('`order`')->eq($programID * 5)->where('id')->eq($programID)->exec();
+ $this->loadModel('action')->create('program', $programID, 'openedbysystem');
+
+ return $this->loadModel('program')->getByID($programID);
+ }
+
+ /**
+ * Historical projects are upgraded by project.
+ *
+ * @param int $programID
+ * @access public
+ * @return bool
+ */
+ public function upgradeInProjectMode($programID)
+ {
+ $this->loadModel('action');
+ $now = helper::now();
+ $account = isset($this->app->user->account) ? $this->app->user->account : '';
+
+ $noMergedSprints = $this->getNoMergedSprints();
+ if(!$noMergedSprints) return true;
+
+ foreach($noMergedSprints as $sprint)
+ {
+ $project = new stdclass();
+ $project->name = $sprint->name;
+ $project->type = 'project';
+ $project->model = 'scrum';
+ $project->parent = $programID;
+ $project->status = $sprint->status;
+ $project->begin = $sprint->begin;
+ $project->end = isset($sprint->end) ? $sprint->end : LONG_TIME;
+ $project->days = $this->computeDaysDelta($project->begin, $project->end);
+ $project->PM = $sprint->PM;
+ $project->auth = 'extend';
+ $project->openedBy = $account;
+ $project->openedDate = $now;
+ $project->openedVersion = $this->config->version;
+ $project->lastEditedBy = $account;
+ $project->lastEditedDate = $now;
+ $project->grade = 2;
+ $project->acl = $sprint->acl == 'open' ? 'open' : 'private';
+
+ $this->dao->insert(TABLE_PROJECT)->data($project)->check('name', 'unique', "type='project' AND parent=$programID AND deleted='0'")->exec();
+ if(dao::isError()) return false;
+
+ $projectID = $this->dao->lastInsertId();
+
+ $this->action->create('project', $projectID, 'openedbysystem');
+ if($project->status == 'closed') $this->action->create('project', $projectID, 'closedbysystem');
+
+ $project->id = $projectID;
+ $this->createProjectDocLib($project);
+ $this->processMergedData($programID, $projectID, '', array(), array($sprint->id));
+ }
+
+ $this->fixProjectPath($programID);
+
+ if(dao::isError()) return false;
+ return true;
+ }
+
+ /**
+ * Historical projects are upgraded by execution.
+ *
+ * @param int $programID
+ * @access public
+ * @return bool
+ */
+ public function upgradeInExecutionMode($programID)
+ {
+ $this->loadModel('action');
+ $now = helper::now();
+ $account = isset($this->app->user->account) ? $this->app->user->account : '';
+
+ $noMergedSprints = $this->getNoMergedSprints();
+ if(!$noMergedSprints) return true;
+
+ $projects = array();
+ foreach($noMergedSprints as $sprint)
+ {
+ $year = date('Y', strtotime($sprint->openedDate));
+ $projects[$year][$sprint->id] = $sprint;
+ }
+
+ foreach($projects as $year => $sprints)
+ {
+ $project = new stdclass();
+ $project->name = $year;
+ $project->type = 'project';
+ $project->model = 'scrum';
+ $project->parent = $programID;
+ $project->auth = 'extend';
+ $project->begin = '';
+ $project->end = '';
+ $project->openedBy = $account;
+ $project->openedDate = $now;
+ $project->openedVersion = $this->config->version;
+ $project->lastEditedBy = $account;
+ $project->lastEditedDate = $now;
+ $project->grade = 2;
+ $project->acl = 'open';
+
+ $projectStatus = 'closed';
+ foreach($sprints as $sprint)
+ {
+ if(!$project->begin || $sprint->begin < $project->begin) $project->begin = $sprint->begin;
+ if(!$project->end || $sprint->end > $project->end) $project->end = $sprint->end;
+ if($sprint->status != 'closed') $projectStatus = 'doing';
+ }
+ $project->status = $projectStatus;
+ $project->days = $this->computeDaysDelta($project->begin, $project->end);
+
+ $this->dao->insert(TABLE_PROJECT)->data($project)->exec();
+ if(dao::isError()) return false;
+
+ $projectID = $this->dao->lastInsertId();
+
+ $this->action->create('project', $projectID, 'openedbysystem');
+ if($project->status == 'closed') $this->action->create('project', $projectID, 'closedbysystem');
+
+ $project->id = $projectID;
+ $this->createProjectDocLib($project);
+ $this->processMergedData($programID, $projectID, '', array(), array_keys($sprints));
+ }
+
+ $this->fixProjectPath($programID);
+
+ if(dao::isError()) return false;
+ return true;
+ }
+
+ /**
+ * Get sprints has not been merged.
+ *
+ * @access public
+ * @return array
+ */
+ public function getNoMergedSprints()
+ {
+ $noMergedSprints = $this->dao->select('*')->from(TABLE_PROJECT)
+ ->where('project')->eq(0)
+ ->andWhere('vision')->eq('rnd')
+ ->andWhere('type')->eq('sprint')
+ ->andWhere('deleted')->eq(0)
+ ->fetchAll('id');
+
+ $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)) return false;
+ return $noMergedSprints;
+ }
+
+ /**
+ * Create doc lib for project.
+ *
+ * @param object $project
+ * @access public
+ * @return void
+ */
+ public function createProjectDocLib($project)
+ {
+ $this->app->loadLang('doc');
+
+ $lib = new stdclass();
+ $lib->project = $project->id;
+ $lib->name = $this->lang->doclib->main['project'];
+ $lib->type = 'project';
+ $lib->main = '1';
+ $lib->acl = $project->acl != 'program' ? $project->acl : 'custom';
+ $this->dao->insert(TABLE_DOCLIB)->data($lib)->exec();
+ }
+
+ /**
+ * Fix the project path under the program.
+ *
+ * @param int $programID
+ * @access public
+ * @return void
+ */
+ public function fixProjectPath($programID)
+ {
+ $this->dao->update(TABLE_PROJECT)
+ ->set("path = CONCAT(',{$programID},', id, ',')")->set("`order` = `id` * 5")
+ ->where('type')->eq('project')
+ ->andWhere('parent')->eq($programID)
+ ->andWhere('grade')->eq('2')
+ ->exec();
+ }
}
diff --git a/module/upgrade/view/selectmergemode.html.php b/module/upgrade/view/selectmergemode.html.php
index 4dbcd69461..84bf3f2c18 100644
--- a/module/upgrade/view/selectmergemode.html.php
+++ b/module/upgrade/view/selectmergemode.html.php
@@ -25,9 +25,9 @@
upgrade->mergeMode;?>
upgrade->mergeModes as $mode => $label):?>
-
+
-
+ >
upgrade->{$tipLang};?>
From e8481ba4a235de5a2238571c7e9f8c998ac31b0e Mon Sep 17 00:00:00 2001
From: daitingting
Date: Fri, 16 Sep 2022 02:02:50 +0000
Subject: [PATCH 5/8] * Finish task #69245.
---
module/custom/view/header.html.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module/custom/view/header.html.php b/module/custom/view/header.html.php
index d797fc4724..7c5c481711 100644
--- a/module/custom/view/header.html.php
+++ b/module/custom/view/header.html.php
@@ -20,7 +20,7 @@
if($object == 'user') common::printLink('custom', 'required', "", "{$lang->custom->required} ", '', "class='btn btn-link' id='requiredTab'");
}
- if($config->systemMode == 'classic') common::printLink('custom', 'mode', "", "{$lang->custom->mode} ", '', "class='btn btn-link' id='modeTab'");
+ common::printLink('custom', 'mode', "", "{$lang->custom->mode} ", '', "class='btn btn-link' id='modeTab'");
?>
From c44bc35ec694865512088915815071a5d217a69d Mon Sep 17 00:00:00 2001
From: daitingting
Date: Fri, 16 Sep 2022 02:38:51 +0000
Subject: [PATCH 6/8] * Adjust language.
---
module/block/lang/de.php | 40 +++++++++++++++---------------------
module/block/lang/en.php | 40 +++++++++++++++---------------------
module/block/lang/fr.php | 40 +++++++++++++++---------------------
module/common/lang/en.php | 2 +-
module/custom/lang/de.php | 8 +++-----
module/custom/lang/en.php | 8 +++-----
module/custom/lang/fr.php | 8 +++-----
module/custom/lang/zh-cn.php | 4 ++--
8 files changed, 63 insertions(+), 87 deletions(-)
diff --git a/module/block/lang/de.php b/module/block/lang/de.php
index bc16a941ea..655c4df0de 100644
--- a/module/block/lang/de.php
+++ b/module/block/lang/de.php
@@ -284,14 +284,11 @@ $lang->block->default['full']['my']['4']['grid'] = 8;
$lang->block->default['full']['my']['4']['source'] = 'project';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
-if($config->systemMode == 'new')
-{
- $lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
- $lang->block->default['full']['my']['5']['block'] = 'contribute';
- $lang->block->default['full']['my']['5']['source'] = '';
- $lang->block->default['full']['my']['5']['grid'] = 4;
- $lang->block->default['full']['my']['5']['params']['count'] = '20';
-}
+$lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
+$lang->block->default['full']['my']['5']['block'] = 'contribute';
+$lang->block->default['full']['my']['5']['source'] = '';
+$lang->block->default['full']['my']['5']['grid'] = 4;
+$lang->block->default['full']['my']['5']['params']['count'] = '20';
$lang->block->default['full']['my']['6']['title'] = 'Recent Project';
$lang->block->default['full']['my']['6']['block'] = 'recentproject';
@@ -316,19 +313,16 @@ $lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
-if($config->systemMode == 'new')
-{
- $lang->block->default['full']['my']['9']['title'] = 'Project List';
- $lang->block->default['full']['my']['9']['block'] = 'project';
- $lang->block->default['full']['my']['9']['source'] = 'project';
- $lang->block->default['full']['my']['9']['grid'] = 8;
-}
+$lang->block->default['full']['my']['9']['title'] = 'Project List';
+$lang->block->default['full']['my']['9']['block'] = 'project';
+$lang->block->default['full']['my']['9']['source'] = 'project';
+$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = 'Project List';
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
-if($config->systemMode == 'classic')
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution')
{
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['source'] = 'project';
@@ -359,18 +353,18 @@ $lang->block->availableBlocks->issue = 'My Issues';
$lang->block->availableBlocks->meeting = 'My Meetings';
$lang->block->availableBlocks->feedback = 'My Feedbacks';
-if($config->systemMode == 'new') $lang->block->moduleList['project'] = 'Project';
-$lang->block->moduleList['product'] = $lang->productCommon;
-$lang->block->moduleList['execution'] = $lang->execution->common;
-$lang->block->moduleList['qa'] = 'QA';
-$lang->block->moduleList['todo'] = 'Todos';
+$lang->block->moduleList['product'] = $lang->productCommon;
+$lang->block->moduleList['project'] = 'Project';
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->block->moduleList['execution'] = $lang->execution->common;
+$lang->block->moduleList['qa'] = 'QA';
+$lang->block->moduleList['todo'] = 'Todos';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Project';
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
-if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
+$lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
@@ -573,7 +567,7 @@ $lang->block->flowchart['admin'] = array('Administrator', 'Abteilung erstellen
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
$lang->block->flowchart['product'] = array($lang->productCommon . ' Besitzer', $lang->productCommon . ' erstellen', 'Module pflegen', 'Pläne pflegen', 'Storys pflegen', 'Release erstellen');
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
-if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
+$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['dev'] = array('Entwickler', 'Aufgabe/Bugs anfordern', 'Update Status', 'Aufgaben/Bugs abschließen');
$lang->block->flowchart['tester'] = array('QS Team', 'Fälle erstellen', 'Fälle ausführen', 'Bug Berichte', 'Bugs überprüfen', 'Bugs schließen');
diff --git a/module/block/lang/en.php b/module/block/lang/en.php
index 835b29776e..214b1fd45f 100644
--- a/module/block/lang/en.php
+++ b/module/block/lang/en.php
@@ -284,14 +284,11 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
-if($config->systemMode == 'new')
-{
- $lang->block->default['full']['my']['5']['title'] = 'Project Statistic';
- $lang->block->default['full']['my']['5']['block'] = 'statistic';
- $lang->block->default['full']['my']['5']['source'] = 'project';
- $lang->block->default['full']['my']['5']['grid'] = 8;
- $lang->block->default['full']['my']['5']['params']['count'] = '20';
-}
+$lang->block->default['full']['my']['5']['title'] = 'Project Statistic';
+$lang->block->default['full']['my']['5']['block'] = 'statistic';
+$lang->block->default['full']['my']['5']['source'] = 'project';
+$lang->block->default['full']['my']['5']['grid'] = 8;
+$lang->block->default['full']['my']['5']['params']['count'] = '20';
$lang->block->default['full']['my']['6']['title'] = 'Personal Contribution';
$lang->block->default['full']['my']['6']['block'] = 'contribute';
@@ -316,19 +313,16 @@ $lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
-if($config->systemMode == 'new')
-{
- $lang->block->default['full']['my']['9']['title'] = 'Manpower Input';
- $lang->block->default['full']['my']['9']['block'] = 'projectteam';
- $lang->block->default['full']['my']['9']['source'] = 'project';
- $lang->block->default['full']['my']['9']['grid'] = 8;
-}
+$lang->block->default['full']['my']['9']['title'] = 'Manpower Input';
+$lang->block->default['full']['my']['9']['block'] = 'projectteam';
+$lang->block->default['full']['my']['9']['source'] = 'project';
+$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = 'Project List';
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
-if($config->systemMode == 'classic')
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution')
{
$lang->block->default['full']['my']['10']['block'] = 'execution';
$lang->block->default['full']['my']['10']['source'] = 'execution';
@@ -359,18 +353,18 @@ $lang->block->availableBlocks->issue = 'Issues';
$lang->block->availableBlocks->meeting = 'Meetings';
$lang->block->availableBlocks->feedback = 'My Feedbacks';
-if($config->systemMode == 'new') $lang->block->moduleList['project'] = 'Project';
-$lang->block->moduleList['product'] = $lang->productCommon;
-$lang->block->moduleList['execution'] = $lang->execution->common;
-$lang->block->moduleList['qa'] = 'Test';
-$lang->block->moduleList['todo'] = 'Todo';
+$lang->block->moduleList['product'] = $lang->productCommon;
+$lang->block->moduleList['project'] = 'Project';
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->block->moduleList['execution'] = $lang->execution->common;
+$lang->block->moduleList['qa'] = 'Test';
+$lang->block->moduleList['todo'] = 'Todo';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Project';
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
-if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = 'Project Manpower Input';
+$lang->block->modules['project']->availableBlocks->projectteam = 'Project Manpower Input';
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
@@ -573,7 +567,7 @@ $lang->block->flowchart['admin'] = array('Administrator', 'Add Departments', '
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
$lang->block->flowchart['product'] = array($lang->productCommon . ' Owner', 'Add ' . $lang->productCommon, 'Maintain Modules', 'Maintain Plans', 'Maintain Stories', 'Create Releases');
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
-if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('Project Manager', 'Add ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
+$lang->block->flowchart['project'] = array('Project Manager', 'Add ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['dev'] = array('Dev Team', 'Claim Tasks/Bugs', 'Design', 'Update Status', 'Finish Tasks/Bugs', 'Commit Code');
$lang->block->flowchart['tester'] = array('Test Team', 'Write Cases', 'Run Cases', 'Report Bugs', 'Verify Bugs', 'Close Bugs');
diff --git a/module/block/lang/fr.php b/module/block/lang/fr.php
index 2b662628c3..d0e712551e 100644
--- a/module/block/lang/fr.php
+++ b/module/block/lang/fr.php
@@ -284,14 +284,11 @@ $lang->block->default['full']['my']['4']['grid'] = 8;
$lang->block->default['full']['my']['4']['source'] = 'project';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
-if($config->systemMode == 'new')
-{
- $lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
- $lang->block->default['full']['my']['5']['block'] = 'contribute';
- $lang->block->default['full']['my']['5']['source'] = '';
- $lang->block->default['full']['my']['5']['grid'] = 4;
- $lang->block->default['full']['my']['5']['params']['count'] = '20';
-}
+$lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
+$lang->block->default['full']['my']['5']['block'] = 'contribute';
+$lang->block->default['full']['my']['5']['source'] = '';
+$lang->block->default['full']['my']['5']['grid'] = 4;
+$lang->block->default['full']['my']['5']['params']['count'] = '20';
$lang->block->default['full']['my']['6']['title'] = 'Recent Projecets';
$lang->block->default['full']['my']['6']['block'] = 'recentproject';
@@ -316,19 +313,16 @@ $lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
-if($config->systemMode == 'new')
-{
- $lang->block->default['full']['my']['9']['title'] = 'Project List';
- $lang->block->default['full']['my']['9']['block'] = 'project';
- $lang->block->default['full']['my']['9']['source'] = 'project';
- $lang->block->default['full']['my']['9']['grid'] = 8;
-}
+$lang->block->default['full']['my']['9']['title'] = 'Project List';
+$lang->block->default['full']['my']['9']['block'] = 'project';
+$lang->block->default['full']['my']['9']['source'] = 'project';
+$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = 'Project List';
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
-if($config->systemMode == 'classic')
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution')
{
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['source'] = 'project';
@@ -359,18 +353,18 @@ $lang->block->availableBlocks->issue = 'My Issues';
$lang->block->availableBlocks->meeting = 'My Meetings';
$lang->block->availableBlocks->feedback = 'My Feedbacks';
-if($config->systemMode == 'new') $lang->block->moduleList['project'] = 'Project';
-$lang->block->moduleList['product'] = $lang->productCommon;
-$lang->block->moduleList['execution'] = $lang->execution->common;
-$lang->block->moduleList['qa'] = 'Test';
-$lang->block->moduleList['todo'] = 'Todo';
+$lang->block->moduleList['product'] = $lang->productCommon;
+$lang->block->moduleList['project'] = 'Project';
+if(!isset($config->projectMode) || $config->projectMode != 'noExecution') $lang->block->moduleList['execution'] = $lang->execution->common;
+$lang->block->moduleList['qa'] = 'Test';
+$lang->block->moduleList['todo'] = 'Todo';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Projects';
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
-if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
+$lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
@@ -573,7 +567,7 @@ $lang->block->flowchart['admin'] = array('Administrateur', 'Ajoute Compartimen
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
$lang->block->flowchart['product'] = array($lang->productCommon . ' Owner', 'Ajoute ' . $lang->productCommon . '/Modules', 'Ajoute ' . $lang->executionCommon . 's', 'Ajoute Stories', 'Maintient Plans', 'Crée Releases');
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
-if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
+$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['dev'] = array('Développeurs', 'Réclament Tâches/Bugs', 'Effectuent Tâches', 'Corrigent Bugs', 'MàJ Statuts', 'Terminent Tâches/Bugs');
$lang->block->flowchart['tester'] = array('Testeurs', 'Rédigent CasTests', 'Jouent CasTests', 'Détectent Bugs', 'Vérifient Corrections', 'Ferment Bugs');
diff --git a/module/common/lang/en.php b/module/common/lang/en.php
index 4dac83fa31..15b36e122e 100644
--- a/module/common/lang/en.php
+++ b/module/common/lang/en.php
@@ -160,7 +160,7 @@ $lang->my->common = 'My';
$lang->program->common = 'Program';
$lang->product->common = 'Product';
$lang->project->common = 'Project';
-$lang->execution->common = $config->systemMode == 'new' ? 'Execution' : $lang->executionCommon;
+$lang->execution->common = 'Execution';
$lang->kanban->common = 'Kanban';
$lang->qa->common = 'QA';
$lang->devops->common = 'DevOps';
diff --git a/module/custom/lang/de.php b/module/custom/lang/de.php
index 91a0a869b9..f450a8002f 100644
--- a/module/custom/lang/de.php
+++ b/module/custom/lang/de.php
@@ -56,9 +56,7 @@ $lang->custom->role = 'Role';
$lang->custom->dept = 'Dept';
$lang->custom->code = $lang->code;
$lang->custom->setCode = 'Enable or Disable Code';
-
-if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
-if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = 'Execution';
+$lang->custom->execution = 'Execution';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
@@ -89,7 +87,7 @@ $lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
$lang->custom->closedKanban = 'Closed ' . $lang->custom->kanban;
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
-if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
+$lang->custom->object['project'] = 'Project';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['kanban'] = $lang->custom->kanban;
@@ -104,7 +102,7 @@ $lang->custom->object['block'] = 'ClosedBlock';
$lang->custom->object['flow'] = '流程';
$lang->custom->object['score'] = '积分';
-if($config->systemMode == 'new') $lang->custom->menuOrder[5] = 'project';
+$lang->custom->menuOrder[5] = 'project';
$lang->custom->menuOrder[10] = 'product';
$lang->custom->menuOrder[15] = 'execution';
$lang->custom->menuOrder[20] = 'kanban';
diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php
index e7f36d9a8e..6b83545b8e 100644
--- a/module/custom/lang/en.php
+++ b/module/custom/lang/en.php
@@ -56,9 +56,7 @@ $lang->custom->role = 'Role';
$lang->custom->dept = 'Dept';
$lang->custom->code = $lang->code;
$lang->custom->setCode = 'Enable or Disable Code';
-
-if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
-if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = $lang->executionCommon;
+$lang->custom->execution = 'Execution';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
@@ -89,7 +87,7 @@ $lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
$lang->custom->closedKanban = 'Closed ' . $lang->custom->kanban;
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
-if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
+$lang->custom->object['project'] = 'Project';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['kanban'] = $lang->custom->kanban;
@@ -104,7 +102,7 @@ $lang->custom->object['block'] = 'Block';
$lang->custom->object['flow'] = '流程';
$lang->custom->object['score'] = '积分';
-if($config->systemMode == 'new') $lang->custom->menuOrder[5] = 'project';
+$lang->custom->menuOrder[5] = 'project';
$lang->custom->menuOrder[10] = 'product';
$lang->custom->menuOrder[15] = 'execution';
$lang->custom->menuOrder[20] = 'kanban';
diff --git a/module/custom/lang/fr.php b/module/custom/lang/fr.php
index b7318ed979..01af67d707 100644
--- a/module/custom/lang/fr.php
+++ b/module/custom/lang/fr.php
@@ -56,9 +56,7 @@ $lang->custom->role = 'Role';
$lang->custom->dept = 'Dept';
$lang->custom->code = $lang->code;
$lang->custom->setCode = 'Activer ou Désactiver le Code';
-
-if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
-if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = 'Execution';
+$lang->custom->execution = 'Execution';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
@@ -89,7 +87,7 @@ $lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
$lang->custom->closedKanban = 'Closed ' . $lang->custom->kanban;
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
-if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
+$lang->custom->object['project'] = 'Project';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['kanban'] = $lang->custom->kanban;
@@ -104,7 +102,7 @@ $lang->custom->object['block'] = 'Bloc';
$lang->custom->object['flow'] = '流程';
$lang->custom->object['score'] = '积分';
-if($config->systemMode == 'new') $lang->custom->menuOrder[5] = 'project';
+$lang->custom->menuOrder[5] = 'project';
$lang->custom->menuOrder[10] = 'product';
$lang->custom->menuOrder[15] = 'execution';
$lang->custom->menuOrder[20] = 'kanban';
diff --git a/module/custom/lang/zh-cn.php b/module/custom/lang/zh-cn.php
index 9df24eb8c7..c378d31979 100644
--- a/module/custom/lang/zh-cn.php
+++ b/module/custom/lang/zh-cn.php
@@ -87,7 +87,7 @@ $lang->custom->closedExecution = '已关闭' . $lang->custom->execution;
$lang->custom->closedKanban = '已关闭' . $lang->custom->kanban;
$lang->custom->closedProduct = '已关闭' . $lang->productCommon;
-if($config->systemMode == 'new') $lang->custom->object['project'] = '项目';
+$lang->custom->object['project'] = '项目';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['kanban'] = $lang->custom->kanban;
@@ -102,7 +102,7 @@ $lang->custom->object['block'] = '区块';
$lang->custom->object['flow'] = '流程';
$lang->custom->object['score'] = '积分';
-if($config->systemMode == 'new') $lang->custom->menuOrder[5] = 'project';
+$lang->custom->menuOrder[5] = 'project';
$lang->custom->menuOrder[10] = 'product';
$lang->custom->menuOrder[15] = 'execution';
$lang->custom->menuOrder[20] = 'kanban';
From fc48995990f17e3535c7daefeec9a65237befb73 Mon Sep 17 00:00:00 2001
From: wangyuting2 <851424971@qq.com>
Date: Fri, 16 Sep 2022 06:10:54 +0000
Subject: [PATCH 7/8] * Fix noMergedSprints data bug.
---
module/upgrade/model.php | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index 3c0858ef43..f084216025 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -7747,18 +7747,12 @@ class upgradeModel extends model
*/
public function getNoMergedSprints()
{
- $noMergedSprints = $this->dao->select('*')->from(TABLE_PROJECT)
+ return $this->dao->select('*')->from(TABLE_PROJECT)
->where('project')->eq(0)
->andWhere('vision')->eq('rnd')
->andWhere('type')->eq('sprint')
->andWhere('deleted')->eq(0)
->fetchAll('id');
-
- $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)) return false;
- return $noMergedSprints;
}
/**
From 4964be7b3b7a6e67efb68a3e8e447fa4a10bf25f Mon Sep 17 00:00:00 2001
From: daitingting
Date: Fri, 16 Sep 2022 06:21:58 +0000
Subject: [PATCH 8/8] * Optimize codes.
---
module/upgrade/model.php | 44 +++++++++-------------------------------
1 file changed, 10 insertions(+), 34 deletions(-)
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index 3c0858ef43..443787236b 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -5009,12 +5009,12 @@ class upgradeModel extends model
foreach($sprints as $sprint)
{
$data = new stdclass();
- $data->project = $projectID;
- $data->parent = $projectID;
- $data->grade = 1;
- $data->path = ",{$projectID},{$sprint->id},";
- $data->type = 'sprint';
- $data->acl = $sprint->acl == 'custom' ? 'private' : $sprint->acl;
+ $data->project = $projectID;
+ $data->parent = $projectID;
+ $data->grade = 1;
+ $data->path = ",{$projectID},{$sprint->id},";
+ $data->type = 'sprint';
+ $data->acl = $sprint->acl == 'custom' ? 'private' : $sprint->acl;
$this->dao->update(TABLE_PROJECT)->data($data)->where('id')->eq($sprint->id)->exec();
@@ -7535,38 +7535,13 @@ class upgradeModel extends model
* @access public
* @return bool
*/
- public function classic2Lite()
+ public function classic2Lean()
{
- /* Set mode as lite. */
- $this->loadModel('setting')->setItem('system.common.global.mode', 'lite');
/* Set project mode as noExecution. */
$this->loadModel('setting')->setItem('system.common.global.projectMode', 'noExecution');
- $defaultProgram = $this->config->global->defaultProgram;
-
- $projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('deleted')->eq('0')->andWhere('project')->eq(0)->andWhere('type')->eq('sprint')->fetchAll('id');
-
- $this->dao->update(TABLE_PRODUCT)->set('program')->eq($defaultProgram)->exec();
-
- /* Add default execution for project. */
- foreach($projects as $project)
- {
- $this->dao->update(TABLE_PROJECT)->set('noExecution')->eq('1')->set('type')->eq('project')->set('parent')->eq($defaultProgram)->set('path')->eq(",{$defaultProgram},{$project->id},")->where('id')->eq($project->id)->exec();
-
- $execution = clone $project;
- $execution->project = $project->id;
- $execution->parent = $project->id;
- $execution->grade = 1;
- unset($execution->id);
-
- $this->dao->insert(TABLE_PROJECT)->data($execution)->autoCheck()->exec();
- if(dao::isError()) return false;
-
- $executionID = $this->dao->lastInsertID();
- $this->dao->update(TABLE_PROJECT)->set('path')->eq(",{$project->id},{$executionID},")->where('id')->eq($executionID)->exec();
-
- $this->dao->update(TABLE_TASK)->set('execution')->eq($executionID)->where('project')->eq($project->id)->exec();
- }
+ $programID = $this->createDefaultProgram();
+ $this->upgradeInProjectMode($programID);
return !dao::isError();
}
@@ -7649,6 +7624,7 @@ class upgradeModel extends model
$project->lastEditedDate = $now;
$project->grade = 2;
$project->acl = $sprint->acl == 'open' ? 'open' : 'private';
+ if($this->config->global->mode == 'classic') $project->noExecution = '1';
$this->dao->insert(TABLE_PROJECT)->data($project)->check('name', 'unique', "type='project' AND parent=$programID AND deleted='0'")->exec();
if(dao::isError()) return false;