diff --git a/module/bug/control.php b/module/bug/control.php
index e37c108aec..7e191668f1 100644
--- a/module/bug/control.php
+++ b/module/bug/control.php
@@ -43,7 +43,7 @@ class bug extends control
}
$this->view->products = $this->products = $this->product->getProductPairsByProject($this->projectID);
- if($this->session->PRJ and empty($this->products)) die($this->locate($this->createLink('product', 'showErrorNone', "fromModule=bug")));
+ if($this->projectID and empty($this->products)) die($this->locate($this->createLink('product', 'showErrorNone', "fromModule=bug")));
}
/**
@@ -134,7 +134,7 @@ class bug extends control
$pager = new pager($recTotal, $recPerPage, $pageID);
/* Get projects. */
- $projects = $this->loadModel('project')->getExecutionPairs($this->session->PRJ, 'all', 'empty|withdelete');
+ $projects = $this->loadModel('project')->getExecutionPairs($this->projectID, 'all', 'empty|withdelete');
/* Get bugs. */
$bugs = $this->bug->getBugs($productID, $projects, $branch, $browseType, $moduleID, $queryID, $sort, $pager);
@@ -447,7 +447,7 @@ class bug extends control
$moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $branch);
if(empty($moduleOptionMenu)) die(js::locate(helper::createLink('tree', 'browse', "productID=$productID&view=story")));
- $productList = $this->product->getOrderedProducts('all', 40, $this->session->PRJ);
+ $productList = $this->product->getOrderedProducts('all', 40, $this->projectID);
foreach($productList as $product) $products[$product->id] = $product->name;
/* Set custom. */
@@ -609,7 +609,7 @@ class bug extends control
$this->lang->set('menugroup.bug', 'repo');
$repos = $this->loadModel('repo')->getRepoPairs($this->session->PRJ);
$this->repo->setMenu($repos);
- $this->lang->bug->menu = $this->lang->repo->menu;
+ $this->lang->bug->menu = $this->lang->repo->menu;
}
/* Get product info. */
@@ -1537,8 +1537,8 @@ class bug extends control
/* Get users, products and projects. */
$users = $this->loadModel('user')->getPairs('noletter');
- $products = $this->loadModel('product')->getPairs('nocode', $this->session->PRJ);
- $projects = $this->loadModel('project')->getExecutionPairs($this->session->PRJ, 'all', 'all|nocode');
+ $products = $this->loadModel('product')->getPairs();
+ $projects = $this->loadModel('project')->getExecutionPairs($this->projectID, 'all', 'all');
/* Get related objects id lists. */
$relatedProductIdList = array();
diff --git a/module/bug/model.php b/module/bug/model.php
index 17754fa22a..4e7aebb0fc 100644
--- a/module/bug/model.php
+++ b/module/bug/model.php
@@ -72,7 +72,7 @@ class bugModel extends model
->setDefault('project,story,task', 0)
->setDefault('openedBuild', '')
->setDefault('deadline', '0000-00-00')
- ->setIF($this->config->systemMode == 'new', 'PRJ', $this->session->PRJ)
+ ->setIF($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa', 'PRJ', $this->session->PRJ)
->setIF(strpos($this->config->bug->create->requiredFields, 'deadline') !== false, 'deadline', $this->post->deadline)
->setIF($this->post->assignedTo != '', 'assignedDate', $now)
->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story))
@@ -234,7 +234,7 @@ class bugModel extends model
}
}
- if($this->config->systemMode == 'new') $bug->PRJ = $this->session->PRJ;
+ if($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa') $bug->PRJ = $this->session->PRJ;
$this->dao->insert(TABLE_BUG)->data($bug)
->autoCheck()
->batchCheck($this->config->bug->create->requiredFields, 'notempty')
diff --git a/module/bug/view/browse.html.php b/module/bug/view/browse.html.php
index 56bca8850a..6682d6d291 100644
--- a/module/bug/view/browse.html.php
+++ b/module/bug/view/browse.html.php
@@ -169,7 +169,7 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
- tree->manage, '', "class='btn btn-info btn-wide'");?>
+ lang->navGroup->bug}", $lang->tree->manage, '', "class='btn btn-info btn-wide'");?>
diff --git a/module/caselib/view/browse.html.php b/module/caselib/view/browse.html.php
index 30c5e58e54..154532a8f4 100644
--- a/module/caselib/view/browse.html.php
+++ b/module/caselib/view/browse.html.php
@@ -73,7 +73,7 @@ js::set('flow', $config->global->flow);
- tree->manage, '', "class='btn btn-info btn-wide'");?>
+ lang->navGroup->caselib}", $lang->tree->manage, '', "class='btn btn-info btn-wide'");?>
diff --git a/module/index/js/index.js b/module/index/js/index.js
index 74c627256f..8c3d1b90db 100644
--- a/module/index/js/index.js
+++ b/module/index/js/index.js
@@ -99,9 +99,9 @@
if(methodLowerCase.indexOf('pgm') === 0) return 'program';
if(methodLowerCase === 'index' || methodLowerCase.indexOf('prj') === 0) return 'project';
}
- if(moduleName === 'story' && (methodLowerCase === 'zerocase' || (methodLowerCase === 'batchedit' && (link.params.projectID || link.params.$2))))
+ if(moduleName === 'story' && methodLowerCase === 'zerocase')
{
- return 'project';
+ return link.params.from == 'project' ? 'project' : 'qa';
}
if(['repo', 'jenkins', 'job', 'compile'].includes(moduleName))
{
@@ -122,8 +122,8 @@
{
if(methodLowerCase === 'browse')
{
- var viewType = link.params.viewType || link.params.$2;
- if(['bug', 'case', 'caselib'].includes(viewType)) return 'project';
+ var viewType = link.params.view || link.params.$2;
+ if(['bug', 'case', 'caselib'].includes(viewType)) return link.params.from === 'project' ? 'project' : 'qa';
if(viewType === 'doc' && (link.params.from === 'product' || link.params.$5 == 'product')) return 'product';
if(viewType === 'doc' && (link.params.from === 'project' || link.params.$5 == 'project')) return 'project';
diff --git a/module/project/model.php b/module/project/model.php
index 2ab69a0f0b..96d7287719 100644
--- a/module/project/model.php
+++ b/module/project/model.php
@@ -871,7 +871,7 @@ class projectModel extends model
}
/* Order by status's content whether or not done */
- $executions = $this->dao->select('*, IF(INSTR(" done,closed", status) < 2, 0, 1) AS isDone, INSTR("doing,wait,suspended,closed", status) AS sortStatus')->from(TABLE_EXECUTION)
+ $executions = $this->dao->select('*, IF(INSTR("done,closed", status) < 2, 0, 1) AS isDone, INSTR("doing,wait,suspended,closed", status) AS sortStatus')->from(TABLE_EXECUTION)
->where('deleted')->eq(0)
->beginIF(!$projectID && $type == 'all' && $this->config->systemMode == 'new')->andWhere('type')->in('stage,sprint')->fi()
->beginIF($projectID && $this->config->systemMode == 'new')->andWhere('project')->eq($projectID)->fi()
diff --git a/module/qa/model.php b/module/qa/model.php
index bbef8be063..08bf876226 100644
--- a/module/qa/model.php
+++ b/module/qa/model.php
@@ -74,7 +74,7 @@ class qaModel extends model
{
$itemMenu = zget($moduleSubMenu, $menuKey, '');
$isActive['method'] = ($moduleName == strtolower($menu->link['module']) and $methodName == strtolower($menu->link['method']));
- $isActive['alias'] = ($moduleName == strtolower($menu->link['module']) and (is_array($itemMenu) and isset($itemMenu['alias']) and strpos($itemMenu['alias'], $methodName) !== false));
+ $isActive['alias'] = ($moduleName == strtolower($menu->link['module']) and (is_array($itemMenu) and isset($itemMenu['alias']) and strpos(',' . $itemMenu['alias'] . ',', ",$methodName,") !== false));
$isActive['subModule'] = (is_array($itemMenu) and isset($itemMenu['subModule']) and strpos($itemMenu['subModule'], $moduleName) !== false);
if($isActive['method'] or $isActive['alias'] or $isActive['subModule'])
{
diff --git a/module/story/control.php b/module/story/control.php
index 4a2bb2c468..da02601ff6 100644
--- a/module/story/control.php
+++ b/module/story/control.php
@@ -1475,19 +1475,29 @@ class story extends control
*
* @param int $productID
* @param string $orderBy
+ * @param string $from qa|project
* @access public
* @return void
*/
- public function zeroCase($productID, $orderBy = 'id_desc')
+ public function zeroCase($productID, $orderBy = 'id_desc', $from = 'project')
{
$this->session->set('productList', $this->app->getURI(true));
$products = $this->product->getPairs();
$this->lang->set('menugroup.story', 'qa');
- $moduleIndex = array_search('story', $this->lang->noMenuModule);
- if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
- $this->lang->navGroup->story = 'project';
+ $this->lang->navGroup->story = $from;
+ if($from == 'project')
+ {
+ $moduleIndex = array_search('story', $this->lang->noMenuModule);
+ if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
+ }
+ else
+ {
+ $this->app->loadConfig('qa');
+ foreach($this->config->qa->menuList as $module) $this->lang->navGroup->$module = 'qa';
+ }
+
$this->lang->story->menu = $this->lang->testcase->menu;
$this->lang->story->menuOrder = $this->lang->testcase->menuOrder;
$this->loadModel('testcase')->setMenu($products, $productID);
diff --git a/module/testcase/control.php b/module/testcase/control.php
index d19b37b627..8b0b3d4400 100644
--- a/module/testcase/control.php
+++ b/module/testcase/control.php
@@ -1194,7 +1194,7 @@ class testcase extends control
/* Get users, products and projects. */
$users = $this->loadModel('user')->getPairs('noletter');
- $products = $this->loadModel('product')->getPairs('nocode', $this->session->PRJ);
+ $products = $this->loadModel('product')->getPairs();
$branches = $this->loadModel('branch')->getPairs($productID);
/* Get related objects id lists. */
diff --git a/module/testcase/model.php b/module/testcase/model.php
index 219e536f83..b18f780708 100644
--- a/module/testcase/model.php
+++ b/module/testcase/model.php
@@ -73,7 +73,7 @@ class testcaseModel extends model
->add('fromBug', $bugID)
->setDefault('openedBy', $this->app->user->account)
->setDefault('openedDate', $now)
- ->setIF($this->config->systemMode == 'new', 'PRJ', $this->session->PRJ)
+ ->setIF($this->config->systemMode == 'new' && $this->lang->navGroup->testcase != 'qa', 'PRJ', $this->session->PRJ)
->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion((int)$this->post->story))
->remove('steps,expects,files,labels,stepType,forceNotReview')
->setDefault('story', 0)
@@ -165,7 +165,7 @@ class testcaseModel extends model
$data[$i] = new stdclass();
$data[$i]->product = $productID;
- if($this->config->systemMode == 'new') $data[$i]->PRJ = $this->session->PRJ;
+ if($this->config->systemMode == 'new' && $this->lang->navGroup->testcase != 'qa') $data[$i]->PRJ = $this->session->PRJ;
$data[$i]->branch = $cases->branch[$i];
$data[$i]->module = $cases->module[$i];
$data[$i]->type = $cases->type[$i];
@@ -242,7 +242,7 @@ class testcaseModel extends model
return $this->dao->select('t1.*, t2.title as storyTitle')->from(TABLE_CASE)->alias('t1')
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story=t2.id')
->where('t1.product')->eq((int)$productID)
- ->andWhere('t1.PRJ')->eq($this->session->PRJ)
+ ->beginIF($this->lang->navGroup->testcase != 'qa')->andWhere('t1.PRJ')->eq($this->session->PRJ)->fi()
->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi()
->beginIF($moduleIdList)->andWhere('t1.module')->in($moduleIdList)->fi()
->beginIF($browseType == 'wait')->andWhere('t1.status')->eq($browseType)->fi()
@@ -271,7 +271,7 @@ class testcaseModel extends model
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story=t2.id')
->leftJoin(TABLE_SUITECASE)->alias('t3')->on('t1.id=t3.case')
->where('t1.product')->eq((int)$productID)
- ->andWhere('t1.PRJ')->eq($this->session->PRJ)
+ ->beginIF($this->lang->navGroup->testcase != 'qa')->andWhere('t1.PRJ')->eq($this->session->PRJ)->fi()
->andWhere('t3.suite')->eq((int)$suiteID)
->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi()
->beginIF($moduleIdList)->andWhere('t1.module')->in($moduleIdList)->fi()
@@ -361,10 +361,10 @@ class testcaseModel extends model
{
$cases = $this->dao->select('t1.*, t2.title AS storyTitle')->from(TABLE_CASE)->alias('t1')->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
->where("t2.status = 'active'")
- ->andWhere('t1.PRJ')->eq($this->session->PRJ)
->andWhere('t1.deleted')->eq(0)
->andWhere('t2.version > t1.storyVersion')
->andWhere('t1.product')->eq($productID)
+ ->beginIF($this->lang->navGroup->testcase != 'qa')->andWhere('t1.PRJ')->eq($this->session->PRJ)->fi()
->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi()
->beginIF($modules)->andWhere('t1.module')->in($modules)->fi()
->beginIF($auto != 'unit')->andWhere('t1.auto')->ne('unit')->fi()
@@ -1124,7 +1124,7 @@ class testcaseModel extends model
}
else
{
- if($this->config->systemMode == 'new') $caseData->PRJ = $this->session->PRJ;
+ if($this->config->systemMode == 'new' && $this->lang->navGroup->testcase != 'qa') $caseData->PRJ = $this->session->PRJ;
$caseData->version = 1;
$caseData->openedBy = $this->app->user->account;
$caseData->openedDate = $now;
diff --git a/module/testcase/view/browse.html.php b/module/testcase/view/browse.html.php
index f9d0f6ab8b..0369d3f3a5 100644
--- a/module/testcase/view/browse.html.php
+++ b/module/testcase/view/browse.html.php
@@ -35,7 +35,7 @@ js::set('suiteID', $suiteID);
- tree->manage, '', "class='btn btn-info btn-wide'");?>
+ lang->navGroup->testcase}", $lang->tree->manage, '', "class='btn btn-info btn-wide'");?>
diff --git a/module/testcase/view/caseheader.html.php b/module/testcase/view/caseheader.html.php
index 8a5393d24f..36fed85dde 100644
--- a/module/testcase/view/caseheader.html.php
+++ b/module/testcase/view/caseheader.html.php
@@ -76,7 +76,7 @@
}
elseif($hasZeroPriv and $menuType == 'zerocase')
{
- echo html::a($this->createLink('story', 'zeroCase', "productID=$productID"), "{$lang->story->zeroCase}", '', "class='btn btn-link' id='zerocaseTab'");
+ echo html::a($this->createLink('story', 'zeroCase', "productID=$productID&orderBy=id_desc&from={$this->lang->navGroup->testcase}"), "{$lang->story->zeroCase}", '', "class='btn btn-link' id='zerocaseTab'");
}
?>
diff --git a/module/tree/control.php b/module/tree/control.php
index ffd63743c5..e0120056a0 100644
--- a/module/tree/control.php
+++ b/module/tree/control.php
@@ -91,8 +91,23 @@ class tree extends control
}
elseif($viewType == 'bug')
{
- $this->lang->navGroup->tree = 'project';
- $this->loadModel('bug')->setMenu($this->product->getPairs('', $this->session->PRJ), $rootID);
+ $this->lang->navGroup->tree = 'qa';
+ $productPairs = array();
+ if($from == 'project')
+ {
+ $this->lang->navGroup->tree = 'project';
+ $productPairs = $this->product->getProductPairsByProject($this->session->PRJ);
+ }
+ elseif($from == 'qa')
+ {
+ $this->lang->noMenuModule[] = 'tree';
+ $this->lang->navGroup->tree = 'qa';
+ $this->app->loadConfig('qa');
+ foreach($this->config->qa->menuList as $module) $this->lang->navGroup->$module = 'qa';
+ $productPairs = $this->product->getPairs();
+ }
+
+ $this->loadModel('bug')->setMenu($productPairs, $rootID);
$this->lang->tree->menu = $this->lang->bug->menu;
$this->lang->tree->menuOrder = $this->lang->bug->menuOrder;
$this->lang->set('menugroup.tree', 'qa');
@@ -118,8 +133,24 @@ class tree extends control
}
elseif($viewType == 'case')
{
- $this->lang->navGroup->tree = 'project';
- $this->loadModel('testcase')->setMenu($this->product->getPairs('', $this->session->PRJ), $rootID);
+ $this->lang->navGroup->tree = 'qa';
+
+ $productPairs = array();
+ if($from == 'project')
+ {
+ $this->lang->navGroup->tree = 'project';
+ $productPairs = $this->product->getProductPairsByProject($this->session->PRJ);
+ }
+ elseif($from == 'qa')
+ {
+ $this->lang->noMenuModule[] = 'tree';
+ $this->lang->navGroup->tree = 'qa';
+ $this->app->loadConfig('qa');
+ foreach($this->config->qa->menuList as $module) $this->lang->navGroup->$module = 'qa';
+ $productPairs = $this->product->getPairs();
+ }
+
+ $this->loadModel('testcase')->setMenu($productPairs, $rootID);
$this->lang->tree->menu = $this->lang->testcase->menu;
$this->lang->tree->menuOrder = $this->lang->testcase->menuOrder;
$this->lang->set('menugroup.tree', 'qa');
@@ -130,7 +161,19 @@ class tree extends control
}
elseif($viewType == 'caselib')
{
- $this->lang->navGroup->tree = 'project';
+ $this->lang->navGroup->tree = 'qa';
+ if($from == 'project')
+ {
+ $this->lang->navGroup->tree = 'project';
+ }
+ elseif($from == 'qa')
+ {
+ $this->lang->noMenuModule[] = 'tree';
+ $this->lang->navGroup->tree = 'qa';
+ $this->app->loadConfig('qa');
+ foreach($this->config->qa->menuList as $module) $this->lang->navGroup->$module = 'qa';
+ }
+
$this->caselib->setLibMenu($this->caselib->getLibraries(), $rootID);
$this->lang->tree->menu = $this->lang->caselib->menu;
$this->lang->tree->menuOrder = $this->lang->caselib->menuOrder;