From 2bd50ee02f486830cca3a4720155d085a58e87a0 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 21 Jul 2014 03:21:09 +0000 Subject: [PATCH] * code for task #1939. --- module/common/lang/en.php | 4 +- module/common/lang/zh-cn.php | 4 +- module/testcase/control.php | 47 ++++++++++++++++++- module/testcase/js/groupcase.js | 4 ++ module/testcase/lang/en.php | 3 ++ module/testcase/lang/zh-cn.php | 3 ++ module/testcase/model.php | 11 ++--- module/testcase/view/browse.html.php | 37 +-------------- module/testcase/view/caseheader.html.php | 55 +++++++++++++++++++++++ module/testcase/view/groupcase.html.php | 57 ++++++++++++++++++++++++ 10 files changed, 179 insertions(+), 46 deletions(-) create mode 100644 module/testcase/js/groupcase.js create mode 100644 module/testcase/view/caseheader.html.php create mode 100644 module/testcase/view/groupcase.html.php diff --git a/module/common/lang/en.php b/module/common/lang/en.php index e5638a247b..23da76b35f 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -213,7 +213,7 @@ $lang->bug->menu = new stdclass(); $lang->bug->menu->product = '%s'; $lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree'); -$lang->bug->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s', 'alias' => 'view,create,edit'); +$lang->bug->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s'); $lang->bug->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s'); $lang->testcase = new stdclass(); @@ -221,7 +221,7 @@ $lang->testcase->menu = new stdclass(); $lang->testcase->menu->product = '%s'; $lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); -$lang->testcase->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport', 'subModule' => 'tree'); +$lang->testcase->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase', 'subModule' => 'tree'); $lang->testcase->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun'); $lang->testtask = new stdclass(); diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 9282adcb0b..5dbd708a67 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -213,7 +213,7 @@ $lang->bug->menu = new stdclass(); $lang->bug->menu->product = '%s'; $lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree'); -$lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,edit'); +$lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID=%s'); $lang->bug->menu->testtask = array('link' => '版本|testtask|browse|productID=%s'); $lang->testcase = new stdclass(); @@ -221,7 +221,7 @@ $lang->testcase->menu = new stdclass(); $lang->testcase->menu->product = '%s'; $lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); -$lang->testcase->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport', 'subModule' => 'tree'); +$lang->testcase->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase', 'subModule' => 'tree'); $lang->testcase->menu->testtask = array('link' => '版本|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun'); $lang->testtask = new stdclass(); diff --git a/module/testcase/control.php b/module/testcase/control.php index 225925bb27..1eade70ca0 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -134,7 +134,7 @@ class testcase extends control } /* save session .*/ - $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'testcase', $browseType == 'needconfirm' ? false : true); + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'testcase', $browseType != 'bysearch' ? false : true); /* Build the search form. */ $this->config->testcase->search['params']['product']['values']= array($productID => $this->products[$productID], 'all' => $this->lang->testcase->allProduct); @@ -160,6 +160,51 @@ class testcase extends control $this->display(); } + /** + * Group case. + * + * @param int $productID + * @param string $groupBy + * @access public + * @return void + */ + public function groupCase($productID = 0, $groupBy = 'stroy') + { + $groupBy = empty($groupBy) ? 'stroy' : $groupBy; + $productID = $this->product->saveState($productID, $this->products); + + $this->app->loadLang('testtask'); + + $this->testcase->setMenu($this->products, $productID); + $this->session->set('caseList', $this->app->getURI(true)); + + $cases = $this->testcase->getModuleCases($productID, 0, $groupBy); + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'testcase', false); + + $groupCases = array(); + $groupByList = array(); + foreach($cases as $case) + { + if($groupBy == 'story') + { + $groupCases[$case->story][] = $case; + $groupByList[$case->story] = $case->storyTitle; + } + } + + $this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->testcase->common; + $this->view->position[] = html::a($this->createLink('testcase', 'groupTask', "productID=$productID&groupBy=$groupBy"), $this->products[$productID]); + $this->view->position[] = $this->lang->testcase->common; + $this->view->productID = $productID; + $this->view->productName = $this->products[$productID]; + $this->view->users = $this->user->getPairs('noletter'); + $this->view->browseType = 'group'; + $this->view->groupBy = $groupBy; + $this->view->groupByList = $groupByList; + $this->view->cases = $groupCases; + $this->display(); + } + /** * Create a test case. * diff --git a/module/testcase/js/groupcase.js b/module/testcase/js/groupcase.js new file mode 100644 index 0000000000..8157df3154 --- /dev/null +++ b/module/testcase/js/groupcase.js @@ -0,0 +1,4 @@ +$(document).ready(function() +{ + $('#' + browseType + 'Tab').addClass('active'); +}); diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php index c7a7b78b88..29fbd10d07 100644 --- a/module/testcase/lang/en.php +++ b/module/testcase/lang/en.php @@ -135,6 +135,9 @@ $lang->testcase->stageList['system'] = 'System testing'; $lang->testcase->stageList['smoke'] = 'Smoking testing'; $lang->testcase->stageList['bvt'] = 'BVT testing'; +$lang->testcase->groups[''] = 'Group view'; +$lang->testcase->groups['story'] = 'Group by story'; + $lang->testcase->statusList[''] = ''; $lang->testcase->statusList['normal'] = 'Normal'; $lang->testcase->statusList['blocked'] = 'Blocked'; diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php index fff0eda36d..f17cba6b5d 100644 --- a/module/testcase/lang/zh-cn.php +++ b/module/testcase/lang/zh-cn.php @@ -135,6 +135,9 @@ $lang->testcase->stageList['system'] = '系统测试阶段'; $lang->testcase->stageList['smoke'] = '冒烟测试阶段'; $lang->testcase->stageList['bvt'] = '版本验证阶段'; +$lang->testcase->groups[''] = '分组查看'; +$lang->testcase->groups['story'] = '需求分组'; + $lang->testcase->statusList[''] = ''; $lang->testcase->statusList['normal'] = '正常'; $lang->testcase->statusList['blocked'] = '被阻塞'; diff --git a/module/testcase/model.php b/module/testcase/model.php index 1ce9d1bea8..5bdffe62a9 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -144,11 +144,12 @@ class testcaseModel extends model */ public function getModuleCases($productID, $moduleIds = 0, $orderBy = 'id_desc', $pager = null) { - return $this->dao->select('*')->from(TABLE_CASE) - ->where('product')->eq((int)$productID) - ->beginIF($moduleIds)->andWhere('module')->in($moduleIds)->fi() - ->andWhere('deleted')->eq('0') - ->orderBy($orderBy)->page($pager)->fetchAll(); + 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) + ->beginIF($moduleIds)->andWhere('t1.module')->in($moduleIds)->fi() + ->andWhere('t1.deleted')->eq('0') + ->orderBy($orderBy)->page($pager)->fetchAll('id'); } /** diff --git a/module/testcase/view/browse.html.php b/module/testcase/view/browse.html.php index 1a62fc3f92..82e4c0d1e9 100644 --- a/module/testcase/view/browse.html.php +++ b/module/testcase/view/browse.html.php @@ -14,46 +14,11 @@ include '../../common/view/header.html.php'; include '../../common/view/datepicker.html.php'; include '../../common/view/treeview.html.php'; +include './caseheader.html.php'; js::set('browseType', $browseType); js::set('moduleID' , $moduleID); js::set('confirmDelete', $lang->testcase->confirmDelete); ?> -
- -
-
-
- - -
- -
-
-
'>
-
diff --git a/module/testcase/view/caseheader.html.php b/module/testcase/view/caseheader.html.php new file mode 100644 index 0000000000..ce644b851a --- /dev/null +++ b/module/testcase/view/caseheader.html.php @@ -0,0 +1,55 @@ +app->getModuleRoot() . 'common/view/dropmenu.html.php';?> +
+ +
+
+
+ + +
+ +
+
+
'>
+
+ + diff --git a/module/testcase/view/groupcase.html.php b/module/testcase/view/groupcase.html.php new file mode 100644 index 0000000000..2adc22f243 --- /dev/null +++ b/module/testcase/view/groupcase.html.php @@ -0,0 +1,57 @@ + + * @package testcase + * @version $Id$ + * @link http://www.zentao.net + */ +?> + + + + + + + + + + + + + + + + + + + + $groupTasks):?> + + + + + + + createLink('case','view',"caseID=$case->id"); ?> + + + + + + + + + + + + + +
testcase->title;?> priAB;?> typeAB;?> testtask->lastRunAccount;?>testtask->lastRunTime;?> testtask->lastRunResult;?> testcase->status;?> actions;?>
 id . $lang->colon; if(!common::printLink('testcase', 'view', "case=$case->id", $case->title)) echo $case->title;?>pri?>'>pri;?>case->typeList[$case->type];?>lastRunner];?>lastRunDate)) echo date(DT_MONTHTIME1, strtotime($case->lastRunDate));?>lastRunResult) echo $lang->testcase->resultList[$case->lastRunResult];?>testcase->statusList[$case->status];?> + id", '', 'list');?> + id", '', 'list', '', 'hiddenwin');?> +
+