This commit is contained in:
hufangzhou
2021-09-14 09:57:39 +08:00
17 changed files with 66 additions and 12 deletions
+1 -4
View File
@@ -224,10 +224,7 @@ class html extends baseHTML
if($stringLength == 0) return 0;
$code = 0;
for($i = 0; $i < $stringLength; ++$i)
{
$code += ($i + 1) * ord($string[$i]);
}
for($i = 0; $i < $stringLength; ++ $i) $code += ($i + 1) * ord($string[$i]);
return $code;
}
+2
View File
@@ -378,6 +378,8 @@ class commonModel extends model
if(common::hasPriv($objectType, $createMethod))
{
if($objectType == 'doc' and !common::hasPriv('doc', 'tableContents')) continue;
/* Determines whether to print a divider. */
if($needPrintDivider and $showCreateList)
{
+7
View File
@@ -122,6 +122,13 @@ class custom extends control
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);
$reviewCase = isset($review->reviewCase) ? $review->reviewCase : 0;
if($review->needReview == 0 and $reviewCase)
{
$waitCases = $this->loadModel('testcase')->getByStatus(0, 0, 'all', 'wait');
$this->testcase->batchReview(array_keys($waitCases), 'pass');
}
}
elseif($module == 'task' and $field == 'hours')
{
+29
View File
@@ -34,4 +34,33 @@ $('[name*=unitList]').change(function()
$("#defaultCurrency").trigger("chosen:updated");
});
$('#submit').click(function()
{
if(module == 'testcase' && field == 'review' && stopSubmit)
{
var needReview = $('input:radio[name="needReview"]:checked').val();
stopSubmit = false;
if(needReview == 0)
{
$.post(createLink('testcase', 'ajaxGetReviewCount'), function(count)
{
if(count == 0)
{
$('#submit').click();
return true;
}
bootbox.confirm(confirmReviewCase, function(result)
{
if(result) $('#submit').append("<input type='text' class='hidden' name='reviewCase' value='1'>");
$('#submit').click();
})
})
return false;
}
}
})
$('[name*=unitList]').change();
+1
View File
@@ -174,6 +174,7 @@ $lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->executionCommon} is also forbidden.";
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
$lang->custom->notice->confirmReviewCase = 'Set the case in Wait to Normal?';
$lang->custom->notice->indexPage['product'] = "ZenTao 8.2+ has Product Home. Do you want to go to Product Home?";
$lang->custom->notice->indexPage['project'] = "ZenTao 8.2+ has Project Home. Do you want to go to Project Home?";
+1
View File
@@ -174,6 +174,7 @@ $lang->custom->notice->readOnlyOfProduct = '禁止修改后,已关闭' . $la
$lang->custom->notice->readOnlyOfExecution = "禁止修改后,已关闭{$lang->custom->execution}下的任务、版本、日志以及关联需求都禁止修改。";
$lang->custom->notice->URSREmpty = '自定义需求名称不能为空!';
$lang->custom->notice->confirmDelete = '您确定要删除吗?';
$lang->custom->notice->confirmReviewCase = '是否将待评审的用例修改为正常状态?';
$lang->custom->notice->indexPage['product'] = "从8.2版本起增加了产品主页视图,是否默认进入产品主页?";
$lang->custom->notice->indexPage['project'] = "从8.2版本起增加了项目主页视图,是否默认进入项目主页?";
+2
View File
@@ -31,6 +31,8 @@ EOT;
<?php js::set('itemRow', $itemRow)?>
<?php js::set('module', $module)?>
<?php js::set('field', $field)?>
<?php js::set('confirmReviewCase', $lang->custom->notice->confirmReviewCase)?>
<?php js::set('stopSubmit', true)?>
<style>
.checkbox-primary {width: 170px; margin: 0 10px 10px 0; display: inline-block;}
</style>
+1 -1
View File
@@ -110,7 +110,7 @@ $sessionString .= session_name() . '=' . session_id();
<img onload="setImageSize(this, 0)" src="<?php echo $this->createLink('file', 'read', "fileID={$file->id}");?>" alt="<?php echo $file->title?>" title="<?php echo $file->title;?>">
</a>
<span class='right-icon'>
<?php if(common::hasPriv('file', 'download')) echo html::a($this->createLink('file', 'download', 'fileID=' . $file->id) . $sessionString, "<i class='icon icon-export'></i>", '', "class='btn-icon' style='margin-right: 10px;' title=\"{$lang->doc->download}\"");?>
<?php if(common::hasPriv('file', 'download')) echo html::a($this->createLink('file', 'download', 'fileID=' . $file->id) . $sessionString, "<i class='icon icon-import'></i>", '', "class='btn-icon' style='margin-right: 10px;' title=\"{$lang->doc->download}\"");?>
<?php if(common::hasPriv('doc', 'deleteFile')) echo html::a('###', "<i class='icon icon-trash'></i>", '', "class='btn-icon' title=\"{$lang->doc->deleteFile}\" onclick='deleteFile($file->id)'");?>
</span>
</div>
+1 -1
View File
@@ -130,7 +130,7 @@ js::set('docID', $doc->id);
<img onload="setImageSize(this, 0)" src="<?php echo $this->createLink('file', 'read', "fileID={$file->id}");?>" alt="<?php echo $file->title?>" title="<?php echo $file->title;?>">
</a>
<span class='right-icon'>
<?php if(common::hasPriv('file', 'download')) echo html::a($this->createLink('file', 'download', 'fileID=' . $file->id) . $sessionString, "<i class='icon icon-export'></i>", '', "class='btn-icon' style='margin-right: 10px;' title=\"{$lang->doc->download}\"");?>
<?php if(common::hasPriv('file', 'download')) echo html::a($this->createLink('file', 'download', 'fileID=' . $file->id) . $sessionString, "<i class='icon icon-import'></i>", '', "class='btn-icon' style='margin-right: 10px;' title=\"{$lang->doc->download}\"");?>
<?php if(common::hasPriv('doc', 'deleteFile')) echo html::a('###', "<i class='icon icon-trash'></i>", '', "class='btn-icon' title=\"{$lang->doc->deleteFile}\" onclick='deleteFile($file->id)'");?>
</span>
</div>
+1 -1
View File
@@ -63,7 +63,7 @@ class executionModel extends model
*/
public function setMenu($executionID, $buildID = 0, $extra = '')
{
if(!$this->app->user->admin and strpos(",{$this->app->user->view->sprints},", ",$executionID,") === false and !defined('TUTORIAL')) die(js::error($this->lang->execution->accessDenied) . js::locate('back'));
if(!$this->app->user->admin and strpos(",{$this->app->user->view->sprints},", ",$executionID,") === false and !defined('TUTORIAL') and $executionID != 0) die(js::error($this->lang->execution->accessDenied) . js::locate('back'));
$executions = $this->loadModel('execution')->getPairs(0, 'all', 'nocode');
if(!$executionID and $this->session->execution) $executionID = $this->session->execution;
+1 -1
View File
@@ -1984,7 +1984,7 @@ class productModel extends model
*/
public function setMenu($productID, $branch = 0, $module = 0, $moduleType = '', $extra = '')
{
if(!$this->app->user->admin and strpos(",{$this->app->user->view->products},", ",$productID,") === false) die(js::error($this->lang->product->accessDenied) . js::locate('back'));
if(!$this->app->user->admin and strpos(",{$this->app->user->view->products},", ",$productID,") === false and $productID != 0) die(js::error($this->lang->product->accessDenied) . js::locate('back'));
$product = $this->getByID($productID);
$params = array('branch' => $branch);
+1 -1
View File
@@ -23,7 +23,7 @@ class qaModel extends model
*/
public function setMenu($products, $productID, $branch = 0, $extra = '')
{
if(!$this->app->user->admin and strpos(",{$this->app->user->view->products},", ",$productID,") === false)
if(!$this->app->user->admin and strpos(",{$this->app->user->view->products},", ",$productID,") === false and $productID != 0)
{
$this->app->loadLang('product');
die(js::error($this->lang->product->accessDenied) . js::locate('back'));
+1
View File
@@ -230,6 +230,7 @@ class task extends control
$this->view->executions = $this->config->systemMode == 'classic' ? $executions : $this->execution->getByProject(0, 'all', 0, true);
$this->view->task = $task;
$this->view->users = $users;
$this->view->storyID = $storyID;
$this->view->stories = $stories;
$this->view->testStoryIdList = $this->loadModel('story')->getTestStories(array_keys($stories), $execution->id);
$this->view->members = $members;
+3
View File
@@ -15,6 +15,9 @@
<?php include '../../common/view/sortable.html.php';?>
<?php js::set('toTaskList', !empty($task->id));?>
<?php js::set('blockID', $blockID);?>
<?php if(!empty($storyID)):?>
<style> .title-group.required > .required:after {right: 110px;}</style>
<?php endif;?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
+11
View File
@@ -1963,4 +1963,15 @@ class testcase extends control
if($methodName == 'update') $status = zget($status, 1, '');
die($status);
}
/**
* Ajax: Get count of need review casese.
*
* @access public
* @return int
*/
public function ajaxGetReviewCount()
{
echo $this->dao->select('count(id) as count')->from(TABLE_CASE)->where('status')->eq('wait')->fetch('count');
}
}
+3 -3
View File
@@ -319,7 +319,7 @@ class testcaseModel extends model
}
/**
* Get by suite.
* Get cases by suite.
*
* @param int $productID
* @param int $branch
@@ -329,7 +329,7 @@ class testcaseModel extends model
* @param object $pager
* @param string $auto no|unit
* @access public
* @return void
* @return array
*/
public function getBySuite($productID, $branch = 0, $suiteID, $moduleIdList = 0, $orderBy = 'id_desc', $pager = null, $auto = 'no')
{
@@ -586,7 +586,7 @@ class testcaseModel extends model
* @access public
* @return array
*/
public function getByStatus($productID = 0, $branch, $type = 'all', $status = 'all', $moduleID, $orderBy = 'id_desc', $pager, $auto = 'no')
public function getByStatus($productID = 0, $branch, $type = 'all', $status = 'all', $moduleID = 0, $orderBy = 'id_desc', $pager = null, $auto = 'no')
{
$modules = $moduleID ? $this->loadModel('tree')->getAllChildId($moduleID) : '0';
Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 53 KiB