* adjust for case block.

This commit is contained in:
wangyidong
2018-02-01 14:23:19 +08:00
parent ed2ecf6fd6
commit 8e2dee9fb6
9 changed files with 143 additions and 52 deletions
+44 -14
View File
@@ -105,6 +105,11 @@ class block extends control
$params = $this->block->$func($source);
$this->view->params = json_decode($params, true);
}
elseif($type == 'assigntome')
{
$params = $this->block->getAssignToMeParams();
$this->view->params = json_decode($params, true);
}
$this->view->source = $source;
$this->view->type = $type;
@@ -337,6 +342,7 @@ class block extends control
}
elseif($block->block == 'assigntome')
{
$this->get->set('param', base64_encode(json_encode($block->params)));
$html = $this->fetch('block', 'printAssignToMeBlock', 'longBlock=' . $this->block->isLongBlock($block));
}
elseif($block->block == 'welcome')
@@ -703,21 +709,26 @@ class block extends control
*/
public function printAssignToMeBlock($longBlock = true)
{
if(common::hasPriv('todo', 'view')) $hasViewPriv['todo'] = true;
if(common::hasPriv('story', 'view')) $hasViewPriv['story'] = true;
if(common::hasPriv('task', 'view')) $hasViewPriv['task'] = true;
if(common::hasPriv('bug', 'view')) $hasViewPriv['bug'] = true;
if(common::hasPriv('testcase', 'view')) $hasViewPriv['case'] = true;
if(common::hasPriv('todo', 'view')) $hasViewPriv['todo'] = true;
if(common::hasPriv('story', 'view')) $hasViewPriv['story'] = true;
if(common::hasPriv('task', 'view')) $hasViewPriv['task'] = true;
if(common::hasPriv('bug', 'view')) $hasViewPriv['bug'] = true;
if(common::hasPriv('testcase', 'view')) $hasViewPriv['case'] = true;
$params = $this->get->param;
$params = json_decode(base64_decode($params));
if(isset($hasViewPriv['todo']))
{
$this->app->loadClass('date');
$this->app->loadLang('todo');
$todos = $this->dao->select('*')->from(TABLE_TODO)
$stmt = $this->dao->select('*')->from(TABLE_TODO)
->where("(assignedTo = '{$this->app->user->account}' or (assignedTo = '' and account='{$this->app->user->account}'))")
->andWhere('status')->ne('done')
->andWhere('cycle')->eq(0)
->orderBy('`date`')
->fetchAll();
->orderBy('`date`');
if(isset($params->todoNum)) $stmt->limit($params->todoNum);
$todos = $stmt->fetchAll();
foreach($todos as $todo)
{
@@ -730,7 +741,13 @@ class block extends control
if(isset($hasViewPriv['story']))
{
$this->app->loadLang('story');
$stories = $this->dao->select('*')->from(TABLE_STORY)->where('assignedTo')->eq($this->app->user->account)->andWhere('deleted')->eq('0')->orderBy('id_desc')->fetchAll();
$stmt = $this->dao->select('*')->from(TABLE_STORY)
->where('assignedTo')->eq($this->app->user->account)
->andWhere('deleted')->eq('0')
->andWhere('status')->ne('closed')
->orderBy('id_desc');
if(isset($params->storyNum)) $stmt->limit($params->storyNum);
$stories = $stmt->fetchAll();
if(empty($stories)) unset($hasViewPriv['story']);
$this->view->stories = $stories;
@@ -738,7 +755,13 @@ class block extends control
if(isset($hasViewPriv['task']))
{
$this->app->loadLang('task');
$tasks = $this->dao->select('*')->from(TABLE_TASK)->where('assignedTo')->eq($this->app->user->account)->andWhere('deleted')->eq('0')->orderBy('id_desc')->fetchAll();
$stmt = $this->dao->select('*')->from(TABLE_TASK)
->where('assignedTo')->eq($this->app->user->account)
->andWhere('deleted')->eq('0')
->andWhere('status')->ne('closed')
->orderBy('id_desc');
if(isset($params->taskNum)) $stmt->limit($params->taskNum);
$tasks = $stmt->fetchAll();
if(empty($tasks)) unset($hasViewPriv['task']);
$this->view->tasks = $tasks;
@@ -746,7 +769,13 @@ class block extends control
if(isset($hasViewPriv['bug']))
{
$this->app->loadLang('bug');
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where('assignedTo')->eq($this->app->user->account)->andWhere('deleted')->eq('0')->orderBy('id_desc')->fetchAll();
$stmt = $this->dao->select('*')->from(TABLE_BUG)
->where('assignedTo')->eq($this->app->user->account)
->andWhere('deleted')->eq('0')
->andWhere('status')->ne('closed')
->orderBy('id_desc');
if(isset($params->bugNum)) $stmt->limit($params->bugNum);
$bugs = $stmt->fetchAll();
if(empty($bugs)) unset($hasViewPriv['bug']);
$this->view->bugs = $bugs;
@@ -755,7 +784,7 @@ class block extends control
{
$this->app->loadLang('testcase');
$this->app->loadLang('testtask');
$cases = $this->dao->select('t1.assignedTo AS assignedTo, t2.*')->from(TABLE_TESTRUN)->alias('t1')
$stmt = $this->dao->select('t1.assignedTo AS assignedTo, t2.*')->from(TABLE_TESTRUN)->alias('t1')
->leftJoin(TABLE_CASE)->alias('t2')->on('t1.case = t2.id')
->leftJoin(TABLE_TESTTASK)->alias('t3')->on('t1.task = t3.id')
->Where('t1.assignedTo')->eq($this->app->user->account)
@@ -763,8 +792,9 @@ class block extends control
->andWhere('t3.status')->ne('done')
->andWhere('t3.deleted')->eq(0)
->andWhere('t2.deleted')->eq(0)
->orderBy('id_desc')
->fetchAll();
->orderBy('id_desc');
if(isset($params->testcaseNum)) $stmt->limit($params->testcaseNum);
$cases = $stmt->fetchAll();
if(empty($cases)) unset($hasViewPriv['case']);
$this->view->cases = $cases;
+13 -5
View File
@@ -33,11 +33,13 @@ $lang->block->assignToMe = 'Assign To Me';
$lang->block->lblFlowchart = 'Workflow';
$lang->block->welcome = 'Welcome';
$lang->block->assignToMeList['todo'] = 'Todo';
$lang->block->assignToMeList['story'] = 'Story';
$lang->block->assignToMeList['task'] = 'Task';
$lang->block->assignToMeList['bug'] = 'Bug';
$lang->block->assignToMeList['case'] = 'Case';
$lang->block->leftToday = 'The rest of the work today';
$lang->block->myTask = 'My Task';
$lang->block->myStory = 'My Story';
$lang->block->myBug = 'My Bug';
$lang->block->myProject = 'My ' . $lang->projectCommon;
$lang->block->myProduct = 'My ' . $lang->productCommon;
$lang->block->delayed = 'Delayed';
$lang->block->params = new stdclass();
$lang->block->params->name = 'Name';
@@ -266,6 +268,12 @@ $lang->block->orderByList->story['status_desc'] = 'Status Descending';
$lang->block->orderByList->story['stage_asc'] = 'Stage Ascending';
$lang->block->orderByList->story['stage_desc'] = 'Stage Descending';
$lang->block->todoNum = 'Todo Number';
$lang->block->storyNum = 'Story Number';
$lang->block->taskNum = 'Task Number';
$lang->block->bugNum = 'Bug Number';
$lang->block->testcaseNum = 'Case Number';
$lang->block->typeList = new stdclass();
$lang->block->typeList->task['assignedTo'] = 'Assigned to Me';
+6
View File
@@ -268,6 +268,12 @@ $lang->block->orderByList->story['status_desc'] = '状态倒序';
$lang->block->orderByList->story['stage_asc'] = '阶段正序';
$lang->block->orderByList->story['stage_desc'] = '阶段倒序';
$lang->block->todoNum = '待办数';
$lang->block->storyNum = '需求数';
$lang->block->taskNum = '任务数';
$lang->block->bugNum = 'Bug数';
$lang->block->testcaseNum = '用例数';
$lang->block->typeList = new stdclass();
$lang->block->typeList->task['assignedTo'] = '指派给我';
+25
View File
@@ -408,6 +408,31 @@ class blockModel extends model
return json_encode($this->onlyNumParams($module, $params));
}
public function getAssignToMeParams()
{
$params->todoNum['name'] = $this->lang->block->todoNum;
$params->todoNum['default'] = 20;
$params->todoNum['control'] = 'input';
$params->storyNum['name'] = $this->lang->block->storyNum;
$params->storyNum['default'] = 20;
$params->storyNum['control'] = 'input';
$params->taskNum['name'] = $this->lang->block->taskNum;
$params->taskNum['default'] = 20;
$params->taskNum['control'] = 'input';
$params->bugNum['name'] = $this->lang->block->bugNum;
$params->bugNum['default'] = 20;
$params->bugNum['control'] = 'input';
$params->testcaseNum['name'] = $this->lang->block->testcaseNum;
$params->testcaseNum['default'] = 20;
$params->testcaseNum['control'] = 'input';
return json_encode($params);
}
/**
* Get closed block pairs.
*
+31 -21
View File
@@ -11,20 +11,30 @@
*/
?>
<div class='panel-body has-table'>
<table class='table table-borderless table-hover table-fixed block-case'>
<style>
.block-cases.block-sm .c-status{text-align:center}
.block-cases.block-sm .c-status .status-text{display:none;}
.case-status-normal {color: #a6aab8;}
.case-status-normal > .label-dot {background-color: #006af1;}
.case-status-blocked { color: #a6aab8; }
.case-status-blocked > .label-dot { background-color: #00da88; }
.case-status-investigate {color: #a6aab8;}
.case-status-investigate > .label-dot {background-color: #006af1;}
</style>
<table class='table table-borderless table-hover table-fixed block-cases <?php if(!$longBlock) echo 'block-sm';?>'>
<thead>
<tr>
<?php if($longBlock):?>
<th width='50'><?php echo $lang->idAB?></th>
<?php endif;?>
<th width='50'><?php echo $lang->priAB?></th>
<th> <?php echo $lang->case->title;?></th>
<?php if($longBlock):?>
<th width='120'> <?php echo $lang->testtask->lastRunTime;?></th>
<th width='60'> <?php echo $lang->testtask->lastRunResult;?></th>
<?php endif;?>
<th width='70'><?php echo $lang->statusAB;?></th>
</tr>
<tr>
<?php if($longBlock):?>
<th class='c-id' width='50'><?php echo $lang->idAB?></th>
<?php endif;?>
<th class='c-pri' width='50'><?php echo $lang->priAB?></th>
<th class='c-title'><?php echo $lang->case->title;?></th>
<?php if($longBlock):?>
<th class='c-runtime' width='120'> <?php echo $lang->testtask->lastRunTime;?></th>
<th class='c-result' width='60'> <?php echo $lang->testtask->lastRunResult;?></th>
<?php endif;?>
<th class='c-status' width='70'><?php echo $lang->statusAB;?></th>
</tr>
</thead>
<?php foreach($cases as $case):?>
<?php
@@ -33,18 +43,18 @@
?>
<tr data-url='<?php echo empty($sso) ? $viewLink : $sso . $sign . 'referer=' . base64_encode($viewLink); ?>' <?php echo $appid?>>
<?php if($longBlock):?>
<td class='text-center'><?php echo $case->id;?></td>
<td class='text-center c-id'><?php echo $case->id;?></td>
<?php endif;?>
<td class='text-center'><?php echo zget($lang->case->priList, $case->pri, $case->pri)?></td>
<td style='color: <?php echo $case->color?>' title='<?php echo $case->title?>'><?php echo $case->title?></td>
<td class='text-center c-pri'><span class='label-pri label-pri-<?php echo $case->pri?>'><?php echo zget($lang->case->priList, $case->pri, $case->pri)?></span></td>
<td class='c-title' style='color: <?php echo $case->color?>' title='<?php echo $case->title?>'><?php echo $case->title?></td>
<?php if($longBlock):?>
<td class='text-center'><?php if(!helper::isZeroDate($case->lastRunDate)) echo date(DT_MONTHTIME1, strtotime($case->lastRunDate));?></td>
<td class='text-center'><?php if($case->lastRunResult) echo $lang->testcase->resultList[$case->lastRunResult];?></td>
<td class='text-center c-runtime'><?php if(!helper::isZeroDate($case->lastRunDate)) echo date(DT_MONTHTIME1, strtotime($case->lastRunDate));?></td>
<td class='text-center c-result'><?php if($case->lastRunResult) echo $lang->testcase->resultList[$case->lastRunResult];?></td>
<?php endif;?>
<td class='text-left' title='<?php echo zget($lang->testcase->statusList, $case->status)?>'>
<span class="project-status-<?php echo $case->status?>">
<td class='text-left c-status' title='<?php echo zget($lang->testcase->statusList, $case->status)?>'>
<span class="case-status-<?php echo $case->status?>">
<span class="label label-dot"></span>
<?php if($longBlock) echo zget($lang->testcase->statusList, $case->status);?>
<span class='status-text'><?php echo zget($lang->testcase->statusList, $case->status);?></span>
</span>
</td>
</tr>
+1 -1
View File
@@ -11,7 +11,7 @@
*/
?>
<?php
if(isset($lang->block->moduleList[$source]))
if(!empty($params))
{
include 'setmodule.html.php';
die();
+11 -8
View File
@@ -102,14 +102,17 @@ $lang->common->common = 'Common Module';
/* 主导航菜单。*/
$lang->menu = new stdclass();
$lang->menu->my = '<i class="icon-home"></i><span>Dashboard</span>|my|index';
$lang->menu->product = $lang->productCommon . '|product|index';
$lang->menu->project = $lang->projectCommon . '|project|index';
$lang->menu->qa = 'QA|qa|index';
$lang->menu->doc = 'Doc|doc|index';
$lang->menu->report = 'Report|report|index';
$lang->menu->company = 'Company|company|index';
$lang->menu->admin = 'Admin|admin|index';
$lang->menu->my = '<span>Dashboard</span>|my|index';
$lang->menu->product = $lang->productCommon . '|product|index';
$lang->menu->project = $lang->projectCommon . '|project|index';
$lang->menu->qa = 'QA|qa|index';
$lang->menu->doc = 'Doc|doc|index';
$lang->menu->report = 'Report|report|index';
$lang->menu->company = 'Company|company|index';
$lang->adminMenu = 'Admin|admin|index';
$lang->dividerMenu = ',qa,';
/* 查询条中可以选择的对象列表。*/
$lang->searchObjects['bug'] = 'Bug';
+1 -1
View File
@@ -102,7 +102,7 @@ $lang->common->common = '公有模块';
/* 主导航菜单。*/
$lang->menu = new stdclass();
$lang->menu->my = '<i class="icon-home"></i><span> 我的地盘</span>|my|index';
$lang->menu->my = '<span> 我的地盘</span>|my|index';
$lang->menu->product = $lang->productCommon . '|product|index';
$lang->menu->project = $lang->projectCommon . '|project|index';
$lang->menu->qa = '测试|qa|index';
+11 -2
View File
@@ -1,5 +1,5 @@
/*!
* ZUI: Zentao template - v1.8.1 - 2018-01-31
* ZUI: Zentao template - v1.8.1 - 2018-02-01
* http://zui.sexy
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2018 cnezsoft.com; Licensed MIT
@@ -7524,6 +7524,15 @@ a .icon-spin {
.timeline > li.active > a {
color: #3c4353;
}
.timeline-tag {
position: absolute;
top: 5px;
left: -115px;
font-size: 12px;
}
.timeline-tag-left {
padding-left: 115px;
}
.timeline-sm {
font-size: 12px;
}
@@ -8178,7 +8187,7 @@ form label {
top: -51px;
right: 0;
left: 0;
z-index: 10;
z-index: 15;
padding: 20px;
visibility: hidden;
background: #fff;