diff --git a/module/block/control.php b/module/block/control.php index da49503da3..7cc7a5e273 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -720,7 +720,6 @@ class block extends control $status = isset($this->params->type) ? $this->params->type : ''; $orderBy = isset($this->params->orderBy) ? $this->params->orderBy : 'id_asc'; - $num = isset($this->params->num) ? (int)$this->params->num : 0; /* Get products. */ $products = $this->loadModel('product')->getList($status); @@ -737,7 +736,6 @@ class block extends control $products = $this->dao->select('*')->from(TABLE_PRODUCT) ->where('id')->in($productIDList) ->orderBy($orderBy) - ->beginIF($this->viewType != 'json')->limit($num)->fi() ->fetchAll('id'); /* Get stories. */ @@ -966,6 +964,39 @@ class block extends control $this->view->projects = $projects; } + /** + * Print qa statistic block. + * + * @access public + * @return void + */ + public function printQaStatisticBlock() + { + if(!empty($this->params->type) and preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) die(); + + $status = isset($this->params->type) ? $this->params->type : ''; + $orderBy = isset($this->params->orderBy) ? $this->params->orderBy : 'id_asc'; + + /* Get products. */ + $products = $this->loadModel('product')->getList($status); + foreach($products as $productID => $product) + { + if(!$this->product->checkPriv($product)) unset($products[$productID]); + } + $productIDList = array_keys($products); + if(!$productIDList) + { + $this->view->products = $products; + return false; + } + $products = $this->dao->select('*')->from(TABLE_PRODUCT) + ->where('id')->in($productIDList) + ->orderBy($orderBy) + ->fetchAll('id'); + + $this->view->products = $products; + } + /** * Print overview block. * @@ -1024,6 +1055,38 @@ class block extends control $total++; } + $overviewPercent = array(); + foreach($this->lang->project->statusList as $statusKey => $statusName) + { + if(!isset($overview[$statusKey])) $overview[$statusKey] = 0; + $overviewPercent[$statusKey] = $total ? round($overview[$statusKey] / $total, 2) * 100 . '%' : '0%'; + } + + $this->view->total = $total; + $this->view->overview = $overview; + $this->view->overviewPercent = $overviewPercent; + } + + /** + * Print qa overview block. + * + * @access public + * @return void + */ + public function printQaOverviewBlock() + { + $projects = $this->loadModel('project')->getList(); + + $total = 0; + foreach($projects as $project) + { + if(!$this->project->checkPriv($project)) continue; + + if(!isset($overview[$project->status])) $overview[$project->status] = 0; + $overview[$project->status]++; + $total++; + } + $overviewPercent = array(); foreach($this->lang->project->statusList as $statusKey => $statusName) diff --git a/module/block/lang/en.php b/module/block/lang/en.php index ce139b118f..681b52982c 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -111,29 +111,40 @@ $lang->block->default['project']['4']['params']['num'] = 15; $lang->block->default['project']['4']['params']['orderBy'] = 'id_desc'; $lang->block->default['project']['4']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['1']['title'] = 'My Bugs'; -$lang->block->default['qa']['1']['block'] = 'bug'; -$lang->block->default['qa']['1']['grid'] = 4; +$lang->block->default['qa']['1']['title'] = 'Test Statistic'; +$lang->block->default['qa']['1']['block'] = 'statistic'; +$lang->block->default['qa']['1']['grid'] = 8; -$lang->block->default['qa']['1']['params']['num'] = 15; $lang->block->default['qa']['1']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['1']['params']['type'] = 'assignedTo'; +$lang->block->default['qa']['1']['params']['type'] = 'noclosed'; -$lang->block->default['qa']['2']['title'] = 'My Cases'; -$lang->block->default['qa']['2']['block'] = 'case'; +//$lang->block->default['qa']['2']['title'] = 'Testcase Overview'; +//$lang->block->default['qa']['2']['block'] = 'overview'; +//$lang->block->default['qa']['2']['grid'] = 4; + +$lang->block->default['qa']['2']['title'] = 'My Bugs'; +$lang->block->default['qa']['2']['block'] = 'bug'; $lang->block->default['qa']['2']['grid'] = 4; $lang->block->default['qa']['2']['params']['num'] = 15; $lang->block->default['qa']['2']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['2']['params']['type'] = 'assigntome'; +$lang->block->default['qa']['2']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['3']['title'] = 'Pending Builds'; -$lang->block->default['qa']['3']['block'] = 'testtask'; +$lang->block->default['qa']['3']['title'] = 'My Cases'; +$lang->block->default['qa']['3']['block'] = 'case'; $lang->block->default['qa']['3']['grid'] = 4; $lang->block->default['qa']['3']['params']['num'] = 15; $lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['3']['params']['type'] = 'wait'; +$lang->block->default['qa']['3']['params']['type'] = 'assigntome'; + +$lang->block->default['qa']['4']['title'] = 'Pending Builds'; +$lang->block->default['qa']['4']['block'] = 'testtask'; +$lang->block->default['qa']['4']['grid'] = 4; + +$lang->block->default['qa']['4']['params']['num'] = 15; +$lang->block->default['qa']['4']['params']['orderBy'] = 'id_desc'; +$lang->block->default['qa']['4']['params']['type'] = 'wait'; $lang->block->default['full']['my']['1']['title'] = 'Welcome'; $lang->block->default['full']['my']['1']['block'] = 'welcome'; @@ -251,6 +262,8 @@ $lang->block->modules['project']->availableBlocks->task = 'Tasks'; $lang->block->modules['project']->availableBlocks->build = 'Builds'; $lang->block->modules['qa'] = new stdclass(); $lang->block->modules['qa']->availableBlocks = new stdclass(); +$lang->block->modules['qa']->availableBlocks->statistic = 'Test Statistic'; +//$lang->block->modules['qa']->availableBlocks->overview = 'Testcase Overview'; $lang->block->modules['qa']->availableBlocks->bug = 'Bugs'; $lang->block->modules['qa']->availableBlocks->case = 'Cases'; $lang->block->modules['qa']->availableBlocks->testtask = 'Test Builds'; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index 03eb60b29a..f5a2038d68 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -111,29 +111,40 @@ $lang->block->default['project']['4']['params']['num'] = 15; $lang->block->default['project']['4']['params']['orderBy'] = 'id_desc'; $lang->block->default['project']['4']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['1']['title'] = '指派给我的Bug'; -$lang->block->default['qa']['1']['block'] = 'bug'; -$lang->block->default['qa']['1']['grid'] = 4; +$lang->block->default['qa']['1']['title'] = '测试统计'; +$lang->block->default['qa']['1']['block'] = 'statistic'; +$lang->block->default['qa']['1']['grid'] = 8; -$lang->block->default['qa']['1']['params']['num'] = 15; $lang->block->default['qa']['1']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['1']['params']['type'] = 'assignedTo'; +$lang->block->default['qa']['1']['params']['type'] = 'noclosed'; -$lang->block->default['qa']['2']['title'] = '指派给我的用例'; -$lang->block->default['qa']['2']['block'] = 'case'; +//$lang->block->default['qa']['2']['title'] = '测试用例总览'; +//$lang->block->default['qa']['2']['block'] = 'overview'; +//$lang->block->default['qa']['2']['grid'] = 4; + +$lang->block->default['qa']['2']['title'] = '指派给我的Bug'; +$lang->block->default['qa']['2']['block'] = 'bug'; $lang->block->default['qa']['2']['grid'] = 4; $lang->block->default['qa']['2']['params']['num'] = 15; $lang->block->default['qa']['2']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['2']['params']['type'] = 'assigntome'; +$lang->block->default['qa']['2']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['3']['title'] = '待测版本列表'; -$lang->block->default['qa']['3']['block'] = 'testtask'; +$lang->block->default['qa']['3']['title'] = '指派给我的用例'; +$lang->block->default['qa']['3']['block'] = 'case'; $lang->block->default['qa']['3']['grid'] = 4; $lang->block->default['qa']['3']['params']['num'] = 15; $lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['3']['params']['type'] = 'wait'; +$lang->block->default['qa']['3']['params']['type'] = 'assigntome'; + +$lang->block->default['qa']['4']['title'] = '待测版本列表'; +$lang->block->default['qa']['4']['block'] = 'testtask'; +$lang->block->default['qa']['4']['grid'] = 8; + +$lang->block->default['qa']['4']['params']['num'] = 15; +$lang->block->default['qa']['4']['params']['orderBy'] = 'id_desc'; +$lang->block->default['qa']['4']['params']['type'] = 'wait'; $lang->block->default['full']['my']['1']['title'] = '欢迎'; $lang->block->default['full']['my']['1']['block'] = 'welcome'; @@ -251,9 +262,11 @@ $lang->block->modules['project']->availableBlocks->task = '任务列表'; $lang->block->modules['project']->availableBlocks->build = '版本列表'; $lang->block->modules['qa'] = new stdclass(); $lang->block->modules['qa']->availableBlocks = new stdclass(); -$lang->block->modules['qa']->availableBlocks->bug = 'Bug列表'; -$lang->block->modules['qa']->availableBlocks->case = '用例列表'; -$lang->block->modules['qa']->availableBlocks->testtask = '版本列表'; +$lang->block->modules['qa']->availableBlocks->statistic = '测试统计'; +//$lang->block->modules['qa']->availableBlocks->overview = '测试用例总览'; +$lang->block->modules['qa']->availableBlocks->bug = 'Bug列表'; +$lang->block->modules['qa']->availableBlocks->case = '用例列表'; +$lang->block->modules['qa']->availableBlocks->testtask = '版本列表'; $lang->block->modules['todo'] = new stdclass(); $lang->block->modules['todo']->availableBlocks = new stdclass(); $lang->block->modules['todo']->availableBlocks->list = '待办列表'; diff --git a/module/block/view/qaoverviewblock.html.php b/module/block/view/qaoverviewblock.html.php new file mode 100644 index 0000000000..7b9334ba28 --- /dev/null +++ b/module/block/view/qaoverviewblock.html.php @@ -0,0 +1,35 @@ + + * @package block + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +
| idAB);?> | -testsuite->name);?> | -testsuite->desc;?> | -testsuite->addedBy);?> | -testsuite->addedDate);?> | -actions;?> | -||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id);?> | -- type == 'public') echo "{$lang->testsuite->authorList['public']} ";?> - type == 'private') echo "{$lang->testsuite->authorList['private']} ";?> - id"), $suite->name);?> - | -desc;?> | -addedBy);?> | -addedDate;?> | -
- id", $suite, 'list', 'link');
- common::printIcon('testsuite', 'edit', "suiteID=$suite->id", $suite, 'list');
+
+
|
+ ||||||||||||||||||
| testsuite->name;?> | ++ | |
|---|---|---|
| testsuite->desc;?> | ++ | |
| testsuite->author;?> | +testsuite->authorList, 'private');?> | +|
| + + + | +||
| testsuite->name;?> | -- | |
|---|---|---|
| testsuite->desc;?> | -- | |
| testsuite->author;?> | -testsuite->authorList, 'private');?> | -|
| - | ||
| testsuite->name;?> | +name, "class='form-control' autocomplete='off'");?> | +|
|---|---|---|
| testsuite->desc;?> | +desc), "rows=10 class='form-control'");?> | +|
| testsuite->author;?> | +testsuite->authorList, $suite->type);?> | +|
| + + + | +||
| testsuite->name;?> | -name, "class='form-control' autocomplete='off'");?> | -|
|---|---|---|
| testsuite->desc;?> | -desc), "rows=10 class='form-control'");?> | -|
| testsuite->author;?> | -testsuite->authorList, $suite->type);?> | -|
| - | ||
| idAB;?> | -priAB;?> | -testcase->title;?> | -testcase->type;?> | -openedByAB;?> | -statusAB;?> | -|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - - createLink('testcase', 'view', "testcaseID=$case->id"), sprintf('%03d', $case->id));?> - | -id]", array_combine(range($case->version, 1), range($case->version, 1)), '', 'class="form-control input-sm" style="padding: 0 5px; height: 20px"');?> | -testcase->priList, $case->pri, $case->pri)?>'>testcase->priList, $case->pri, $case->pri)?> | -- title . ' ( '; - for($i = $case->version; $i >= 1; $i --) - { - echo html::a($this->createLink('testcase', 'view', "caseID=$case->id&version=$i", '', true), "#$i", '', "class='iframe' data-width='95%'"); - } - echo ')'; - ?> - | -testcase->typeList[$case->type];?> | -openedBy];?> | -testcase->statusList[$case->status];?> | -||||||||||||||
|
+
+
+
+
+ testsuite->unlinkedCases;?> (recTotal;?>)
+
|
- ||||||||||||||||||||
| priAB);?> | -testcase->module);?> | -testcase->title);?> | -testcase->type);?> | -statusAB);?> | -testcase->lastRunResult);?> | -testcase->bugsAB;?> | -testcase->resultsAB;?> | -testcase->stepNumberAB;?> | -actions;?> | +
+
+
+
+
+
+ idAB);?>
+ |
+ priAB);?> | +testcase->module);?> | +testcase->title);?> | +testcase->type);?> | +statusAB);?> | +testcase->lastRunResult);?> | +testcase->bugsAB;?> | +testcase->resultsAB;?> | +testcase->stepNumberAB;?> | +actions;?> | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| + | |||||||||||||||||||||
| - - + id => sprintf('%03d', $case->id)));?> + id);?> + | -testcase->priList, $case->pri, $case->pri)?>'>testcase->priList, $case->pri, $case->pri)?> | +testcase->priList, $case->pri, $case->pri)?> | module];?> | -+ | branch) echo "{$branches[$case->branch]}"?> createLink('testcase', 'view', "caseID=$case->id&version=$case->caseVersion"), $case->title);?> | @@ -103,12 +93,12 @@bugs) ? html::a($this->createLink('testcase', 'bugs', "runID=0&caseID={$case->id}"), $case->bugs, '', "class='iframe'") : $case->bugs;?> | results) ? html::a($this->createLink('testtask', 'results', "runID=0&caseID={$case->id}"), $case->results, '', "class='iframe'") : $case->results;?> | stepNumber;?> | -+ | createLink('testsuite', 'unlinkCase', "suiteID=$suite->id&caseID=$case->id&confirm=yes"); - echo html::a("javascript:ajaxDelete(\"$unlinkURL\",\"caseList\",confirmUnlink)", '', '', "title='{$lang->testsuite->unlinkCase}' class='btn-icon'"); + echo html::a("javascript:ajaxDelete(\"$unlinkURL\",\"caseList\",confirmUnlink)", '', '', "title='{$lang->testsuite->unlinkCase}' class='btn'"); } common::printIcon('testtask', 'runCase', "runID=0&caseID=$case->id&version=$case->version", $suite, 'list', 'play', '', 'runCase iframe', false, "data-width='95%'"); common::printIcon('testtask', 'results', "runID=0&caseID=$case->id", $suite, 'list', 'list-alt', '', 'results iframe', false, "data-width='95%'"); @@ -118,48 +108,50 @@ | |||||||||||
|
-
-
-
-
-
- show();?>
-
- createLink('testcase', 'batchEdit', "productID=$productID");
- $misc = $canBatchEdit ? "onclick=\"setFormAction('$actionLink')\"" : "disabled='disabled'";
- echo html::commonButton($lang->edit, $misc);
- ?>
-
-
-
- |
- |||||||||||||||||||||