diff --git a/module/block/control.php b/module/block/control.php
index 7cc7a5e273..b1d4d5c352 100644
--- a/module/block/control.php
+++ b/module/block/control.php
@@ -244,6 +244,11 @@ class block extends control
{
if($module == 'product' && common::hasPriv('product', 'create')) $block->actionLink = html::a($this->createLink('product', 'create'), " " . $this->lang->product->create, '', "class='btn btn-sm'");
if($module == 'project' && common::hasPriv('project', 'create')) $block->actionLink = html::a($this->createLink('project', 'create'), " " . $this->lang->project->create, '', "class='btn btn-sm'");
+ if($module == 'qa' && common::hasPriv('testcase', 'create'))
+ {
+ $this->app->loadLang('testcase');
+ $block->actionLink = html::a($this->createLink('testcase', 'create', 'productID='), " " . $this->lang->testcase->create, '', "class='btn btn-sm'");
+ }
}
if($this->block->isLongBlock($block))
@@ -1075,29 +1080,24 @@ class block extends control
*/
public function printQaOverviewBlock()
{
- $projects = $this->loadModel('project')->getList();
+ $casePairs = $this->dao->select('lastRunResult, COUNT(*) AS count')->from(TABLE_CASE)->groupBy('lastRunResult')->fetchPairs();
+ $total = array_sum($casePairs);
- $total = 0;
- foreach($projects as $project)
+ $this->app->loadLang('testcase');
+ foreach($this->lang->testcase->resultList as $result => $label)
{
- if(!$this->project->checkPriv($project)) continue;
-
- if(!isset($overview[$project->status])) $overview[$project->status] = 0;
- $overview[$project->status]++;
- $total++;
+ if(!isset($casePairs[$result])) $casePairs[$result] = 0;
}
-
- $overviewPercent = array();
- foreach($this->lang->project->statusList as $statusKey => $statusName)
+ $casePercents = array();
+ foreach($casePairs as $result => $count)
{
- if(!isset($overview[$statusKey])) $overview[$statusKey] = 0;
- $overviewPercent[$statusKey] = round($overview[$statusKey] / $total, 2) * 100 . '%';
+ $casePercents[$result] = $total ? round($count / $total * 100, 2) : 0;
}
- $this->view->total = $total;
- $this->view->overview = $overview;
- $this->view->overviewPercent = $overviewPercent;
+ $this->view->total = $total;
+ $this->view->casePairs = $casePairs;
+ $this->view->casePercents = $casePercents;
}
/**
diff --git a/module/block/model.php b/module/block/model.php
index 80f719019b..69e6042f81 100644
--- a/module/block/model.php
+++ b/module/block/model.php
@@ -403,6 +403,7 @@ class blockModel extends model
{
if($module == 'product') return $this->getProductStatisticParams($module);
if($module == 'project') return $this->getProjectStatisticParams($module);
+ if($module == 'qa') return $this->getQaStatisticParams($module);
$params = new stdclass();
$params = $this->onlyNumParams($params);
@@ -427,7 +428,7 @@ class blockModel extends model
$params->orderBy['options'] = $this->lang->block->orderByList->product;
$params->orderBy['control'] = 'select';
- return json_encode($this->onlyNumParams($params));
+ return json_encode($params);
}
/**
@@ -448,7 +449,28 @@ class blockModel extends model
$params->orderBy['options'] = $this->lang->block->orderByList->project;
$params->orderBy['control'] = 'select';
- return json_encode($this->onlyNumParams($params));
+ return json_encode($params);
+ }
+
+ /**
+ * Get qa statistic params.
+ *
+ * @access public
+ * @return void
+ */
+ public function getQaStatisticParams()
+ {
+ $params = new stdclass();
+ $params->type['name'] = $this->lang->block->type;
+ $params->type['options'] = $this->lang->block->typeList->product;
+ $params->type['control'] = 'select';
+
+ $params->orderBy['name'] = $this->lang->block->orderBy;
+ $params->orderBy['default'] = 'id_desc';
+ $params->orderBy['options'] = $this->lang->block->orderByList->product;
+ $params->orderBy['control'] = 'select';
+
+ return json_encode($params);
}
/**
diff --git a/module/block/view/qaoverviewblock.html.php b/module/block/view/qaoverviewblock.html.php
index 7b9334ba28..7aade3e58e 100644
--- a/module/block/view/qaoverviewblock.html.php
+++ b/module/block/view/qaoverviewblock.html.php
@@ -14,21 +14,19 @@
.block-overview .tile-amount {font-size: 48px; margin-bottom: 10px;}
-
+
-
-
- project->statusList as $statusKey => $statusName):?>
- -
-
-
-
-
+
+
+
+ - testcase->resultList[$result];?>
diff --git a/module/bug/lang/zh-tw.php b/module/bug/lang/zh-tw.php
index aae92aff0a..7d599b675f 100644
--- a/module/bug/lang/zh-tw.php
+++ b/module/bug/lang/zh-tw.php
@@ -129,6 +129,7 @@ $lang->bug->resolvedByMeAB = '由我解決';
$lang->bug->ditto = '同上';
$lang->bug->dittoNotice = '該bug與上一bug不屬於同一產品!';
$lang->bug->noAssigned = '未指派';
+$lang->bug->noBug = '暫時沒有BUG,您現在可以';
/* 頁面標籤。*/
$lang->bug->lblAssignedTo = '當前指派';
diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php
index 660aa028ec..ae5f49fd34 100644
--- a/module/common/lang/zh-tw.php
+++ b/module/common/lang/zh-tw.php
@@ -279,20 +279,39 @@ $lang->bug->menu->caselib = array('link' => '用例庫|testsuite|library');
$lang->testcase = new stdclass();
$lang->testcase->menu = new stdclass();
-
$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,groupcase,importfromlib', 'subModule' => 'tree');
-$lang->testcase->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report');
-$lang->testcase->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s', 'alias' => 'view,create,edit,linkcase');
-$lang->testcase->menu->report = array('link' => '報告|testreport|browse|productID=%s', 'alias' => 'view,create,edit');
+$lang->testcase->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s');
+$lang->testcase->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s');
+$lang->testcase->menu->report = array('link' => '報告|testreport|browse|productID=%s');
$lang->testcase->menu->caselib = array('link' => '用例庫|testsuite|library');
$lang->testtask = new stdclass();
-$lang->testtask->menu = $lang->testcase->menu;
+$lang->testtask->menu = new stdclass();
+$lang->testtask->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
+$lang->testtask->menu->testcase = array('link' => '用例|testcase|browse|productID=%s');
+$lang->testtask->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report');
+$lang->testtask->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s');
+$lang->testtask->menu->report = array('link' => '報告|testreport|browse|productID=%s');
+$lang->testtask->menu->caselib = array('link' => '用例庫|testsuite|library');
+
$lang->testsuite = new stdclass();
-$lang->testsuite->menu = $lang->testcase->menu;
+$lang->testsuite->menu = new stdclass();
+$lang->testsuite->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
+$lang->testsuite->menu->testcase = array('link' => '用例|testcase|browse|productID=%s');
+$lang->testsuite->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s');
+$lang->testsuite->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s', 'alias' => 'view,create,edit,linkcase');
+$lang->testsuite->menu->report = array('link' => '報告|testreport|browse|productID=%s');
+$lang->testsuite->menu->caselib = array('link' => '用例庫|testsuite|library');
+
$lang->testreport = new stdclass();
-$lang->testreport->menu = $lang->testcase->menu;
+$lang->testreport->menu = new stdclass();
+$lang->testreport->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
+$lang->testreport->menu->testcase = array('link' => '用例|testcase|browse|productID=%s');
+$lang->testreport->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s');
+$lang->testreport->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s');
+$lang->testreport->menu->report = array('link' => '報告|testreport|browse|productID=%s', 'alias' => 'view,create,edit');
+$lang->testreport->menu->caselib = array('link' => '用例庫|testsuite|library');
$lang->caselib = new stdclass();
$lang->caselib->menu = new stdclass();
@@ -765,11 +784,10 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of caselib module. */
$lang->caselib->menu = new stdclass();
- $lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true);
- $lang->caselib->menu->all = '所有|testsuite|library|libID=%s&browseType=all';
- $lang->caselib->menu->wait = '待評審|testsuite|library|libID=%s&browseType=wait';
- $lang->caselib->menu->view = '概況|testsuite|libview|libID=%s';
- $lang->caselib->menu->create = array('link' => " 創建庫|testsuite|createLib", 'float' => 'right');
+ $lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true);
+ $lang->caselib->menu->all = '所有|testsuite|library|libID=%s&browseType=all';
+ $lang->caselib->menu->wait = '待評審|testsuite|library|libID=%s&browseType=wait';
+ $lang->caselib->menu->view = '概況|testsuite|libview|libID=%s';
$lang->caselib->menuOrder[5] = 'lib';
$lang->caselib->menuOrder[10] = 'all';
diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php
index a9e5ee5fd6..9ba9b5b614 100644
--- a/module/testcase/lang/en.php
+++ b/module/testcase/lang/en.php
@@ -102,6 +102,7 @@ $lang->testcase->group = 'Group';
$lang->testcase->groupName = 'Group Name';
$lang->testcase->step = 'Step';
$lang->testcase->stepChild = 'Child';
+$lang->testcase->viewAll = 'View All';
$lang->testcase->new = 'New';
@@ -111,11 +112,12 @@ $lang->testcase->deleteStep = 'Delete';
$lang->testcase->insertBefore = 'Inserted Before';
$lang->testcase->insertAfter = 'Inserted After';
-$lang->testcase->assignToMe = 'AssignedToMe';
-$lang->testcase->openedByMe = 'CreatedByMe';
-$lang->testcase->allCases = 'All';
-$lang->testcase->needConfirm = 'StoryChanged';
-$lang->testcase->bySearch = 'Search';
+$lang->testcase->assignToMe = 'AssignedToMe';
+$lang->testcase->openedByMe = 'CreatedByMe';
+$lang->testcase->allCases = 'All';
+$lang->testcase->allTestcases = 'All Cases';
+$lang->testcase->needConfirm = 'StoryChanged';
+$lang->testcase->bySearch = 'Search';
$lang->testcase->lblStory = 'Story';
$lang->testcase->lblLastEdited = 'Last Edit';
diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php
index 5973c6d1fe..b6d3404a41 100644
--- a/module/testcase/lang/zh-cn.php
+++ b/module/testcase/lang/zh-cn.php
@@ -102,6 +102,7 @@ $lang->testcase->group = '分组';
$lang->testcase->groupName = '分组名称';
$lang->testcase->step = '步骤';
$lang->testcase->stepChild = '子步骤';
+$lang->testcase->viewAll = '查看所有';
$lang->testcase->new = '新增';
@@ -111,11 +112,12 @@ $lang->testcase->deleteStep = '删除';
$lang->testcase->insertBefore = '之前添加';
$lang->testcase->insertAfter = '之后添加';
-$lang->testcase->assignToMe = '给我的用例';
-$lang->testcase->openedByMe = '我建的用例';
-$lang->testcase->allCases = '所有';
-$lang->testcase->needConfirm = '需求变动';
-$lang->testcase->bySearch = '搜索';
+$lang->testcase->assignToMe = '给我的用例';
+$lang->testcase->openedByMe = '我建的用例';
+$lang->testcase->allCases = '所有';
+$lang->testcase->allTestcases = '所有用例';
+$lang->testcase->needConfirm = '需求变动';
+$lang->testcase->bySearch = '搜索';
$lang->testcase->lblStory = '相关需求';
$lang->testcase->lblLastEdited = '最后编辑';
@@ -201,4 +203,3 @@ $lang->testcase->featureBar['browse']['group'] = '分组查看';
$lang->testcase->featureBar['browse']['suite'] = '套件';
$lang->testcase->featureBar['browse']['zerocase'] = '零用例需求';
$lang->testcase->featureBar['groupcase'] = $lang->testcase->featureBar['browse'];
-
diff --git a/module/testcase/lang/zh-tw.php b/module/testcase/lang/zh-tw.php
index 4e4f7308de..159cd1c16f 100644
--- a/module/testcase/lang/zh-tw.php
+++ b/module/testcase/lang/zh-tw.php
@@ -102,6 +102,7 @@ $lang->testcase->group = '分組';
$lang->testcase->groupName = '分組名稱';
$lang->testcase->step = '步驟';
$lang->testcase->stepChild = '子步驟';
+$lang->testcase->viewAll = '查看所有';
$lang->testcase->new = '新增';
@@ -111,11 +112,12 @@ $lang->testcase->deleteStep = '刪除';
$lang->testcase->insertBefore = '之前添加';
$lang->testcase->insertAfter = '之後添加';
-$lang->testcase->assignToMe = '給我的用例';
-$lang->testcase->openedByMe = '我建的用例';
-$lang->testcase->allCases = '所有';
-$lang->testcase->needConfirm = '需求變動';
-$lang->testcase->bySearch = '搜索';
+$lang->testcase->assignToMe = '給我的用例';
+$lang->testcase->openedByMe = '我建的用例';
+$lang->testcase->allCases = '所有';
+$lang->testcase->allTestcases = '所有用例';
+$lang->testcase->needConfirm = '需求變動';
+$lang->testcase->bySearch = '搜索';
$lang->testcase->lblStory = '相關需求';
$lang->testcase->lblLastEdited = '最後編輯';
@@ -201,4 +203,3 @@ $lang->testcase->featureBar['browse']['group'] = '分組查看';
$lang->testcase->featureBar['browse']['suite'] = '套件';
$lang->testcase->featureBar['browse']['zerocase'] = '零用例需求';
$lang->testcase->featureBar['groupcase'] = $lang->testcase->featureBar['browse'];
-