diff --git a/module/custom/control.php b/module/custom/control.php
index df5c1f6192..534dda7d3d 100644
--- a/module/custom/control.php
+++ b/module/custom/control.php
@@ -50,8 +50,9 @@ class custom extends control
{
$this->app->loadConfig($module);
$this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
- $this->view->needReview = zget($this->config->$module, 'needReview', 1);
- $this->view->forceReview = zget($this->config->$module, 'forceReview', '');
+ $this->view->needReview = zget($this->config->$module, 'needReview', 1);
+ $this->view->forceReview = zget($this->config->$module, 'forceReview', '');
+ $this->view->forceNotReview = zget($this->config->$module, 'forceNotReview', '');
}
if($module == 'task' and $field == 'hours')
{
@@ -82,7 +83,9 @@ class custom extends control
{
if(($module == 'story' or $module == 'testcase') and $field == 'review')
{
- $data = fixer::input('post')->join('forceReview', ',')->get();
+ $review = fixer::input('post')->get();
+ if($review->needReview) $data = fixer::input('post')->join('forceNotReview', ',')->remove('forceReview')->get();
+ if(!$review->needReview) $data = fixer::input('post')->join('forceReview', ',')->remove('forceNotReview')->get();
$this->loadModel('setting')->setItems("system.$module", $data);
}
elseif($module == 'task' and $field == 'hours')
diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php
index b3959833e4..0110fc718f 100644
--- a/module/custom/lang/en.php
+++ b/module/custom/lang/en.php
@@ -82,6 +82,7 @@ $lang->custom->notice = new stdclass();
$lang->custom->notice->userRole = 'Key must be no more than 20 characters!';
$lang->custom->notice->canNotAdd = 'This item will be processed, so customized feature is not enabled.';
$lang->custom->notice->forceReview = 'Review is required for %s submitted by certain assignee.';
+$lang->custom->notice->forceNotReview = "Not review is required for %s submitted by certain assignee.";
$lang->custom->notice->longlife = 'List "Undone" bugs that are older than hold days from "Longlife" bugs.';
$lang->custom->notice->priListKey = 'Priority list key should be numbers!';
$lang->custom->notice->keyList = 'key should be English or digital!';
diff --git a/module/custom/lang/zh-cn.php b/module/custom/lang/zh-cn.php
index 0983985fdf..914abf963f 100644
--- a/module/custom/lang/zh-cn.php
+++ b/module/custom/lang/zh-cn.php
@@ -82,6 +82,7 @@ $lang->custom->notice = new stdclass();
$lang->custom->notice->userRole = '键的长度必须小于20个字符!';
$lang->custom->notice->canNotAdd = '该项参与运算,不提供自定义添加功能';
$lang->custom->notice->forceReview = "指定人提交的%s必须评审。";
+$lang->custom->notice->forceNotReview = "指定人提交的%s不需要评审。";
$lang->custom->notice->longlife = 'Bug列表页面的久未处理标签中,列出设置天数之前未处理的Bug。';
$lang->custom->notice->priListKey = '优先级的键应当为数字!';
$lang->custom->notice->keyList = '键值应当为英文或数字';
@@ -90,10 +91,11 @@ $lang->custom->notice->indexPage['product'] = "从8.2版本起增加了产品主
$lang->custom->notice->indexPage['project'] = "从8.2版本起增加了项目主页视图,是否默认进入项目主页?";
$lang->custom->notice->indexPage['qa'] = "从8.2版本起增加了测试主页视图,是否默认进入测试主页?";
-$lang->custom->storyReview = '评审流程';
-$lang->custom->forceReview = '强制评审';
-$lang->custom->reviewList[1] = '开启';
-$lang->custom->reviewList[0] = '关闭';
+$lang->custom->storyReview = '评审流程';
+$lang->custom->forceReview = '强制评审';
+$lang->custom->forceNotReview = '不需要评审';
+$lang->custom->reviewList[1] = '开启';
+$lang->custom->reviewList[0] = '关闭';
$lang->custom->deletedList[1] = '列出';
$lang->custom->deletedList[0] = '不列出';
diff --git a/module/custom/lang/zh-tw.php b/module/custom/lang/zh-tw.php
index f90207046e..a2a143e05e 100644
--- a/module/custom/lang/zh-tw.php
+++ b/module/custom/lang/zh-tw.php
@@ -82,6 +82,7 @@ $lang->custom->notice->userRole = '鍵的長度必須小於20個字
$lang->custom->notice->canNotAdd = '該項參與運算,不提供自定義添加功能';
$lang->custom->notice->forceReview = "指定人提交的%s必須評審。";
$lang->custom->notice->longlife = 'Bug列表頁面的久未處理標籤中,列出設置天數之前未處理的Bug。';
+$lang->custom->notice->forceNotReview = "指定人提交的%s不需要評審。";
$lang->custom->notice->priListKey = '優先順序的鍵應當為數字!';
$lang->custom->notice->keyList = '鍵值應當為英文或數字';
$lang->custom->notice->severityListKey = 'Bug嚴重程度的鍵應當為數字!';
diff --git a/module/custom/view/set.html.php b/module/custom/view/set.html.php
index f30a188cba..baafa0006d 100644
--- a/module/custom/view/set.html.php
+++ b/module/custom/view/set.html.php
@@ -11,7 +11,7 @@
*/
?>
-
@@ -76,6 +76,13 @@ EOT;
| |
custom->notice->forceReview, $lang->$module->common);?> |
+
+ >
+ | custom->forceNotReview;?> |
+ |
+ custom->notice->forceNotReview, $lang->$module->common);?> |
+
+
|
|
@@ -182,10 +189,12 @@ $(function()
if($(this).val() == 0)
{
$('#forceReview').closest('tr').removeClass('hidden');
+ $('#forceNotReview').closest('tr').addClass('hidden');
}
else
{
$('#forceReview').closest('tr').addClass('hidden');
+ $('#forceNotReview').closest('tr').removeClass('hidden');
}
})
})
diff --git a/module/testcase/config.php b/module/testcase/config.php
index 718e546dd0..59010ded91 100644
--- a/module/testcase/config.php
+++ b/module/testcase/config.php
@@ -24,7 +24,7 @@ $config->testcase->exportFields = '
lastEditedBy, lastEditedDate, version, linkCase';
$config->testcase->customCreateFields = 'story,stage,pri,keywords';
-$config->testcase->customBatchCreateFields = 'module,stage,story,pri,precondition,keywords';
+$config->testcase->customBatchCreateFields = 'module,stage,story,pri,precondition,keywords,review';
$config->testcase->customBatchEditFields = 'module,story,stage,precondition,status,pri,keywords';
$config->testcase->custom = new stdclass();
diff --git a/module/testcase/control.php b/module/testcase/control.php
index 4f4f602061..05d1b5b4a8 100644
--- a/module/testcase/control.php
+++ b/module/testcase/control.php
@@ -346,12 +346,12 @@ class testcase extends control
$this->display();
}
-
+
/**
* Create a batch test case.
- *
- * @param int $productID
- * @param int $moduleID
+ *
+ * @param int $productID
+ * @param int $moduleID
* @param int $storyID
* @access public
* @return void
@@ -418,6 +418,7 @@ class testcase extends control
$this->view->currentModuleID = $currentModuleID;
$this->view->branch = $branch;
$this->view->branches = $this->loadModel('branch')->getPairs($productID);
+ $this->view->needReview = $this->testcase->forceNotReview() == true ? 0 : 1;
$this->display();
}
@@ -559,7 +560,7 @@ class testcase extends control
$case->steps[] = $step;
}
- $isLibCase = ($case->lib and empty($case->product));
+ $isLibCase = ($case->lib and empty($case->product));
if($isLibCase)
{
$libraries = $this->loadModel('testsuite')->getLibraries();
@@ -602,7 +603,7 @@ class testcase extends control
$this->view->moduleOptionMenu = $moduleOptionMenu;
$this->view->stories = $this->story->getProductStoryPairs($productID, $case->branch);
}
- if(!$this->testcase->forceReview()) unset($this->lang->testcase->statusList['wait']);
+ if($this->testcase->forceNotReview()) unset($this->lang->testcase->statusList['wait']);
$position[] = $this->lang->testcase->common;
$position[] = $this->lang->testcase->edit;
@@ -710,7 +711,7 @@ class testcase extends control
}
}
- if(!$this->testcase->forceReview()) unset($this->lang->testcase->statusList['wait']);
+ if(!$this->testcase->forceNotReview()) unset($this->lang->testcase->statusList['wait']);
/* Judge whether the editedTasks is too large and set session. */
$countInputVars = count($cases) * (count(explode(',', $this->config->testcase->custom->batchEditFields)) + 3);
diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php
index 552719118b..40b409214f 100644
--- a/module/testcase/lang/en.php
+++ b/module/testcase/lang/en.php
@@ -36,6 +36,7 @@ $lang->testcase->stage = 'Stage';
$lang->testcase->reviewedBy = 'Reviewed By';
$lang->testcase->reviewedDate = 'Reviewed Date';
$lang->testcase->reviewResult = 'Review Result';
+$lang->testcase->forceNotReview = 'No Review';
$lang->testcase->lastEditedByAB = 'Last Edited By';
$lang->testcase->lastEditedDateAB = 'Last Edited on';
$lang->testcase->lastEditedDate = 'Last Edited on';
@@ -129,6 +130,9 @@ $lang->testcase->confirmBatchDelete = 'Do you want to batch delete thess Test Ca
$lang->testcase->ditto = 'Ditto';
$lang->testcase->dittoNotice = 'This Case does not belong to the Product as the previous one!';
+$lang->testcase->reviewList[0] = 'NO';
+$lang->testcase->reviewList[1] = 'YES';
+
$lang->testcase->priList[3] = 3;
$lang->testcase->priList[1] = 1;
$lang->testcase->priList[2] = 2;
diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php
index 0c5ff186ab..4efb62b322 100644
--- a/module/testcase/lang/zh-cn.php
+++ b/module/testcase/lang/zh-cn.php
@@ -36,6 +36,7 @@ $lang->testcase->stage = '适用阶段';
$lang->testcase->reviewedBy = '由谁评审';
$lang->testcase->reviewedDate = '评审时间';
$lang->testcase->reviewResult = '评审结果';
+$lang->testcase->forceNotReview = '不需要评审';
$lang->testcase->lastEditedByAB = '修改者';
$lang->testcase->lastEditedDateAB = '修改日期';
$lang->testcase->lastEditedDate = '修改日期';
@@ -112,11 +113,11 @@ $lang->testcase->allCases = '所有';
$lang->testcase->needConfirm = '需求变动';
$lang->testcase->bySearch = '搜索';
-$lang->testcase->lblStory = '相关需求';
-$lang->testcase->lblLastEdited = '最后编辑';
-$lang->testcase->lblTypeValue = '类型可选值列表';
-$lang->testcase->lblStageValue = '阶段可选值列表';
-$lang->testcase->lblStatusValue = '状态可选值列表';
+$lang->testcase->lblStory = '相关需求';
+$lang->testcase->lblLastEdited = '最后编辑';
+$lang->testcase->lblTypeValue = '类型可选值列表';
+$lang->testcase->lblStageValue = '阶段可选值列表';
+$lang->testcase->lblStatusValue = '状态可选值列表';
$lang->testcase->legendBasicInfo = '基本信息';
$lang->testcase->legendAttatch = '附件';
@@ -129,6 +130,9 @@ $lang->testcase->confirmBatchDelete = '您确认要批量删除这些测试用
$lang->testcase->ditto = '同上';
$lang->testcase->dittoNotice = '该用例与上一用例不属于同一产品!';
+$lang->testcase->reviewList[0] = '否';
+$lang->testcase->reviewList[1] = '是';
+
$lang->testcase->priList[3] = 3;
$lang->testcase->priList[1] = 1;
$lang->testcase->priList[2] = 2;
diff --git a/module/testcase/lang/zh-tw.php b/module/testcase/lang/zh-tw.php
index a5a4e46e70..00d7957567 100644
--- a/module/testcase/lang/zh-tw.php
+++ b/module/testcase/lang/zh-tw.php
@@ -36,6 +36,7 @@ $lang->testcase->stage = '適用階段';
$lang->testcase->reviewedBy = '由誰評審';
$lang->testcase->reviewedDate = '評審時間';
$lang->testcase->reviewResult = '評審結果';
+$lang->testcase->forceNotReview = '不需要評審';
$lang->testcase->lastEditedByAB = '修改者';
$lang->testcase->lastEditedDateAB = '修改日期';
$lang->testcase->lastEditedDate = '修改日期';
@@ -129,6 +130,9 @@ $lang->testcase->confirmBatchDelete = '您確認要批量刪除這些測試用
$lang->testcase->ditto = '同上';
$lang->testcase->dittoNotice = '該用例與上一用例不屬於同一產品!';
+$lang->testcase->reviewList[0] = '否';
+$lang->testcase->reviewList[1] = '是';
+
$lang->testcase->priList[3] = 3;
$lang->testcase->priList[1] = 1;
$lang->testcase->priList[2] = 2;
diff --git a/module/testcase/model.php b/module/testcase/model.php
index 4b6f1bec70..7958db676f 100644
--- a/module/testcase/model.php
+++ b/module/testcase/model.php
@@ -84,11 +84,11 @@ class testcaseModel extends model
$case = fixer::input('post')
->add('openedBy', $this->app->user->account)
->add('openedDate', $now)
- ->add('status', $this->forceReview() ? 'wait' : 'normal')
+ ->add('status', $this->forceNotReview() || ($this->config->testcase->needReview && $this->post->forceNotReview) ? 'normal' : 'wait')
->add('version', 1)
->add('fromBug', $bugID)
->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion((int)$this->post->story))
- ->remove('steps,expects,files,labels,stepType')
+ ->remove('steps,expects,files,labels,stepType,forceNotReview')
->setDefault('story', 0)
->join('stage', ',')
->get();
@@ -125,12 +125,12 @@ class testcaseModel extends model
return array('status' => 'created', 'id' => $caseID);
}
}
-
+
/**
* Batch create cases.
- *
- * @param int $productID
- * @param int $storyID
+ *
+ * @param int $productID
+ * @param int $storyID
* @access public
* @return void
*/
@@ -160,14 +160,14 @@ class testcaseModel extends model
$type = $cases->type[$i] == 'ditto' ? $type : $cases->type[$i];
$pri = $cases->pri[$i] == 'ditto' ? $pri : $cases->pri[$i];
$cases->module[$i] = (int)$module;
- $cases->story[$i] = (int)$story;
+ $cases->story[$i] = (int)$story;
$cases->type[$i] = $type;
$cases->pri[$i] = $pri;
}
$this->loadModel('story');
$storyVersions = array();
- $forceReview = $this->forceReview();
+ $forceNotReview = $this->forceNotReview();
for($i = 0; $i < $batchNum; $i++)
{
if($cases->type[$i] != '' and $cases->title[$i] != '')
@@ -186,7 +186,7 @@ class testcaseModel extends model
$data[$i]->keywords = $cases->keywords[$i];
$data[$i]->openedBy = $this->app->user->account;
$data[$i]->openedDate = $now;
- $data[$i]->status = $forceReview ? 'wait' : 'normal';
+ $data[$i]->status = $forceNotReview || ($this->config->testcase->needReview && $cases->needReview[$i]) ? 'normal' : 'wait';
$data[$i]->version = 1;
$caseStory = $data[$i]->story;
@@ -522,7 +522,7 @@ class testcaseModel extends model
$steps = array();
//---------------- Judge steps changed or not.-------------------- */
-
+
/* Remove the empty setps in post. */
foreach($this->post->steps as $key => $desc)
{
@@ -558,7 +558,7 @@ class testcaseModel extends model
->join('stage', ',')
->remove('comment,steps,expects,files,labels,stepType')
->get();
- if($this->forceReview() and $stepChanged) $case->status = 'wait';
+ if(!$this->forceNotReview() and $stepChanged) $case->status = 'wait';
$this->dao->update(TABLE_CASE)->data($case)->autoCheck()->batchCheck($this->config->testcase->edit->requiredFields, 'notempty')->where('id')->eq((int)$caseID)->exec();
if(!$this->dao->isError())
{
@@ -997,7 +997,7 @@ class testcaseModel extends model
$cases[$key] =$caseData;
}
- $forceReview = $this->forceReview();
+ $forceNotReview = $this->forceNotReview();
foreach($cases as $key => $caseData)
{
$caseID = 0;
@@ -1059,7 +1059,7 @@ class testcaseModel extends model
{
$caseData->lastEditedBy = $this->app->user->account;
$caseData->lastEditedDate = $now;
- if($stepChanged and $forceReview) $caseData->status = 'wait';
+ if($stepChanged and !$forceNotReview) $caseData->status = 'wait';
$this->dao->update(TABLE_CASE)->data($caseData)->where('id')->eq($caseID)->autoCheck()->exec();
if($stepChanged)
{
@@ -1094,7 +1094,7 @@ class testcaseModel extends model
$caseData->openedDate = $now;
$caseData->branch = isset($data->branch[$key]) ? $data->branch[$key] : $branch;
if($caseData->story) $caseData->storyVersion = zget($storyVersionPairs, $caseData->story, 1);
- $caseData->status = $forceReview ? 'wait' : 'normal';
+ $caseData->status = !$forceNotReview ? 'wait' : 'normal';
$this->dao->insert(TABLE_CASE)->data($caseData)->autoCheck()->exec();
if(!dao::isError())
@@ -1393,15 +1393,16 @@ class testcaseModel extends model
}
/**
- * Check whether force review
- *
+ * Check whether force not review
+ *
* @access public
* @return bool
*/
- public function forceReview()
+ public function forceNotReview()
{
- if($this->config->testcase->needReview) return true;
- if(strpos(",{$this->config->testcase->forceReview},", ",{$this->app->user->account},") !== false) return true;
+ if(!$this->config->testcase->needReview && strpos(",{$this->config->testcase->forceReview},", ",{$this->app->user->account},") === false) return true;
+ if($this->config->testcase->needReview && strpos(",{$this->config->testcase->forceNotReview},", ",{$this->app->user->account},")) return true;
+
return false;
}
}
diff --git a/module/testcase/view/batchcreate.html.php b/module/testcase/view/batchcreate.html.php
index 774b997c8d..d345608d5b 100644
--- a/module/testcase/view/batchcreate.html.php
+++ b/module/testcase/view/batchcreate.html.php
@@ -55,6 +55,7 @@ if($hiddenStory and isset($visibleFields['story'])) $colspan -= 1;
'>testcase->precondition;?> |
'> testcase->keywords;?> |
'> testcase->stage;?> |
+ '> testcase->review;?> |
@@ -83,6 +84,7 @@ if($hiddenStory and isset($visibleFields['story'])) $colspan -= 1;
'> |
'> |
' style='overflow:visible'>testcase->stageList, '', "class='form-control chosen' multiple");?> |
+ '>testcase->reviewList, $needReview, "class='form-control'");?> |
diff --git a/module/testcase/view/create.html.php b/module/testcase/view/create.html.php
index 34bd6ec629..fec4b76e06 100644
--- a/module/testcase/view/create.html.php
+++ b/module/testcase/view/create.html.php
@@ -88,6 +88,9 @@
+ testcase->forceNotReview()):?>
+ testcase->forceNotReview, '', "id='forceNotReview'");?>
+