Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/master_lanzongjun_fixbug
This commit is contained in:
@@ -48,6 +48,8 @@ body.menu-hide {padding-left: 0;}
|
||||
#apps {position: fixed; left: 96px; bottom: 0; right: 0; top: 0;}
|
||||
.app-container {position: absolute; left: 0; bottom: 40px; right: 0; top: 0; background-color: #efefef;}
|
||||
.menu-hide #apps {left: 40px;}
|
||||
.app-container.loading:before {background-color: rgba(0,0,0,.1);}
|
||||
.app-container.loading:before, .app-container.loading::after {transition-delay: 1s;}
|
||||
|
||||
#appsBar {position: fixed; left: 96px; bottom: 0; right: 0; height: 40px; z-index: 1012; background: #fff; border-top: 1px solid #eff1f7;}
|
||||
.menu-hide #appsBar {left: 40px;}
|
||||
|
||||
@@ -234,7 +234,7 @@
|
||||
'style="width: 100%; height: 100%; left: 0px;"',
|
||||
'/>'
|
||||
].join(' '));
|
||||
var $app = $('<div class="app-container" id="app-' + appCode + '"></div>')
|
||||
var $app = $('<div class="app-container load-indicator" id="app-' + appCode + '"></div>')
|
||||
.append($iframe)
|
||||
.appendTo('#apps');
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
var iframe = $iframe.get(0);
|
||||
iframe.onload = iframe.onreadystatechange = function(e)
|
||||
{
|
||||
$app.trigger('loadapp', app);
|
||||
$app.removeClass('loading').trigger('loadapp', app);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -456,6 +456,14 @@
|
||||
}
|
||||
|
||||
if(!notTriggerEvent) app.$app.trigger('reloadapp', app);
|
||||
|
||||
app.$app.addClass('loading');
|
||||
if(app._loadTimer) clearTimeout(app._loadTimer);
|
||||
app._loadTimer = setTimeout(function()
|
||||
{
|
||||
app.$app.removeClass('loading');
|
||||
app._loadTimer = null;
|
||||
}, 10000);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1062,6 +1062,98 @@ EOF;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Feedback .
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param int $param
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function feedback($browseType = 'assigntome', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$this->loadModel('feedback');
|
||||
|
||||
$this->loadModel('datatable');
|
||||
$this->lang->datatable->moduleSetting = str_replace($this->lang->module, $this->lang->feedback->moduleAB, $this->lang->datatable->moduleSetting);
|
||||
$this->lang->datatable->showModule = str_replace($this->lang->module, $this->lang->feedback->moduleAB, $this->lang->datatable->showModule);
|
||||
$this->lang->datatable->showModuleList = str_replace($this->lang->module, $this->lang->feedback->moduleAB, $this->lang->datatable->showModuleList);
|
||||
|
||||
$this->session->set('feedbackList', $this->app->getURI(true), 'feedback');
|
||||
|
||||
$queryID = $browseType == 'bysearch' ? (int)$param : 0;
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
if($browseType != 'bysearch')
|
||||
{
|
||||
$feedbacks = $this->feedback->getList($browseType, $orderBy, $pager);
|
||||
}
|
||||
else
|
||||
{
|
||||
$feedbacks = $this->feedback->getBySearch($queryID, $orderBy, $pager);
|
||||
}
|
||||
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'workFeedback');
|
||||
|
||||
$storyIdList = $bugIdList = $todoIdList = $taskIdList = array();
|
||||
foreach($feedbacks as $feedback)
|
||||
{
|
||||
if($feedback->solution == 'tobug') $bugIdList[] = $feedback->result;
|
||||
if($feedback->solution == 'tostory') $storyIdList[] = $feedback->result;
|
||||
if($feedback->solution == 'totodo') $todoIdList[] = $feedback->result;
|
||||
if($feedback->solution == 'totask') $taskIdList[] = $feedback->result;
|
||||
}
|
||||
$bugs = $bugIdList ? $this->loadModel('bug')->getByList($bugIdList) : array();
|
||||
$stories = $storyIdList ? $this->loadModel('story')->getByList($storyIdList) : array();
|
||||
$todos = $todoIdList ? $this->loadModel('todo')->getByList($todoIdList) : array();
|
||||
$tasks = $taskIdList ? $this->loadModel('task')->getByList($taskIdList) : array();
|
||||
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
|
||||
$this->config->feedback->search['module'] = 'workFeedback';
|
||||
$this->config->feedback->search['actionURL'] = inlink('work', "mode=feedback&browseType=bysearch¶m=myQueryID&orderBy=$orderBy");
|
||||
$this->config->feedback->search['queryID'] = $queryID;
|
||||
$this->config->feedback->search['onMenuBar'] = 'no';
|
||||
$this->config->feedback->search['params']['product']['values'] = array('' => '') + $products;
|
||||
$this->config->feedback->search['params']['module']['values'] = array('' => '') + $this->loadModel('tree')->getOptionMenu(0, $viewType = 'feedback', $startModuleID = 0);
|
||||
$this->config->feedback->search['params']['processedBy']['values'] = array('' => '') + $this->feedback->getFeedbackPairs('admin');
|
||||
|
||||
unset($this->config->feedback->search['fields']['assignedTo']);
|
||||
unset($this->config->feedback->search['fields']['closedBy']);
|
||||
unset($this->config->feedback->search['fields']['closedDate']);
|
||||
unset($this->config->feedback->search['fields']['closedReason']);
|
||||
unset($this->config->feedback->search['fields']['processedBy']);
|
||||
unset($this->config->feedback->search['fields']['processedDate']);
|
||||
unset($this->config->feedback->search['fields']['solution']);
|
||||
|
||||
$this->loadModel('search')->setSearchParams($this->config->feedback->search);
|
||||
|
||||
$this->view->title = $this->lang->my->feedback;
|
||||
$this->view->position[] = $this->lang->my->feedback;
|
||||
$this->view->mode = 'feedback';
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->feedbacks = $feedbacks;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->param = $param;
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->todos = $todos;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->tasks = $tasks;
|
||||
$this->view->depts = $this->loadModel('dept')->getOptionMenu();
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter|nodeleted|noclosed');
|
||||
$this->view->projects = $this->loadModel('project')->getPairsByProgram(0, 'noclosed');
|
||||
$this->view->allProducts = $this->dao->select('*')->from(TABLE_PRODUCT)->where('deleted')->eq('0')->fetchPairs('id', 'name');
|
||||
$this->view->modulePairs = $this->tree->getModulePairs(0, 'feedback');
|
||||
$this->view->modules = $this->tree->getOptionMenu(0, $viewType = 'feedback', 0);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* My team.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* The feedback view file of my module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package my
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include $app->getModuleRoot() . 'common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<?php js::set('total', $pager->recTotal);?>
|
||||
<?php js::set('rawMethod', $app->rawMethod);?>
|
||||
<?php $viewMethod = 'view'?>
|
||||
<style>
|
||||
.table-form>tbody>tr>th {width:135px;}
|
||||
.c-solution {white-space: nowrap; overflow: hidden;}
|
||||
</style>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=assigntome"), "<span class='text'>{$lang->my->taskMenu->assignedToMe}</span>" . ($browseType == 'assigntome' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($browseType == 'assigntome' ? ' btn-active-text' : '') . "'");
|
||||
?>
|
||||
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo $lang->user->search;?></a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mainContent">
|
||||
<div class="cell<?php if($browseType == 'bysearch') echo ' show';?>" id="queryBox" data-module='workFeedback'></div>
|
||||
<?php if(empty($feedbacks)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->noData;?></span></p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<?php
|
||||
include '../../../extension/biz/feedback/view/data.html.php';
|
||||
?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include $app->getModuleRoot() . 'common/view/footer.html.php';?>
|
||||
@@ -0,0 +1,220 @@
|
||||
<?php echo html::hidden('feedbackID', '');?>
|
||||
<div class="modal fade" id="toTask">
|
||||
<div class="modal-dialog mw-500px">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title"><?php echo $lang->feedback->selectProjects;?></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table class='table table-form'>
|
||||
<?php if($this->config->systemMode == 'new'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->feedback->project;?></th>
|
||||
<td><?php echo html::select('taskProjects', $projects, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th id='executionHead'><?php echo $lang->feedback->execution;?></th>
|
||||
<td><?php echo html::select('executions', '', '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<?php else:?>
|
||||
<tr>
|
||||
<th><?php echo $lang->execution->common;?></th>
|
||||
<td><?php echo html::select('executions', '', '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<td colspan='2' class='text-center'>
|
||||
<?php echo html::a('', $lang->feedback->nextStep, '',"class='btn btn-primary btn-wide iframe hidden' data-app='my' data-width='95%' id=taskProjectA");?>
|
||||
<?php echo html::commonButton($lang->feedback->nextStep, "id='taskProjectButton'", 'btn btn-primary btn-wide');?>
|
||||
<?php echo html::commonButton($lang->cancel, "data-dismiss='modal'", 'btn btn-default btn-wide');?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" id="toBug">
|
||||
<div class="modal-dialog mw-500px">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title"><?php echo $lang->feedback->selectProjects;?></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th><?php echo $lang->feedback->project?></th>
|
||||
<td><?php echo html::select('bugProjects', $projects, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class='text-center'>
|
||||
<?php echo html::hidden('productID', '');?>
|
||||
<?php echo html::a('', $lang->feedback->nextStep, '',"class='btn btn-primary btn-wide iframe hidden' data-app='my' data-width='95%' id=bugProjectA");?>
|
||||
<?php echo html::commonButton($lang->feedback->nextStep, "id='bugProjectButton'", 'btn btn-primary btn-wide');?>
|
||||
<?php echo html::commonButton($lang->cancel, "data-dismiss='modal'", 'btn btn-default btn-wide');?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php js::set('systemMode', $this->config->systemMode);?>
|
||||
<script>
|
||||
function getFeedbackID(obj)
|
||||
{
|
||||
var feedbackID = $(obj).attr("data-id");
|
||||
$('#feedbackID').val(feedbackID);
|
||||
if(systemMode == 'new')
|
||||
{
|
||||
$('#taskProjects').change();
|
||||
getProjects(obj);
|
||||
getExecutions(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
var projectID = $(obj).attr("data-product");
|
||||
getExecutions(projectID);
|
||||
}
|
||||
}
|
||||
|
||||
function getProjects(obj)
|
||||
{
|
||||
var productID = $(obj).attr("data-product");
|
||||
var link = createLink('feedback', 'ajaxGetProjects', 'productID=' + productID + '&field=taskProjects');
|
||||
|
||||
$.post(link, function(data)
|
||||
{
|
||||
$('#taskProjects').replaceWith(data);
|
||||
$('#taskProjects_chosen').remove();
|
||||
$('#taskProjects').chosen();
|
||||
changeTaskButton(false)
|
||||
})
|
||||
}
|
||||
|
||||
function initToBug(obj)
|
||||
{
|
||||
var feedbackID = $(obj).attr("data-id");
|
||||
var productID = $(obj).attr("data-product");
|
||||
$('#feedbackID').val(feedbackID);
|
||||
$('#productID').val(productID);
|
||||
|
||||
var link = createLink('feedback', 'ajaxGetProjects', 'productID=' + productID + "&field=bugProjects&onchange=changeButton");
|
||||
$.post(link, function(data)
|
||||
{
|
||||
$('#bugProjects').replaceWith(data);
|
||||
$('#bugProjects_chosen').remove();
|
||||
$('#bugProjects').chosen();
|
||||
})
|
||||
}
|
||||
|
||||
function getExecutions(projectID)
|
||||
{
|
||||
if(systemMode == 'new' && projectID)
|
||||
{
|
||||
var langLink = createLink('feedback', 'ajaxGetExecutionLang', 'projectID=' + projectID);
|
||||
$.post(langLink, function(executionLang)
|
||||
{
|
||||
$('#executionHead').html(executionLang);
|
||||
})
|
||||
}
|
||||
|
||||
var link = createLink('feedback', 'ajaxGetExecutions', 'projectID=' + projectID);
|
||||
|
||||
$.post(link, function(data)
|
||||
{
|
||||
$('#executions').replaceWith(data);
|
||||
$('#executions_chosen').remove();
|
||||
$('#executions').chosen();
|
||||
changeTaskButton()
|
||||
})
|
||||
}
|
||||
|
||||
/** Close dialog box when click href. */
|
||||
$('#taskProjectA').on('click', function()
|
||||
{
|
||||
$('#toTask').modal('hide')
|
||||
});
|
||||
|
||||
$('#bugProjectA').on('click', function()
|
||||
{
|
||||
$('#toBug').modal('hide')
|
||||
});
|
||||
|
||||
/** alert warning .*/
|
||||
$('#taskProjectButton').on('click', function()
|
||||
{
|
||||
var executionID = $('#executions').val();
|
||||
|
||||
var projectID = $('#taskProjects').val();
|
||||
var executionID = executionID ? executionID : 0;
|
||||
if(!executionID)
|
||||
{
|
||||
alert('<?php echo $lang->feedback->noExecution;?>');
|
||||
}
|
||||
else if(!projectID)
|
||||
{
|
||||
alert('<?php echo $lang->feedback->noProject;?>');
|
||||
}
|
||||
});
|
||||
|
||||
$('#bugProjectButton').on('click', function()
|
||||
{
|
||||
var projectID = $('#bugProjects').val();
|
||||
|
||||
if(!projectID)
|
||||
{
|
||||
alert('<?php echo $lang->feedback->noProject;?>');
|
||||
}
|
||||
});
|
||||
|
||||
/** change Button to A for open iframe. */
|
||||
function changeTaskButton()
|
||||
{
|
||||
|
||||
var projectID = $('#taskProjects').val();
|
||||
var executionID = $('#executions').val();
|
||||
var feedbackID = $('#feedbackID').val();
|
||||
var executionID = executionID ? executionID : 0;
|
||||
|
||||
if(executionID == 0)
|
||||
{
|
||||
$('#taskProjectButton').removeClass('hidden');
|
||||
$('#taskProjectA').addClass('hidden');
|
||||
}
|
||||
|
||||
if(systemMode == 'new' && projectID && executionID)
|
||||
{
|
||||
var href = createLink('task', 'create', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=0&extra=projectID=' + projectID + ',feedbackID=' + feedbackID, '', true);
|
||||
$('#taskProjectButton').addClass('hidden');
|
||||
$('#taskProjectA').removeClass('hidden').attr('href', href);
|
||||
|
||||
}
|
||||
else if(systemMode == 'classic' && executionID)
|
||||
{
|
||||
var href = createLink('task', 'create', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=0&extra=projectID=0,feedbackID=' + feedbackID, '', true);
|
||||
$('#taskProjectButton').addClass('hidden');
|
||||
$('#taskProjectA').removeClass('hidden').attr('href', href);
|
||||
}
|
||||
}
|
||||
|
||||
function changeButton()
|
||||
{
|
||||
var projectID = $('#bugProjects').val();
|
||||
var feedbackID = $('#feedbackID').val();
|
||||
var productID = $('#productID').val();
|
||||
|
||||
if(projectID)
|
||||
{
|
||||
var href = createLink('bug', 'create', 'product=' + productID + '&branch=0&extras=projectID=' + projectID + ',feedbackID=' + feedbackID, '', true);
|
||||
$('#bugProjectButton').addClass('hidden');
|
||||
$('#bugProjectA').removeClass('hidden').attr('href', href);
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#bugProjectButton').removeClass('hidden');
|
||||
$('#bugProjectA').addClass('hidden');
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -1258,7 +1258,7 @@ class product extends control
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Process product structure. */
|
||||
if($this->config->systemMode == 'classic' and $orderBy == 'program_asc') $orderBy = 'order_desc';
|
||||
if($this->config->systemMode == 'classic' and $orderBy == 'program_asc') $orderBy = 'order_asc';
|
||||
$productStats = $this->product->getStats($orderBy, $pager, $browseType, '', 'story', '', $queryID);
|
||||
$productStructure = $this->product->statisticProgram($productStats);
|
||||
$productLines = $this->dao->select('*')->from(TABLE_MODULE)->where('type')->eq('line')->andWhere('deleted')->eq(0)->orderBy('`order` asc')->fetchAll();
|
||||
@@ -1270,7 +1270,7 @@ class product extends control
|
||||
$programLines[$productLine->root][$productLine->id] = $productLine->name;
|
||||
}
|
||||
|
||||
$actionURL = $this->createLink('product', 'all', "browseType=bySearch&orderBy=order_desc&queryID=myQueryID");
|
||||
$actionURL = $this->createLink('product', 'all', "browseType=bySearch&orderBy=order_asc&queryID=myQueryID");
|
||||
$this->product->buildProductSearchForm($param, $actionURL);
|
||||
|
||||
$this->view->title = $this->lang->product->common;
|
||||
|
||||
@@ -278,7 +278,7 @@ class productModel extends model
|
||||
->orWhere('t1.createdBy')->eq($this->app->user->account)
|
||||
->markRight(1)
|
||||
->fi()
|
||||
->orderBy('t2.order_asc, t1.line_desc, t1.order_desc')
|
||||
->orderBy('t2.order_asc, t1.line_desc, t1.order_asc')
|
||||
->beginIF($limit > 0)->limit($limit)->fi()
|
||||
->fetchAll('id');
|
||||
}
|
||||
@@ -351,7 +351,7 @@ class productModel extends model
|
||||
->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('t1.status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->vision == 'rnd')->andWhere('t1.id')->in($views)->fi()
|
||||
->andWhere('t1.vision')->eq($this->config->vision)
|
||||
->orderBy('isClosed, t2.order_asc, t1.line_desc, t1.order_desc')
|
||||
->orderBy('isClosed, t2.order_asc, t1.line_desc, t1.order_asc')
|
||||
->fetchPairs('id', 'name');
|
||||
}
|
||||
else
|
||||
@@ -1675,7 +1675,7 @@ class productModel extends model
|
||||
$products = $this->dao->select('t1.id as id, t1.*')->from(TABLE_PRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id')
|
||||
->where('t1.id')->in($productKeys)
|
||||
->orderBy('t2.order_asc, t1.line_desc, t1.order_desc')
|
||||
->orderBy('t2.order_asc, t1.line_desc, t1.order_asc')
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ class program extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function product($programID = 0, $browseType = 'noclosed', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
public function product($programID = 0, $browseType = 'noclosed', $orderBy = 'order_asc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
{
|
||||
$programPairs = $this->program->getPairs();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php $canOrder = (common::hasPriv('program', 'updateOrder') and strpos($orderBy, 'order') !== false)?>
|
||||
<form class='main-table' id='programForm' method='post' data-ride='table' data-nested='true' data-expand-nest-child='false' data-checkable='false' data-enable-empty-nested-row='true' data-replace-id='programTableList'>
|
||||
<form class='main-table' id='programForm' method='post' data-ride='table' data-nested='true' data-expand-nest-child='false' data-checkable='false' data-enable-empty-nested-row='true' data-replace-id='programTableList' data-preserve-nested='true'>
|
||||
<table class='table has-sort-head table-fixed table-nested' id='programList'>
|
||||
<?php $vars = "status=$status&orderBy=%s";?>
|
||||
<thead>
|
||||
@@ -133,6 +133,10 @@ $(function()
|
||||
selector: 'tr',
|
||||
dragCssClass: 'drag-row',
|
||||
trigger: $list.find('.sort-handler').length ? '.sort-handler' : null,
|
||||
before: function(e)
|
||||
{
|
||||
if($(e.event.target).closest('a,.btn').length) return false;
|
||||
},
|
||||
canMoveHere: function($ele, $target)
|
||||
{
|
||||
return $ele.data('parent') === $target.data('parent');
|
||||
|
||||
@@ -2183,9 +2183,11 @@ class testtaskModel extends model
|
||||
$stepStatus = 'pass';
|
||||
foreach($caseResult->steps as $i => $step)
|
||||
{
|
||||
$result->stepResults[$i]['result'] = $step->status ? 'pass' : 'fail';
|
||||
if(!$step->status) $step->status = 'fail';
|
||||
|
||||
$result->stepResults[$i]['result'] = $step->status;
|
||||
$result->stepResults[$i]['real'] = $step->checkPoints[0]->actual;
|
||||
if(!$step->status) $stepStatus = 'fail';
|
||||
if($step->status == 'fail') $stepStatus = 'fail';
|
||||
|
||||
$caseStep = new stdclass();
|
||||
$caseStep->type = 'step';
|
||||
|
||||
+5
-5
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user