* Code for task #36060.
This commit is contained in:
@@ -171,7 +171,7 @@ class router extends baseRouter
|
||||
$commonSettings = array();
|
||||
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')")->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')")->fetchAll();
|
||||
}
|
||||
catch (PDOException $exception)
|
||||
{
|
||||
@@ -179,7 +179,7 @@ class router extends baseRouter
|
||||
}
|
||||
}
|
||||
|
||||
$hourKey = $planKey = $URSR = 0;
|
||||
$hourKey = $planKey = $URSR = $URAndSR = 0;
|
||||
$mode = 'new';
|
||||
$projectKey = empty($this->config->isINT) ? ITERATION_KEY : SPRINT_KEY;
|
||||
|
||||
@@ -188,6 +188,7 @@ class router extends baseRouter
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -215,6 +216,7 @@ class router extends baseRouter
|
||||
|
||||
/* User preference init. */
|
||||
$config->URSR = $URSR;
|
||||
$config->URAndSR = $URAndSR;
|
||||
$config->programLink = 'program-pgmbrowse';
|
||||
$config->productLink = 'product-all';
|
||||
$config->projectLink = 'program-prjbrowse';
|
||||
|
||||
@@ -188,7 +188,7 @@ $lang->product->menu->home = 'Home|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
$lang->product->viewMenu->release = array('link' => "Release|release|browse|productID=%s", 'subModule' => 'release');
|
||||
@@ -307,7 +307,7 @@ $lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = 'Task|my|work|mode=task';
|
||||
$lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
$lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase&type=assigntome';
|
||||
@@ -315,7 +315,7 @@ $lang->my->workMenu->testtask = 'Test Task|my|work|mode=testtask&type=wait';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
f($config->URAndSR) $lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
$lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=story";
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
|
||||
@@ -188,7 +188,7 @@ $lang->product->menu->home = 'Home|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
$lang->product->viewMenu->release = array('link' => "Release|release|browse|productID=%s", 'subModule' => 'release');
|
||||
@@ -307,7 +307,7 @@ $lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = 'Task|my|work|mode=task';
|
||||
$lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
$lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase&type=assigntome';
|
||||
@@ -315,7 +315,7 @@ $lang->my->workMenu->testtask = 'Test Task|my|work|mode=testtask&type=wait';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
$lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=story";
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
|
||||
@@ -188,7 +188,7 @@ $lang->product->menu->home = 'Home|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
$lang->product->viewMenu->release = array('link' => "Release|release|browse|productID=%s", 'subModule' => 'release');
|
||||
@@ -307,7 +307,7 @@ $lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = 'Task|my|work|mode=task';
|
||||
$lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
$lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase&type=assigntome';
|
||||
@@ -315,7 +315,7 @@ $lang->my->workMenu->testtask = 'Test Task|my|work|mode=testtask&type=wait';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
$lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=story";
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
|
||||
@@ -188,7 +188,7 @@ $lang->product->menu->home = 'Home|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
$lang->product->viewMenu->release = array('link' => "Release|release|browse|productID=%s", 'subModule' => 'release');
|
||||
@@ -307,7 +307,7 @@ $lang->my->menu->contacts = 'Contacts|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = 'Task|my|work|mode=task';
|
||||
$lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
$lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase&type=assigntome';
|
||||
@@ -315,7 +315,7 @@ $lang->my->workMenu->testtask = 'Test Task|my|work|mode=testtask&type=wait';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
$lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=story";
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
|
||||
@@ -187,7 +187,7 @@ $lang->product->menu->home = '主页|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit,manageline');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "计划|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
$lang->product->viewMenu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release');
|
||||
@@ -306,7 +306,7 @@ $lang->my->menu->contacts = '联系人|my|managecontacts|';
|
||||
|
||||
$lang->my->workMenu = new stdclass();
|
||||
$lang->my->workMenu->task = '任务|my|work|mode=task';
|
||||
$lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->workMenu->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
$lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = '用例|my|work|mode=testcase&type=assigntome';
|
||||
@@ -314,7 +314,7 @@ $lang->my->workMenu->testtask = '测试单|my|work|mode=testtask&type=wait';
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = '任务|my|contribute|mode=task';
|
||||
$lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
if($config->URAndSR) $lang->my->contributeMenu->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
$lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=story";
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = '用例|my|contribute|mode=testcase&type=openedbyme';
|
||||
|
||||
@@ -538,6 +538,30 @@ class custom extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set flow.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function flow()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$this->custom->setConcept();
|
||||
$this->loadModel('setting')->setItem('system.custom.URAndSR', $this->post->URAndSR);
|
||||
|
||||
$this->app->loadLang('common');
|
||||
$locate = inlink('flow');
|
||||
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locate));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->custom->flow;
|
||||
$this->view->position[] = $this->lang->custom->flow;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Mode.
|
||||
*
|
||||
|
||||
@@ -139,7 +139,7 @@ $lang->custom->user->fields['statusList'] = 'Status';
|
||||
$lang->custom->user->fields['contactField'] = 'Available Contact';
|
||||
$lang->custom->user->fields['deleted'] = 'Show deleted user';
|
||||
|
||||
$lang->custom->system = array('required', 'score');
|
||||
$lang->custom->system = array('required', 'flow', 'score');
|
||||
|
||||
$lang->custom->block = new stdclass();
|
||||
$lang->custom->block->fields['closed'] = 'Closed Block';
|
||||
@@ -190,8 +190,18 @@ $lang->custom->weekend = 'Weekend';
|
||||
$lang->custom->weekendList[2] = '2-Day Off';
|
||||
$lang->custom->weekendList[1] = '1-Day Off';
|
||||
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
}
|
||||
|
||||
$lang->custom->workingList['full'] = 'Full Management of Dev';
|
||||
|
||||
@@ -212,10 +222,8 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Plan';
|
||||
$lang->custom->moduleName['project'] = $lang->sprintCommon;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?";
|
||||
$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. Do you use hours or story points to make estimations in your company?";
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
|
||||
@@ -139,7 +139,7 @@ $lang->custom->user->fields['statusList'] = 'Status';
|
||||
$lang->custom->user->fields['contactField'] = 'Available Contact';
|
||||
$lang->custom->user->fields['deleted'] = 'Deleted User';
|
||||
|
||||
$lang->custom->system = array('required', 'score');
|
||||
$lang->custom->system = array('required', 'flow', 'score');
|
||||
|
||||
$lang->custom->block = new stdclass();
|
||||
$lang->custom->block->fields['closed'] = 'Closed Block';
|
||||
@@ -190,8 +190,18 @@ $lang->custom->weekend = 'Weekend';
|
||||
$lang->custom->weekendList[2] = '2-Day Off';
|
||||
$lang->custom->weekendList[1] = '1-Day Off';
|
||||
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
}
|
||||
|
||||
$lang->custom->workingList['full'] = 'Application Lifecycle Management';
|
||||
|
||||
@@ -212,10 +222,8 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Plan';
|
||||
$lang->custom->moduleName['project'] = $lang->sprintCommon;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?";
|
||||
$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. Do you use hours or story points to make estimations in your company?";
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
|
||||
@@ -139,7 +139,7 @@ $lang->custom->user->fields['statusList'] = 'Statut';
|
||||
$lang->custom->user->fields['contactField'] = 'Contact';
|
||||
$lang->custom->user->fields['deleted'] = 'Parti';
|
||||
|
||||
$lang->custom->system = array('required', 'score');
|
||||
$lang->custom->system = array('required', 'flow', 'score');
|
||||
|
||||
$lang->custom->block = new stdclass();
|
||||
$lang->custom->block->fields['closed'] = 'Bloc Fermé';
|
||||
@@ -190,8 +190,18 @@ $lang->custom->weekend = 'Weekend';
|
||||
$lang->custom->weekendList[2] = '2-Jour';
|
||||
$lang->custom->weekendList[1] = '1-Jour';
|
||||
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
}
|
||||
|
||||
$lang->custom->workingList['full'] = 'Application Lifecycle Management';
|
||||
|
||||
@@ -212,10 +222,8 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Plan';
|
||||
$lang->custom->moduleName['project'] = $lang->sprintCommon;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Quelle combinaison de gestion convient le mieux à votre entreprise ?";
|
||||
$lang->custom->conceptQuestions['story'] = "2. Utilisez-vous le concept d'exigence ou de user story dans votre entreprise ?";
|
||||
$lang->custom->conceptQuestions['requirementpoint'] = "3. Utilisez-vous des heures ou des points de fonction pour faire des estimations dans votre entreprise ?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. Utilisez-vous des heures ou des points de Story pour faire des estimations dans votre entreprise ?";
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Quelle combinaison de gestion convient le mieux à votre entreprise ?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
|
||||
@@ -139,7 +139,7 @@ $lang->custom->user->fields['statusList'] = 'Tình trạng';
|
||||
$lang->custom->user->fields['contactField'] = 'Liên hệ có sẵn';
|
||||
$lang->custom->user->fields['deleted'] = 'Người dùng đã xóa';
|
||||
|
||||
$lang->custom->system = array('required', 'score');
|
||||
$lang->custom->system = array('required', 'flow', 'score');
|
||||
|
||||
$lang->custom->block = new stdclass();
|
||||
$lang->custom->block->fields['closed'] = 'Đã đóng Block';
|
||||
@@ -190,8 +190,18 @@ $lang->custom->weekend = 'Cuối tuần';
|
||||
$lang->custom->weekendList[2] = '2 ngày nghỉ';
|
||||
$lang->custom->weekendList[1] = '1 ngày nghỉ';
|
||||
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
}
|
||||
|
||||
$lang->custom->workingList['full'] = 'Quản lý vòng đời ứng dụng';
|
||||
|
||||
@@ -212,10 +222,8 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Kế hoạch';
|
||||
$lang->custom->moduleName['project'] = $lang->sprintCommon;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Sự kết hợp quản lý nào phù hợp với công ty của bạn?";
|
||||
$lang->custom->conceptQuestions['story'] = "2. Bạn có sử dụng mô hình điều kiện hay câu chuyện người dùng trong doanh nghiệp của bạn?";
|
||||
$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. Bạn có dùng giờ hoặc điểm để tạo dự kiến trong doanh nghiệp của bạn ?";
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Sự kết hợp quản lý nào phù hợp với công ty của bạn?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
|
||||
@@ -140,7 +140,7 @@ $lang->custom->user->fields['statusList'] = '状态';
|
||||
$lang->custom->user->fields['contactField'] = '可用联系方式';
|
||||
$lang->custom->user->fields['deleted'] = '列出已删除用户';
|
||||
|
||||
$lang->custom->system = array('required', 'score');
|
||||
$lang->custom->system = array('required', 'flow', 'score');
|
||||
|
||||
$lang->custom->block = new stdclass();
|
||||
$lang->custom->block->fields['closed'] = '关闭的区块';
|
||||
@@ -191,8 +191,18 @@ $lang->custom->weekend = '休息日';
|
||||
$lang->custom->weekendList[2] = '双休';
|
||||
$lang->custom->weekendList[1] = '单休';
|
||||
|
||||
$lang->custom->sprintConceptList[0] = '项目 - 产品 - 迭代';
|
||||
$lang->custom->sprintConceptList[1] = '项目 - 产品 - 冲刺';
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = '产品 - 项目';
|
||||
$lang->custom->sprintConceptList[1] = '产品 - 迭代';
|
||||
$lang->custom->sprintConceptList[2] = '产品 - 冲刺';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = '项目 - 产品 - 迭代';
|
||||
$lang->custom->sprintConceptList[1] = '项目 - 产品 - 冲刺';
|
||||
}
|
||||
|
||||
$lang->custom->workingList['full'] = '完整研发管理工具';
|
||||
|
||||
@@ -213,16 +223,18 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = '计划';
|
||||
$lang->custom->moduleName['project'] = $lang->sprintCommon;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. 下述哪种组合方式更适合您公司的管理现状?";
|
||||
$lang->custom->conceptQuestions['story'] = "2. 您公司是在使用需求概念还是用户故事概念?";
|
||||
$lang->custom->conceptQuestions['requirementpoint'] = "3. 您公司是在使用工时还是功能点来做规模估算?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. 您公司是在使用工时还是故事点来做规模估算?";
|
||||
$lang->custom->conceptQuestions['overview'] = "1. 下述哪种组合方式更适合您公司的管理现状?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. 是否启用{$lang->URCommon}和{$lang->SRCommon}概念?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
$lang->custom->conceptOptions->story['0'] = '需求';
|
||||
$lang->custom->conceptOptions->story['1'] = '故事';
|
||||
|
||||
$lang->custom->conceptOptions->URAndSR = array();
|
||||
$lang->custom->conceptOptions->URAndSR['1'] = '是';
|
||||
$lang->custom->conceptOptions->URAndSR['0'] = '否';
|
||||
|
||||
$lang->custom->conceptOptions->hourPoint = array();
|
||||
$lang->custom->conceptOptions->hourPoint['0'] = '工时';
|
||||
$lang->custom->conceptOptions->hourPoint['1'] = '故事点';
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of deny method of user 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)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id: deny.html.php 4129 2013-01-18 01:58:14Z wwccss $
|
||||
*/
|
||||
?>
|
||||
<?php if(isset($this->config->conceptSetted)):?>
|
||||
<?php include 'header.html.php';?>
|
||||
<?php else:?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php endif;?>
|
||||
<?php if(isset($this->config->conceptSetted)):?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<div class='heading'>
|
||||
<strong><?php echo $lang->custom->flow?></strong>
|
||||
</div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class='container'>
|
||||
<div class='modal-dialog'>
|
||||
<div class='modal-header'>
|
||||
<strong><?php echo $lang->custom->flow?></strong>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<form class='form-ajax' method='post'>
|
||||
<div class='modal-body'>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['overview']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('sprintConcept', $lang->custom->sprintConceptList, zget($this->config->custom, 'sprintConcept', '0'))?> </div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['URAndSR']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('URAndSR', $lang->custom->conceptOptions->URAndSR, zget($this->config->custom, 'URAndSR', '0'));?></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<div><?php echo html::submitButton();?></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<?php if(isset($this->config->conceptSetted)):?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php else:?>
|
||||
<?php echo js::execute($pageJS);?>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<?php endif;?>
|
||||
+55
-44
@@ -3630,59 +3630,70 @@ class storyModel extends model
|
||||
*/
|
||||
public function getTracks($productID = 0, $branch = 0, $pager = null)
|
||||
{
|
||||
$sourcePageID = $pager->pageID;
|
||||
$requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager);
|
||||
if($pager->pageID != $sourcePageID)
|
||||
{
|
||||
$requirements = array();
|
||||
$pager->pageID = $sourcePageID;
|
||||
}
|
||||
$tracks = array();
|
||||
$sourcePageID = $pager->pageID;
|
||||
$excludeStories = false;
|
||||
|
||||
foreach($requirements as $requirement)
|
||||
if($this->config->URAndSR)
|
||||
{
|
||||
$stories = $this->getRelation($requirement->id, 'requirement');
|
||||
$stories = empty($stories) ? array() : $stories;
|
||||
foreach($stories as $id => $title)
|
||||
$requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager);
|
||||
if($pager->pageID != $sourcePageID)
|
||||
{
|
||||
$stories[$id] = new stdclass();
|
||||
$stories[$id]->title = $title;
|
||||
$stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id);
|
||||
$stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id);
|
||||
$stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id);
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id');
|
||||
$stories[$id]->revisions = $this->dao->select('BID, extra')->from(TABLE_RELATION)
|
||||
->where('AType')->eq('design')
|
||||
->andWhere('BType')->eq('commit')
|
||||
->andWhere('AID')->in(array_keys($stories[$id]->designs))
|
||||
->fetchPairs();
|
||||
}
|
||||
$requirements = array();
|
||||
$pager->pageID = $sourcePageID;
|
||||
}
|
||||
|
||||
$requirement->track = $stories;
|
||||
foreach($requirements as $requirement)
|
||||
{
|
||||
$stories = $this->getRelation($requirement->id, 'requirement');
|
||||
$stories = empty($stories) ? array() : $stories;
|
||||
foreach($stories as $id => $title)
|
||||
{
|
||||
$stories[$id] = new stdclass();
|
||||
$stories[$id]->title = $title;
|
||||
$stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id);
|
||||
$stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id);
|
||||
$stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id);
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id');
|
||||
$stories[$id]->revisions = $this->dao->select('BID, extra')->from(TABLE_RELATION)
|
||||
->where('AType')->eq('design')
|
||||
->andWhere('BType')->eq('commit')
|
||||
->andWhere('AID')->in(array_keys($stories[$id]->designs))
|
||||
->fetchPairs();
|
||||
}
|
||||
}
|
||||
|
||||
$requirement->track = $stories;
|
||||
}
|
||||
|
||||
$tracks = $requirements;
|
||||
|
||||
/* Get no requirements story. */
|
||||
$excludeStories = $this->dao->select('BID')->from(TABLE_RELATION)
|
||||
->where('AType')->eq('requirement')
|
||||
->andWhere('BType')->eq('story')
|
||||
->andWhere('relation')->eq('subdivideinto')
|
||||
->andWhere('product')->eq($productID)
|
||||
->fetchPairs('BID', 'BID');
|
||||
$stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories);
|
||||
if($stories) $pager->recTotal += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories, $pager);
|
||||
}
|
||||
|
||||
/* Get no requirements story. */
|
||||
$subdividedStories = $this->dao->select('BID')->from(TABLE_RELATION)
|
||||
->where('AType')->eq('requirement')
|
||||
->andWhere('BType')->eq('story')
|
||||
->andWhere('relation')->eq('subdivideinto')
|
||||
->andWhere('product')->eq($productID)
|
||||
->fetchPairs('BID', 'BID');
|
||||
|
||||
$stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $subdividedStories);
|
||||
if($stories) $pager->recTotal += 1;
|
||||
|
||||
if(count($requirements) < $pager->recPerPage)
|
||||
if(count($tracks) < $pager->recPerPage)
|
||||
{
|
||||
foreach($stories as $id => $story)
|
||||
{
|
||||
$stories[$id] = new stdclass();
|
||||
$stories[$id]->title = $story->title;
|
||||
$stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id);
|
||||
$stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id);
|
||||
$stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id);
|
||||
$stories[$id]->title = $story->title;
|
||||
$stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id);
|
||||
$stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id);
|
||||
$stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id);
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id');
|
||||
@@ -3694,10 +3705,10 @@ class storyModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
$requirements['noRequirement'] = $stories;
|
||||
$tracks['noRequirement'] = $stories;
|
||||
}
|
||||
|
||||
return $requirements;
|
||||
return $tracks;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php if($type == 'story'):?>
|
||||
<?php if($type == 'story' and $this->config->URAndSR):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->requirement;?></th>
|
||||
<td colspan=2><?php echo html::select('URS[]', $URS, '', "class='form-control chosen' multiple");?></td>
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
<table class='table table-bordered' id="trackList">
|
||||
<thead>
|
||||
<tr class='text-center'>
|
||||
<?php if($config->URAndSR):?>
|
||||
<th <?php echo $style;?>>
|
||||
<?php if($this->app->rawModule == 'projectstory'): ?>
|
||||
<div class="dropdown">
|
||||
@@ -38,6 +39,7 @@
|
||||
<?php echo $lang->story->requirement;?>
|
||||
<?php endif;?>
|
||||
</th>
|
||||
<?php endif;?>
|
||||
<th><?php echo $lang->story->story;?></th>
|
||||
<th><?php echo $lang->story->tasks;?></th>
|
||||
<?php if(isset($config->maxVersion)):?>
|
||||
@@ -55,12 +57,14 @@
|
||||
<?php $track = ($key == 'noRequirement') ? $requirement : $requirement->track;?>
|
||||
<?php $rowspan = count($track);?>
|
||||
<tr>
|
||||
<?php if($config->URAndSR):?>
|
||||
<td <?php if($rowspan != 0) echo "rowspan=" . $rowspan;?> class='requirement'>
|
||||
<?php if($key != 'noRequirement'):?>
|
||||
<span class="label label-primary label-outline"><?php echo zget($lang->story->statusList, $requirement->status);?></span>
|
||||
<?php endif;?>
|
||||
<?php echo $key == 'noRequirement' ? $lang->story->noRequirement : html::a($this->createLink($module, 'view', "storyID=$requirement->id"), $requirement->title, '', "title=$requirement->title data-group='$openGroup'");?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
<?php if(count($track) != 0):?>
|
||||
<?php $i = 1;?>
|
||||
<?php foreach($track as $storyID => $story):?>
|
||||
|
||||
@@ -398,13 +398,16 @@
|
||||
<div class="cell">
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<?php if($this->config->URAndSR):?>
|
||||
<li class='active'><a href='#legendStories' data-toggle='tab'><?php echo $story->type == 'story' ? $lang->story->requirement : $lang->story->story;?></a></li>
|
||||
<?php endif;?>
|
||||
<?php if($story->type == 'story'):?>
|
||||
<li><a href='#legendProjectAndTask' data-toggle='tab'><?php echo $lang->story->legendProjectAndTask;?></a></li>
|
||||
<li class="<?php if(!$this->config->URAndSR) echo 'active';?>"><a href='#legendProjectAndTask' data-toggle='tab'><?php echo $lang->story->legendProjectAndTask;?></a></li>
|
||||
<?php endif;?>
|
||||
<li><a href='#legendRelated' data-toggle='tab'><?php echo $lang->story->legendRelated;?></a></li>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<?php if($this->config->URAndSR):?>
|
||||
<div class='tab-pane active' id='legendStories'>
|
||||
<ul class="list-unstyled">
|
||||
<?php
|
||||
@@ -421,9 +424,10 @@
|
||||
<?php if(!empty($relations)) echo html::a('javascript:void(0)', $lang->story->unlink . $linkLang, '', "class='btn btn-info' id='unlinkStory'");?></li>
|
||||
</ul>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if($story->type == 'story'):?>
|
||||
<div class='tab-pane' id='legendProjectAndTask'>
|
||||
<div class="tab-pane <?php if(!$this->config->URAndSR) echo 'active';?>" id='legendProjectAndTask'>
|
||||
<ul class="list-unstyled">
|
||||
<?php
|
||||
foreach($story->tasks as $projectTasks)
|
||||
|
||||
Reference in New Issue
Block a user