From 392aa32c007983ea6e50826c157b0ad51749d2d9 Mon Sep 17 00:00:00 2001 From: wangyuting2 <851424971@qq.com> Date: Thu, 15 Sep 2022 03:11:09 +0000 Subject: [PATCH 1/8] * Add selectmergemode page. --- module/upgrade/control.php | 22 ++++++++ module/upgrade/css/selectmergemode.css | 7 +++ module/upgrade/lang/zh-cn.php | 53 ++++++++++++-------- module/upgrade/view/selectmergemode.html.php | 50 ++++++++++++++++++ 4 files changed, 112 insertions(+), 20 deletions(-) create mode 100644 module/upgrade/css/selectmergemode.css create mode 100644 module/upgrade/view/selectmergemode.html.php diff --git a/module/upgrade/control.php b/module/upgrade/control.php index fe176ea746..5eb47396e3 100644 --- a/module/upgrade/control.php +++ b/module/upgrade/control.php @@ -631,6 +631,28 @@ class upgrade extends control $this->display(); } + /** + * Select the merge mode when upgrading to zentaopms 18.0. + * + * @param string $fromVersion + * @access public + * @return void + */ + public function selectMergeMode($fromVersion) + { + if($_POST) + { + $mode = $this->post->mode; + if($mode == 'project') echo 'execute mergeData method'; + if($mode == 'execution') echo 'execute mergeData method'; + if($mode == 'manual') $this->locate(inlink('mergeProgram')); + + $this->locate(inlink('afterExec', "fromVersion=$fromVersion")); + } + $this->view->title = $this->lang->upgrade->selectMergeMode; + $this->display(); + } + /** * Rename object in upgrade. * diff --git a/module/upgrade/css/selectmergemode.css b/module/upgrade/css/selectmergemode.css new file mode 100644 index 0000000000..6a37cafcf0 --- /dev/null +++ b/module/upgrade/css/selectmergemode.css @@ -0,0 +1,7 @@ +table {margin: auto;} +.modal-dialog {width: 1000px} +.panel-body {padding: 40px 40px 20px 40px} +.panel-footer {padding-bottom: 20px;} +.checkbox, .radio {margin-top: 0px; margin-bottom: 20px;} +.tips {padding-top: 5px} +.btn-secondary {margin-right: 20px} diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php index 97450262e1..4223a44f32 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -99,26 +99,29 @@ $lang->upgrade->to15Mode['new'] = '全新项目集管理模式'; $lang->upgrade->selectedModeTips['classic'] = '后续您还可以在后台-自定义里面切换为全新项目集管理的模式。'; $lang->upgrade->selectedModeTips['new'] = '切换为项目集管理模式需要对之前的数据进行归并处理,系统会引导您完成这个操作。'; -$lang->upgrade->line = '产品线'; -$lang->upgrade->allLines = "所有{$lang->productCommon}线"; -$lang->upgrade->program = '目标项目集和项目'; -$lang->upgrade->existProgram = '已有项目集'; -$lang->upgrade->existProject = '已有项目'; -$lang->upgrade->existLine = '已有' . $lang->productCommon . '线'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = '迭代'; -$lang->upgrade->repo = '版本库'; -$lang->upgrade->mergeRepo = '归并版本库'; -$lang->upgrade->setProgram = '设置项目所属项目集'; -$lang->upgrade->dataMethod = '数据迁移方式'; -$lang->upgrade->begin = '开始日期'; -$lang->upgrade->end = '结束日期'; -$lang->upgrade->selectProject = '目标项目'; -$lang->upgrade->programName = '项目集名称'; -$lang->upgrade->projectName = '项目名称'; -$lang->upgrade->compatibleEXT = '扩展机制兼容'; -$lang->upgrade->fileName = '文件名称'; -$lang->upgrade->next = '下一步'; +$lang->upgrade->line = '产品线'; +$lang->upgrade->allLines = "所有{$lang->productCommon}线"; +$lang->upgrade->program = '目标项目集和项目'; +$lang->upgrade->existProgram = '已有项目集'; +$lang->upgrade->existProject = '已有项目'; +$lang->upgrade->existLine = '已有' . $lang->productCommon . '线'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = '迭代'; +$lang->upgrade->repo = '版本库'; +$lang->upgrade->mergeRepo = '归并版本库'; +$lang->upgrade->setProgram = '设置项目所属项目集'; +$lang->upgrade->dataMethod = '数据迁移方式'; +$lang->upgrade->selectMergeMode = '请选择数据归并方式'; +$lang->upgrade->mergeMode = '数据归并方式:'; +$lang->upgrade->begin = '开始日期'; +$lang->upgrade->end = '结束日期'; +$lang->upgrade->selectProject = '目标项目'; +$lang->upgrade->programName = '项目集名称'; +$lang->upgrade->projectName = '项目名称'; +$lang->upgrade->compatibleEXT = '扩展机制兼容'; +$lang->upgrade->fileName = '文件名称'; +$lang->upgrade->next = '下一步'; +$lang->upgrade->back = '上一步'; $lang->upgrade->newProgram = '新建'; $lang->upgrade->editedName = '调整后名称'; @@ -146,6 +149,7 @@ EOT; $lang->upgrade->projectType['project'] = "把历史的{$lang->projectCommon}作为项目升级"; $lang->upgrade->projectType['execution'] = "把历史的{$lang->projectCommon}作为执行升级"; + $lang->upgrade->createProjectTip = <<升级后历史的{$lang->projectCommon}一一对应新版本中的项目。

系统会根据历史{$lang->projectCommon}分别创建一个与该{$lang->projectCommon}同名的执行,并将之前{$lang->projectCommon}的任务、需求、Bug等数据迁移至执行中。

@@ -156,6 +160,15 @@ $lang->upgrade->createExecutionTip = <<升级后历史的{$lang->projectCommon}数据将对应新版本中项目下的执行。

EOT; +$lang->upgrade->mergeModes = array(); +$lang->upgrade->mergeModes['project'] = '自动归并数据,将历史的项目作为项目升级'; +$lang->upgrade->mergeModes['execution'] = '自动归并数据,将历史的项目作为迭代升级'; +$lang->upgrade->mergeModes['manual'] = '手工归并数据'; + +$lang->upgrade->mergeProjectTip = '历史的项目将直接同步到新版本的项目中,同时系统将会根据历史项目分别创建一个与该项目同名的迭代,并将之前项目下的任务、需求、Bug等数据迁移至迭代中。'; +$lang->upgrade->mergeExecutionTip = '系统将自动按年创建项目,将历史的迭代数据按照年份归并到对应的项目下。'; +$lang->upgrade->mergeManualTip = '可以手工选择数据归并的方式'; + include dirname(__FILE__) . '/version.php'; $lang->upgrade->recoveryActions = new stdclass(); diff --git a/module/upgrade/view/selectmergemode.html.php b/module/upgrade/view/selectmergemode.html.php new file mode 100644 index 0000000000..98c9b6f464 --- /dev/null +++ b/module/upgrade/view/selectmergemode.html.php @@ -0,0 +1,50 @@ + + * @package upgrade + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +
+ +
+ From 74a5adef7d0b87fb0fa4d39116354e535ce83361 Mon Sep 17 00:00:00 2001 From: wangyuting2 <851424971@qq.com> Date: Thu, 15 Sep 2022 03:22:36 +0000 Subject: [PATCH 2/8] * Optimize code. --- module/upgrade/control.php | 2 +- module/upgrade/lang/de.php | 52 ++++++++++++-------- module/upgrade/lang/en.php | 52 ++++++++++++-------- module/upgrade/lang/fr.php | 52 ++++++++++++-------- module/upgrade/lang/vi.php | 49 +++++++++++------- module/upgrade/lang/zh-cn.php | 5 +- module/upgrade/view/selectmergemode.html.php | 2 +- 7 files changed, 132 insertions(+), 82 deletions(-) diff --git a/module/upgrade/control.php b/module/upgrade/control.php index 5eb47396e3..22c0fef9f2 100644 --- a/module/upgrade/control.php +++ b/module/upgrade/control.php @@ -645,7 +645,7 @@ class upgrade extends control $mode = $this->post->mode; if($mode == 'project') echo 'execute mergeData method'; if($mode == 'execution') echo 'execute mergeData method'; - if($mode == 'manual') $this->locate(inlink('mergeProgram')); + if($mode == 'manually') $this->locate(inlink('mergeProgram')); $this->locate(inlink('afterExec', "fromVersion=$fromVersion")); } diff --git a/module/upgrade/lang/de.php b/module/upgrade/lang/de.php index dfd5dffaf6..1e0920a538 100644 --- a/module/upgrade/lang/de.php +++ b/module/upgrade/lang/de.php @@ -99,26 +99,29 @@ $lang->upgrade->to15Mode['new'] = 'Use the program mode'; $lang->upgrade->selectedModeTips['classic'] = 'You can also switch to the Program mode in the Admin-Custom-Custom later.'; $lang->upgrade->selectedModeTips['new'] = 'Switching to the program management mode requires merging the previous data, and the system will guide you to complete this operation.'; -$lang->upgrade->line = 'Product Line'; -$lang->upgrade->allLines = "All Product Lines"; -$lang->upgrade->program = 'Merge Project'; -$lang->upgrade->existProgram = 'Existing programs'; -$lang->upgrade->existProject = 'Existing projects'; -$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = 'Iteration'; -$lang->upgrade->repo = 'Repo'; -$lang->upgrade->mergeRepo = 'Merge Repo'; -$lang->upgrade->setProgram = 'Set the project to which the program belongs'; -$lang->upgrade->dataMethod = 'Data migration method'; -$lang->upgrade->begin = 'Begin Date'; -$lang->upgrade->end = 'End Date'; -$lang->upgrade->selectProject = 'The target project'; -$lang->upgrade->programName = 'Program Name'; -$lang->upgrade->projectName = 'Project Name'; -$lang->upgrade->compatibleEXT = 'Extension mechanism compatible'; -$lang->upgrade->fileName = 'File Name'; -$lang->upgrade->next = 'Next'; +$lang->upgrade->line = 'Product Line'; +$lang->upgrade->allLines = "All Product Lines"; +$lang->upgrade->program = 'Merge Project'; +$lang->upgrade->existProgram = 'Existing programs'; +$lang->upgrade->existProject = 'Existing projects'; +$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = 'Iteration'; +$lang->upgrade->repo = 'Repo'; +$lang->upgrade->mergeRepo = 'Merge Repo'; +$lang->upgrade->setProgram = 'Set the project to which the program belongs'; +$lang->upgrade->dataMethod = 'Data migration method'; +$lang->upgrade->selectMergeMode = 'Please select the data merging method'; +$lang->upgrade->mergeMode = 'Data consolidation method : '; +$lang->upgrade->begin = 'Begin Date'; +$lang->upgrade->end = 'End Date'; +$lang->upgrade->selectProject = 'The target project'; +$lang->upgrade->programName = 'Program Name'; +$lang->upgrade->projectName = 'Project Name'; +$lang->upgrade->compatibleEXT = 'Extension mechanism compatible'; +$lang->upgrade->fileName = 'File Name'; +$lang->upgrade->next = 'Next'; +$lang->upgrade->back = 'Back'; $lang->upgrade->newProgram = 'Create'; $lang->upgrade->editedName = 'New Name'; @@ -156,6 +159,15 @@ $lang->upgrade->createExecutionTip = <<After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .

EOT; +$lang->upgrade->mergeModes = array(); +$lang->upgrade->mergeModes['project'] = 'Automatically merge data and upgrade historical projects as projects'; +$lang->upgrade->mergeModes['execution'] = 'Automatically merge data and upgrade historical projects as executions'; +$lang->upgrade->mergeModes['manually'] = 'Manually merge data'; + +$lang->upgrade->mergeProjectTip = 'The historical project will be synchronized directly to the new version of the project. At the same time, the system will create an iteration with the same name as the project according to the historical project, and migrate the tasks, requirements, bugs and other data under the previous project to the iteration.'; +$lang->upgrade->mergeExecutionTip = 'The system will automatically create projects by year, and merge the historical iteration data into the corresponding projects by year.'; +$lang->upgrade->mergeManuallyTip = 'You can manually select the data merging method.'; + include dirname(__FILE__) . '/version.php'; $lang->upgrade->recoveryActions = new stdclass(); diff --git a/module/upgrade/lang/en.php b/module/upgrade/lang/en.php index ed38f78dd2..882f75a2ac 100644 --- a/module/upgrade/lang/en.php +++ b/module/upgrade/lang/en.php @@ -99,26 +99,29 @@ $lang->upgrade->to15Mode['new'] = 'Use the program mode'; $lang->upgrade->selectedModeTips['classic'] = 'You can also switch to the Program mode in the Admin-Custom-Custom later.'; $lang->upgrade->selectedModeTips['new'] = 'Switching to the program management mode requires merging the previous data, and the system will guide you to complete this operation.'; -$lang->upgrade->line = 'Product Line'; -$lang->upgrade->allLines = "All Product Lines"; -$lang->upgrade->program = 'Merge Project'; -$lang->upgrade->existProgram = 'Existing programs'; -$lang->upgrade->existProject = 'Existing projects'; -$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = 'Iteration'; -$lang->upgrade->repo = 'Repo'; -$lang->upgrade->mergeRepo = 'Merge Repo'; -$lang->upgrade->setProgram = 'Set the project to which the program belongs'; -$lang->upgrade->dataMethod = 'Data migration method'; -$lang->upgrade->begin = 'Begin Date'; -$lang->upgrade->end = 'End Date'; -$lang->upgrade->selectProject = 'The target project'; -$lang->upgrade->programName = 'Program Name'; -$lang->upgrade->projectName = 'Project Name'; -$lang->upgrade->compatibleEXT = 'Extension mechanism compatible'; -$lang->upgrade->fileName = 'File Name'; -$lang->upgrade->next = 'Next'; +$lang->upgrade->line = 'Product Line'; +$lang->upgrade->allLines = "All Product Lines"; +$lang->upgrade->program = 'Merge Project'; +$lang->upgrade->existProgram = 'Existing programs'; +$lang->upgrade->existProject = 'Existing projects'; +$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = 'Iteration'; +$lang->upgrade->repo = 'Repo'; +$lang->upgrade->mergeRepo = 'Merge Repo'; +$lang->upgrade->setProgram = 'Set the project to which the program belongs'; +$lang->upgrade->dataMethod = 'Data migration method'; +$lang->upgrade->selectMergeMode = 'Please select the data merging method'; +$lang->upgrade->mergeMode = 'Data consolidation method : '; +$lang->upgrade->begin = 'Begin Date'; +$lang->upgrade->end = 'End Date'; +$lang->upgrade->selectProject = 'The target project'; +$lang->upgrade->programName = 'Program Name'; +$lang->upgrade->projectName = 'Project Name'; +$lang->upgrade->compatibleEXT = 'Extension mechanism compatible'; +$lang->upgrade->fileName = 'File Name'; +$lang->upgrade->next = 'Next'; +$lang->upgrade->back = 'Back'; $lang->upgrade->newProgram = 'Create'; $lang->upgrade->editedName = 'New Name'; @@ -156,6 +159,15 @@ $lang->upgrade->createExecutionTip = <<After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .

EOT; +$lang->upgrade->mergeModes = array(); +$lang->upgrade->mergeModes['project'] = 'Automatically merge data and upgrade historical projects as projects'; +$lang->upgrade->mergeModes['execution'] = 'Automatically merge data and upgrade historical projects as executions'; +$lang->upgrade->mergeModes['manually'] = 'Manually merge data'; + +$lang->upgrade->mergeProjectTip = 'The historical project will be synchronized directly to the new version of the project. At the same time, the system will create an iteration with the same name as the project according to the historical project, and migrate the tasks, requirements, bugs and other data under the previous project to the iteration.'; +$lang->upgrade->mergeExecutionTip = 'The system will automatically create projects by year, and merge the historical iteration data into the corresponding projects by year.'; +$lang->upgrade->mergeManuallyTip = 'You can manually select the data merging method.'; + include dirname(__FILE__) . '/version.php'; $lang->upgrade->recoveryActions = new stdclass(); diff --git a/module/upgrade/lang/fr.php b/module/upgrade/lang/fr.php index ac63434bce..02e766e464 100644 --- a/module/upgrade/lang/fr.php +++ b/module/upgrade/lang/fr.php @@ -99,26 +99,29 @@ $lang->upgrade->to15Mode['new'] = 'Use the program mode'; $lang->upgrade->selectedModeTips['classic'] = 'You can also switch to the Program mode in the Admin-Custom-Custom later.'; $lang->upgrade->selectedModeTips['new'] = 'Switching to the program management mode requires merging the previous data, and the system will guide you to complete this operation.'; -$lang->upgrade->line = 'Product Line'; -$lang->upgrade->allLines = "All Product Lines"; -$lang->upgrade->program = 'Merge Project'; -$lang->upgrade->existProgram = 'Existing programs'; -$lang->upgrade->existProject = 'Existing projects'; -$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = 'Iteration'; -$lang->upgrade->repo = 'Repo'; -$lang->upgrade->mergeRepo = 'Merge Repo'; -$lang->upgrade->setProgram = 'Set the project to which the program belongs'; -$lang->upgrade->dataMethod = 'Data migration method'; -$lang->upgrade->begin = 'Begin Date'; -$lang->upgrade->end = 'End Date'; -$lang->upgrade->selectProject = 'The target project'; -$lang->upgrade->programName = 'Program Name'; -$lang->upgrade->projectName = 'Project Name'; -$lang->upgrade->compatibleEXT = 'Extension mechanism compatible'; -$lang->upgrade->fileName = 'File Name'; -$lang->upgrade->next = 'Next'; +$lang->upgrade->line = 'Product Line'; +$lang->upgrade->allLines = "All Product Lines"; +$lang->upgrade->program = 'Merge Project'; +$lang->upgrade->existProgram = 'Existing programs'; +$lang->upgrade->existProject = 'Existing projects'; +$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = 'Iteration'; +$lang->upgrade->repo = 'Repo'; +$lang->upgrade->mergeRepo = 'Merge Repo'; +$lang->upgrade->setProgram = 'Set the project to which the program belongs'; +$lang->upgrade->dataMethod = 'Data migration method'; +$lang->upgrade->selectMergeMode = 'Please select the data merging method'; +$lang->upgrade->mergeMode = 'Data consolidation method : '; +$lang->upgrade->begin = 'Begin Date'; +$lang->upgrade->end = 'End Date'; +$lang->upgrade->selectProject = 'The target project'; +$lang->upgrade->programName = 'Program Name'; +$lang->upgrade->projectName = 'Project Name'; +$lang->upgrade->compatibleEXT = 'Extension mechanism compatible'; +$lang->upgrade->fileName = 'File Name'; +$lang->upgrade->next = 'Next'; +$lang->upgrade->back = 'Back'; $lang->upgrade->newProgram = 'Create'; $lang->upgrade->editedName = 'New Name'; @@ -156,6 +159,15 @@ $lang->upgrade->createExecutionTip = <<After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .

EOT; +$lang->upgrade->mergeModes = array(); +$lang->upgrade->mergeModes['project'] = 'Automatically merge data and upgrade historical projects as projects'; +$lang->upgrade->mergeModes['execution'] = 'Automatically merge data and upgrade historical projects as executions'; +$lang->upgrade->mergeModes['manually'] = 'Manually merge data'; + +$lang->upgrade->mergeProjectTip = 'The historical project will be synchronized directly to the new version of the project. At the same time, the system will create an iteration with the same name as the project according to the historical project, and migrate the tasks, requirements, bugs and other data under the previous project to the iteration.'; +$lang->upgrade->mergeExecutionTip = 'The system will automatically create projects by year, and merge the historical iteration data into the corresponding projects by year.'; +$lang->upgrade->mergeManuallyTip = 'You can manually select the data merging method.'; + include dirname(__FILE__) . '/version.php'; $lang->upgrade->recoveryActions = new stdclass(); diff --git a/module/upgrade/lang/vi.php b/module/upgrade/lang/vi.php index 6adc54d318..e3f454e7c2 100644 --- a/module/upgrade/lang/vi.php +++ b/module/upgrade/lang/vi.php @@ -96,23 +96,29 @@ $lang->upgrade->to15Mode['new'] = 'Use the program mode'; $lang->upgrade->selectedModeTips['classic'] = 'You can also switch to the Program mode in the Admin-Custom-Custom later.'; $lang->upgrade->selectedModeTips['new'] = 'Switching to the program management mode requires merging the previous data, and the system will guide you to complete this operation.'; -$lang->upgrade->line = 'Product Line'; -$lang->upgrade->allLines = "All Product Lines"; -$lang->upgrade->program = 'Merge Project'; -$lang->upgrade->existProgram = 'Existing programs'; -$lang->upgrade->existProject = 'Existing projects'; -$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = 'Iteration'; -$lang->upgrade->repo = 'Repo'; -$lang->upgrade->mergeRepo = 'Merge Repo'; -$lang->upgrade->setProgram = 'Set the project to which the program belongs'; -$lang->upgrade->dataMethod = 'Data migration method'; -$lang->upgrade->begin = 'Begin Date'; -$lang->upgrade->end = 'End Date'; -$lang->upgrade->selectProject = 'The target project'; -$lang->upgrade->programName = 'Program Name'; -$lang->upgrade->projectName = 'Project Name'; +$lang->upgrade->line = 'Product Line'; +$lang->upgrade->allLines = "All Product Lines"; +$lang->upgrade->program = 'Merge Project'; +$lang->upgrade->existProgram = 'Existing programs'; +$lang->upgrade->existProject = 'Existing projects'; +$lang->upgrade->existLine = 'Existing' . $lang->productCommon . ' lines'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = 'Iteration'; +$lang->upgrade->repo = 'Repo'; +$lang->upgrade->mergeRepo = 'Merge Repo'; +$lang->upgrade->setProgram = 'Set the project to which the program belongs'; +$lang->upgrade->dataMethod = 'Data migration method'; +$lang->upgrade->selectMergeMode = 'Please select the data merging method'; +$lang->upgrade->mergeMode = 'Data consolidation method : '; +$lang->upgrade->begin = 'Begin Date'; +$lang->upgrade->end = 'End Date'; +$lang->upgrade->selectProject = 'The target project'; +$lang->upgrade->programName = 'Program Name'; +$lang->upgrade->projectName = 'Project Name'; +$lang->upgrade->compatibleEXT = 'Extension mechanism compatible'; +$lang->upgrade->fileName = 'File Name'; +$lang->upgrade->next = 'Next'; +$lang->upgrade->back = 'Back'; $lang->upgrade->newProgram = 'Create'; $lang->upgrade->editedName = 'New Name'; @@ -140,4 +146,13 @@ $lang->upgrade->createExecutionTip = <<After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .

EOT; +$lang->upgrade->mergeModes = array(); +$lang->upgrade->mergeModes['project'] = 'Automatically merge data and upgrade historical projects as projects'; +$lang->upgrade->mergeModes['execution'] = 'Automatically merge data and upgrade historical projects as executions'; +$lang->upgrade->mergeModes['manually'] = 'Manually merge data'; + +$lang->upgrade->mergeProjectTip = 'The historical project will be synchronized directly to the new version of the project. At the same time, the system will create an iteration with the same name as the project according to the historical project, and migrate the tasks, requirements, bugs and other data under the previous project to the iteration.'; +$lang->upgrade->mergeExecutionTip = 'The system will automatically create projects by year, and merge the historical iteration data into the corresponding projects by year.'; +$lang->upgrade->mergeManuallyTip = 'You can manually select the data merging method.'; + include dirname(__FILE__) . '/version.php'; diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php index 4223a44f32..cc919f92ef 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -149,7 +149,6 @@ EOT; $lang->upgrade->projectType['project'] = "把历史的{$lang->projectCommon}作为项目升级"; $lang->upgrade->projectType['execution'] = "把历史的{$lang->projectCommon}作为执行升级"; - $lang->upgrade->createProjectTip = <<升级后历史的{$lang->projectCommon}一一对应新版本中的项目。

系统会根据历史{$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):?> -
+
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;