Merge branch 'sprint/zentaopms240' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/zentaopms240_lanzongjun
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;
|
||||
|
||||
@@ -70,7 +70,7 @@ $config->action->preferredTypeNum = 10;
|
||||
|
||||
$config->action->preferredType = new stdclass();
|
||||
$config->action->preferredType->new = array('user', 'story', 'task', 'bug', 'case', 'doc', 'program', 'product', 'project', 'execution');
|
||||
$config->action->preferredType->classic = array('user', 'story', 'task', 'bug', 'case', 'doc', 'product', 'execution', 'productplan', 'build');
|
||||
$config->action->preferredType->lite = array('user', 'story', 'task', 'bug', 'case', 'doc', 'product', 'project', 'execution');
|
||||
|
||||
global $app, $lang;
|
||||
$app->loadLang('action');
|
||||
|
||||
@@ -103,7 +103,8 @@ class action extends control
|
||||
|
||||
$preferredType = array();
|
||||
$moreType = array();
|
||||
$preferredTypeConfig = $this->config->systemMode == 'new' ? $this->config->action->preferredType->new : $this->config->action->preferredType->classic;
|
||||
$preferredTypeConfig = $this->config->action->preferredType->new;
|
||||
if($this->config->systemMode == 'lite') $preferredTypeConfig = $this->config->action->preferredType->lite;
|
||||
foreach($objectTypeList as $objectType)
|
||||
{
|
||||
if(!isset($this->config->objectTables[$objectType])) continue;
|
||||
|
||||
+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
-25
@@ -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|';
|
||||
@@ -572,8 +566,7 @@ $lang->block->flowchart = array();
|
||||
$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';
|
||||
|
||||
+119
-117
@@ -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,53 +32,49 @@ 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->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 = new stdclass();
|
||||
$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
|
||||
$lang->mainNav->program = "{$lang->navIcons['program']} {$lang->program->common}|$programModule|$programMethod|";
|
||||
$lang->mainNav->product = "{$lang->navIcons['product']} {$lang->product->common}|$productModule|$productMethod|";
|
||||
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
|
||||
$lang->mainNav->execution = "{$lang->navIcons['execution']} {$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|";
|
||||
|
||||
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[10] = 'program';
|
||||
$lang->mainNav->menuOrder[15] = 'product';
|
||||
if($config->systemMode == 'new') $lang->mainNav->menuOrder[20] = 'project';
|
||||
$lang->mainNav->menuOrder[21] = 'execution';
|
||||
$lang->mainNav->menuOrder[23] = 'qa';
|
||||
$lang->mainNav->menuOrder[25] = 'devops';
|
||||
$lang->mainNav->menuOrder[30] = 'kanban';
|
||||
$lang->mainNav->menuOrder[35] = 'doc';
|
||||
$lang->mainNav->menuOrder[40] = 'report';
|
||||
$lang->mainNav->menuOrder[45] = 'system';
|
||||
$lang->mainNav->menuOrder[65] = 'admin';
|
||||
$lang->mainNav->menuOrder[20] = 'project';
|
||||
$lang->mainNav->menuOrder[25] = 'execution';
|
||||
$lang->mainNav->menuOrder[30] = 'qa';
|
||||
$lang->mainNav->menuOrder[35] = 'devops';
|
||||
$lang->mainNav->menuOrder[40] = 'kanban';
|
||||
$lang->mainNav->menuOrder[45] = 'doc';
|
||||
$lang->mainNav->menuOrder[50] = 'report';
|
||||
$lang->mainNav->menuOrder[55] = 'system';
|
||||
$lang->mainNav->menuOrder[60] = 'admin';
|
||||
|
||||
if($config->systemMode == 'lean') unset($lang->mainNav->program, $lang->mainNav->menuOrder[10]);
|
||||
if(isset($config->projectMode) and $config->projectMode == 'noExecution') unset($lang->mainNav->execution, $lang->mainNav->menuOrder[25]);
|
||||
|
||||
/* 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 = 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->execution = array('link' => "{$lang->execution->common}|my|execution|type=undone");
|
||||
$lang->my->menu->contribute = array('link' => "$lang->contribute|my|contribute|mode=task");
|
||||
$lang->my->menu->dynamic = array('link' => "$lang->dynamic|my|dynamic|");
|
||||
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|");
|
||||
$lang->my->menu->score = array('link' => "{$lang->score->shortCommon}|my|score|", 'subModule' => 'score');
|
||||
$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
|
||||
|
||||
/* My menu order. */
|
||||
$lang->my->menuOrder[5] = 'index';
|
||||
@@ -92,13 +88,16 @@ $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']->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->systemScore) unset($lang->my->menu->score, $lang->my->menuOrder[45]);
|
||||
if(isset($config->projectMode) and $config->projectMode == 'noExecution') unset($lang->my->menu->execution, $lang->my->menuOrder[30]);
|
||||
|
||||
$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']->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
$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";
|
||||
|
||||
$lang->my->menu->work['menuOrder'][5] = 'task';
|
||||
$lang->my->menu->work['menuOrder'][10] = 'requirement';
|
||||
@@ -106,15 +105,16 @@ $lang->my->menu->work['menuOrder'][15] = 'story';
|
||||
$lang->my->menu->work['menuOrder'][20] = 'bug';
|
||||
$lang->my->menu->work['menuOrder'][25] = 'testcase';
|
||||
$lang->my->menu->work['menuOrder'][30] = 'testtask';
|
||||
if(!$config->URAndSR) unset($lang->my->menu->work['subMenu']->requirement, $lang->my->menu->work['menuOrder'][10]);
|
||||
|
||||
$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']->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";
|
||||
$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']->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
$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";
|
||||
|
||||
$lang->my->menu->contribute['menuOrder'][5] = 'task';
|
||||
$lang->my->menu->contribute['menuOrder'][10] = 'requirement';
|
||||
@@ -124,14 +124,16 @@ $lang->my->menu->contribute['menuOrder'][25] = 'testcase';
|
||||
$lang->my->menu->contribute['menuOrder'][30] = 'testtask';
|
||||
$lang->my->menu->contribute['menuOrder'][35] = 'doc';
|
||||
|
||||
if(!$config->URAndSR) unset($lang->my->menu->contribute['subMenu']->requirement, $lang->my->menu->contribute['menuOrder'][10]);
|
||||
|
||||
$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 +145,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->dashboard = array('link' => "{$lang->dashboard}|product|dashboard|productID=%s");
|
||||
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');
|
||||
$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->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$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';
|
||||
@@ -183,9 +184,11 @@ $lang->product->menuOrder[55] = 'settings';
|
||||
$lang->product->menuOrder[60] = 'create';
|
||||
$lang->product->menuOrder[65] = 'all';
|
||||
|
||||
if(!$config->URAndSR) unset($lang->product->menu->requirement, $lang->product->menuOrder[35]);
|
||||
|
||||
$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');
|
||||
@@ -195,11 +198,11 @@ $lang->product->dividerMenu = $config->URAndSR ? ',story,requirement,settings,'
|
||||
|
||||
/* Project menu. */
|
||||
$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|");
|
||||
$lang->project->homeMenu->browse = array('link' => "{$lang->project->list}|project|browse|", 'alias' => 'batchedit,create');
|
||||
$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 +247,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 +294,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,22 +307,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->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');
|
||||
$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');
|
||||
|
||||
@@ -330,7 +333,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 +369,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 +378,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 +409,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,14 +437,14 @@ $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->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->custom = array('link' => "{$lang->doc->custom}|doc|tableContents|type=custom", 'alias' => 'custom');
|
||||
|
||||
@@ -453,15 +456,17 @@ $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[30] = 'project';
|
||||
$lang->doc->menuOrder[35] = 'execution';
|
||||
$lang->doc->menuOrder[36] = 'api';
|
||||
$lang->doc->menuOrder[40] = 'custom';
|
||||
if(isset($config->projectMode) and $config->projectMode == 'noExecution') unset($lang->doc->menu->execution, $lang->doc->menuOrder[35]);
|
||||
|
||||
$lang->doc->menu->product['subMenu'] = new stdclass();
|
||||
if($config->systemMode == 'new') $lang->doc->menu->project['subMenu'] = new stdclass();
|
||||
$lang->doc->menu->product['subMenu'] = new stdclass();
|
||||
$lang->doc->menu->project['subMenu'] = new stdclass();
|
||||
$lang->doc->menu->execution['subMenu'] = new stdclass();
|
||||
$lang->doc->menu->custom['subMenu'] = new stdclass();
|
||||
if(isset($config->projectMode) and $config->projectMode == 'noExecution') unset($lang->doc->menu->execution['subMenu']);
|
||||
|
||||
$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 +517,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';
|
||||
@@ -345,7 +345,7 @@ $lang->createObjects['bug'] = 'Bug';
|
||||
$lang->createObjects['story'] = '需求';
|
||||
$lang->createObjects['task'] = '任务';
|
||||
$lang->createObjects['testcase'] = '用例';
|
||||
$lang->createObjects['execution'] = $lang->execution->common;
|
||||
$lang->createObjects['execution'] = '执行';
|
||||
$lang->createObjects['project'] = '项目';
|
||||
$lang->createObjects['product'] = '产品';
|
||||
$lang->createObjects['program'] = '项目集';
|
||||
|
||||
@@ -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,8 +56,7 @@ $lang->custom->role = 'Role';
|
||||
$lang->custom->dept = 'Dept';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = 'Enable or Disable Code';
|
||||
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->execution = 'Execution';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
@@ -88,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;
|
||||
@@ -103,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,8 +56,7 @@ $lang->custom->role = 'Role';
|
||||
$lang->custom->dept = 'Dept';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = 'Enable or Disable Code';
|
||||
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->execution = 'Execution';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
@@ -88,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;
|
||||
@@ -103,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,8 +56,7 @@ $lang->custom->role = 'Role';
|
||||
$lang->custom->dept = 'Dept';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = 'Activer ou Désactiver le Code';
|
||||
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->execution = 'Execution';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
@@ -88,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;
|
||||
@@ -103,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,8 +56,7 @@ $lang->custom->role = '职位';
|
||||
$lang->custom->dept = '部门';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = '是否启用代号';
|
||||
|
||||
$lang->custom->execution = '执行';
|
||||
$lang->custom->execution = '执行';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = '工时/';
|
||||
$lang->custom->unitList['manhour'] = '人时/';
|
||||
@@ -88,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;
|
||||
@@ -103,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>
|
||||
|
||||
@@ -506,8 +506,8 @@ class doc extends control
|
||||
|
||||
unset($this->lang->doc->menu->product['subMenu']);
|
||||
unset($this->lang->doc->menu->custom['subMenu']);
|
||||
if($this->config->systemMode == 'new') unset($this->lang->doc->menu->project['subMenu']);
|
||||
if($this->config->systemMode == 'classic') unset($this->lang->doc->menu->execution['subMenu']);
|
||||
unset($this->lang->doc->menu->project['subMenu']);
|
||||
unset($this->lang->doc->menu->execution['subMenu']);
|
||||
|
||||
/* High light menu. */
|
||||
if(strpos(',product,project,execution,custom,book,', ",$objectType,") !== false)
|
||||
@@ -626,7 +626,6 @@ class doc extends control
|
||||
{
|
||||
$doc = $this->doc->getByID($docID);
|
||||
$objectType = $this->dao->select('type')->from(TABLE_DOCLIB)->where('id')->eq($doc->lib)->fetch('type');
|
||||
if($this->config->systemMode == 'classic' and $objectType == 'project') $objectType = 'execution';
|
||||
$this->doc->delete(TABLE_DOC, $docID);
|
||||
|
||||
/* if ajax request, send result. */
|
||||
@@ -1119,7 +1118,6 @@ class doc extends control
|
||||
$lib = $this->doc->getLibById($libID);
|
||||
if(!empty($lib) and $lib->deleted == '1') $appendLib = $libID;
|
||||
|
||||
if($this->config->systemMode == 'classic' and $type == 'project') $type = 'execution';
|
||||
list($libs, $libID, $object, $objectID) = $this->doc->setMenuByType($type, $objectID, $libID, $appendLib);
|
||||
|
||||
/* Set Custom. */
|
||||
|
||||
@@ -209,14 +209,6 @@ class group extends control
|
||||
$group = $this->group->getById($groupID);
|
||||
$groupPrivs = $this->group->getPrivs($groupID);
|
||||
|
||||
if($this->config->systemMode == 'classic')
|
||||
{
|
||||
if(isset($groupPrivs['project']['browse']))
|
||||
{
|
||||
$groupPrivs['project']['list'] = 'list';
|
||||
}
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->company->common . $this->lang->colon . $group->name . $this->lang->colon . $this->lang->group->managePriv;
|
||||
$this->view->position[] = $group->name;
|
||||
$this->view->position[] = $this->lang->group->managePriv;
|
||||
|
||||
+219
-218
@@ -88,6 +88,7 @@ $lang->resource->my->todo = 'todo';
|
||||
$lang->resource->my->calendar = 'calendarAction';
|
||||
$lang->resource->my->work = 'workAction';
|
||||
$lang->resource->my->contribute = 'contributeAction';
|
||||
$lang->resource->my->project = 'project';
|
||||
$lang->resource->my->profile = 'profileAction';
|
||||
$lang->resource->my->uploadAvatar = 'uploadAvatar';
|
||||
$lang->resource->my->preference = 'preference';
|
||||
@@ -151,36 +152,226 @@ $lang->personnel->methodOrder[10] = 'invest';
|
||||
$lang->personnel->methodOrder[15] = 'whitelist';
|
||||
$lang->personnel->methodOrder[20] = 'addWhitelist';
|
||||
|
||||
/* Design. */
|
||||
$lang->resource->design = new stdclass();
|
||||
$lang->resource->design->browse = 'browse';
|
||||
$lang->resource->design->view = 'view';
|
||||
$lang->resource->design->create = 'create';
|
||||
$lang->resource->design->batchCreate = 'batchCreate';
|
||||
$lang->resource->design->edit = 'edit';
|
||||
$lang->resource->design->assignTo = 'assignTo';
|
||||
$lang->resource->design->delete = 'delete';
|
||||
$lang->resource->design->linkCommit = 'linkCommit';
|
||||
$lang->resource->design->viewCommit = 'viewCommit';
|
||||
$lang->resource->design->unlinkCommit = 'unlinkCommit';
|
||||
$lang->resource->design->revision = 'revision';
|
||||
|
||||
$lang->design->methodOrder[5] = 'browse';
|
||||
$lang->design->methodOrder[10] = 'view';
|
||||
$lang->design->methodOrder[15] = 'create';
|
||||
$lang->design->methodOrder[20] = 'batchCreate';
|
||||
$lang->design->methodOrder[25] = 'edit';
|
||||
$lang->design->methodOrder[30] = 'assignTo';
|
||||
$lang->design->methodOrder[35] = 'delete';
|
||||
$lang->design->methodOrder[40] = 'linkCommit';
|
||||
$lang->design->methodOrder[45] = 'viewCommit';
|
||||
$lang->design->methodOrder[50] = 'unlinkCommit';
|
||||
$lang->design->methodOrder[55] = 'revision';
|
||||
|
||||
/* Program plan. */
|
||||
$lang->resource->programplan = new stdclass();
|
||||
$lang->resource->programplan->create = 'create';
|
||||
$lang->resource->programplan->edit = 'edit';
|
||||
|
||||
$lang->programplan->methodOrder[0] = 'create';
|
||||
$lang->programplan->methodOrder[5] = 'edit';
|
||||
|
||||
/* Project. */
|
||||
$lang->resource->project = new stdclass();
|
||||
$lang->resource->project->index = 'index';
|
||||
$lang->resource->project->browse = 'browse';
|
||||
$lang->resource->project->kanban = 'kanban';
|
||||
$lang->resource->project->create = 'create';
|
||||
$lang->resource->project->edit = 'edit';
|
||||
$lang->resource->project->batchEdit = 'batchEdit';
|
||||
$lang->resource->project->group = 'group';
|
||||
$lang->resource->project->createGroup = 'createGroup';
|
||||
$lang->resource->project->managePriv = 'managePriv';
|
||||
$lang->resource->project->manageMembers = 'manageMembers';
|
||||
$lang->resource->project->manageGroupMember = 'manageGroupMember';
|
||||
$lang->resource->project->copyGroup = 'copyGroup';
|
||||
$lang->resource->project->editGroup = 'editGroup';
|
||||
$lang->resource->project->start = 'start';
|
||||
$lang->resource->project->suspend = 'suspend';
|
||||
$lang->resource->project->close = 'close';
|
||||
$lang->resource->project->activate = 'activate';
|
||||
$lang->resource->project->delete = 'delete';
|
||||
$lang->resource->project->view = 'view';
|
||||
$lang->resource->project->whitelist = 'whitelist';
|
||||
$lang->resource->project->addWhitelist = 'addWhitelist';
|
||||
$lang->resource->project->unbindWhitelist = 'unbindWhitelist';
|
||||
$lang->resource->project->manageProducts = 'manageProducts';
|
||||
$lang->resource->project->dynamic = 'dynamic';
|
||||
$lang->resource->project->build = 'build';
|
||||
$lang->resource->project->qa = 'qa';
|
||||
$lang->resource->project->bug = 'bug';
|
||||
$lang->resource->project->testcase = 'testcase';
|
||||
$lang->resource->project->testtask = 'testtask';
|
||||
$lang->resource->project->testreport = 'testreport';
|
||||
$lang->resource->project->execution = 'execution';
|
||||
$lang->resource->project->export = 'export';
|
||||
$lang->resource->project->updateOrder = 'updateOrder';
|
||||
$lang->resource->project->team = 'teamAction';
|
||||
$lang->resource->project->unlinkMember = 'unlinkMember';
|
||||
|
||||
$lang->project->methodOrder[0] = 'index';
|
||||
$lang->project->methodOrder[5] = 'browse';
|
||||
$lang->project->methodOrder[10] = 'kanban';
|
||||
$lang->project->methodOrder[15] = 'projectTitle';
|
||||
$lang->project->methodOrder[20] = 'create';
|
||||
$lang->project->methodOrder[25] = 'edit';
|
||||
$lang->project->methodOrder[30] = 'batchEdit';
|
||||
$lang->project->methodOrder[35] = 'group';
|
||||
$lang->project->methodOrder[40] = 'createGroup';
|
||||
$lang->project->methodOrder[45] = 'managePriv';
|
||||
$lang->project->methodOrder[50] = 'manageMembers';
|
||||
$lang->project->methodOrder[55] = 'manageGroupMember';
|
||||
$lang->project->methodOrder[60] = 'copyGroup';
|
||||
$lang->project->methodOrder[65] = 'editGroup';
|
||||
$lang->project->methodOrder[70] = 'start';
|
||||
$lang->project->methodOrder[75] = 'suspend';
|
||||
$lang->project->methodOrder[80] = 'close';
|
||||
$lang->project->methodOrder[85] = 'activate';
|
||||
$lang->project->methodOrder[90] = 'updateOrder';
|
||||
$lang->project->methodOrder[95] = 'delete';
|
||||
$lang->project->methodOrder[100] = 'view';
|
||||
$lang->project->methodOrder[105] = 'whitelist';
|
||||
$lang->project->methodOrder[110] = 'addWhitelist';
|
||||
$lang->project->methodOrder[115] = 'unbindWhitelist';
|
||||
$lang->project->methodOrder[120] = 'manageProducts';
|
||||
$lang->project->methodOrder[125] = 'view';
|
||||
$lang->project->methodOrder[130] = 'dynamic';
|
||||
$lang->project->methodOrder[135] = 'build';
|
||||
$lang->project->methodOrder[140] = 'qa';
|
||||
$lang->project->methodOrder[145] = 'bug';
|
||||
$lang->project->methodOrder[150] = 'testcase';
|
||||
$lang->project->methodOrder[155] = 'testtask';
|
||||
$lang->project->methodOrder[160] = 'testreport';
|
||||
$lang->project->methodOrder[165] = 'execution';
|
||||
$lang->project->methodOrder[170] = 'export';
|
||||
$lang->project->methodOrder[175] = 'updateOrder';
|
||||
$lang->project->methodOrder[180] = 'team';
|
||||
$lang->project->methodOrder[185] = 'unlinkMember';
|
||||
|
||||
$lang->resource->projectbuild = new stdclass();
|
||||
$lang->resource->projectbuild->browse = 'browse';
|
||||
|
||||
$lang->projectbuild->methodOrder[5] = 'browse';
|
||||
|
||||
/* Project Story. */
|
||||
$lang->resource->projectstory = new stdclass();
|
||||
$lang->resource->projectstory->story = 'story';
|
||||
$lang->resource->projectstory->track = 'trackAction';
|
||||
$lang->resource->projectstory->view = 'view';
|
||||
$lang->resource->projectstory->linkStory = 'linkStory';
|
||||
$lang->resource->projectstory->unlinkStory = 'unlinkStory';
|
||||
$lang->resource->projectstory->batchUnlinkStory = 'batchUnlinkStory';
|
||||
$lang->resource->projectstory->importplanstories = 'importplanstories';
|
||||
|
||||
$lang->projectstory->methodOrder[5] = 'story';
|
||||
$lang->projectstory->methodOrder[10] = 'track';
|
||||
$lang->projectstory->methodOrder[15] = 'view';
|
||||
$lang->projectstory->methodOrder[20] = 'linkStory';
|
||||
$lang->projectstory->methodOrder[25] = 'unlinkStory';
|
||||
$lang->projectstory->methodOrder[23] = 'importplanstories';
|
||||
|
||||
/* Release. */
|
||||
$lang->resource->projectrelease = new stdclass();
|
||||
$lang->resource->projectrelease->browse = 'browseAction';
|
||||
$lang->resource->projectrelease->create = 'create';
|
||||
$lang->resource->projectrelease->edit = 'edit';
|
||||
$lang->resource->projectrelease->delete = 'delete';
|
||||
$lang->resource->projectrelease->view = 'view';
|
||||
$lang->resource->projectrelease->export = 'export';
|
||||
$lang->resource->projectrelease->linkStory = 'linkStory';
|
||||
$lang->resource->projectrelease->unlinkStory = 'unlinkStory';
|
||||
$lang->resource->projectrelease->batchUnlinkStory = 'batchUnlinkStory';
|
||||
$lang->resource->projectrelease->linkBug = 'linkBug';
|
||||
$lang->resource->projectrelease->unlinkBug = 'unlinkBug';
|
||||
$lang->resource->projectrelease->batchUnlinkBug = 'batchUnlinkBug';
|
||||
$lang->resource->projectrelease->changeStatus = 'changeStatus';
|
||||
$lang->resource->projectrelease->notify = 'notify';
|
||||
|
||||
$lang->projectrelease->methodOrder[5] = 'browse';
|
||||
$lang->projectrelease->methodOrder[10] = 'create';
|
||||
$lang->projectrelease->methodOrder[15] = 'edit';
|
||||
$lang->projectrelease->methodOrder[20] = 'delete';
|
||||
$lang->projectrelease->methodOrder[25] = 'view';
|
||||
$lang->projectrelease->methodOrder[35] = 'export';
|
||||
$lang->projectrelease->methodOrder[40] = 'linkStory';
|
||||
$lang->projectrelease->methodOrder[45] = 'unlinkStory';
|
||||
$lang->projectrelease->methodOrder[50] = 'batchUnlinkStory';
|
||||
$lang->projectrelease->methodOrder[55] = 'linkBug';
|
||||
$lang->projectrelease->methodOrder[60] = 'unlinkBug';
|
||||
$lang->projectrelease->methodOrder[65] = 'batchUnlinkBug';
|
||||
$lang->projectrelease->methodOrder[70] = 'changeStatus';
|
||||
$lang->projectrelease->methodOrder[75] = 'notify';
|
||||
|
||||
/* Stage. */
|
||||
$lang->resource->stage = new stdclass();
|
||||
$lang->resource->stage->browse = 'browse';
|
||||
$lang->resource->stage->create = 'create';
|
||||
$lang->resource->stage->batchCreate = 'batchCreate';
|
||||
$lang->resource->stage->edit = 'edit';
|
||||
$lang->resource->stage->setType = 'setType';
|
||||
$lang->resource->stage->delete = 'delete';
|
||||
|
||||
$lang->stage->methodOrder[5] = 'browse';
|
||||
$lang->stage->methodOrder[10] = 'create';
|
||||
$lang->stage->methodOrder[15] = 'batchCreate';
|
||||
$lang->stage->methodOrder[20] = 'edit';
|
||||
$lang->stage->methodOrder[25] = 'setType';
|
||||
$lang->stage->methodOrder[30] = 'delete';
|
||||
|
||||
/* Stakeholer. */
|
||||
$lang->resource->stakeholder = new stdclass();
|
||||
$lang->resource->stakeholder->browse = 'browse';
|
||||
$lang->resource->stakeholder->create = 'create';
|
||||
$lang->resource->stakeholder->batchCreate = 'batchCreate';
|
||||
$lang->resource->stakeholder->edit = 'edit';
|
||||
$lang->resource->stakeholder->delete = 'delete';
|
||||
$lang->resource->stakeholder->view = 'viewAction';
|
||||
$lang->resource->stakeholder->issue = 'issue';
|
||||
$lang->resource->stakeholder->viewIssue = 'viewIssueAction';
|
||||
$lang->resource->stakeholder->communicate = 'communicate';
|
||||
$lang->resource->stakeholder->expect = 'expect';
|
||||
$lang->resource->stakeholder->expectation = 'expectation';
|
||||
$lang->resource->stakeholder->deleteExpect = 'deleteExpect';
|
||||
$lang->resource->stakeholder->createExpect = 'createExpect';
|
||||
$lang->resource->stakeholder->editExpect = 'editExpect';
|
||||
$lang->resource->stakeholder->viewExpect = 'viewExpect';
|
||||
$lang->resource->stakeholder->userIssue = 'userIssue';
|
||||
|
||||
$lang->stakeholder->methodOrder[5] = 'browse';
|
||||
$lang->stakeholder->methodOrder[10] = 'create';
|
||||
$lang->stakeholder->methodOrder[13] = 'batchCreate';
|
||||
$lang->stakeholder->methodOrder[15] = 'edit';
|
||||
$lang->stakeholder->methodOrder[25] = 'delete';
|
||||
$lang->stakeholder->methodOrder[30] = 'view';
|
||||
$lang->stakeholder->methodOrder[35] = 'issue';
|
||||
$lang->stakeholder->methodOrder[40] = 'viewIssue';
|
||||
$lang->stakeholder->methodOrder[45] = 'communicate';
|
||||
$lang->stakeholder->methodOrder[50] = 'expect';
|
||||
$lang->stakeholder->methodOrder[55] = 'expectation';
|
||||
$lang->stakeholder->methodOrder[60] = 'deleteExpect';
|
||||
$lang->stakeholder->methodOrder[65] = 'createExpect';
|
||||
$lang->stakeholder->methodOrder[70] = 'editExpect';
|
||||
$lang->stakeholder->methodOrder[75] = 'viewExpect';
|
||||
$lang->stakeholder->methodOrder[80] = 'userIssue';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->resource->my->project = 'project';
|
||||
|
||||
/* Design. */
|
||||
$lang->resource->design = new stdclass();
|
||||
$lang->resource->design->browse = 'browse';
|
||||
$lang->resource->design->view = 'view';
|
||||
$lang->resource->design->create = 'create';
|
||||
$lang->resource->design->batchCreate = 'batchCreate';
|
||||
$lang->resource->design->edit = 'edit';
|
||||
$lang->resource->design->assignTo = 'assignTo';
|
||||
$lang->resource->design->delete = 'delete';
|
||||
$lang->resource->design->linkCommit = 'linkCommit';
|
||||
$lang->resource->design->viewCommit = 'viewCommit';
|
||||
$lang->resource->design->unlinkCommit = 'unlinkCommit';
|
||||
$lang->resource->design->revision = 'revision';
|
||||
|
||||
$lang->design->methodOrder[5] = 'browse';
|
||||
$lang->design->methodOrder[10] = 'view';
|
||||
$lang->design->methodOrder[15] = 'create';
|
||||
$lang->design->methodOrder[20] = 'batchCreate';
|
||||
$lang->design->methodOrder[25] = 'edit';
|
||||
$lang->design->methodOrder[30] = 'assignTo';
|
||||
$lang->design->methodOrder[35] = 'delete';
|
||||
$lang->design->methodOrder[40] = 'linkCommit';
|
||||
$lang->design->methodOrder[45] = 'viewCommit';
|
||||
$lang->design->methodOrder[50] = 'unlinkCommit';
|
||||
$lang->design->methodOrder[55] = 'revision';
|
||||
|
||||
/* Program. */
|
||||
$lang->resource->program = new stdclass();
|
||||
@@ -223,197 +414,7 @@ if($config->systemMode == 'new')
|
||||
$lang->program->methodOrder[90] = 'unbindWhitelist';
|
||||
$lang->program->methodOrder[95] = 'updateOrder';
|
||||
|
||||
/* Program plan. */
|
||||
$lang->resource->programplan = new stdclass();
|
||||
$lang->resource->programplan->create = 'create';
|
||||
$lang->resource->programplan->edit = 'edit';
|
||||
|
||||
$lang->programplan->methodOrder[0] = 'create';
|
||||
$lang->programplan->methodOrder[5] = 'edit';
|
||||
|
||||
/* Project. */
|
||||
$lang->resource->project = new stdclass();
|
||||
$lang->resource->project->index = 'index';
|
||||
$lang->resource->project->browse = 'browse';
|
||||
$lang->resource->project->kanban = 'kanban';
|
||||
$lang->resource->project->programTitle = 'moduleOpen';
|
||||
$lang->resource->project->create = 'create';
|
||||
$lang->resource->project->edit = 'edit';
|
||||
$lang->resource->project->batchEdit = 'batchEdit';
|
||||
$lang->resource->project->group = 'group';
|
||||
$lang->resource->project->createGroup = 'createGroup';
|
||||
$lang->resource->project->managePriv = 'managePriv';
|
||||
$lang->resource->project->manageMembers = 'manageMembers';
|
||||
$lang->resource->project->manageGroupMember = 'manageGroupMember';
|
||||
$lang->resource->project->copyGroup = 'copyGroup';
|
||||
$lang->resource->project->editGroup = 'editGroup';
|
||||
$lang->resource->project->start = 'start';
|
||||
$lang->resource->project->suspend = 'suspend';
|
||||
$lang->resource->project->close = 'close';
|
||||
$lang->resource->project->activate = 'activate';
|
||||
$lang->resource->project->delete = 'delete';
|
||||
$lang->resource->project->view = 'view';
|
||||
$lang->resource->project->whitelist = 'whitelist';
|
||||
$lang->resource->project->addWhitelist = 'addWhitelist';
|
||||
$lang->resource->project->unbindWhitelist = 'unbindWhitelist';
|
||||
$lang->resource->project->manageProducts = 'manageProducts';
|
||||
$lang->resource->project->dynamic = 'dynamic';
|
||||
$lang->resource->project->build = 'build';
|
||||
$lang->resource->project->qa = 'qa';
|
||||
$lang->resource->project->bug = 'bug';
|
||||
$lang->resource->project->testcase = 'testcase';
|
||||
$lang->resource->project->testtask = 'testtask';
|
||||
$lang->resource->project->testreport = 'testreport';
|
||||
$lang->resource->project->execution = 'execution';
|
||||
$lang->resource->project->export = 'export';
|
||||
$lang->resource->project->updateOrder = 'updateOrder';
|
||||
$lang->resource->project->team = 'teamAction';
|
||||
$lang->resource->project->unlinkMember = 'unlinkMember';
|
||||
|
||||
$lang->project->methodOrder[0] = 'index';
|
||||
$lang->project->methodOrder[5] = 'browse';
|
||||
$lang->project->methodOrder[10] = 'kanban';
|
||||
$lang->project->methodOrder[15] = 'projectTitle';
|
||||
$lang->project->methodOrder[20] = 'create';
|
||||
$lang->project->methodOrder[25] = 'edit';
|
||||
$lang->project->methodOrder[30] = 'batchEdit';
|
||||
$lang->project->methodOrder[35] = 'group';
|
||||
$lang->project->methodOrder[40] = 'createGroup';
|
||||
$lang->project->methodOrder[45] = 'managePriv';
|
||||
$lang->project->methodOrder[50] = 'manageMembers';
|
||||
$lang->project->methodOrder[55] = 'manageGroupMember';
|
||||
$lang->project->methodOrder[60] = 'copyGroup';
|
||||
$lang->project->methodOrder[65] = 'editGroup';
|
||||
$lang->project->methodOrder[70] = 'start';
|
||||
$lang->project->methodOrder[75] = 'suspend';
|
||||
$lang->project->methodOrder[80] = 'close';
|
||||
$lang->project->methodOrder[85] = 'activate';
|
||||
$lang->project->methodOrder[90] = 'updateOrder';
|
||||
$lang->project->methodOrder[95] = 'delete';
|
||||
$lang->project->methodOrder[100] = 'view';
|
||||
$lang->project->methodOrder[105] = 'whitelist';
|
||||
$lang->project->methodOrder[110] = 'addWhitelist';
|
||||
$lang->project->methodOrder[115] = 'unbindWhitelist';
|
||||
$lang->project->methodOrder[120] = 'manageProducts';
|
||||
$lang->project->methodOrder[125] = 'view';
|
||||
$lang->project->methodOrder[130] = 'dynamic';
|
||||
$lang->project->methodOrder[135] = 'build';
|
||||
$lang->project->methodOrder[140] = 'qa';
|
||||
$lang->project->methodOrder[145] = 'bug';
|
||||
$lang->project->methodOrder[150] = 'testcase';
|
||||
$lang->project->methodOrder[155] = 'testtask';
|
||||
$lang->project->methodOrder[160] = 'testreport';
|
||||
$lang->project->methodOrder[165] = 'execution';
|
||||
$lang->project->methodOrder[170] = 'export';
|
||||
$lang->project->methodOrder[175] = 'updateOrder';
|
||||
$lang->project->methodOrder[180] = 'team';
|
||||
$lang->project->methodOrder[185] = 'unlinkMember';
|
||||
|
||||
$lang->resource->projectbuild = new stdclass();
|
||||
$lang->resource->projectbuild->browse = 'browse';
|
||||
|
||||
$lang->projectbuild->methodOrder[5] = 'browse';
|
||||
|
||||
/* Project Story. */
|
||||
$lang->resource->projectstory = new stdclass();
|
||||
$lang->resource->projectstory->story = 'story';
|
||||
$lang->resource->projectstory->track = 'trackAction';
|
||||
$lang->resource->projectstory->view = 'view';
|
||||
$lang->resource->projectstory->linkStory = 'linkStory';
|
||||
$lang->resource->projectstory->unlinkStory = 'unlinkStory';
|
||||
$lang->resource->projectstory->batchUnlinkStory = 'batchUnlinkStory';
|
||||
$lang->resource->projectstory->importplanstories = 'importplanstories';
|
||||
|
||||
$lang->projectstory->methodOrder[5] = 'story';
|
||||
$lang->projectstory->methodOrder[10] = 'track';
|
||||
$lang->projectstory->methodOrder[15] = 'view';
|
||||
$lang->projectstory->methodOrder[20] = 'linkStory';
|
||||
$lang->projectstory->methodOrder[25] = 'unlinkStory';
|
||||
$lang->projectstory->methodOrder[23] = 'importplanstories';
|
||||
|
||||
/* Release. */
|
||||
$lang->resource->projectrelease = new stdclass();
|
||||
$lang->resource->projectrelease->browse = 'browseAction';
|
||||
$lang->resource->projectrelease->create = 'create';
|
||||
$lang->resource->projectrelease->edit = 'edit';
|
||||
$lang->resource->projectrelease->delete = 'delete';
|
||||
$lang->resource->projectrelease->view = 'view';
|
||||
$lang->resource->projectrelease->export = 'export';
|
||||
$lang->resource->projectrelease->linkStory = 'linkStory';
|
||||
$lang->resource->projectrelease->unlinkStory = 'unlinkStory';
|
||||
$lang->resource->projectrelease->batchUnlinkStory = 'batchUnlinkStory';
|
||||
$lang->resource->projectrelease->linkBug = 'linkBug';
|
||||
$lang->resource->projectrelease->unlinkBug = 'unlinkBug';
|
||||
$lang->resource->projectrelease->batchUnlinkBug = 'batchUnlinkBug';
|
||||
$lang->resource->projectrelease->changeStatus = 'changeStatus';
|
||||
$lang->resource->projectrelease->notify = 'notify';
|
||||
|
||||
$lang->projectrelease->methodOrder[5] = 'browse';
|
||||
$lang->projectrelease->methodOrder[10] = 'create';
|
||||
$lang->projectrelease->methodOrder[15] = 'edit';
|
||||
$lang->projectrelease->methodOrder[20] = 'delete';
|
||||
$lang->projectrelease->methodOrder[25] = 'view';
|
||||
$lang->projectrelease->methodOrder[35] = 'export';
|
||||
$lang->projectrelease->methodOrder[40] = 'linkStory';
|
||||
$lang->projectrelease->methodOrder[45] = 'unlinkStory';
|
||||
$lang->projectrelease->methodOrder[50] = 'batchUnlinkStory';
|
||||
$lang->projectrelease->methodOrder[55] = 'linkBug';
|
||||
$lang->projectrelease->methodOrder[60] = 'unlinkBug';
|
||||
$lang->projectrelease->methodOrder[65] = 'batchUnlinkBug';
|
||||
$lang->projectrelease->methodOrder[70] = 'changeStatus';
|
||||
$lang->projectrelease->methodOrder[75] = 'notify';
|
||||
|
||||
/* Stage. */
|
||||
$lang->resource->stage = new stdclass();
|
||||
$lang->resource->stage->browse = 'browse';
|
||||
$lang->resource->stage->create = 'create';
|
||||
$lang->resource->stage->batchCreate = 'batchCreate';
|
||||
$lang->resource->stage->edit = 'edit';
|
||||
$lang->resource->stage->setType = 'setType';
|
||||
$lang->resource->stage->delete = 'delete';
|
||||
|
||||
$lang->stage->methodOrder[5] = 'browse';
|
||||
$lang->stage->methodOrder[10] = 'create';
|
||||
$lang->stage->methodOrder[15] = 'batchCreate';
|
||||
$lang->stage->methodOrder[20] = 'edit';
|
||||
$lang->stage->methodOrder[25] = 'setType';
|
||||
$lang->stage->methodOrder[30] = 'delete';
|
||||
|
||||
/* Stakeholer. */
|
||||
$lang->resource->stakeholder = new stdclass();
|
||||
$lang->resource->stakeholder->browse = 'browse';
|
||||
$lang->resource->stakeholder->create = 'create';
|
||||
$lang->resource->stakeholder->batchCreate = 'batchCreate';
|
||||
$lang->resource->stakeholder->edit = 'edit';
|
||||
$lang->resource->stakeholder->delete = 'delete';
|
||||
$lang->resource->stakeholder->view = 'viewAction';
|
||||
$lang->resource->stakeholder->issue = 'issue';
|
||||
$lang->resource->stakeholder->viewIssue = 'viewIssueAction';
|
||||
$lang->resource->stakeholder->communicate = 'communicate';
|
||||
$lang->resource->stakeholder->expect = 'expect';
|
||||
$lang->resource->stakeholder->expectation = 'expectation';
|
||||
$lang->resource->stakeholder->deleteExpect = 'deleteExpect';
|
||||
$lang->resource->stakeholder->createExpect = 'createExpect';
|
||||
$lang->resource->stakeholder->editExpect = 'editExpect';
|
||||
$lang->resource->stakeholder->viewExpect = 'viewExpect';
|
||||
$lang->resource->stakeholder->userIssue = 'userIssue';
|
||||
|
||||
$lang->stakeholder->methodOrder[5] = 'browse';
|
||||
$lang->stakeholder->methodOrder[10] = 'create';
|
||||
$lang->stakeholder->methodOrder[13] = 'batchCreate';
|
||||
$lang->stakeholder->methodOrder[15] = 'edit';
|
||||
$lang->stakeholder->methodOrder[25] = 'delete';
|
||||
$lang->stakeholder->methodOrder[30] = 'view';
|
||||
$lang->stakeholder->methodOrder[35] = 'issue';
|
||||
$lang->stakeholder->methodOrder[40] = 'viewIssue';
|
||||
$lang->stakeholder->methodOrder[45] = 'communicate';
|
||||
$lang->stakeholder->methodOrder[50] = 'expect';
|
||||
$lang->stakeholder->methodOrder[55] = 'expectation';
|
||||
$lang->stakeholder->methodOrder[60] = 'deleteExpect';
|
||||
$lang->stakeholder->methodOrder[65] = 'createExpect';
|
||||
$lang->stakeholder->methodOrder[70] = 'editExpect';
|
||||
$lang->stakeholder->methodOrder[75] = 'viewExpect';
|
||||
$lang->stakeholder->methodOrder[80] = 'userIssue';
|
||||
$lang->resource->project->programTitle = 'moduleOpen';
|
||||
}
|
||||
|
||||
/* Product. */
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php if($config->systemMode == 'classic' and $this->app->getClientLang() == 'en'):?>
|
||||
<?php if(common::checkNotCN()):?>
|
||||
<style>
|
||||
.addon-execution {padding: 0px 20px}
|
||||
</style>
|
||||
@@ -41,24 +41,25 @@
|
||||
<th class='w-70px'><?php echo $lang->group->allCheck . " <span data-toggle='tooltip' class='text-help' title='{$lang->group->allTips}' ><i class='icon-help'></i></sapn>";?></th>
|
||||
<th class='w-100px text-center'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<?php $hiddenProgram = $config->systemMode == 'new' ? '' : 'hidden';?>
|
||||
<?php $rowspan = $config->systemMode == 'new' ? 4 : 3;?>
|
||||
<?php if($projectAdmins):?>
|
||||
<?php foreach($projectAdmins as $account => $group):?>
|
||||
<tr class="line<?php echo $group->group;?>">
|
||||
<td rowspan='4'>
|
||||
<td rowspan='<?php echo $rowspan?>'>
|
||||
<div class='group-item'><?php echo html::select("members[$group->group][]", $allUsers, $account, "class='form-control picker-select' multiple");?></div>
|
||||
</td>
|
||||
<td>
|
||||
<td class='<?php echo $hiddenProgram?>'>
|
||||
<div class='input-group'>
|
||||
<?php $disabled = $group->programs == 'all' ? "disabled='disabled'" : '';?>
|
||||
<span class='input-group-addon addon-program'> <?php echo $lang->group->manageProgram;?></span>
|
||||
<?php echo html::select("program[$group->group][]", $programs, $group->programs == 'all' ? '' : $group->programs, "class='form-control picker-select' multiple $disabled");?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<td class='<?php echo $hiddenProgram?>'>
|
||||
<?php echo html::checkbox("programAll[$group->group]", array(1 => ''), $group->programs == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
|
||||
</td>
|
||||
<td rowspan='4' class='text-center'>
|
||||
<td rowspan='<?php echo $rowspan?>' class='text-center'>
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
<?php $hidden = count($projectAdmins) == 1 ? 'hidden' : ''?>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete <?php echo $hidden;?>" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
|
||||
@@ -103,19 +104,19 @@
|
||||
<?php endforeach;?>
|
||||
<?php else:?>
|
||||
<tr class='line1'>
|
||||
<td rowspan='4'>
|
||||
<td rowspan='<?php echo $rowspan;?>'>
|
||||
<div class='group-item'><?php echo html::select('members[1][]', $allUsers, '', "class='form-control picker-select' multiple");?></div>
|
||||
</td>
|
||||
<td>
|
||||
<td class='<?php echo $hiddenProgram?>'>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon addon-program'> <?php echo $lang->group->manageProgram;?></span>
|
||||
<?php echo html::select('program[1][]', $programs, '', "class='form-control picker-select' multiple");?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<td class='<?php echo $hiddenProgram?>'>
|
||||
<?php echo html::checkbox('programAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
|
||||
</td>
|
||||
<td rowspan='4' class='text-center'>
|
||||
<td rowspan='<?php echo $rowspan;?>' class='text-center'>
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete hidden" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
|
||||
</td>
|
||||
@@ -154,74 +155,6 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php else:?>
|
||||
<?php if($projectAdmins):?>
|
||||
<?php foreach($projectAdmins as $account => $group):?>
|
||||
<tr class="line<?php echo $group->group;?>">
|
||||
<td rowspan='2'>
|
||||
<div class='group-item'><?php echo html::select("members[$group->group][]", $allUsers, $account, "class='form-control picker-select' multiple");?></div>
|
||||
</td>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<?php $disabled = $group->products == 'all' ? "disabled='disabled'" : '';?>
|
||||
<span class='input-group-addon addon-product'> <?php echo $lang->group->manageProduct;?></span>
|
||||
<?php echo html::select("product[$group->group][]", $products, $group->products == 'all' ? '' : $group->products, "class='form-control picker-select' multiple $disabled");?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo html::checkbox("productAll[$group->group]", array(1 => ''), $group->products == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
|
||||
</td>
|
||||
<td rowspan='2' class='text-center'>
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
<?php $hidden = count($projectAdmins) == 1 ? 'hidden' : '';?>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete <?php echo $hidden;?>" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="line<?php echo $group->group;?>">
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<?php $disabled = $group->executions == 'all' ? "disabled='disabled'" : '';?>
|
||||
<span class='input-group-addon addon-execution'> <?php echo $lang->group->manageExecution;?></span>
|
||||
<?php echo html::select("execution[$group->group][]", $executions, $group->executions == 'all' ? '' : $group->executions, "class='form-control picker-select' multiple $disabled");?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo html::checkbox("executionAll[$group->group]", array(1 => ''), $group->executions == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
<?php else:?>
|
||||
<tr class='line1'>
|
||||
<td rowspan='2'>
|
||||
<div class='group-item'><?php echo html::select('members[1][]', $allUsers, '', "class='form-control picker-select' multiple");?></div>
|
||||
</td>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon addon-product'> <?php echo $lang->group->manageProduct;?></span>
|
||||
<?php echo html::select('product[1][]', $products, '', "class='form-control picker-select' multiple");?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo html::checkbox('productAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
|
||||
</td>
|
||||
<td rowspan='2' class='text-center'>
|
||||
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
|
||||
<button type="button" class="btn btn-link btn-icon btn-delete hidden" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='line1'>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon addon-execution'> <?php echo $lang->group->manageExecution;?></span>
|
||||
<?php echo html::select('execution[1][]', $executions, '', "class='form-control picker-select' multiple");?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo html::checkbox('executionAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<td class='text-center form-actions' colspan='4'>
|
||||
<?php
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
<td colspan='4' class="text-center"><?php echo $this->lang->upgrade->remarkDesc;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<?php echo html::hidden('mode','')?>
|
||||
<?php echo html::hidden('mode','')?>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -406,8 +406,7 @@ class product extends control
|
||||
if(!empty($this->config->user->moreLink)) $this->config->moreLinks["RD"] = $this->config->user->moreLink;
|
||||
|
||||
$lines = array();
|
||||
if($programID) $lines = array('') + $this->product->getLinePairs($programID);
|
||||
if($this->config->systemMode == 'classic') $lines = array('') + $this->product->getLinePairs();
|
||||
if($programID and $this->config->systemMode == 'new') $lines = array('') + $this->product->getLinePairs($programID);
|
||||
|
||||
if($this->app->tab == 'doc') unset($this->lang->doc->menu->product['subMenu']);
|
||||
|
||||
@@ -551,8 +550,7 @@ class product extends control
|
||||
if(!empty($this->config->user->moreLink)) $this->config->moreLinks["RD"] = $this->config->user->moreLink;
|
||||
|
||||
$lines = array();
|
||||
if($product->program) $lines = array('') + $this->product->getLinePairs($product->program);
|
||||
if($this->config->systemMode == 'classic') $lines = array('') + $this->product->getLinePairs();
|
||||
if($product->program and $this->config->systemMode == 'new') $lines = array('') + $this->product->getLinePairs($product->program);
|
||||
|
||||
/* Get programs. */
|
||||
$programs = $this->loadModel('program')->getTopPairs();
|
||||
@@ -1263,7 +1261,7 @@ class product extends control
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Process product structure. */
|
||||
if($this->config->systemMode == 'classic' and $orderBy == 'program_asc') $orderBy = 'line_desc,order_asc';
|
||||
if($this->config->systemMode == 'lite' and $orderBy == 'program_asc') $orderBy = 'order_asc';
|
||||
$productStats = $this->product->getStats($orderBy, $pager, $browseType, '', 'story', '', $queryID);
|
||||
$productStructure = $this->product->statisticProgram($productStats);
|
||||
$productLines = $this->dao->select('*')->from(TABLE_MODULE)->where('type')->eq('line')->andWhere('deleted')->eq(0)->orderBy('`order` asc')->fetchAll();
|
||||
|
||||
+33
-78
@@ -344,35 +344,19 @@ class productModel extends model
|
||||
|
||||
if(!empty($append) and is_array($append)) $append = implode(',', $append);
|
||||
|
||||
$views = empty($append) ? $this->app->user->view->products : $this->app->user->view->products . ",$append";
|
||||
if($this->config->systemMode == 'new')
|
||||
{
|
||||
/* Order by program. */
|
||||
return $this->dao->select('t1.*, IF(INSTR(" closed", t1.status) < 2, 0, 1) AS isClosed')->from(TABLE_PRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id')
|
||||
->where(1)
|
||||
->beginIF(strpos($mode, 'all') === false)->andWhere('t1.deleted')->eq(0)->fi()
|
||||
->beginIF($programID)->andWhere('t1.program')->eq($programID)->fi()
|
||||
->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('t1.status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->vision == 'rnd')->andWhere('t1.id')->in($views)->fi()
|
||||
->andWhere('t1.vision')->eq($this->config->vision)
|
||||
->orderBy('isClosed, t2.order_asc, t1.line_desc, t1.order_asc')
|
||||
->fetchPairs('id', 'name');
|
||||
}
|
||||
else
|
||||
{
|
||||
$orderBy = !empty($this->config->product->orderBy) ? $this->config->product->orderBy : 'isClosed';
|
||||
return $this->dao->select('*, IF(INSTR(" closed", status) < 2, 0, 1) AS isClosed')
|
||||
->from(TABLE_PRODUCT)
|
||||
->where(1)
|
||||
->beginIF(strpos($mode, 'all') === false)->andWhere('deleted')->eq(0)->fi()
|
||||
->beginIF($programID)->andWhere('program')->eq($programID)->fi()
|
||||
->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->vision == 'rnd')->andWhere('id')->in($views)->fi()
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->orderBy($orderBy)
|
||||
->fetchPairs('id', 'name');
|
||||
}
|
||||
$views = empty($append) ? $this->app->user->view->products : $this->app->user->view->products . ",$append";
|
||||
$orderBy = !empty($this->config->product->orderBy) ? $this->config->product->orderBy : 'isClosed';
|
||||
/* Order by program. */
|
||||
return $this->dao->select('t1.*, IF(INSTR(" closed", t1.status) < 2, 0, 1) AS isClosed')->from(TABLE_PRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id')
|
||||
->where(1)
|
||||
->beginIF(strpos($mode, 'all') === false)->andWhere('t1.deleted')->eq(0)->fi()
|
||||
->beginIF($programID)->andWhere('t1.program')->eq($programID)->fi()
|
||||
->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('t1.status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->vision == 'rnd')->andWhere('t1.id')->in($views)->fi()
|
||||
->andWhere('t1.vision')->eq($this->config->vision)
|
||||
->orderBy("$orderBy, t2.order_asc, t1.line_desc, t1.order_asc")
|
||||
->fetchPairs('id', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1167,10 +1151,8 @@ class productModel extends model
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
->beginIF($status == 'closed')->andWhere('t2.status')->ne('closed')->fi()
|
||||
->beginIF($this->config->systemMode == 'new')->andWhere('t2.type')->eq('project')->fi()
|
||||
->beginIF($this->config->systemMode == 'classic')->andWhere('t2.type')->eq('sprint')->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'new')->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'classic')->andWhere('t2.id')->in($this->app->user->view->sprints)->fi()
|
||||
->andWhere('t2.type')->eq('project')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF($product->type != 'normal' and $branch !== '')->andWhere('t1.branch')->in($branch)->fi()
|
||||
->andWhere('t2.deleted')->eq('0')
|
||||
->orderBy('order_asc')
|
||||
@@ -1196,12 +1178,10 @@ class productModel extends model
|
||||
$projectList = $this->dao->select('t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
->beginIF($this->config->systemMode == 'new')->andWhere('t2.type')->eq('project')->fi()
|
||||
->beginIF($this->config->systemMode == 'classic')->andWhere('t2.type')->eq('sprint')->fi()
|
||||
->andWhere('t2.type')->eq('project')
|
||||
->beginIF($browseType == 'undone')->andWhere('t2.status')->in('wait,doing')->fi()
|
||||
->beginIF(strpos(",all,undone,", ",$browseType,") === false)->andWhere('t2.status')->eq($browseType)->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'new')->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'classic')->andWhere('t2.id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF($this->cookie->involved or $involved)
|
||||
->andWhere('t2.openedBy', true)->eq($this->app->user->account)
|
||||
->orWhere('t2.PM')->eq($this->app->user->account)
|
||||
@@ -1245,24 +1225,13 @@ class productModel extends model
|
||||
$emptyHour = array('totalEstimate' => 0, 'totalConsumed' => 0, 'totalLeft' => 0, 'progress' => 0);
|
||||
|
||||
/* Get all tasks and compute totalEstimate, totalConsumed, totalLeft, progress according to them. */
|
||||
if($this->config->systemMode == 'new')
|
||||
{
|
||||
$tasks = $this->dao->select('id, project, estimate, consumed, `left`, status, closedReason')
|
||||
->from(TABLE_TASK)
|
||||
->where('project')->in($projectKeys)
|
||||
->andWhere('parent')->lt(1)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchGroup('project', 'id');
|
||||
}
|
||||
else
|
||||
{
|
||||
$tasks = $this->dao->select('id, execution, estimate, consumed, `left`, status, closedReason')
|
||||
->from(TABLE_TASK)
|
||||
->where('execution')->in($projectKeys)
|
||||
->andWhere('parent')->lt(1)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchGroup('execution', 'id');
|
||||
}
|
||||
$tasks = $this->dao->select('id, project, estimate, consumed, `left`, status, closedReason')
|
||||
->from(TABLE_TASK)
|
||||
->where('project')->in($projectKeys)
|
||||
->andWhere('parent')->lt(1)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchGroup('project', 'id');
|
||||
|
||||
/* Compute totalEstimate, totalConsumed, totalLeft. */
|
||||
foreach($tasks as $projectID => $projectTasks)
|
||||
{
|
||||
@@ -1332,7 +1301,6 @@ class productModel extends model
|
||||
public function getExecutionPairsByProduct($productID, $branch = 0, $orderBy = 'id_asc', $projectID = 0, $mode = '')
|
||||
{
|
||||
if(empty($productID)) return array();
|
||||
if(empty($projectID) or $this->config->systemMode == 'classic') return $this->getAllExecutionPairsByProduct($productID, $branch);
|
||||
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
$orderBy = $project->model == 'waterfall' ? 'begin_asc,id_asc' : 'begin_desc,id_desc';
|
||||
@@ -1426,8 +1394,7 @@ class productModel extends model
|
||||
$executionPairs = $executionPairs + $execution->children;
|
||||
continue;
|
||||
}
|
||||
if($this->config->systemMode == 'new' and isset($projectPairs[$execution->project])) $executionPairs[$execution->id] = $projectPairs[$execution->project] . '/' . $execution->name;
|
||||
if($this->config->systemMode == 'classic') $executionPairs[$execution->id] = $execution->name;
|
||||
if(isset($projectPairs[$execution->project])) $executionPairs[$execution->id] = $projectPairs[$execution->project] . '/' . $execution->name;
|
||||
}
|
||||
|
||||
return $executionPairs;
|
||||
@@ -1683,7 +1650,7 @@ class productModel extends model
|
||||
if(empty($products)) return array();
|
||||
|
||||
$productKeys = array_keys($products);
|
||||
if($orderBy == 'program_asc' and $this->config->systemMode == 'new')
|
||||
if($orderBy == 'program_asc')
|
||||
{
|
||||
$products = $this->dao->select('t1.id as id, t1.*')->from(TABLE_PRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id')
|
||||
@@ -1881,38 +1848,26 @@ class productModel extends model
|
||||
->orderBy('begin desc')
|
||||
->fetchGroup('product', 'id');
|
||||
|
||||
$executionListKey = $this->config->systemMode == 'new' ? 'project' : 'productID';
|
||||
$executionList = $this->dao->select('t1.product as productID,t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('type')->in('stage,sprint,kanban')
|
||||
->beginIF($this->config->systemMode == 'new')->andWhere('t2.project')->in(array_keys($projectList))->fi()
|
||||
->andWhere('t2.project')->in(array_keys($projectList))
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.project')->in($this->app->user->view->sprints)->fi()
|
||||
->andWhere('t1.product')->in(array_keys($productList))
|
||||
->andWhere('status')->eq('doing')
|
||||
->andWhere('deleted')->eq('0')
|
||||
->orderBy('id_desc')
|
||||
->fetchGroup($executionListKey, 'id');
|
||||
->fetchGroup('project', 'id');
|
||||
|
||||
$projectLatestExecutions = array();
|
||||
$latestExecutionList = array();
|
||||
if($this->config->systemMode == 'new')
|
||||
foreach($executionList as $projectID => $executions)
|
||||
{
|
||||
foreach($executionList as $projectID => $executions)
|
||||
{
|
||||
/* Used to computer execution progress. */
|
||||
$latestExecutionList[key($executions)] = current($executions);
|
||||
/* Used to computer execution progress. */
|
||||
$latestExecutionList[key($executions)] = current($executions);
|
||||
|
||||
/* Used for display in page. */
|
||||
$projectLatestExecutions[$projectID] = current($executions);
|
||||
}
|
||||
}
|
||||
|
||||
if($this->config->systemMode == 'classic')
|
||||
{
|
||||
foreach($executionList as $productID => $executions)
|
||||
{
|
||||
foreach($executions as $executionID => $execution) $latestExecutionList[$executionID] = $execution;
|
||||
}
|
||||
/* Used for display in page. */
|
||||
$projectLatestExecutions[$projectID] = current($executions);
|
||||
}
|
||||
|
||||
$hourList = $this->loadModel('project')->computerProgress($latestExecutionList);
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th class='w-140px'><?php echo $lang->product->line;?></th>
|
||||
<?php if(common::hasPriv('product', 'manageLine') and ($config->systemMode == 'classic' or $programID)):?>
|
||||
<?php if(common::hasPriv('product', 'manageLine') and $programID):?>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<?php $checkedNewLine = count($lines) > 1 ? '' : 'checked';?>
|
||||
|
||||
@@ -572,8 +572,8 @@ class programModel extends model
|
||||
->where('t1.deleted')->eq('0')
|
||||
->andWhere('t1.vision')->eq($this->config->vision)
|
||||
->beginIF($browseType == 'bysearch')->andWhere($query)->fi()
|
||||
->beginIF($this->config->systemMode == 'new')->andWhere('t1.type')->eq('project')->fi()
|
||||
->beginIF($this->config->systemMode == 'new' and ($this->cookie->involved or $involved))->andWhere('t2.type')->eq('project')->fi()
|
||||
->andWhere('t1.type')->eq('project')
|
||||
->beginIF($this->cookie->involved or $involved)->andWhere('t2.type')->eq('project')->fi()
|
||||
->beginIF(!in_array($browseType, array('all', 'undone', 'bysearch', 'review', 'unclosed'), true))->andWhere('t1.status')->eq($browseType)->fi()
|
||||
->beginIF($browseType == 'undone' or $browseType == 'unclosed')->andWhere('t1.status')->in('wait,doing')->fi()
|
||||
->beginIF($browseType == 'review')
|
||||
|
||||
+11
-12
@@ -49,16 +49,13 @@ $config->project->datatable->fieldList['name']['required'] = 'yes';
|
||||
$config->project->datatable->fieldList['name']['sort'] = 'no';
|
||||
$config->project->datatable->fieldList['name']['pri'] = '1';
|
||||
|
||||
if(!isset($config->setCode) or $config->setCode == 1)
|
||||
{
|
||||
$config->project->datatable->fieldList['code']['title'] = 'code';
|
||||
$config->project->datatable->fieldList['code']['fixed'] = 'left';
|
||||
$config->project->datatable->fieldList['code']['width'] = '100';
|
||||
$config->project->datatable->fieldList['code']['minWidth'] = '180';
|
||||
$config->project->datatable->fieldList['code']['required'] = 'no';
|
||||
$config->project->datatable->fieldList['code']['sort'] = 'no';
|
||||
$config->project->datatable->fieldList['code']['pri'] = '1';
|
||||
}
|
||||
$config->project->datatable->fieldList['code']['title'] = 'code';
|
||||
$config->project->datatable->fieldList['code']['fixed'] = 'left';
|
||||
$config->project->datatable->fieldList['code']['width'] = '100';
|
||||
$config->project->datatable->fieldList['code']['minWidth'] = '180';
|
||||
$config->project->datatable->fieldList['code']['required'] = 'no';
|
||||
$config->project->datatable->fieldList['code']['sort'] = 'no';
|
||||
$config->project->datatable->fieldList['code']['pri'] = '1';
|
||||
|
||||
$config->project->datatable->fieldList['PM']['title'] = 'PM';
|
||||
$config->project->datatable->fieldList['PM']['fixed'] = 'no';
|
||||
@@ -128,6 +125,8 @@ $config->project->datatable->fieldList['actions']['width'] = '180';
|
||||
$config->project->datatable->fieldList['actions']['required'] = 'yes';
|
||||
$config->project->datatable->fieldList['actions']['pri'] = '1';
|
||||
|
||||
if(isset($config->setCode) and $config->setCode == 0) unset($config->project->datatable->fieldList['code']);
|
||||
|
||||
$config->project->checkList = new stdclass();
|
||||
$config->project->checkList->scrum = array('bug', 'execution', 'build', 'doc', 'release', 'testtask', 'case');
|
||||
$config->project->checkList->waterfall = array('execution', 'design', 'doc', 'bug', 'case', 'build', 'release', 'testtask');
|
||||
@@ -137,7 +136,7 @@ $config->project->maxCheckList->waterfall = array('execution', 'design', 'doc',
|
||||
|
||||
$config->project->search['module'] = 'project';
|
||||
$config->project->search['fields']['name'] = $lang->project->name;
|
||||
if(!isset($config->setCode) or $config->setCode == 1) $config->project->search['fields']['code'] = $lang->project->code;
|
||||
$config->project->search['fields']['code'] = $lang->project->code;
|
||||
$config->project->search['fields']['id'] = $lang->project->id;
|
||||
$config->project->search['fields']['model'] = $lang->project->model;
|
||||
$config->project->search['fields']['parent'] = $lang->project->parent;
|
||||
@@ -155,7 +154,7 @@ $config->project->search['fields']['lastEditedDate'] = $lang->project->lastEdite
|
||||
$config->project->search['fields']['closedDate'] = $lang->project->closedDate;
|
||||
|
||||
$config->project->search['params']['name'] = array('operator' => 'include', 'control' => 'input' , 'values' => '');
|
||||
if(!isset($config->setCode) or $config->setCode == 1) $config->project->search['params']['code'] = array('operator' => '=', 'control' => 'input' , 'values' => '');
|
||||
$config->project->search['params']['code'] = array('operator' => '=', 'control' => 'input' , 'values' => '');
|
||||
$config->project->search['params']['id'] = array('operator' => '=' , 'control' => 'input' , 'values' => '');
|
||||
$config->project->search['params']['model'] = array('operator' => '=' , 'control' => 'select', 'values' => $lang->project->modelList);
|
||||
$config->project->search['params']['parent'] = array('operator' => '=' , 'control' => 'select', 'values' => '');
|
||||
|
||||
@@ -10,6 +10,21 @@
|
||||
*/
|
||||
class project extends control
|
||||
{
|
||||
/**
|
||||
* Construct
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @param string $appName
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($moduleName = '', $methodName = '', $appName = '')
|
||||
{
|
||||
parent::__construct($moduleName, $methodName, $appName);
|
||||
$this->view->globalDisableProgram = $this->config->systemMode != 'new';
|
||||
}
|
||||
|
||||
/**
|
||||
* Project create guide.
|
||||
*
|
||||
@@ -737,12 +752,10 @@ class project extends control
|
||||
/**
|
||||
* Batch edit projects.
|
||||
*
|
||||
* @param string $from
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchEdit($from = 'browse', $projectID = 0)
|
||||
public function batchEdit()
|
||||
{
|
||||
$this->loadModel('action');
|
||||
$this->loadModel('execution');
|
||||
|
||||
@@ -893,6 +893,10 @@ class projectModel extends model
|
||||
$programPairs = array(0 => '');
|
||||
$programPairs += $this->loadModel('program')->getPairs();
|
||||
$this->config->project->search['params']['parent']['values'] = $programPairs;
|
||||
|
||||
if(isset($this->config->setCode) and $this->config->setCode == 0) unset($this->config->project->search['fields']['code'], $this->config->project->search['params']['code']);
|
||||
if($this->config->systemMode == 'lite') unset($this->config->project->search['fields']['parent'], $this->config->project->search['params']['parent']);
|
||||
|
||||
$this->loadModel('search')->setSearchParams($this->config->project->search);
|
||||
}
|
||||
|
||||
@@ -1961,7 +1965,7 @@ class projectModel extends model
|
||||
$canBatchEdit = common::hasPriv('project', 'batchEdit');
|
||||
$account = $this->app->user->account;
|
||||
$id = $col->id;
|
||||
$projectLink = $this->config->systemMode == 'new' ? helper::createLink('project', 'index', "projectID=$project->id", '', '', $project->id) : helper::createLink('execution', 'task', "projectID=$project->id");
|
||||
$projectLink = helper::createLink('project', 'index', "projectID=$project->id", '', '', $project->id);
|
||||
|
||||
if($col->show)
|
||||
{
|
||||
|
||||
@@ -29,7 +29,9 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-id'><?php echo $lang->idAB;?></th>
|
||||
<?php if(!empty($globalDisableProgram)):?>
|
||||
<th class='c-parent'><?php echo $lang->project->parent;?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-name required'><?php echo $lang->project->name;?></th>
|
||||
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
|
||||
<th class='c-name required'><?php echo $lang->project->code;?></th>
|
||||
@@ -46,9 +48,10 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($projects as $projectID => $project):?>
|
||||
<?php $aclList = $project->parent ? $lang->program->subAcls : $lang->project->acls;?>
|
||||
<?php $aclList = (empty($globalDisableProgram) and $project->parent) ? $lang->program->subAcls : $lang->project->acls;?>
|
||||
<tr id="projects[<?php echo $projectID;?>]">
|
||||
<td><?php echo sprintf('%03d', $projectID) . html::hidden("projectIdList[$projectID]", $projectID);?></td>
|
||||
<?php if(!empty($globalDisableProgram)):?>
|
||||
<?php if(isset($unauthorizedPrograms[$project->parent])):?>
|
||||
<td>
|
||||
<?php echo html::select("parents[$projectID]", $unauthorizedPrograms, $project->parent, "class='form-control chosen' onchange='outOfDateTip($projectID)' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}' disabled");?>
|
||||
@@ -57,6 +60,7 @@
|
||||
<?php else:?>
|
||||
<td><?php echo html::select("parents[$projectID]", $programs, $project->parent, "class='form-control chosen' onchange='outOfDateTip($projectID)' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}'");?></td>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
<td title='<?php echo $project->name;?>'><?php echo html::input("names[$projectID]", $project->name, "class='form-control'");?></td>
|
||||
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
|
||||
<td title='<?php echo $project->code;?>'><?php echo html::input("codes[$projectID]", $project->code, "class='form-control'");?></td>
|
||||
|
||||
@@ -57,8 +57,10 @@
|
||||
</style>
|
||||
<div id="mainMenu" class="clearfix table-row">
|
||||
<div class="btn-toolBar pull-left">
|
||||
<?php if(empty($globalDisableProgram)):?>
|
||||
<?php $excludedEmptyPrograms = array_filter($programs);?>
|
||||
<div class="input-control w-150px" id='programBox'><?php echo html::select('programID', $programs, $programID, "onchange=changeProgram(this.value) class='form-control chosen' data-placeholder='{$lang->project->selectProgram}' data-drop_width='" . (empty($excludedEmptyPrograms) ? 170 : 450) . "' data-max_drop_width='0'");?></div>
|
||||
<?php endif;?>
|
||||
<?php common::sortFeatureMenu();?>
|
||||
<?php foreach($lang->project->featureBar['browse'] as $key => $label):?>
|
||||
<?php $active = $browseType == $key ? 'btn-active-text' : '';?>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
.project-name.has-suffix > a {padding-right: 5px;}
|
||||
</style>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<?php if($this->config->systemMode == 'new'):?>
|
||||
<?php if(empty($globalDisableProgram)):?>
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
<?php echo $programID ? $program->name : $lang->project->parent;?>
|
||||
@@ -57,7 +57,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div id='mainContent' class="main-row fade">
|
||||
<?php if($this->config->systemMode == 'new'):?>
|
||||
<?php if(empty($globalDisableProgram)):?>
|
||||
<div id="sidebar" class="side-col">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
<div class="cell">
|
||||
@@ -99,7 +99,7 @@
|
||||
?>
|
||||
<?php if(!$useDatatable) echo '<div class="table-responsive">';?>
|
||||
<table class='table has-sort-head <?php if($useDatatable) echo 'datatable';?>' data-fixed-left-width='<?php echo $fixedFieldsWidth['leftWidth']?>' data-fixed-right-width='<?php echo $fixedFieldsWidth['rightWidth']?>'>
|
||||
<?php $canBatchEdit = $this->config->systemMode == 'new' ? common::hasPriv('project', 'batchEdit') : common::hasPriv('project', 'batchEdit');?>
|
||||
<?php $canBatchEdit = common::hasPriv('project', 'batchEdit');?>
|
||||
<thead>
|
||||
<tr>
|
||||
<?php
|
||||
@@ -131,7 +131,7 @@
|
||||
<?php
|
||||
if($canBatchEdit)
|
||||
{
|
||||
$actionLink = $this->config->systemMode == 'new' ? $this->createLink('project', 'batchEdit', 'from=prjbrowse') : $this->createLink('project', 'batchEdit');
|
||||
$actionLink = $this->createLink('project', 'batchEdit');
|
||||
$misc = "data-form-action='$actionLink'";
|
||||
echo html::commonButton($lang->edit, $misc);
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
</div>
|
||||
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<tr class='<?php echo !empty($globalDisableProgram) ? 'hidden' : '';?>'>
|
||||
<th class='w-130px'><?php echo $lang->project->parent;?></th>
|
||||
<?php $disabled = ($this->app->tab == 'product' and $productID) ? 'disabled' : '';?>
|
||||
<td><?php echo html::select('parent', $programList, $programID, "class='form-control chosen' data-lastSelected=$programID onchange='setParentProgram(this.value)' $disabled");?></td>
|
||||
@@ -63,8 +63,9 @@
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->name;?></th>
|
||||
<th class='w-130px'><?php echo $lang->project->name;?></th>
|
||||
<td class="col-main"><?php echo html::input('name', $name, "class='form-control' required");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
|
||||
<tr>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<span class='input-group-addon'><?php echo $lang->execution->selectDept?></span>
|
||||
<?php echo html::select('dept', $depts, $dept, "class='form-control chosen' onchange='setDeptUsers(this)' data-placeholder='{$lang->execution->selectDeptTitle}'");?>
|
||||
</div>
|
||||
<?php if($project->parent):?>
|
||||
<?php if(empty($globalDisableProgram) and $project->parent):?>
|
||||
<?php echo html::a($this->createLink('project', 'createStakeholder', "projectID=$projectID&dept=&parent=$path"), $lang->project->importStakeholder, '', 'class="btn btn-primary"');?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
<td><?php echo html::select('model', $lang->project->modelList, $model, "class='form-control chosen' required $disableModel");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if(empty($globalDisableProgram)):?>
|
||||
<tr>
|
||||
<th class='w-120px'><?php echo $lang->program->parent;?></th>
|
||||
<?php
|
||||
@@ -64,9 +65,11 @@
|
||||
<td><?php echo html::select('parent', $programList, $project->parent, "class='form-control chosen' $attr");?></td>
|
||||
<td colspan='2'></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->name;?></th>
|
||||
<th class='w-120px'><?php echo $lang->project->name;?></th>
|
||||
<td class="col-main"><?php echo html::input('name', $project->name, "class='form-control' required");?></td>
|
||||
<td colspan='2'></td>
|
||||
</tr>
|
||||
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
|
||||
<tr>
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($this->config->systemMode == 'new'):?>
|
||||
<?php if(empty($globalDisableProgram)):?>
|
||||
<div class="detail">
|
||||
<div class="detail-title">
|
||||
<strong><?php echo $lang->project->parent;?></strong>
|
||||
|
||||
@@ -165,6 +165,7 @@ foreach(explode(',', $config->task->create->requiredFields) as $field)
|
||||
<?php $i++;?>
|
||||
<?php if($i > 30) break;?>
|
||||
<?php endforeach;?>
|
||||
<?php unset($members['ditto']);?>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
$createStoryPriv = common::hasPriv('story', 'create');
|
||||
$createTaskPriv = common::hasPriv('task', 'create');
|
||||
$createBugPriv = common::hasPriv('bug', 'create');
|
||||
$printBtn = ($config->vision == 'lite' and (($config->systemMode == 'new' and empty($projects) or $config->systemMode == 'classic' and empty($executions)))) ? false : true;
|
||||
$printBtn = ($config->vision == 'lite' and empty($projects)) ? false : true;
|
||||
if($printBtn and ($createStoryPriv or $createTaskPriv or $createBugPriv))
|
||||
{
|
||||
$isonlybody = isonlybody();
|
||||
|
||||
@@ -40,7 +40,6 @@ $lang->tutorial->tasks['createAccount']['nav'] = array('module' => 'user', 'met
|
||||
$lang->tutorial->tasks['createAccount']['desc'] = "<p>Einen Benutzer erstellen: </p><ul><li data-target='nav'>Öffne <span class='task-nav'>Unternehmen <i class='icon icon-angle-right'></i> Benutzer<i class='icon icon-angle-right'></i> Neu;</span></li><li data-target='form'>Tragen Sie bitte die Daten ein;</li><li data-target='submit'>Speichern</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProgram'] = array('title' => 'Create a program');
|
||||
$lang->tutorial->tasks['createProgram']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProgram']['nav'] = array('app' => 'program', 'module' => 'program', 'method' => 'create', 'menuModule' => 'program', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="browse"],.create-program-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-program-btn', 'targetPageName' => 'Create program');
|
||||
$lang->tutorial->tasks['createProgram']['desc'] = "<p>Create a new program:</p><ul><li data-target='nav'>Open <span class='task-nav'>Program <i class='icon icon-angle-right'></i> Program list <i class='icon icon-angle-right'></i> Create program</span>;</li><li data-target='form'>Fill the form with program information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
@@ -53,54 +52,25 @@ $lang->tutorial->tasks['createStory']['nav'] = array('module' => 'story', 'meth
|
||||
$lang->tutorial->tasks['createStory']['desc'] = "<p>Story erstellen: </p><ul><li data-target='nav'>Öffnen <span class='task-nav'>Produkt <i class='icon icon-angle-right'></i>Story <i class='icon icon-angle-right'></i>Erstellen;</span></li><li data-target='form'>Tragen Sie die Informationen ein;</li><li data-target='submit'>Speichern</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProject'] = array('title' => 'Projekt erstellen');
|
||||
$lang->tutorial->tasks['createProject']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProject']['nav'] = array('module' => 'execution', 'method' => 'create', 'menu' => '#pageNav', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-project-btn', 'targetPageName' => 'Projekt erstellen');
|
||||
$lang->tutorial->tasks['createProject']['desc'] = "<p>Projekt erstellen: </p><ul><li data-target='nav'>Öffnen <span class='task-nav'> Projekt <i class='icon icon-angle-right'></i> New</span> Page;</li><li data-target='form'>Tragen Sie die Projektinformationen ein;</li><li data-target='submit'>Speichern</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageTeam'] = array('title' => 'Projektteam verwalten');
|
||||
$lang->tutorial->tasks['manageTeam']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['manageTeam']['nav'] = array('module' => 'execution', 'method' => 'managemembers', 'menu' => 'team', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', 'submit' => '#submit', 'targetPageName' => 'Projektteam verwalten');
|
||||
$lang->tutorial->tasks['manageTeam']['desc'] = "<p>Projektteam verwalten: </p><ul><li data-target='nav'>Öffnen <span class='task-nav'> Project <i class='icon icon-angle-right'></i> Team <i class='icon icon-angle-right'></i> Teammitglieder verwalten</span> Seite;</li><li data-target='form'>Wählen Sie Benutzer für das Team.</li><li data-target='submit'>Speichern</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProjectExecution'] = array('title' => 'Create a ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProjectExecution']['nav'] = array('app' => 'project', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectForm td.c-name:first a,#navbar>.nav>li[data-id="execution"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => 'Create' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['desc'] = "<p>Create a new {$lang->executionCommon}:</p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> {$lang->executionCommon} list <i class='icon icon-angle-right'></i> Create {$lang->executionCommon}</span>;</li><li data-target='form'>Fill the form with {$lang->executionCommon} information;</li><li data-target='submit'>Save {$lang->executionCommon}</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecution'] = array('title' => 'Create a ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecution']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => 'Create ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['desc'] = "<p>Create a new {$lang->executionCommon}:</p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> {$lang->executionCommon} list <i class='icon icon-angle-right'></i> Create {$lang->executionCommon}</span>;</li><li data-target='form'>Fill the form with {$lang->executionCommon} information;</li><li data-target='submit'>Save {$lang->executionCommon}</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageExecutionTeam'] = array('title' => "Manage Team");
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#executionTableList>tr:first>.c-name>a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="team"],.manage-team-btn', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', 'submit' => '#submit', 'targetPageName' => 'Manage team members');
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['desc'] = "<p>Manage project team members: </p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> Team <i class='icon icon-angle-right'></i> Manage Team Members</span> Page;</li><li data-target='form'>Choose users for the team.</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkStory'] = array('title' => 'Story verknüpfen');
|
||||
$lang->tutorial->tasks['linkStory']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['linkStory']['nav'] = array('module' => 'execution', 'method' => 'linkStory', 'menu' => 'story', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => 'Story verknüpfen');
|
||||
$lang->tutorial->tasks['linkStory']['desc'] = "<p>Eine Story mit dem Projekt verknüpfen: </p><ul><li data-target='nav'>Öffnen <span class='task-nav'> Projekt <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i>Story verknüpfen;</span></li><li data-target='form'>Wählen Sie Storys aus der Liste um sie zu verknüpfen;</li><li data-target='submit'>Speichern</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkExecutionStory'] = array('title' => 'Link a Story');
|
||||
$lang->tutorial->tasks['linkExecutionStory']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['linkExecutionStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],#navbar>.nav>li[data-id="story"],#executionTableList>tr:first>.c-name>a,.link-story-btn', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "Link {$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkExecutionStory']['desc'] = "<p>Link a Story to {$lang->executionCommon}: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i>Link Story;</span></li><li data-target='form'>Select stories from story list to relate;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createTask'] = array('title' => 'Aufgaben aufteilen');
|
||||
$lang->tutorial->tasks['createTask']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createTask']['nav'] = array('module' => 'task', 'method' => 'create', 'menuModule' => 'execution', 'menu' => 'story', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Aufgabe erstellen');
|
||||
$lang->tutorial->tasks['createTask']['desc'] = "<p>Aufgaben aufteilen: </p><ul><li data-target='nav'>Öffnen <span class='task-nav'> Projekt <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i> WBS;</span></li><li data-target='form'>Tragen Sie die Aufgabeninformationen ein;</li><li data-target='submit'>Speichern</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecutionTask'] = array('title' => 'Task Breakdown');
|
||||
$lang->tutorial->tasks['createExecutionTask']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecutionTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Create Task');
|
||||
$lang->tutorial->tasks['createExecutionTask']['desc'] = "<p>Task breakdown for a story: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i> WBS;</span></li><li data-target='form'>Fill the form with task information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createBug'] = array('title' => 'Bug melden');
|
||||
$lang->tutorial->tasks['createBug']['nav'] = array('module' => 'bug', 'method' => 'create', 'menuModule' => 'qa', 'menu' => 'bug', 'target' => '.btn-bug-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Bug erstellen');
|
||||
$lang->tutorial->tasks['createBug']['desc'] = "<p>Bug erstellen: </p><ul><li data-target='nav'>Öffnen <span class='task-nav'> Test <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> Einen Bug erstellen</span>;</li><li data-target='form'>Tragen Sie die Bug Informationen ein:</li><li data-target='submit'>Speichern</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createBug'] = array('title' => 'Bug melden');
|
||||
$lang->tutorial->tasks['createBug']['nav'] = array('module' => 'bug', 'method' => 'create', 'menuModule' => 'qa', 'menu' => 'bug', 'target' => '.btn-bug-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Bug erstellen');
|
||||
$lang->tutorial->tasks['createBug']['desc'] = "<p>Bug erstellen: </p><ul><li data-target='nav'>Öffnen <span class='task-nav'> Test <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> Einen Bug erstellen</span>;</li><li data-target='form'>Tragen Sie die Bug Informationen ein:</li><li data-target='submit'>Speichern</li></ul>";
|
||||
|
||||
@@ -40,7 +40,6 @@ $lang->tutorial->tasks['createAccount']['nav'] = array('app' => 'admin', 'modul
|
||||
$lang->tutorial->tasks['createAccount']['desc'] = "<p>Create a User: </p><ul><li data-target='nav'>Open <span class='task-nav'>Admin <i class='icon icon-angle-right'></i> Company <i class='icon icon-angle-right'></i> Users<i class='icon icon-angle-right'></i> New;</span></li><li data-target='form'>Fill the form with user information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProgram'] = array('title' => 'Create a program');
|
||||
$lang->tutorial->tasks['createProgram']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProgram']['nav'] = array('app' => 'program', 'module' => 'program', 'method' => 'create', 'menuModule' => 'program', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="browse"],.create-program-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-program-btn', 'targetPageName' => 'Create program');
|
||||
$lang->tutorial->tasks['createProgram']['desc'] = "<p>Create a new program:</p><ul><li data-target='nav'>Open <span class='task-nav'>Program <i class='icon icon-angle-right'></i> Program list <i class='icon icon-angle-right'></i> Create program</span>;</li><li data-target='form'>Fill the form with program information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
@@ -53,54 +52,25 @@ $lang->tutorial->tasks['createStory']['nav'] = array('app' => 'product', 'modul
|
||||
$lang->tutorial->tasks['createStory']['desc'] = "<p>Create a story: </p><ul><li data-target='nav'>Open <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i>Story <i class='icon icon-angle-right'></i>Create;</span></li><li data-target='form'>Fill the form with story information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProject'] = array('title' => 'Create a ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProject']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProject']['nav'] = array('app' => 'project', 'module' => 'project', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-project-btn', 'targetPageName' => 'Create Project');
|
||||
$lang->tutorial->tasks['createProject']['desc'] = "<p>Create a project: </p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> New</span> Page;</li><li data-target='form'>Fill the form with project information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageTeam'] = array('title' => "Manage Project Team");
|
||||
$lang->tutorial->tasks['manageTeam']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['manageTeam']['nav'] = array('app' => 'project', 'module' => 'project', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectForm td.c-name:first a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="members"],.manage-team-btn', 'target' => '.manage-team-btn', 'vars' => 'projectID=0', 'form' => '#teamForm', 'requiredFields' => 'accounts1,accounts', 'submit' => '#submit', 'targetPageName' => 'Manage team members');
|
||||
$lang->tutorial->tasks['manageTeam']['desc'] = "<p>Manage project team members: </p><ul><li data-target='nav'>Open <span class='task-nav'> project <i class='icon icon-angle-right'></i> Team <i class='icon icon-angle-right'></i> Manage Team Members</span> Page;</li><li data-target='form'>Choose users for the team.</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProjectExecution'] = array('title' => 'Create a ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProjectExecution']['nav'] = array('app' => 'project', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectForm td.c-name:first a,#navbar>.nav>li[data-id="execution"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => 'Create' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['desc'] = "<p>Create a new {$lang->executionCommon}:</p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> {$lang->executionCommon} list <i class='icon icon-angle-right'></i> Create {$lang->executionCommon}</span>;</li><li data-target='form'>Fill the form with {$lang->executionCommon} information;</li><li data-target='submit'>Save {$lang->executionCommon}</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecution'] = array('title' => 'Create a ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecution']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => 'Create ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['desc'] = "<p>Create a new {$lang->executionCommon}:</p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> {$lang->executionCommon} list <i class='icon icon-angle-right'></i> Create {$lang->executionCommon}</span>;</li><li data-target='form'>Fill the form with {$lang->executionCommon} information;</li><li data-target='submit'>Save {$lang->executionCommon}</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageExecutionTeam'] = array('title' => "Manage Team");
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#executionTableList>tr:first>.c-name>a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="team"],.manage-team-btn', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', 'submit' => '#submit', 'targetPageName' => 'Manage team members');
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['desc'] = "<p>Manage project team members: </p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> Team <i class='icon icon-angle-right'></i> Manage Team Members</span> Page;</li><li data-target='form'>Choose users for the team.</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkStory'] = array('title' => 'Link a Story');
|
||||
$lang->tutorial->tasks['linkStory']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['linkStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],#navbar>.nav>li[data-id="story"],#executionTableList>tr:first>.c-name>a,.link-story-btn', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "Link {$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkStory']['desc'] = "<p>Link a Story to execution: </p><ul><li data-target='nav'>Open <span class='task-nav'> Execution <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i>Link Story;</span></li><li data-target='form'>Select stories from story list to relate;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkExecutionStory'] = array('title' => 'Link a Story');
|
||||
$lang->tutorial->tasks['linkExecutionStory']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['linkExecutionStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],#navbar>.nav>li[data-id="story"],#executionTableList>tr:first>.c-name>a,.link-story-btn', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "Link {$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkExecutionStory']['desc'] = "<p>Link a Story to {$lang->executionCommon}: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i>Link Story;</span></li><li data-target='form'>Select stories from story list to relate;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createTask'] = array('title' => 'Task Breakdown');
|
||||
$lang->tutorial->tasks['createTask']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Create Task');
|
||||
$lang->tutorial->tasks['createTask']['desc'] = "<p>Task breakdown for a story: </p><ul><li data-target='nav'>Open <span class='task-nav'> Execution <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i> WBS;</span></li><li data-target='form'>Fill the form with task information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecutionTask'] = array('title' => 'Task Breakdown');
|
||||
$lang->tutorial->tasks['createExecutionTask']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecutionTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Create Task');
|
||||
$lang->tutorial->tasks['createExecutionTask']['desc'] = "<p>Task breakdown for a story: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i> WBS;</span></li><li data-target='form'>Fill the form with task information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createBug'] = array('title' => 'Report Bug');
|
||||
$lang->tutorial->tasks['createBug']['nav'] = array('app' => 'qa', 'module' => 'bug', 'method' => 'create', 'menuModule' => 'bug', 'menu' => 'bug', 'target' => '.create-bug-btn', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Report Bug');
|
||||
$lang->tutorial->tasks['createBug']['desc'] = "<p>Report a Bug: </p><ul><li data-target='nav'>Open <span class='task-nav'> Test <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> Report Bug</span>;</li><li data-target='form'>Fill the form with bug information:</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createBug'] = array('title' => 'Report Bug');
|
||||
$lang->tutorial->tasks['createBug']['nav'] = array('module' => 'bug', 'method' => 'create', 'menuModule' => 'qa', 'menu' => 'bug', 'target' => '.btn-bug-create', 'vars' => 'productID=0', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Report Bug');
|
||||
$lang->tutorial->tasks['createBug']['desc'] = "<p>Report a Bug: </p><ul><li data-target='nav'>Open <span class='task-nav'> QA <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> Report Bug</span>;</li><li data-target='form'>Fill the form with bug information:</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
@@ -40,7 +40,6 @@ $lang->tutorial->tasks['createAccount']['nav'] = array('module' => 'user', 'met
|
||||
$lang->tutorial->tasks['createAccount']['desc'] = "<p>Create a User: </p><ul><li data-target='nav'>Open <span class='task-nav'>Company <i class='icon icon-angle-right'></i> Users<i class='icon icon-angle-right'></i> New;</span></li><li data-target='form'>Fill the form with user information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProgram'] = array('title' => 'Create a program');
|
||||
$lang->tutorial->tasks['createProgram']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProgram']['nav'] = array('app' => 'program', 'module' => 'program', 'method' => 'create', 'menuModule' => 'program', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="browse"],.create-program-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-program-btn', 'targetPageName' => 'Create program');
|
||||
$lang->tutorial->tasks['createProgram']['desc'] = "<p>Create a new program:</p><ul><li data-target='nav'>Open <span class='task-nav'>Program <i class='icon icon-angle-right'></i> Program list <i class='icon icon-angle-right'></i> Create program</span>;</li><li data-target='form'>Fill the form with program information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
@@ -53,54 +52,25 @@ $lang->tutorial->tasks['createStory']['nav'] = array('module' => 'story', 'meth
|
||||
$lang->tutorial->tasks['createStory']['desc'] = "<p>Create a story: </p><ul><li data-target='nav'>Open <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i>Story <i class='icon icon-angle-right'></i>Create;</span></li><li data-target='form'>Fill the form with story information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProject'] = array('title' => 'Create a ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProject']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProject']['nav'] = array('module' => 'execution', 'method' => 'create', 'menu' => '#pageNav', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-project-btn', 'targetPageName' => 'Create ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProject']['desc'] = "<p>Create a {$lang->executionCommon}: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> New</span> Page;</li><li data-target='form'>Fill the form with {$lang->executionCommon} information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageTeam'] = array('title' => "Manage {$lang->executionCommon} Team");
|
||||
$lang->tutorial->tasks['manageTeam']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['manageTeam']['nav'] = array('module' => 'execution', 'method' => 'managemembers', 'menu' => 'team', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', 'submit' => '#submit', 'targetPageName' => 'Manage team members');
|
||||
$lang->tutorial->tasks['manageTeam']['desc'] = "<p>Manage {$lang->executionCommon} team members: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Team <i class='icon icon-angle-right'></i> Manage Team Members</span> Page;</li><li data-target='form'>Choose users for the team.</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProjectExecution'] = array('title' => 'Create a ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProjectExecution']['nav'] = array('app' => 'project', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectForm td.c-name:first a,#navbar>.nav>li[data-id="execution"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => 'Create' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['desc'] = "<p>Create a new {$lang->executionCommon}:</p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> {$lang->executionCommon} list <i class='icon icon-angle-right'></i> Create {$lang->executionCommon}</span>;</li><li data-target='form'>Fill the form with {$lang->executionCommon} information;</li><li data-target='submit'>Save {$lang->executionCommon}</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecution'] = array('title' => 'Create a ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecution']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => 'Create ' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['desc'] = "<p>Create a new {$lang->executionCommon}:</p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> {$lang->executionCommon} list <i class='icon icon-angle-right'></i> Create {$lang->executionCommon}</span>;</li><li data-target='form'>Fill the form with {$lang->executionCommon} information;</li><li data-target='submit'>Save {$lang->executionCommon}</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageExecutionTeam'] = array('title' => "Manage Team");
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#executionTableList>tr:first>.c-name>a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="team"],.manage-team-btn', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', 'submit' => '#submit', 'targetPageName' => 'Manage team members');
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['desc'] = "<p>Manage project team members: </p><ul><li data-target='nav'>Open <span class='task-nav'> Project <i class='icon icon-angle-right'></i> Team <i class='icon icon-angle-right'></i> Manage Team Members</span> Page;</li><li data-target='form'>Choose users for the team.</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkStory'] = array('title' => 'Link a Story');
|
||||
$lang->tutorial->tasks['linkStory']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['linkStory']['nav'] = array('module' => 'execution', 'method' => 'linkStory', 'menu' => 'story', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => 'Relate Story');
|
||||
$lang->tutorial->tasks['linkStory']['desc'] = "<p>Link a Story to {$lang->executionCommon}: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i>Relate Story;</span></li><li data-target='form'>Select stories from story list to relate;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkExecutionStory'] = array('title' => 'Link a Story');
|
||||
$lang->tutorial->tasks['linkExecutionStory']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['linkExecutionStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],#navbar>.nav>li[data-id="story"],#executionTableList>tr:first>.c-name>a,.link-story-btn', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "Link {$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkExecutionStory']['desc'] = "<p>Link a Story to {$lang->executionCommon}: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i>Link Story;</span></li><li data-target='form'>Select stories from story list to relate;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createTask'] = array('title' => 'Task Breakdown');
|
||||
$lang->tutorial->tasks['createTask']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createTask']['nav'] = array('module' => 'task', 'method' => 'create', 'menuModule' => 'execution', 'menu' => 'story', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Create Task');
|
||||
$lang->tutorial->tasks['createTask']['desc'] = "<p>Task breakdown for a story: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i> WBS;</span></li><li data-target='form'>Fill the form with task information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecutionTask'] = array('title' => 'Task Breakdown');
|
||||
$lang->tutorial->tasks['createExecutionTask']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecutionTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Create Task');
|
||||
$lang->tutorial->tasks['createExecutionTask']['desc'] = "<p>Task breakdown for a story: </p><ul><li data-target='nav'>Open <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> Story <i class='icon icon-angle-right'></i> WBS;</span></li><li data-target='form'>Fill the form with task information;</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createBug'] = array('title' => 'Report Bug');
|
||||
$lang->tutorial->tasks['createBug']['nav'] = array('module' => 'bug', 'method' => 'create', 'menuModule' => 'qa', 'menu' => 'bug', 'target' => '.btn-bug-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Report Bug');
|
||||
$lang->tutorial->tasks['createBug']['desc'] = "<p>Report a Bug: </p><ul><li data-target='nav'>Open <span class='task-nav'> Test <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> Report Bug</span>;</li><li data-target='form'>Fill the form with bug information:</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createBug'] = array('title' => 'Report Bug');
|
||||
$lang->tutorial->tasks['createBug']['nav'] = array('module' => 'bug', 'method' => 'create', 'menuModule' => 'qa', 'menu' => 'bug', 'target' => '.btn-bug-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => 'Report Bug');
|
||||
$lang->tutorial->tasks['createBug']['desc'] = "<p>Report a Bug: </p><ul><li data-target='nav'>Open <span class='task-nav'> Test <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> Report Bug</span>;</li><li data-target='form'>Fill the form with bug information:</li><li data-target='submit'>Save</li></ul>";
|
||||
|
||||
@@ -40,7 +40,6 @@ $lang->tutorial->tasks['createAccount']['nav'] = array('app' => 'admin', 'modul
|
||||
$lang->tutorial->tasks['createAccount']['desc'] = "<p>在系统创建一个新的用户帐号:</p><ul><li data-target='nav'>打开 <span class='task-nav'>后台 <i class='icon icon-angle-right'></i> 人员 <i class='icon icon-angle-right'></i> 用户 <i class='icon icon-angle-right'></i> 添加用户</span> 页面;</li><li data-target='form'>在添加用户表单中填写新用户信息;</li><li data-target='submit'>保存用户信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProgram'] = array('title' => '创建项目集');
|
||||
$lang->tutorial->tasks['createProgram']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProgram']['nav'] = array('app' => 'program', 'module' => 'program', 'method' => 'create', 'menuModule' => 'program', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="browse"],.create-program-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-program-btn', 'targetPageName' => '添加项目集');
|
||||
$lang->tutorial->tasks['createProgram']['desc'] = "<p>在系统创建一个新的项目集:</p><ul><li data-target='nav'>打开 <span class='task-nav'>项目集 <i class='icon icon-angle-right'></i> 项目集列表 <i class='icon icon-angle-right'></i> 添加项目集</span> 页面;</li><li data-target='form'>在添加项目集表单中填写项目集信息;</li><li data-target='submit'>保存项目集信息。</li></ul>";
|
||||
|
||||
@@ -53,50 +52,25 @@ $lang->tutorial->tasks['createStory']['nav'] = array('app' => 'product', 'modul
|
||||
$lang->tutorial->tasks['createStory']['desc'] = "<p>在系统创建一个新的{$lang->SRCommon}:</p><ul><li data-target='nav'>打开 <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 提{$lang->SRCommon}</span> 页面;</li><li data-target='form'>在{$lang->productCommon}表单中填写要创建的{$lang->SRCommon}信息;</li><li data-target='submit'>保存{$lang->SRCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProject'] = array('title' => '创建项目');
|
||||
$lang->tutorial->tasks['createProject']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProject']['nav'] = array('app' => 'project', 'module' => 'project', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-project-btn', 'targetPageName' => '添加项目');
|
||||
$lang->tutorial->tasks['createProject']['desc'] = "<p>在系统创建一个新的项目:</p><ul><li data-target='nav'>打开 <span class='task-nav'> 项目 <i class='icon icon-angle-right'></i> 项目列表 <i class='icon icon-angle-right'></i> 创建项目</span> 页面;</li><li data-target='form'>在项目表单中填写要创建的项目信息;</li><li data-target='submit'>保存项目信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageTeam'] = array('title' => "管理项目团队");
|
||||
$lang->tutorial->tasks['manageTeam']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['manageTeam']['nav'] = array('app' => 'project', 'module' => 'project', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectForm td.c-name:first a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="members"],.manage-team-btn', 'target' => '.manage-team-btn', 'vars' => 'projectID=0', 'form' => '#teamForm', 'requiredFields' => 'accounts1', 'submit' => '#submit', 'targetPageName' => '团队管理');
|
||||
$lang->tutorial->tasks['manageTeam']['desc'] = "<p>管理项目团队成员:</p><ul><li data-target='nav'>打开 <span class='task-nav'> 项目 <i class='icon icon-angle-right'></i> 设置 <i class='icon icon-angle-right'></i> 团队 <i class='icon icon-angle-right'></i> 团队管理</span> 页面;</li><li data-target='form'>选择要加入项目团队的成员;</li><li data-target='submit'>保存团队成员信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProjectExecution'] = array('title' => '添加' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProjectExecution']['nav'] = array('app' => 'project', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectForm td.c-name:first a,#navbar>.nav>li[data-id="execution"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => '添加' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['desc'] = "<p>在系统创建一个新的{$lang->executionCommon}:</p><ul><li data-target='nav'>打开 <span class='task-nav'> 项目 <i class='icon icon-angle-right'></i> {$lang->executionCommon} <i class='icon icon-angle-right'></i> 添加{$lang->executionCommon}</span> 页面;</li><li data-target='form'>在{$lang->executionCommon}表单中填写要创建的{$lang->executionCommon}信息;</li><li data-target='submit'>保存{$lang->executionCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecution'] = array('title' => '创建' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecution']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => '添加' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['desc'] = "<p>在系统创建一个新的{$lang->executionCommon}:</p><ul><li data-target='nav'>打开 <span class='task-nav'> 项目 <i class='icon icon-angle-right'></i> {$lang->executionCommon}列表 <i class='icon icon-angle-right'></i> 添加{$lang->executionCommon}</span> 页面;</li><li data-target='form'>在表单中填写要创建的{$lang->executionCommon}信息;</li><li data-target='submit'>保存{$lang->executionCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageExecutionTeam'] = array('title' => "管理团队");
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#executionTableList>tr:first>.c-name>a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="team"],.manage-team-btn', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1,accounts', 'submit' => '#submit', 'targetPageName' => '团队管理');
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['desc'] = "<p>管理{$lang->executionCommon}团队成员:</p><ul><li data-target='nav'>打开 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> 设置 <i class='icon icon-angle-right'></i> 团队 <i class='icon icon-angle-right'></i> 团队管理</span> 页面;</li><li data-target='form'>选择要加入团队的成员;</li><li data-target='submit'>保存团队成员信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkStory'] = array('title' => "关联{$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkStory']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['linkStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],#navbar>.nav>li[data-id="story"],#executionTableList>tr:first>.c-name>a,.link-story-btn', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "关联{$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkStory']['desc'] = "<p>将{$lang->SRCommon}关联到执行:</p><ul><li data-target='nav'>打开 <span class='task-nav'> 执行 <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 关联{$lang->SRCommon}</span> 页面;</li><li data-target='form'>在{$lang->SRCommon}列表中勾选要关联的{$lang->SRCommon};</li><li data-target='submit'>保存关联的{$lang->SRCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkExecutionStory'] = array('title' => "关联{$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkExecutionStory']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['linkExecutionStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],#navbar>.nav>li[data-id="story"],#executionTableList>tr:first>.c-name>a,.link-story-btn', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "关联{$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkExecutionStory']['desc'] = "<p>将{$lang->SRCommon}关联到{$lang->executionCommon}:</p><ul><li data-target='nav'>打开 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 关联{$lang->SRCommon}</span> 页面;</li><li data-target='form'>在{$lang->SRCommon}列表中勾选要关联的{$lang->SRCommon};</li><li data-target='submit'>保存关联的{$lang->SRCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createTask'] = array('title' => '分解任务');
|
||||
$lang->tutorial->tasks['createTask']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '建任务');
|
||||
$lang->tutorial->tasks['createTask']['desc'] = "<p>将执行{$lang->SRCommon}分解为任务:</p><ul><li data-target='nav'>打开 <span class='task-nav'> 执行 <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 分解任务</span> 页面;</li><li data-target='form'>在表单中填写任务信息;</li><li data-target='submit'>保存任务信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecutionTask'] = array('title' => '分解任务');
|
||||
$lang->tutorial->tasks['createExecutionTask']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecutionTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '建任务');
|
||||
$lang->tutorial->tasks['createExecutionTask']['desc'] = "<p>将{$lang->executionCommon}{$lang->SRCommon}分解为任务:</p><ul><li data-target='nav'>打开 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 分解任务</span> 页面;</li><li data-target='form'>在表单中填写任务信息;</li><li data-target='submit'>保存任务信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createBug'] = array('title' => '提Bug');
|
||||
$lang->tutorial->tasks['createBug']['nav'] = array('app' => 'qa', 'module' => 'bug', 'method' => 'create', 'menuModule' => 'bug', 'menu' => 'bug', 'target' => '.create-bug-btn', 'vars' => 'productID=0', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '提Bug');
|
||||
$lang->tutorial->tasks['createBug']['desc'] = "<p>在系统中提交一个Bug:</p><ul><li data-target='nav'>打开 <span class='task-nav'> 测试 <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> 提Bug</span>;</li><li data-target='form'>在表单中填写Bug信息;</li><li data-target='submit'>保存Bug信息。</li></ul>";
|
||||
|
||||
@@ -53,50 +53,25 @@ $lang->tutorial->tasks['createStory']['nav'] = array('app' => 'product', 'modul
|
||||
$lang->tutorial->tasks['createStory']['desc'] = "<p>在系統創建一個新的{$lang->SRCommon}:</p><ul><li data-target='nav'>打開 <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 提{$lang->SRCommon}</span> 頁面;</li><li data-target='form'>在{$lang->productCommon}表單中填寫要創建的{$lang->SRCommon}信息;</li><li data-target='submit'>保存{$lang->SRCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProject'] = array('title' => '創建項目');
|
||||
$lang->tutorial->tasks['createProject']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProject']['nav'] = array('app' => 'project', 'module' => 'project', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-project-btn', 'targetPageName' => '添加項目');
|
||||
$lang->tutorial->tasks['createProject']['desc'] = "<p>在系統創建一個新的項目:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 項目 <i class='icon icon-angle-right'></i> 項目列表 <i class='icon icon-angle-right'></i> 創建項目</span> 頁面;</li><li data-target='form'>在項目表單中填寫要創建的項目信息;</li><li data-target='submit'>保存項目信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageTeam'] = array('title' => "管理項目團隊");
|
||||
$lang->tutorial->tasks['manageTeam']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['manageTeam']['nav'] = array('app' => 'project', 'module' => 'project', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectTableList>tr:first>.c-name a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="members"],.manage-team-btn', 'target' => '.manage-team-btn', 'vars' => 'projectID=0', 'form' => '#teamForm', 'requiredFields' => 'accounts1', 'submit' => '#submit', 'targetPageName' => '團隊管理');
|
||||
$lang->tutorial->tasks['manageTeam']['desc'] = "<p>管理項目團隊成員:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 項目 <i class='icon icon-angle-right'></i> 設置 <i class='icon icon-angle-right'></i> 團隊 <i class='icon icon-angle-right'></i> 團隊管理</span> 頁面;</li><li data-target='form'>選擇要加入項目團隊的成員;</li><li data-target='submit'>保存團隊成員信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProjectExecution'] = array('title' => '添加' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createProjectExecution']['nav'] = array('app' => 'project', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectTableList>tr:first>.c-name a,#navbar>.nav>li[data-id="execution"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => '添加' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createProjectExecution']['desc'] = "<p>在系統創建一個新的{$lang->executionCommon}:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 項目 <i class='icon icon-angle-right'></i> {$lang->executionCommon} <i class='icon icon-angle-right'></i> 添加{$lang->executionCommon}</span> 頁面;</li><li data-target='form'>在{$lang->executionCommon}表單中填寫要創建的{$lang->executionCommon}信息;</li><li data-target='submit'>保存{$lang->executionCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecution'] = array('title' => '創建' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecution']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => '添加' . $lang->executionCommon);
|
||||
$lang->tutorial->tasks['createExecution']['desc'] = "<p>在系統創建一個新的{$lang->executionCommon}:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 項目 <i class='icon icon-angle-right'></i> {$lang->executionCommon}列表 <i class='icon icon-angle-right'></i> 添加{$lang->executionCommon}</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的{$lang->executionCommon}信息;</li><li data-target='submit'>保存{$lang->executionCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['manageExecutionTeam'] = array('title' => "管理團隊");
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#executionTableList>tr:first>.c-name>a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="team"],.manage-team-btn', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1,accounts', 'submit' => '#submit', 'targetPageName' => '團隊管理');
|
||||
$lang->tutorial->tasks['manageExecutionTeam']['desc'] = "<p>管理{$lang->executionCommon}團隊成員:</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> 設置 <i class='icon icon-angle-right'></i> 團隊 <i class='icon icon-angle-right'></i> 團隊管理</span> 頁面;</li><li data-target='form'>選擇要加入團隊的成員;</li><li data-target='submit'>保存團隊成員信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkStory'] = array('title' => "關聯{$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkStory']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['linkStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],#navbar>.nav>li[data-id="story"],#executionTableList>tr:first>.c-name>a,.link-story-btn', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "關聯{$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkStory']['desc'] = "<p>將{$lang->SRCommon}關聯到執行:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 執行 <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 關聯{$lang->SRCommon}</span> 頁面;</li><li data-target='form'>在{$lang->SRCommon}列表中勾選要關聯的{$lang->SRCommon};</li><li data-target='submit'>保存關聯的{$lang->SRCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkExecutionStory'] = array('title' => "關聯{$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkExecutionStory']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['linkExecutionStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],#navbar>.nav>li[data-id="story"],#executionTableList>tr:first>.c-name>a,.link-story-btn', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "關聯{$lang->SRCommon}");
|
||||
$lang->tutorial->tasks['linkExecutionStory']['desc'] = "<p>將{$lang->SRCommon}關聯到{$lang->executionCommon}:</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 關聯{$lang->SRCommon}</span> 頁面;</li><li data-target='form'>在{$lang->SRCommon}列表中勾選要關聯的{$lang->SRCommon};</li><li data-target='submit'>保存關聯的{$lang->SRCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createTask'] = array('title' => '分解任務');
|
||||
$lang->tutorial->tasks['createTask']['mode'] = 'new';
|
||||
$lang->tutorial->tasks['createTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '建任務');
|
||||
$lang->tutorial->tasks['createTask']['desc'] = "<p>將執行{$lang->SRCommon}分解為任務:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 執行 <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 分解任務</span> 頁面;</li><li data-target='form'>在表單中填寫任務信息;</li><li data-target='submit'>保存任務信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createExecutionTask'] = array('title' => '分解任務');
|
||||
$lang->tutorial->tasks['createExecutionTask']['mode'] = 'classic';
|
||||
$lang->tutorial->tasks['createExecutionTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '建任務');
|
||||
$lang->tutorial->tasks['createExecutionTask']['desc'] = "<p>將{$lang->executionCommon}{$lang->SRCommon}分解為任務:</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 分解任務</span> 頁面;</li><li data-target='form'>在表單中填寫任務信息;</li><li data-target='submit'>保存任務信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createBug'] = array('title' => '提Bug');
|
||||
$lang->tutorial->tasks['createBug']['nav'] = array('app' => 'qa', 'module' => 'bug', 'method' => 'create', 'menuModule' => 'bug', 'menu' => 'bug', 'target' => '.create-bug-btn', 'vars' => 'productID=0', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '提Bug');
|
||||
$lang->tutorial->tasks['createBug']['desc'] = "<p>在系統中提交一個Bug:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 測試 <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> 提Bug</span>;</li><li data-target='form'>在表單中填寫Bug信息;</li><li data-target='submit'>保存Bug信息。</li></ul>";
|
||||
|
||||
@@ -689,6 +689,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();
|
||||
|
||||
@@ -7529,6 +7529,245 @@ 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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Relation default program.
|
||||
*
|
||||
|
||||
@@ -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