Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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')
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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?";
|
||||
|
||||
@@ -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版本起增加了项目主页视图,是否默认进入项目主页?";
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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'));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user