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/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/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/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/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/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 4d9a67aeeb..c378d31979 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'] = '人时/'; @@ -89,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; @@ -104,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'; diff --git a/module/custom/view/header.html.php b/module/custom/view/header.html.php index d797fc4724..7c5c481711 100644 --- a/module/custom/view/header.html.php +++ b/module/custom/view/header.html.php @@ -20,7 +20,7 @@ if($object == 'user') common::printLink('custom', 'required', "", "{$lang->custom->required}", '', "class='btn btn-link' id='requiredTab'"); } - if($config->systemMode == 'classic') common::printLink('custom', 'mode', "", "{$lang->custom->mode}", '', "class='btn btn-link' id='modeTab'"); + common::printLink('custom', 'mode', "", "{$lang->custom->mode}", '', "class='btn btn-link' id='modeTab'"); ?> diff --git a/module/upgrade/control.php b/module/upgrade/control.php index fe176ea746..d8d5593280 100644 --- a/module/upgrade/control.php +++ b/module/upgrade/control.php @@ -631,6 +631,32 @@ class upgrade extends control $this->display(); } + /** + * 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, $mode = 'lean') + { + if($_POST) + { + $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; + $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/de.php b/module/upgrade/lang/de.php index dfd5dffaf6..14ddc72fc1 100644 --- a/module/upgrade/lang/de.php +++ b/module/upgrade/lang/de.php @@ -99,26 +99,30 @@ $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->defaultProgram = 'Default Program'; +$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 +160,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..11703f3871 100644 --- a/module/upgrade/lang/en.php +++ b/module/upgrade/lang/en.php @@ -99,26 +99,30 @@ $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->defaultProgram = 'Default Program'; +$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 +160,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..79555a5524 100644 --- a/module/upgrade/lang/fr.php +++ b/module/upgrade/lang/fr.php @@ -99,26 +99,30 @@ $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->defaultProgram = 'Default Program'; +$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 +160,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..06aab7e2c5 100644 --- a/module/upgrade/lang/vi.php +++ b/module/upgrade/lang/vi.php @@ -96,23 +96,30 @@ $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->defaultProgram = 'Default Program'; +$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 +147,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 97450262e1..20a409caab 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -99,26 +99,30 @@ $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->defaultProgram = '默认项目集'; +$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 = '调整后名称'; @@ -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['manually'] = '手工归并数据'; + +$lang->upgrade->mergeProjectTip = '历史的项目将直接同步到新版本的项目中,同时系统将会根据历史项目分别创建一个与该项目同名的迭代,并将之前项目下的任务、需求、Bug等数据迁移至迭代中。'; +$lang->upgrade->mergeExecutionTip = '系统将自动按年创建项目,将历史的迭代数据按照年份归并到对应的项目下。'; +$lang->upgrade->mergeManuallyTip = '可以手工选择数据归并的方式。'; + include dirname(__FILE__) . '/version.php'; $lang->upgrade->recoveryActions = new stdclass(); diff --git a/module/upgrade/model.php b/module/upgrade/model.php index c0fd3dd323..695088a637 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(); @@ -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(); @@ -7528,4 +7528,243 @@ 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 classic2Lean() + { + /* Set project mode as noExecution. */ + $this->loadModel('setting')->setItem('system.common.global.projectMode', 'noExecution'); + + $programID = $this->createDefaultProgram(); + $this->upgradeInProjectMode($programID); + + return !dao::isError(); + } + + /** + * 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'; + 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; + + $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() + { + 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'); + } + + /** + * 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 new file mode 100644 index 0000000000..84bf3f2c18 --- /dev/null +++ b/module/upgrade/view/selectmergemode.html.php @@ -0,0 +1,50 @@ + + * @package upgrade + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +
+ +
+