Merge branch 'master' into 'tsj_fixbug'
# Conflicts: # module/custom/lang/zh-cn.php
This commit is contained in:
+1
-1
@@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}}
|
||||
if(!function_exists('getWebRoot')){function getWebRoot(){}}
|
||||
|
||||
/* 基本设置。Basic settings. */
|
||||
$config->version = '18.2'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
|
||||
$config->version = '18.3'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
|
||||
$config->liteVersion = '1.2'; // 迅捷版版本。 The version of Lite.
|
||||
$config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP.
|
||||
$config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,30 @@
|
||||
2023-03-15 18.3
|
||||
完成的需求
|
||||
开源版:
|
||||
41800 后台二次开发中的语言项增加三级菜单自定义
|
||||
41846 后台二次开发中语言项自定义支持切换多种语言
|
||||
42518 表单填写过程中,未保存退出时支持已填内容存储
|
||||
41798 后台二次开发中的语言项增加一级菜单自定义
|
||||
41799 后台二次开发中的语言项增加二级菜单自定义
|
||||
41800 后台二次开发中的语言项增加三级菜单自定义
|
||||
41801 后台二次开发中的语言项增加检索标签自定义
|
||||
41844 后台二次开发中的语言项增加公共语言项自定义
|
||||
41846 后台二次开发中语言项自定义支持切换多种语言
|
||||
41847 后台二次开发中自定义的语言项支持自动引用菜单配置
|
||||
42519 二次开发编辑器代码内嵌,增加开关
|
||||
42518 表单填写过程中,未保存退出时支持已填内容存储
|
||||
42568 修改需求列表中细分按钮的title提示语
|
||||
40806 欢迎总览页面中支持试用的版本类型调整
|
||||
42812 发布的需求列表下方统计增加故事点统计和用例覆盖率
|
||||
41739 无迭代项目下的研发需求详情页面增加建任务按钮
|
||||
42042 需要后台设置需求验收标准为必填项
|
||||
42353 全局设置中增加是否启用百分比的设置功能
|
||||
42361 开启或关闭百分比功能后项目中的处理规则
|
||||
修复的Bug
|
||||
开源版:
|
||||
32514 初始快照创建中时,还能点击创建快照按钮
|
||||
32515 创建快照时点击导出镜像按钮,执行节点无法启动
|
||||
|
||||
2023-02-27 18.2
|
||||
完成的需求
|
||||
开源版:
|
||||
|
||||
@@ -9,8 +9,8 @@ $lang->custom->restore = 'Reset to Default';
|
||||
$lang->custom->key = 'Key';
|
||||
$lang->custom->value = 'Value';
|
||||
$lang->custom->working = 'WorkStyle';
|
||||
$lang->custom->select = 'Select Concept';
|
||||
$lang->custom->hours = 'Hours';
|
||||
$lang->custom->select = 'Select Concept';
|
||||
$lang->custom->branch = 'Multi Branch';
|
||||
$lang->custom->owner = 'Owner';
|
||||
$lang->custom->module = 'Module';
|
||||
|
||||
@@ -9,8 +9,8 @@ $lang->custom->restore = 'Reset';
|
||||
$lang->custom->key = 'Key';
|
||||
$lang->custom->value = 'Value';
|
||||
$lang->custom->working = 'Mode';
|
||||
$lang->custom->select = 'Select Concept';
|
||||
$lang->custom->hours = 'Hours';
|
||||
$lang->custom->select = 'Select Concept';
|
||||
$lang->custom->branch = 'Multi-Branch';
|
||||
$lang->custom->owner = 'Owner';
|
||||
$lang->custom->module = 'Module';
|
||||
|
||||
@@ -9,8 +9,8 @@ $lang->custom->restore = 'Réinitialiser';
|
||||
$lang->custom->key = 'Clé';
|
||||
$lang->custom->value = 'Valeur';
|
||||
$lang->custom->working = 'Mode';
|
||||
$lang->custom->select = 'Choix du Concept';
|
||||
$lang->custom->hours = 'Hours';
|
||||
$lang->custom->select = 'Choix du Concept';
|
||||
$lang->custom->branch = 'Multi-Branches';
|
||||
$lang->custom->owner = 'Propriétaire';
|
||||
$lang->custom->module = 'Module';
|
||||
|
||||
@@ -255,18 +255,18 @@ $lang->custom->selectProgramTips = "切换到轻量管理模式后,为确保
|
||||
$lang->custom->modeList['light'] = '轻量级管理模式';
|
||||
$lang->custom->modeList['ALM'] = '全生命周期管理模式';
|
||||
|
||||
$lang->custom->modeIntroductionList["light"] = "提供了{$lang->projectCommon}管理的核心功能,适用于小型研发团队";
|
||||
$lang->custom->modeIntroductionList['light'] = "提供了{$lang->projectCommon}管理的核心功能,适用于小型研发团队";
|
||||
$lang->custom->modeIntroductionList['ALM'] = '概念更加完整、严谨,功能更加丰富,适用于中大型研发团队';
|
||||
|
||||
$lang->custom->features['program'] = '项目集';
|
||||
$lang->custom->features["productRR"] = "{$lang->productCommon}-研发需求";
|
||||
$lang->custom->features["productUR"] = "{$lang->productCommon}-用户需求";
|
||||
$lang->custom->features["productLine"] = "{$lang->productCommon}-产品线";
|
||||
$lang->custom->features["projectScrum"] = "{$lang->projectCommon}-敏捷模型";
|
||||
$lang->custom->features["projectWaterfall"] = "{$lang->projectCommon}-瀑布模型";
|
||||
$lang->custom->features["projectKanban"] = "{$lang->projectCommon}-看板模型";
|
||||
$lang->custom->features["projectAgileplus"] = "{$lang->projectCommon}-融合敏捷模型";
|
||||
$lang->custom->features["projectWaterfallplus"] = "{$lang->projectCommon}-融合瀑布模型";
|
||||
$lang->custom->features['productRR'] = "{$lang->productCommon}-研发需求";
|
||||
$lang->custom->features['productUR'] = "{$lang->productCommon}-用户需求";
|
||||
$lang->custom->features['productLine'] = "{$lang->productCommon}-产品线";
|
||||
$lang->custom->features['projectScrum'] = "{$lang->projectCommon}-敏捷模型";
|
||||
$lang->custom->features['projectWaterfall'] = "{$lang->projectCommon}-瀑布模型";
|
||||
$lang->custom->features['projectKanban'] = "{$lang->projectCommon}-看板模型";
|
||||
$lang->custom->features['projectAgileplus'] = "{$lang->projectCommon}-融合敏捷模型";
|
||||
$lang->custom->features['projectWaterfallplus'] = "{$lang->projectCommon}-融合瀑布模型";
|
||||
$lang->custom->features['execution'] = '执行';
|
||||
$lang->custom->features['qa'] = '测试';
|
||||
$lang->custom->features['devops'] = 'DevOps';
|
||||
@@ -283,8 +283,8 @@ $lang->custom->features['workflow'] = '工作流';
|
||||
$lang->custom->features['admin'] = '后台';
|
||||
$lang->custom->features['vision'] = '研发综合界面、运营管理界面';
|
||||
|
||||
$lang->custom->needClosedFunctions["waterfall"] = "瀑布{$lang->projectCommon}";
|
||||
$lang->custom->needClosedFunctions["waterfallplus"] = "融合瀑布{$lang->projectCommon}";
|
||||
$lang->custom->needClosedFunctions['waterfall'] = "瀑布{$lang->projectCommon}";
|
||||
$lang->custom->needClosedFunctions['waterfallplus'] = "融合瀑布{$lang->projectCommon}";
|
||||
$lang->custom->needClosedFunctions['URStory'] = '用户需求';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = '资产库';
|
||||
|
||||
|
||||
@@ -63,6 +63,7 @@ $lang->editor->modules['my'] = 'Dashboard';
|
||||
$lang->editor->modules['product'] = $lang->productCommon;
|
||||
$lang->editor->modules['productplan'] = 'Plan';
|
||||
$lang->editor->modules['project'] = $lang->projectCommon;
|
||||
$lang->editor->modules['execution'] = $lang->executionCommon;
|
||||
$lang->editor->modules['qa'] = 'QA';
|
||||
$lang->editor->modules['release'] = 'Release';
|
||||
$lang->editor->modules['report'] = 'Berichte';
|
||||
|
||||
@@ -63,6 +63,7 @@ $lang->editor->modules['my'] = 'Dashboard';
|
||||
$lang->editor->modules['product'] = $lang->productCommon;
|
||||
$lang->editor->modules['productplan'] = 'Plan';
|
||||
$lang->editor->modules['project'] = $lang->projectCommon;
|
||||
$lang->editor->modules['execution'] = $lang->executionCommon;
|
||||
$lang->editor->modules['qa'] = 'QA';
|
||||
$lang->editor->modules['release'] = 'Release';
|
||||
$lang->editor->modules['report'] = 'Rapport';
|
||||
|
||||
@@ -100,6 +100,7 @@ $lang->job->pipelineVariables = "Variables";
|
||||
$lang->job->pipelineVariablesKeyPlaceHolder = "Input variable key";
|
||||
$lang->job->pipelineVariablesValuePlaceHolder = "Input variable value";
|
||||
$lang->job->pipelineVariablesTips = "Specify variable values to be used in this run. The values specified in CI/CD settings will be used by default.";
|
||||
$lang->job->setReferenceTips = "Before performing a build, please set up the branch information of the code base.";
|
||||
|
||||
$lang->job->featureBar['browse']['job'] = 'List';
|
||||
$lang->job->featureBar['browse']['compile'] = 'History';
|
||||
|
||||
@@ -100,6 +100,7 @@ $lang->job->pipelineVariables = "Variables";
|
||||
$lang->job->pipelineVariablesKeyPlaceHolder = "Input variable key";
|
||||
$lang->job->pipelineVariablesValuePlaceHolder = "Input variable value";
|
||||
$lang->job->pipelineVariablesTips = "Specify variable values to be used in this run. The values specified in CI/CD settings will be used by default.";
|
||||
$lang->job->setReferenceTips = "Before performing a build, please set up the branch information of the code base.";
|
||||
|
||||
$lang->job->featureBar['browse']['job'] = 'List';
|
||||
$lang->job->featureBar['browse']['compile'] = 'History';
|
||||
|
||||
@@ -100,6 +100,7 @@ $lang->job->pipelineVariables = "Variables";
|
||||
$lang->job->pipelineVariablesKeyPlaceHolder = "Input variable key";
|
||||
$lang->job->pipelineVariablesValuePlaceHolder = "Input variable value";
|
||||
$lang->job->pipelineVariablesTips = "Specify variable values to be used in this run. The values specified in CI/CD settings will be used by default.";
|
||||
$lang->job->setReferenceTips = "Before performing a build, please set up the branch information of the code base.";
|
||||
|
||||
$lang->job->featureBar['browse']['job'] = 'List';
|
||||
$lang->job->featureBar['browse']['compile'] = 'History';
|
||||
|
||||
@@ -104,6 +104,7 @@ $lang->misc->feature->visionsDesc = "<p>The concept of interface has been add
|
||||
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions_en.png';
|
||||
|
||||
/* Release Date. */
|
||||
$lang->misc->releaseDate['18.3'] = '2023-03-15';
|
||||
$lang->misc->releaseDate['18.2'] = '2023-02-27';
|
||||
$lang->misc->releaseDate['18.1'] = '2023-02-08';
|
||||
$lang->misc->releaseDate['18.0'] = '2023-01-03';
|
||||
@@ -200,6 +201,7 @@ $lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
/* Release Detail. */
|
||||
$lang->misc->feature->all['18.3'][] = array('title' => 'Language item customization is added in secondary development, which supports the definition of language items for menus and search tags; Editor functionality is added in the secondary development, which allows users to turn it on and off on demand; The forms could be saved temporarily when users exits unexpectedly, and the unsaved information will be filled automatically the next time you enter.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.2'][] = array('title' => 'Agile Plus and Waterfall Plus management models are newly added. Support for unlimited splitting of waterfall project stages. The UI of Admin is completely upgraded and redesigned. Fix bugs.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.1'][] = array('title' => 'The automation testing solution interaction is optimized, while a new snapshot management function is newly added. ZenTao IM implemented online collaboration of PPT documents.Fix bugs.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.0'][] = array('title' => "Automated test solutions are proposed. Work order related functions are added to the Operation Management Interface. Approval workflow support for adding all types of notifications. And at the same time, we have further improved the earned value calculation rules.", 'desc' => '');
|
||||
|
||||
@@ -104,6 +104,7 @@ $lang->misc->feature->visionsDesc = "<p>The concept of interface has been add
|
||||
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions_en.png';
|
||||
|
||||
/* Release Date. */
|
||||
$lang->misc->releaseDate['18.3'] = '2023-03-15';
|
||||
$lang->misc->releaseDate['18.2'] = '2023-02-27';
|
||||
$lang->misc->releaseDate['18.1'] = '2023-02-08';
|
||||
$lang->misc->releaseDate['18.0'] = '2023-01-03';
|
||||
@@ -200,6 +201,7 @@ $lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
/* Release Detail. */
|
||||
$lang->misc->feature->all['18.3'][] = array('title' => 'Language item customization is added in secondary development, which supports the definition of language items for menus and search tags; Editor functionality is added in the secondary development, which allows users to turn it on and off on demand; The forms could be saved temporarily when users exits unexpectedly, and the unsaved information will be filled automatically the next time you enter.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.2'][] = array('title' => 'Agile Plus and Waterfall Plus management models are newly added. Support for unlimited splitting of waterfall project stages. The UI of Admin is completely upgraded and redesigned. Fix bugs.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.1'][] = array('title' => 'The automation testing solution interaction is optimized, while a new snapshot management function is newly added. ZenTao IM implemented online collaboration of PPT documents.Fix bugs.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.0'][] = array('title' => "Automated test solutions are proposed. Work order related functions are added to the Operation Management Interface. Approval workflow support for adding all types of notifications. And at the same time, we have further improved the earned value calculation rules.", 'desc' => '');
|
||||
|
||||
@@ -104,6 +104,7 @@ $lang->misc->feature->visionsDesc = "<p>The concept of interface has been add
|
||||
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions_en.png';
|
||||
|
||||
/* Release Date. */
|
||||
$lang->misc->releaseDate['18.3'] = '2023-03-15';
|
||||
$lang->misc->releaseDate['18.2'] = '2023-02-27';
|
||||
$lang->misc->releaseDate['18.1'] = '2023-02-08';
|
||||
$lang->misc->releaseDate['18.0'] = '2023-01-03';
|
||||
@@ -200,6 +201,7 @@ $lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
/* Release Detail. */
|
||||
$lang->misc->feature->all['18.3'][] = array('title' => 'Language item customization is added in secondary development, which supports the definition of language items for menus and search tags; Editor functionality is added in the secondary development, which allows users to turn it on and off on demand; The forms could be saved temporarily when users exits unexpectedly, and the unsaved information will be filled automatically the next time you enter.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.2'][] = array('title' => 'Agile Plus and Waterfall Plus management models are newly added. Support for unlimited splitting of waterfall project stages. The UI of Admin is completely upgraded and redesigned. Fix bugs.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.1'][] = array('title' => 'The automation testing solution interaction is optimized, while a new snapshot management function is newly added. ZenTao IM implemented online collaboration of PPT documents.Fix bugs.', 'desc' => '');
|
||||
$lang->misc->feature->all['18.0'][] = array('title' => "Automated test solutions are proposed. Work order related functions are added to the Operation Management Interface. Approval workflow support for adding all types of notifications. And at the same time, we have further improved the earned value calculation rules.", 'desc' => '');
|
||||
|
||||
@@ -104,6 +104,7 @@ $lang->misc->feature->visionsDesc = "<p>从16.5开始增加了界面概念,
|
||||
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions.png';
|
||||
|
||||
/* Release Date. */
|
||||
$lang->misc->releaseDate['18.3'] = '2023-03-15';
|
||||
$lang->misc->releaseDate['18.2'] = '2023-02-27';
|
||||
$lang->misc->releaseDate['18.1'] = '2023-02-08';
|
||||
$lang->misc->releaseDate['18.0'] = '2023-01-03';
|
||||
@@ -200,6 +201,7 @@ $lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
/* Release Detail. */
|
||||
$lang->misc->feature->all['18.3'][] = array('title' => '二次开发增加语言项自定义,支持对菜单和检索标签的语言项进行定义;二次开发增加编辑器功能,支持用户按需开启和关闭;表单意外退出支持表单暂存,下次进入自动代入填写的未保存信息。', 'desc' => '');
|
||||
$lang->misc->feature->all['18.2'][] = array('title' => '新增融合敏捷、融合瀑布管理模型,瀑布项目阶段支持无限级拆分,后台进行全新UI改版。修复Bug。', 'desc' => '');
|
||||
$lang->misc->feature->all['18.1'][] = array('title' => '自动化测试解决方案交互优化、新增快照管理功能。禅道客户端实现了 PPT文档在线协作。修复Bug。', 'desc' => '');
|
||||
$lang->misc->feature->all['18.0'][] = array('title' => '推出自动化测试解决方案;运营管理界面增加工单功能;审批流支持增加所有类型的通知以及挣值计算规则完善。', 'desc' => '');
|
||||
|
||||
@@ -233,15 +233,15 @@ $lang->product->featureBar['project']['doing'] = 'In Arbeit';
|
||||
$lang->product->featureBar['project']['suspended'] = 'Ausgesetzt';
|
||||
$lang->product->featureBar['project']['closed'] = 'Geschlossen';
|
||||
|
||||
$lang->product->moreSelects['more']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->product->moreSelects['more']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->product->moreSelects['more']['assignedbyme'] = $lang->product->assignedByMe;
|
||||
$lang->product->moreSelects['more']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['more']['activestory'] = $lang->product->activeStory;
|
||||
$lang->product->moreSelects['more']['changingstory'] = $lang->product->changingStory;
|
||||
$lang->product->moreSelects['more']['reviewingstory'] = $lang->product->reviewingStory;
|
||||
$lang->product->moreSelects['more']['willclose'] = $lang->product->willClose;
|
||||
$lang->product->moreSelects['more']['closedstory'] = $lang->product->closedStory;
|
||||
$lang->product->moreSelects['browse']['more']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['assignedbyme'] = $lang->product->assignedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['activestory'] = $lang->product->activeStory;
|
||||
$lang->product->moreSelects['browse']['more']['changingstory'] = $lang->product->changingStory;
|
||||
$lang->product->moreSelects['browse']['more']['reviewingstory'] = $lang->product->reviewingStory;
|
||||
$lang->product->moreSelects['browse']['more']['willclose'] = $lang->product->willClose;
|
||||
$lang->product->moreSelects['browse']['more']['closedstory'] = $lang->product->closedStory;
|
||||
|
||||
$lang->product->featureBar['dynamic']['all'] = 'All';
|
||||
$lang->product->featureBar['dynamic']['today'] = 'Today';
|
||||
|
||||
@@ -233,15 +233,15 @@ $lang->product->featureBar['project']['doing'] = 'Doing';
|
||||
$lang->product->featureBar['project']['suspended'] = 'Suspended';
|
||||
$lang->product->featureBar['project']['closed'] = 'Closed';
|
||||
|
||||
$lang->product->moreSelects['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->product->moreSelects['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->product->moreSelects['assignedbyme'] = $lang->product->assignedByMe;
|
||||
$lang->product->moreSelects['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['activestory'] = $lang->product->activeStory;
|
||||
$lang->product->moreSelects['changingstory'] = $lang->product->changingStory;
|
||||
$lang->product->moreSelects['reviewingstory'] = $lang->product->reviewingStory;
|
||||
$lang->product->moreSelects['willclose'] = $lang->product->willClose;
|
||||
$lang->product->moreSelects['closedstory'] = $lang->product->closedStory;
|
||||
$lang->product->moreSelects['browse']['more']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['assignedbyme'] = $lang->product->assignedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['activestory'] = $lang->product->activeStory;
|
||||
$lang->product->moreSelects['browse']['more']['changingstory'] = $lang->product->changingStory;
|
||||
$lang->product->moreSelects['browse']['more']['reviewingstory'] = $lang->product->reviewingStory;
|
||||
$lang->product->moreSelects['browse']['more']['willclose'] = $lang->product->willClose;
|
||||
$lang->product->moreSelects['browse']['more']['closedstory'] = $lang->product->closedStory;
|
||||
|
||||
$lang->product->featureBar['dynamic']['all'] = 'All';
|
||||
$lang->product->featureBar['dynamic']['today'] = 'Today';
|
||||
|
||||
@@ -233,15 +233,15 @@ $lang->product->featureBar['project']['doing'] = 'En cours';
|
||||
$lang->product->featureBar['project']['suspended'] = 'Suspendu';
|
||||
$lang->product->featureBar['project']['closed'] = 'Fermé';
|
||||
|
||||
$lang->product->moreSelects['more']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->product->moreSelects['more']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->product->moreSelects['more']['assignedbyme'] = $lang->product->assignedByMe;
|
||||
$lang->product->moreSelects['more']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['more']['activestory'] = $lang->product->activeStory;
|
||||
$lang->product->moreSelects['more']['changingstory'] = $lang->product->changingStory;
|
||||
$lang->product->moreSelects['more']['reviewingstory'] = $lang->product->reviewingStory;
|
||||
$lang->product->moreSelects['more']['willclose'] = $lang->product->willClose;
|
||||
$lang->product->moreSelects['more']['closedstory'] = $lang->product->closedStory;
|
||||
$lang->product->moreSelects['browse']['more']['openedbyme'] = $lang->product->openedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['reviewedbyme'] = $lang->product->reviewedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['assignedbyme'] = $lang->product->assignedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['closedbyme'] = $lang->product->closedByMe;
|
||||
$lang->product->moreSelects['browse']['more']['activestory'] = $lang->product->activeStory;
|
||||
$lang->product->moreSelects['browse']['more']['changingstory'] = $lang->product->changingStory;
|
||||
$lang->product->moreSelects['browse']['more']['reviewingstory'] = $lang->product->reviewingStory;
|
||||
$lang->product->moreSelects['browse']['more']['willclose'] = $lang->product->willClose;
|
||||
$lang->product->moreSelects['browse']['more']['closedstory'] = $lang->product->closedStory;
|
||||
|
||||
$lang->product->featureBar['dynamic']['all'] = 'All';
|
||||
$lang->product->featureBar['dynamic']['today'] = 'Today';
|
||||
|
||||
@@ -170,15 +170,14 @@ class productModel extends model
|
||||
{
|
||||
if(defined('TUTORIAL')) return $productID;
|
||||
|
||||
$product = $this->getById($productID);
|
||||
if(!empty($product) and $product->shadow) $this->accessDenied($this->lang->product->notExists);
|
||||
|
||||
if($productID == 0 and $this->cookie->preProductID and isset($products[$this->cookie->preProductID])) $productID = $this->cookie->preProductID;
|
||||
if($productID == 0 and $this->session->product == '') $productID = key($products);
|
||||
$this->session->set('product', (int)$productID, $this->app->tab);
|
||||
|
||||
if(!isset($products[$this->session->product]))
|
||||
{
|
||||
$product = $this->getById($productID);
|
||||
|
||||
if(empty($product) or $product->deleted == 1) $productID = key($products);
|
||||
$this->session->set('product', (int)$productID, $this->app->tab);
|
||||
if($productID && strpos(",{$this->app->user->view->products},", ",{$productID},") === false)
|
||||
@@ -2587,6 +2586,8 @@ class productModel extends model
|
||||
if(!$this->app->user->admin and strpos(",{$this->app->user->view->products},", ",$productID,") === false and $productID != 0 and !defined('TUTORIAL')) return $this->accessDenied($this->lang->product->accessDenied);
|
||||
|
||||
$product = $this->getByID($productID);
|
||||
if(!empty($product) and $product->shadow) $this->accessDenied($this->lang->product->notExists);
|
||||
|
||||
$params = array('branch' => $branch);
|
||||
common::setMenuVars('product', $productID, $params);
|
||||
if(!$product) return;
|
||||
|
||||
@@ -308,8 +308,8 @@ $lang->project->featureBar['testcase']['autocase'] = 'Automated';
|
||||
|
||||
$lang->project->featureBar['build']['all'] = 'Build List';
|
||||
|
||||
$lang->project->aclList["private"] = "Private (For the {$lang->projectCommon} leader, team members and stakeholders only)";
|
||||
$lang->project->aclList["open"] = "Open (accessible with {$lang->projectCommon} view permissions)";
|
||||
$lang->project->aclList['private'] = "Private (For the {$lang->projectCommon} leader, team members and stakeholders only)";
|
||||
$lang->project->aclList['open'] = "Open (accessible with {$lang->projectCommon} view permissions)";
|
||||
|
||||
$lang->project->multipleList['1'] = 'Yes';
|
||||
$lang->project->multipleList['0'] = 'No';
|
||||
|
||||
@@ -308,8 +308,8 @@ $lang->project->featureBar['testcase']['autocase'] = 'Automated';
|
||||
|
||||
$lang->project->featureBar['build']['all'] = 'Build List';
|
||||
|
||||
$lang->project->aclList["private"] = "Private (For the {$lang->projectCommon} leader, team members and stakeholders only)";
|
||||
$lang->project->aclList["open"] = "Open (accessible with {$lang->projectCommon} view permissions)";
|
||||
$lang->project->aclList['private'] = "Private (For the {$lang->projectCommon} leader, team members and stakeholders only)";
|
||||
$lang->project->aclList['open'] = "Open (accessible with {$lang->projectCommon} view permissions)";
|
||||
|
||||
$lang->project->multipleList['1'] = 'Yes';
|
||||
$lang->project->multipleList['0'] = 'No';
|
||||
|
||||
@@ -308,8 +308,8 @@ $lang->project->featureBar['testcase']['autocase'] = 'Automated';
|
||||
|
||||
$lang->project->featureBar['build']['all'] = 'Build List';
|
||||
|
||||
$lang->project->aclList["private"] = "Private (For the {$lang->projectCommon} leader, team members and stakeholders only)";
|
||||
$lang->project->aclList["open"] = "Open (accessible with {$lang->projectCommon} view permissions)";
|
||||
$lang->project->aclList['private'] = "Private (For the {$lang->projectCommon} leader, team members and stakeholders only)";
|
||||
$lang->project->aclList['open'] = "Open (accessible with {$lang->projectCommon} view permissions)";
|
||||
|
||||
$lang->project->multipleList['1'] = 'Yes';
|
||||
$lang->project->multipleList['0'] = 'No';
|
||||
|
||||
@@ -296,8 +296,8 @@ $lang->task->error->notempty = '%s必须大于0。';
|
||||
$lang->task->error->teamLeftEmpty = '请维护团队工时。';
|
||||
$lang->task->error->beginLtExecution = "任务开始日期应大于等于%s的开始日期:%s。";
|
||||
$lang->task->error->beginGtExecution = "任务开始日期应小于等于%s的结束日期:%s。";
|
||||
$lang->task->error->endGtExecution = "任务结束日期应小于等于%s的结束日期:%s。";
|
||||
$lang->task->error->endLtExecution = "任务结束日期应大于等于%s的开始日期:%s。";
|
||||
$lang->task->error->endGtExecution = "任务截止日期应小于等于%s的结束日期:%s。";
|
||||
$lang->task->error->endLtExecution = "任务截止日期应大于等于%s的开始日期:%s。";
|
||||
$lang->task->error->dateExceed = "任务%s的计划日期超过该{$lang->execution->common}计划日期,将自动改为{$lang->execution->common}的计划日期。";
|
||||
|
||||
/* Report. */
|
||||
|
||||
@@ -424,7 +424,7 @@ class taskModel extends model
|
||||
if(!empty($this->config->limitTaskDate))
|
||||
{
|
||||
$this->checkEstStartedAndDeadline($executionID, $task->estStarted, $task->deadline);
|
||||
return false;
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
|
||||
if(!helper::isZeroDate($task->deadline) and $task->deadline < $task->estStarted)
|
||||
@@ -1403,7 +1403,7 @@ class taskModel extends model
|
||||
if(!empty($this->config->limitTaskDate))
|
||||
{
|
||||
$this->checkEstStartedAndDeadline($oldTask->execution, $task->estStarted, $task->deadline, "task:{$taskID} ");
|
||||
return false;
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
|
||||
if(empty($task->closedReason) and $task->status == 'closed')
|
||||
@@ -4505,9 +4505,9 @@ class taskModel extends model
|
||||
if(empty($execution) or empty($this->config->limitTaskDate)) return false;
|
||||
if(empty($execution->multiple)) $this->lang->execution->common = $this->lang->project->common;
|
||||
|
||||
if(!empty($estStarted) and $estStarted < $execution->begin) dao::$errors['estStarted'][] = $pre . sprintf($this->lang->task->error->beginLtExecution, $this->lang->execution->common, $execution->begin);
|
||||
if(!empty($estStarted) and $estStarted > $execution->end) dao::$errors['estStarted'][] = $pre . sprintf($this->lang->task->error->beginGtExecution, $this->lang->execution->common, $execution->end);
|
||||
if(!empty($deadline) and $deadline > $execution->end) dao::$errors['deadline'][] = $pre . sprintf($this->lang->task->error->endGtExecution, $this->lang->execution->common, $execution->end);
|
||||
if(!empty($deadline) and $deadline < $execution->begin) dao::$errors['deadline'][] = $pre . sprintf($this->lang->task->error->endLtExecution, $this->lang->execution->common, $execution->begin);
|
||||
if(!empty($estStarted) and !helper::isZeroDate($estStarted) and $estStarted < $execution->begin) dao::$errors['estStarted'][] = $pre . sprintf($this->lang->task->error->beginLtExecution, $this->lang->execution->common, $execution->begin);
|
||||
if(!empty($estStarted) and !helper::isZeroDate($estStarted) and $estStarted > $execution->end) dao::$errors['estStarted'][] = $pre . sprintf($this->lang->task->error->beginGtExecution, $this->lang->execution->common, $execution->end);
|
||||
if(!empty($deadline) and !helper::isZeroDate($deadline) and $deadline > $execution->end) dao::$errors['deadline'][] = $pre . sprintf($this->lang->task->error->endGtExecution, $this->lang->execution->common, $execution->end);
|
||||
if(!empty($deadline) and !helper::isZeroDate($deadline) and $deadline < $execution->begin) dao::$errors['deadline'][] = $pre . sprintf($this->lang->task->error->endLtExecution, $this->lang->execution->common, $execution->begin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,8 @@ $config->upgrade->maxVersion['max4_0_beta2'] = '18_0_beta2';
|
||||
$config->upgrade->maxVersion['max4_0_beta3'] = '18_0_beta3';
|
||||
$config->upgrade->maxVersion['max4_0'] = '18_0';
|
||||
$config->upgrade->maxVersion['max4_1'] = '18_1';
|
||||
$config->upgrade->maxVersion['max4_2'] = '18_2'; // max insert position.
|
||||
$config->upgrade->maxVersion['max4_2'] = '18_2';
|
||||
$config->upgrade->maxVersion['max4_3'] = '18_3'; // max insert position.
|
||||
|
||||
$config->upgrade->bizVersion = array();
|
||||
$config->upgrade->bizVersion['biz1_0'] = '9_5_1';
|
||||
@@ -105,7 +106,8 @@ $config->upgrade->bizVersion['biz8_0_beta2'] = '18_0_beta2';
|
||||
$config->upgrade->bizVersion['biz8_0_beta3'] = '18_0_beta3';
|
||||
$config->upgrade->bizVersion['biz8_0'] = '18_0';
|
||||
$config->upgrade->bizVersion['biz8_1'] = '18_1';
|
||||
$config->upgrade->bizVersion['biz8_2'] = '18_2'; // biz insert position.
|
||||
$config->upgrade->bizVersion['biz8_2'] = '18_2';
|
||||
$config->upgrade->bizVersion['biz8_3'] = '18_3'; // biz insert position.
|
||||
|
||||
$config->upgrade->proVersion = array();
|
||||
$config->upgrade->proVersion['pro1_0'] = '3_1';
|
||||
@@ -427,7 +429,7 @@ $config->delete['18_0'][] = 'extension/max/repo/ext/control/ajaxgetbranchesandta
|
||||
$config->delete['18_0'][] = 'extension/max/repo/ext/control/editbug.php';
|
||||
$config->delete['18_0'][] = 'extension/max/repo/ext/view/ajaxgetcommitinfo.html.php';
|
||||
|
||||
$config->upgrade->openModules = array('action', 'admin', 'api', 'automation', 'backup', 'block', 'branch', 'budget', 'bug', 'build', 'caselib', 'ci', 'client', 'common', 'company', 'compile', 'convert', 'cron', 'custom', 'datatable', 'dept', 'design', 'dev', 'doc', 'durationestimation', 'entry', 'execution', 'extension', 'file', 'git', 'gitlab', 'group', 'holiday', 'im', 'index', 'index.html', 'install', 'issue', 'jenkins', 'job', 'kanban', 'license', 'mail', 'message', 'misc', 'mr', 'my', 'personnel', 'pipeline', 'product', 'productplan', 'productset', 'program', 'programplan', 'project', 'projectbuild', 'projectplan', 'projectrelease', 'projectstory', 'qa', 'release', 'repo', 'report', 'risk', 'score', 'screen', 'search', 'setting', 'sonarqube', 'sso', 'stage', 'stakeholder', 'story', 'subject', 'svn', 'task', 'testcase', 'testreport', 'testsuite', 'testtask', 'todo', 'tree', 'tutorial', 'upgrade', 'user', 'webhook', 'weekly', 'workestimation', 'gitea', 'gogs', 'transfer', 'zahost', 'zanode');
|
||||
$config->upgrade->openModules = array('action', 'admin', 'api', 'automation', 'backup', 'block', 'branch', 'budget', 'bug', 'build', 'caselib', 'ci', 'client', 'common', 'company', 'compile', 'convert', 'cron', 'custom', 'datatable', 'dept', 'design', 'dev', 'doc', 'durationestimation', 'entry', 'execution', 'extension', 'file', 'git', 'gitlab', 'group', 'holiday', 'im', 'index', 'index.html', 'install', 'issue', 'jenkins', 'job', 'kanban', 'license', 'mail', 'message', 'misc', 'mr', 'my', 'personnel', 'pipeline', 'product', 'productplan', 'productset', 'program', 'programplan', 'project', 'projectbuild', 'projectplan', 'projectrelease', 'projectstory', 'qa', 'release', 'repo', 'report', 'risk', 'score', 'screen', 'search', 'setting', 'sonarqube', 'sso', 'stage', 'stakeholder', 'story', 'subject', 'svn', 'task', 'testcase', 'testreport', 'testsuite', 'testtask', 'todo', 'tree', 'tutorial', 'upgrade', 'user', 'webhook', 'weekly', 'workestimation', 'gitea', 'gogs', 'transfer', 'zahost', 'zanode', 'editor');
|
||||
|
||||
$config->upgrade->unsetModules = array('design', 'program', 'programplan', 'projectbuild', 'projectrelease', 'stage', 'stakeholder', 'product', 'branch', 'productplan', 'release', 'build', 'qa', 'bug', 'testcase', 'testtask', 'testreport', 'testsuite', 'caselib', 'automation', 'repo', 'ci', 'compile', 'jenkins', 'job', 'svn', 'gitlab', 'sonarqube', 'mr', 'git', 'report', 'sqlbuilder', 'feedback', 'faq', 'attend', 'holiday', 'leave', 'makeup', 'overtime', 'lieu', 'ops', 'host', 'serverroom', 'account', 'domain', 'service', 'deploy', 'conference', 'traincourse', 'pssp', 'baseline', 'classify', 'cm', 'cmcl', 'auditcl', 'reviewcl', 'process', 'activity', 'zoutput', 'auditplan', 'nc', 'subject', 'weekly', 'workestimation', 'issue', 'durationestimation', 'risk', 'opportunity', 'trainplan', 'gapanalysis', 'researchplan', 'researchreport', 'meeting', 'meetingroom', 'budget', 'reviewissue', 'reviewsetting', 'review', 'milestone', 'measurement', 'measrecord', 'assetlib', 'setting', 'im', 'client', 'ldap', 'dev', 'api', 'gitea', 'gogs', 'zanode', 'zahost');
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ $lang->upgrade->upgradingTips = 'The upgrade is in progress, please be patient.
|
||||
$lang->upgrade->forbiddenExt = 'Die Erweiterung ist nicht kompatibel mit der Upgradeversion. Sie wurde deaktiviert:';
|
||||
$lang->upgrade->updateFile = 'Updateinformation wurden hinzugefügt.';
|
||||
$lang->upgrade->noticeSQL = 'Your database is inconsistent with the standard and it failed to fix it. Please run the following SQL and refresh.';
|
||||
$lang->upgrade->afterExec = 'Please modify the database manually according to the above error information, and refresh after the modification!';
|
||||
$lang->upgrade->afterDeleted = 'Please modify the database manually according to the above error information, and refresh after the modification!';
|
||||
$lang->upgrade->afterExec = 'Please manually modify the database according to the above error information, and refresh after modifiy!';
|
||||
$lang->upgrade->mergeProgram = 'Data Merge';
|
||||
$lang->upgrade->mergeTips = 'Data Migration Tips';
|
||||
|
||||
@@ -174,7 +174,8 @@ $lang->upgrade->fromVersions['18_0_beta2'] = '18.0.beta2';
|
||||
$lang->upgrade->fromVersions['18_0_beta3'] = '18.0.beta3';
|
||||
$lang->upgrade->fromVersions['18_0'] = '18.0';
|
||||
$lang->upgrade->fromVersions['18_1'] = '18.1';
|
||||
$lang->upgrade->fromVersions['18_2'] = '18.2'; // pms insert position.
|
||||
$lang->upgrade->fromVersions['18_2'] = '18.2';
|
||||
$lang->upgrade->fromVersions['18_3'] = '18.3'; // pms insert position.
|
||||
|
||||
global $config;
|
||||
/* Lite. */
|
||||
@@ -353,7 +354,8 @@ $lang->upgrade->fromVersions['biz8_0_beta2'] = 'Biz8.0.beta2';
|
||||
$lang->upgrade->fromVersions['biz8_0_beta3'] = 'Biz8.0.beta3';
|
||||
$lang->upgrade->fromVersions['biz8_0'] = 'Biz8.0';
|
||||
$lang->upgrade->fromVersions['biz8_1'] = 'Biz8.1';
|
||||
$lang->upgrade->fromVersions['biz8_2'] = 'Biz8.2'; // biz insert position.
|
||||
$lang->upgrade->fromVersions['biz8_2'] = 'Biz8.2';
|
||||
$lang->upgrade->fromVersions['biz8_3'] = 'Biz8.3'; // biz insert position.
|
||||
|
||||
/* Max. */
|
||||
$lang->upgrade->fromVersions['max2_0_beta4'] = 'Max2.0.beta4';
|
||||
@@ -388,4 +390,5 @@ $lang->upgrade->fromVersions['max4_0_beta1'] = 'Max4.0.beta1';
|
||||
$lang->upgrade->fromVersions['max4_0_beta2'] = 'Max4.0.beta2';
|
||||
$lang->upgrade->fromVersions['max4_0_beta3'] = 'Max4.0.beta3';
|
||||
$lang->upgrade->fromVersions['max4_0'] = 'Max4.0';
|
||||
$lang->upgrade->fromVersions['max4_1'] = 'Max4.1'; // max insert position.
|
||||
$lang->upgrade->fromVersions['max4_1'] = 'Max4.1';
|
||||
$lang->upgrade->fromVersions['max4_2'] = 'Max4.2'; // max insert position.
|
||||
|
||||
@@ -1090,7 +1090,9 @@ class upgradeModel extends model
|
||||
case '18_0':
|
||||
$confirmContent .= file_get_contents($this->getUpgradeFile('18.0'));
|
||||
case '18_1':
|
||||
$confirmContent .= file_get_contents($this->getUpgradeFile('18.1')); // confirm insert position.
|
||||
$confirmContent .= file_get_contents($this->getUpgradeFile('18.1'));
|
||||
case '18_2':
|
||||
$confirmContent .= file_get_contents($this->getUpgradeFile('18.2')); // confirm insert position.
|
||||
}
|
||||
|
||||
return $confirmContent;
|
||||
|
||||
@@ -266,7 +266,7 @@ class prepareUpdate
|
||||
{
|
||||
`sed -i "s/ \/\/ pms insert position\.$/\\n\\\$lang->upgrade->fromVersions['{$this->internalZT->pmsVersionAB}'] = '{$this->internalZT->pmsVersion}'; \/\/ pms insert position\./" ../module/upgrade/lang/version.php`;
|
||||
`sed -i "s/ \/\/ biz insert position\.$/\\n\\\$lang->upgrade->fromVersions['biz{$this->internalZT->bizVersionAB}'] = 'Biz{$this->internalZT->bizVersion}'; \/\/ biz insert position\./" ../module/upgrade/lang/version.php`;
|
||||
`sed -i "s/ \/\/ max insert position\.$/\\n\\\$lang->upgrade->fromVersions['max{$this->internalZT->lastMaxVersionAB}'] = 'Max{$this->internalZT->lastMaxVersion}'; \/\/ max insert position\./" ../module/upgrade/lang/version.php`;
|
||||
`sed -i "s/ \/\/ max insert position\.$/\\n\\\$lang->upgrade->fromVersions['max{$this->internalZT->lastMaxVersionAB}'] = 'Max{$this->internalZT->lastMaxVersion}'; \/\/ max insert position\./" ../module/upgrade/lang/version.php`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user