Merge branch 'sprint/zentaopms240' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/zentaopms240
This commit is contained in:
@@ -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;
|
||||
|
||||
+17
-23
@@ -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');
|
||||
|
||||
|
||||
+17
-23
@@ -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');
|
||||
|
||||
|
||||
+17
-23
@@ -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');
|
||||
|
||||
|
||||
+18
-24
@@ -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');
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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';
|
||||
|
||||
+90
-102
@@ -14,9 +14,9 @@ $lang->navIcons['system'] = "<i class='icon icon-group'></i>";
|
||||
$lang->navIcons['admin'] = "<i class='icon icon-cog-outline'></i>";
|
||||
|
||||
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' => '<a href="javascript:;" class="querybox-toggle"><i class="icon-search icon"></i> ' . $lang->searchAB . '</a>');
|
||||
|
||||
/* 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|");
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if($object == 'user') common::printLink('custom', 'required', "", "<span class='text'>{$lang->custom->required}</span>", '', "class='btn btn-link' id='requiredTab'");
|
||||
}
|
||||
|
||||
if($config->systemMode == 'classic') common::printLink('custom', 'mode', "", "<span class='text'>{$lang->custom->mode}</span>", '', "class='btn btn-link' id='modeTab'");
|
||||
common::printLink('custom', 'mode', "", "<span class='text'>{$lang->custom->mode}</span>", '', "class='btn btn-link' id='modeTab'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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}
|
||||
+33
-20
@@ -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 = <<<EOT
|
||||
<p>After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .</p>
|
||||
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();
|
||||
|
||||
+33
-20
@@ -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 = <<<EOT
|
||||
<p>After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .</p>
|
||||
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();
|
||||
|
||||
+33
-20
@@ -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 = <<<EOT
|
||||
<p>After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .</p>
|
||||
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();
|
||||
|
||||
+33
-17
@@ -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 = <<<EOT
|
||||
<p>After the upgrade, the data of existing {$lang->projectCommon} will be in a Project - Execute of the new version .</p>
|
||||
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';
|
||||
|
||||
@@ -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 = <<<EOT
|
||||
<p>升级后历史的{$lang->projectCommon}数据将对应新版本中项目下的执行。</p>
|
||||
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();
|
||||
|
||||
+246
-7
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* The mergeProgram view file of upgrade module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package upgrade
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<div class='container'>
|
||||
<div class='modal-dialog'>
|
||||
<div class='panel'>
|
||||
<div class='panel-heading text-center'>
|
||||
<h2><?php echo $lang->upgrade->selectMergeMode;?></h2>
|
||||
</div>
|
||||
<form method='post'>
|
||||
<div class='panel-body'>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-100px' valign='top'><?php echo $lang->upgrade->mergeMode;?></th>
|
||||
<td>
|
||||
<?php foreach($lang->upgrade->mergeModes as $mode => $label):?>
|
||||
<div class='radio'>
|
||||
<label>
|
||||
<input type='radio' name='projectType' value='<?php echo $mode;?>' <?php if($mode == 'project') echo "checked='checked'";?>>
|
||||
<?php echo $label;?>
|
||||
<?php $tipLang = 'merge' . ucfirst($mode) . 'Tip';?>
|
||||
<div class='tips text-gray'><?php echo $lang->upgrade->{$tipLang};?></div>
|
||||
</label>
|
||||
</div>
|
||||
<?php endForeach;?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class='panel-footer text-center'>
|
||||
<?php echo html::commonButton($lang->upgrade->back, '', 'btn btn-wide btn-secondary');?>
|
||||
<?php echo html::submitButton($lang->upgrade->next);?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
Reference in New Issue
Block a user