Merge branch 'master' of github.com:easysoft/zentaopms

This commit is contained in:
wangyidong
2018-05-15 15:21:21 +08:00
20 changed files with 378 additions and 281 deletions
+81
View File
@@ -999,6 +999,87 @@ class block extends control
->orderBy($orderBy)
->fetchAll('id');
$testedBuilds = $this->dao->select('build')->from(TABLE_TESTTASK)->where('product')->in(array_keys($products))->fetchPairs();
$builds = $this->dao->select('id, product, name, bugs')->from(TABLE_BUILD)->where('id')->in($testedBuilds)->fetchGroup('product', 'id');
$openedBugs = $this->dao->select('id, openedBuild')->from(TABLE_BUG)->where('openedBuild')->in($testedBuilds)->fetchGroup('openedBuild', 'id');
/* Get bugs. */
$bugIDList = array();
foreach($builds as $product => $productBuilds)
{
foreach($productBuilds as $buildID => $build)
{
$build->bugs = explode(',', trim($build->bugs, ','));
foreach($build->bugs as $bugID) $bugIDList[$bugID] = $bugID;
}
}
foreach($openedBugs as $buildBugs)
{
foreach($buildsBugs as $bugID => $bug) $bugIDList[$bugID] = $bugID;
}
$today = date(DT_DATE1);
$yesterday = date(DT_DATE1, strtotime('yesterday'));
$bugs = $this->loadModel('bug')->getByList($bugIDList);
$confirmedBugs = $this->dao->select('objectID')->from(TABLE_ACTION)
->where('objectType')->eq('bug')
->andWhere('action')->eq('bugconfirmed')
->andWhere('date')->ge($yesterday)
->andWhere('date')->lt($today)
->fetchPairs();
foreach($builds as $product => $productBuilds)
{
foreach($productBuilds as $buildID => $build)
{
$build->total = 0;
$build->assignedToMe = 0;
$build->unresolved = 0;
$build->unconfirmed = 0;
$build->unclosed = 0;
$build->yesterdayResolved = 0;
$build->yesterdayConfirmed = 0;
$build->yesterdayClosed = 0;
$buildOpenedBugs = zget($openedBugs, $buildID, array());
$build->bugs = array_flip(array_merge(array_flip($build->bugs), array_flip(array_keys($buildOpenedBugs))));
foreach($build->bugs as $key => $bugID)
{
if(!isset($bugs[$bugID])) continue;
$bug = $bugs[$bugID];
if($bug->assignedTo = $this->app->user->account) $build->assignToMe++;
if($bug->status != 'closed')
{
$build->unclosed++;
if($bug->status != 'resoloved')
{
$build->unresolved++;
if($bug->status != 'confirmed') $build->unconfirmed++;
}
}
if($bug->resolvedDate >= $yesterday && $bug->resolvedDate < $today) $build->yesterdayResolved++;
if($bug->closedDate >= $yesterday && $bug->closedDate < $today) $build->yesterdayClosed++;
if(isset($confirmedBugs[$bugID])) $yesterdayConfirmed++;
$build->total++;
}
$build->assignedRate = $build->total ? round($build->assignToMe / $build->Total * 100, 2) : 0;
$build->unresolvedRate = $build->total ? round($build->unresolved / $build->total * 100, 2) : 0;
$build->unconfirmedRate = $build->total ? round($build->unconfirmed / $build->total * 100, 2) : 0;
$build->unclosedRate = $build->total ? round($build->unclosed / $build->total * 100, 2) : 0;
}
}
foreach($products as $product) $product->builds = zget($builds, $product->id, array());
$this->view->products = $products;
}
+1 -1
View File
@@ -17,7 +17,7 @@ if(isset($pageCSS)) css::internal($pageCSS);
$useGuest = $this->app->user->account == 'guest';
?>
<?php include '../../common/view/tablesorter.html.php';?>
<div class='dashboard' id='dashboard' data-confirm-remove-block='<?php echo $lang->block->confirmRemoveBlock;?>'>
<div class='dashboard row' id='dashboard' data-confirm-remove-block='<?php echo $lang->block->confirmRemoveBlock;?>'>
<div>
<div class='col-md-8 col-main'>
<?php foreach($longBlocks as $index => $block):?>
+63 -40
View File
@@ -8,7 +8,7 @@
.types-line > li > div > small {display: block; color: #A6AAB8;}
.types-line > li > div > span {display: block; color: #CBD0DB; font-size: 16px;}
.product-info {position: relative; padding: 10px 10px 10px 200px;}
.product-info + .product-info {margin-top: 10px;}
.product-info + .product-info {margin-top: 0;}
.product-info .progress {position: absolute; left: 10px; top: 33px; width: 180px;}
.product-info .progress-info {position: absolute; left: 8px; top: 8px; width: 180px; font-size: 12px;}
.product-info .type-info {color: #A6AAB8; text-align: center;}
@@ -21,99 +21,122 @@
.block-statistic .tile-amount {font-size: 48px; margin-bottom: 10px;}
.block-statistic .col-nav {border-left: 1px solid #EBF2FB; width: 260px; padding-left: 0;}
.block-statistic .nav-secondary > li > a {font-size: 16px; color: #838A9D; position: relative; box-shadow: none; padding-left: 20px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; transition: all .2s;}
.block-statistic .nav-secondary > li.active > a {font-size: 20px; color: #3C4353; background: transparent; box-shadow: none;}
.block-statistic .nav-secondary > li.active > a {color: #3C4353; background: transparent; box-shadow: none;}
.block-statistic .nav-secondary > li.active > a:hover,
.block-statistic .nav-secondary > li.active > a:focus,
.block-statistic .nav-secondary > li > a:hover {box-shadow: none;}
.block-statistic .nav-secondary > li.active > a:before {content: ' '; display: block; left: -1px; top: 10px; bottom: 10px; width: 4px; background: #006af1; position: absolute;}
.block-statistic .nav-stacked {overflow: auto; max-height: 247px;}
.block-statistic .progress-pie .progress-info > strong {font-size: 24px;}
.block-statistic .chosen-single {font-size: 16px; font-weight: bold;}
</style>
<div class="panel-body">
<div class="table-row">
<div class="col tab-content">
<?php foreach($projects as $project):?>
<div class="tab-pane fade<?php if($project == reset($projects)) echo ' active in';?>" id="tab3Content<?php echo $project->id;?>">
<div class="table-row">
<?php $index = 1;?>
<?php foreach($products as $product):?>
<div class="tab-pane fade <?php if($index == 1) echo 'active';?> in" id="tabContent<?php echo $product->id;?>">
<div class="statistic-menu input-group col-sm space">
<?php if($product->builds):?>
<select id='build' name='build' class="form-control chosen">
<?php foreach($product->builds as $build):?>
<option value="<?php echo $build->id;?>"><?php echo $build->name;?></option>
<?php endforeach;?>
</select>
<div class="input-group-cell">
<span class="text-muted small">开发已提交测试申请,<a href="<?php echo $this->createLink('testtask', 'browse', "productID={$product->id}");?>" class="text-primary">现在去测试 <i class="icon icon-right-circle icon-sm"></i></a></span>
</div>
<?php endif;?>
</div>
<?php foreach($product->builds as $build):?>
<div class="table-row" id='bugBox<?php echo $build->id;?>'>
<div class="col-5 text-middle text-center">
<div class="progress-pie inline-block space" data-value="<?php echo $project->progress;?>" data-doughnut-size="84">
<canvas width="120" height="120"></canvas>
<div class="progress-pie inline-block space progress-pie-100" data-value="<?php echo $build->assignedRate;?>" data-doughnut-size="80">
<canvas width="100" height="100" style="width: 100px; height: 100px;"></canvas>
<div class="progress-info">
<small><?php echo $lang->task->statusList['done'];?></small>
<strong><?php echo $project->progress;?><small><?php echo $lang->percent;?></small></strong>
<small>全部Bug</small>
<strong><span class="progress-value"><?php echo $build->total;?></span></strong>
</div>
</div>
<div class="table-row text-center small text-muted with-padding">
<div class="col-4 text-bottom">
<div><?php echo $lang->project->totalEstimate;?></div>
<div><?php echo $project->totalEstimate;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
</div>
<div class="col-4">
<span class="label label-dot label-primary"></span>
<div><?php echo $lang->project->totalConsumed;?></div>
<div><?php echo $project->totalConsumed;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
</div>
<div class="col-4">
<span class="label label-dot label-pale"></span>
<div><?php echo $lang->project->totalLeft;?></div>
<div><?php echo $project->totalLeft;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
</div>
<div class="text-center small with-padding">
<span class="label label-dot label-primary"></span> &nbsp; 指派给我 &nbsp; <strong><?php echo $build->assignedToMe;?></strong>
</div>
</div>
<div class="col-7">
<div class="product-info">
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->task->yesterdayFinished;?></span> <strong><?php echo $project->yesterdayFinished;?></strong></div>
<?php if($build->yesterdayResolved):?>
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted">昨日解决</span> <strong><?php echo $build->yesterdayResolved;?></strong></div>
<?php endif;?>
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $project->taskProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $project->taskProgress;?>%">
</div>
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $build->unresovedRate;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $build->unresovedRate;?>%"></div>
</div>
<div class="type-info">
<div class="type-label">
<span><?php echo $lang->task->allTasks;?></span> <?php echo DS;?> <span><?php echo $lang->task->noFinished;?></span>
<span>未解决</span>
</div>
<div class="type-value">
<small><?php echo $project->totalTasks;?></small> <?php echo DS;?> <strong><?php echo $project->undoneTasks;?></strong>
<strong><?php echo $build->unresolved;?></strong>
</div>
</div>
</div>
<div class="product-info">
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->story->stageList['released'];?></span> <strong><?php echo $project->releasedStories;?></strong></div>
<?php if($build->yesterdayConfirmed):?>
<div class="progress-info"><i class="icon icon-exclamation-sign text-danger icon-sm"></i> <span class="text-muted">昨日确认</span> <strong><?php echo $build->yesterdayConfirmed;?></strong></div>
<?php endif;?>
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $project->storyProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $project->storyProgress;?>%"></div>
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $build->unconfirmedRate;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $build->unconfirmedRate;?>%"></div>
</div>
<div class="type-info">
<div class="type-label">
<span><?php echo $lang->story->total;?></span> <?php echo DS;?> <span><?php echo $lang->story->unclosed;?></span>
<span>未确认</span>
</div>
<div class="type-value">
<small><?php echo $project->totalStories;?></small> <?php echo DS;?> <strong><?php echo $project->unclosedStories;?></strong>
<strong><?php echo $build->unconfirmed;?></strong>
</div>
</div>
</div>
<div class="product-info">
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->bug->yesterdayResolved;?></span> <strong><?php echo $project->yesterdayResolved;?></strong></div>
<?php if($build->yesterdayClosed):?>
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted">昨日关闭</span> <strong><?php echo $build->yesterdayClosed;?></strong></div>
<?php endif;?>
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $project->bugProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $project->bugProgress;?>%">
</div>
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $build->unclosedRate;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $build->unclosedRate;?>%"></div>
</div>
<div class="type-info">
<div class="type-label">
<span><?php echo $lang->bug->allBugs;?></span> <?php echo DS;?> <span><?php echo $lang->bug->unResolved;?></span>
<span>未关闭</span>
</div>
<div class="type-value">
<small><?php echo $project->totalBugs;?></small> <?php echo DS;?> <strong><?php echo $project->activeBugs;?></strong>
<strong><?php echo $build->unclosed;?></strong>
</div>
</div>
</div>
</div>
</div>
<?php endforeach;?>
</div>
<?php $index++;?>
<?php endforeach;?>
</div>
<div class="col col-nav">
<ul class="nav nav-stacked nav-secondary">
<?php foreach($projects as $project):?>
<li <?php if($project == reset($projects)) echo "class='active'";?>><a href="###" data-target="#tab3Content<?php echo $project->id;?>" data-toggle="tab"><?php echo $project->name;?></a></li>
<?php $index = 1;?>
<?php foreach($products as $product):?>
<li class="<?php if($index == 1) echo 'active';?>"><a href="###" data-target="#tabContent<?php echo $product->id;?>" data-toggle="tab"><?php echo $product->name;?></a></li>
<?php $index++;?>
<?php endforeach;?>
</ul>
</div>
</div>
</div>
<script>
$(function()
{
$('#build').change(function()
{
$(this).parents('.tab-pane').find('.table-row').addClass('hidden');
$('#bugBox' + $(this).val()) .removeClass('hidden');
});
$('#build').change();
})
</script>
+13 -10
View File
@@ -57,16 +57,19 @@ tbody tr td:first-child input{display:none;}
</div>
<?php echo $this->fetch('file', 'printFiles', array('files' => $build->files, 'fieldset' => 'true'));?>
<?php include '../../common/view/action.html.php';?>
<div class='actions'>
<?php
$browseLink = $this->session->buildList ? $this->session->buildList : $this->createLink('product', 'build', "productID=$build->product");
if(!$build->deleted)
{
common::printIcon('build', 'edit', "buildID=$build->id", $build);
common::printIcon('build', 'delete', "buildID=$build->id", $build, 'button', '', 'hiddenwin');
}
echo common::printRPN($browseLink);
?>
<div id="mainActions">
<nav class="container"></nav>
<div class="btn-toolbar">
<?php
common::printBack($browseLink);
if(!$build->deleted)
{
echo "<div class='divider'></div>";
common::printIcon('build', 'edit', "buildID=$build->id", $build);
common::printIcon('build', 'delete', "buildID=$build->id", $build, 'button', '', 'hiddenwin');
}
?>
</div>
</div>
<?php else:?>
<div class='tabs'>
+40 -39
View File
@@ -17,6 +17,7 @@ $lang->at = ' on ';
$lang->downArrow = '↓';
$lang->null = 'null';
$lang->ellipsis = '…';
$lang->percent = '%';
$lang->zentaoPMS = 'ZenTao';
$lang->welcome = "%s PMS";
@@ -53,6 +54,7 @@ $lang->public = 'Public';
$lang->trunk = 'Trunk';
$lang->sort = 'Order';
$lang->required = 'Required';
$lang->noData = 'No record';
$lang->actions = 'Actions';
$lang->comment = 'Note';
@@ -60,6 +62,10 @@ $lang->history = 'History';
$lang->attatch = 'Attachment';
$lang->reverse = 'Reverse';
$lang->switchDisplay = 'Toggle';
$lang->expand = 'Expand All';
$lang->collapse = 'Collapse';
$lang->saveSuccess = 'Save success';
$lang->fail = 'Fail';
$lang->addFiles = 'Add';
$lang->files = 'File ';
$lang->pasteText = 'Paste';
@@ -75,6 +81,7 @@ $lang->tutorial = 'Tutorial';
$lang->changeLog = 'Change Log';
$lang->manual = 'Manual';
$lang->customMenu = 'Custom Menu';
$lang->customField = 'Custom Field';
$lang->lineNumber = 'Line No.';
$lang->tutorialConfirm = 'You are using tutorial. Do you want to exit right now';
@@ -192,20 +199,16 @@ $lang->score->menu = $lang->my->menu;
$lang->product = new stdclass();
$lang->product->menu = new stdclass();
$lang->product->menu->list = array('link' => '%s', 'fixed' => true);
$lang->product->menu->story = array('link' => 'Story|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->menu->dynamic = 'Dynamic|product|dynamic|productID=%s';
$lang->product->menu->plan = array('link' => 'Plan|productplan|browse|productID=%s', 'subModule' => 'productplan');
$lang->product->menu->release = array('link' => 'Release|release|browse|productID=%s', 'subModule' => 'release');
$lang->product->menu->roadmap = 'Roadmap|product|roadmap|productID=%s';
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
$lang->product->menu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
$lang->product->menu->dynamic = 'Dynamic|product|dynamic|productID=%s';
$lang->product->menu->roadmap = 'Roadmap|product|roadmap|productID=%s';
$lang->product->menu->branch = '@branch@|branch|manage|productID=%s';
$lang->product->menu->module = 'Module|tree|browse|productID=%s&view=story';
$lang->product->menu->view = array('link' => 'Overview|product|view|productID=%s', 'alias' => 'edit');
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
$lang->product->menu->create = array('link' => "<i class='icon-plus'></i>&nbsp;Add{$lang->productCommon}|product|create", 'float' => 'right');
$lang->product->menu->all = array('link' => "<i class='icon-cubes'></i>&nbsp;All{$lang->productCommon}|product|all|productID=%s", 'float' => 'right');
$lang->product->menu->index = array('link' => "<i class='icon-home'></i>{$lang->productCommon}|product|index|locate=no", 'float' => 'right');
$lang->story = new stdclass();
$lang->productplan = new stdclass();
@@ -221,20 +224,32 @@ $lang->release->menu = $lang->product->menu;
$lang->project = new stdclass();
$lang->project->menu = new stdclass();
$lang->project->menu->list = array('link' => '%s', 'fixed' => true);
$lang->project->menu->task = array('link' => 'Task|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,burn,importbug,kanban,printkanban,tree');
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
$lang->project->menu->dynamic = 'Dynamic|project|dynamic|projectID=%s';
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
$lang->project->menu->testtask = array('link' => 'Test Task|project|testtask|projectID=%s');
$lang->project->menu->team = array('link' => 'Team|project|team|projectID=%s', 'alias' => 'managemembers');
$lang->project->menu->doc = array('link' => 'Doc|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
$lang->project->menu->view = array('link' => 'Overview|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close');
$lang->project->menu->create = array('link' => "<i class='icon-plus'></i>&nbsp;Add {$lang->projectCommon}|project|create", 'float' => 'right');
$lang->project->menu->all = array('link' => "<i class='icon-th-large'></i>&nbsp;All {$lang->projectCommon}|project|all|status=undone&projectID=%s", 'float' => 'right');
$lang->project->menu->index = array('link' => "<i class='icon-home'></i>{$lang->projectCommon}|project|index|locate=no", 'float' => 'right');
$lang->project->menu->list = array('link' => '%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,importbug,tree');
$lang->project->menu->kanban = array('link' => 'Kanban|project|kanban|projectID=%s');
$lang->project->menu->burn = array('link' => 'Burn|project|burn|projectID=%s');
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
$lang->project->menu->qa = array('link' => '%s', 'subModule' => 'build');
$lang->project->menu->doc = array('link' => 'Doc|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
$lang->project->menu->action = array('link' => '%s');
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
$lang->project->menu->team = array('link' => 'Team|project|team|projectID=%s', 'alias' => 'managemembers');
$lang->project->menu->view = array('link' => 'Overview|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close');
$lang->project->subMenu = new stdclass();
$lang->project->subMenu->list = new stdclass();
$lang->project->subMenu->list->task = 'Task List|project|task|projectID=%s';
$lang->project->subMenu->list->groupTask = 'Group View|project|groupTask|projectID=%s';
$lang->project->subMenu->list->tree = 'Tree View|project|tree|projectID=%s';
$lang->project->subMenu->qa = new stdclass();
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
$lang->project->subMenu->qa->build = 'Build|project|build|projectID=%s';
$lang->project->subMenu->qa->testtask = array('link' => 'Test Task|project|testtask|projectID=%s', 'subModule' => 'testreport');
$lang->project->subMenu->action = new stdclass();
$lang->project->subMenu->action->dynamic = 'Dynamic|project|dynamic|projectID=%s';
$lang->project->dividerMenu = ',story,doc,';
$lang->task = new stdclass();
$lang->build = new stdclass();
@@ -245,26 +260,22 @@ $lang->build->menu = $lang->project->menu;
$lang->qa = new stdclass();
$lang->qa->menu = new stdclass();
$lang->qa->menu->product = array('link' => '%s', 'fixed' => true);
$lang->qa->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
$lang->qa->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
$lang->qa->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s');
$lang->qa->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s');
$lang->qa->menu->report = array('link' => 'Report|testreport|browse|productID=%s');
$lang->qa->menu->caselib = array('link' => 'Library|testsuite|library');
$lang->qa->menu->index = array('link' => "<i class='icon-home'></i>QA|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->bug = new stdclass();
$lang->bug->menu = new stdclass();
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,batchactivate,confirmbug,assignto', 'subModule' => 'tree');
$lang->bug->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
$lang->bug->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s');
$lang->bug->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s');
$lang->bug->menu->report = array('link' => 'Report|testreport|browse|productID=%s');
$lang->bug->menu->caselib = array('link' => 'Library|testsuite|library');
$lang->bug->menu->index = array('link' => "<i class='icon-home'></i>QA|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->testcase = new stdclass();
$lang->testcase->menu = new stdclass();
@@ -304,7 +315,6 @@ $lang->testreport->menu->caselib = array('link' => 'Library|testsuite|library'
$lang->caselib = new stdclass();
$lang->caselib->menu = new stdclass();
$lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true);
$lang->caselib->menu->bug = array('link' => 'Bug|bug|browse|');
$lang->caselib->menu->testcase = array('link' => 'Case|testcase|browse|');
$lang->caselib->menu->testtask = array('link' => 'Build|testtask|browse|');
@@ -315,10 +325,7 @@ $lang->caselib->menu->caselib = array('link' => 'Library|testsuite|library', '
/* 文档视图菜单设置。*/
$lang->doc = new stdclass();
$lang->doc->menu = new stdclass();
$lang->doc->menu->list = array('link' => '%s', 'fixed' => true);
$lang->doc->menu->crumb = array('link' => '%s', 'fixed' => true);
$lang->doc->menu->create = array('link' => '<i class="icon-plus"></i>&nbsp;Add Doc Lib|doc|createLib', 'float' => 'right');
//$lang->doc->menu->createLib = array('link' => '<i class="icon icon-folder-plus"></i>&nbsp;Add Doc Lib|doc|createLib', 'float' => 'right');
/* 统计视图菜单设置。*/
$lang->report = new stdclass();
@@ -702,7 +709,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of bug module. */
$lang->bug->menu = new stdclass();
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->unclosed = 'Open|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all&param=%s';
$lang->bug->menu->assigntome = 'Assigned To Me|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
@@ -732,10 +738,9 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of testcase. */
$lang->testcase->menu = new stdclass();
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = 'All|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = 'Wait|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = 'All|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = 'Wait|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = array('link' => '%s', 'fixed' => true);
$lang->testcase->menuOrder[5] = 'product';
$lang->testcase->menuOrder[10] = 'all';
@@ -744,7 +749,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of bug module. */
$lang->testsuite->menu = new stdclass();
$lang->testsuite->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> Create Suite|testsuite|create|productID=%s", 'float' => 'right');
$lang->testsuite->menuOrder[5] = 'product';
@@ -752,8 +756,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of testtask. */
$lang->testtask->menu = new stdclass();
$lang->testtask->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->scope = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->wait = 'Wait|testtask|browse|productID=%s&branch=%s&type=%s,wait';
$lang->testtask->menu->doing = 'Doing|testtask|browse|productID=%s&branch=%s&type=%s,doing';
$lang->testtask->menu->blocked = 'Blocked|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
@@ -777,7 +779,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of caselib module. */
$lang->caselib->menu = new stdclass();
$lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true);
$lang->caselib->menu->all = 'All|testsuite|library|libID=%s&browseType=all';
$lang->caselib->menu->wait = 'Wait|testsuite|library|libID=%s&browseType=wait';
$lang->caselib->menu->view = 'View|testsuite|libview|libID=%s';
+5 -11
View File
@@ -253,8 +253,8 @@ $lang->project->dividerMenu = ',story,doc,';
$lang->task = new stdclass();
$lang->build = new stdclass();
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
/* QA视图菜单设置。*/
$lang->qa = new stdclass();
@@ -709,7 +709,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of bug module. */
$lang->bug->menu = new stdclass();
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->unclosed = '未关闭|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all&param=%s';
$lang->bug->menu->assigntome = '指派给我|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
@@ -739,10 +738,9 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of testcase. */
$lang->testcase->menu = new stdclass();
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = '所有|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = '待评审|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = '所有|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = '待评审|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = array('link' => '%s', 'fixed' => true);
$lang->testcase->menuOrder[5] = 'product';
$lang->testcase->menuOrder[10] = 'all';
@@ -751,7 +749,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of bug module. */
$lang->testsuite->menu = new stdclass();
$lang->testsuite->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> 建套件|testsuite|create|productID=%s", 'float' => 'right');
$lang->testsuite->menuOrder[5] = 'product';
@@ -759,8 +756,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of testtask. */
$lang->testtask->menu = new stdclass();
$lang->testtask->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->scope = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->wait = '待测版本|testtask|browse|productID=%s&branch=%s&type=%s,wait';
$lang->testtask->menu->doing = '测试中版本|testtask|browse|productID=%s&branch=%s&type=%s,doing';
$lang->testtask->menu->blocked = '被阻塞版本|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
@@ -784,7 +779,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of caselib module. */
$lang->caselib->menu = new stdclass();
$lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true);
$lang->caselib->menu->all = '所有|testsuite|library|libID=%s&browseType=all';
$lang->caselib->menu->wait = '待评审|testsuite|library|libID=%s&browseType=wait';
$lang->caselib->menu->view = '概况|testsuite|libview|libID=%s';
+5 -11
View File
@@ -253,8 +253,8 @@ $lang->project->dividerMenu = ',story,doc,';
$lang->task = new stdclass();
$lang->build = new stdclass();
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
$lang->task->menu = $lang->project->menu;
$lang->build->menu = $lang->project->menu;
/* QA視圖菜單設置。*/
$lang->qa = new stdclass();
@@ -709,7 +709,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of bug module. */
$lang->bug->menu = new stdclass();
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->unclosed = '未關閉|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all&param=%s';
$lang->bug->menu->assigntome = '指派給我|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
@@ -739,10 +738,9 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of testcase. */
$lang->testcase->menu = new stdclass();
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = '所有|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = '待評審|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = '所有|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = '待評審|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = array('link' => '%s', 'fixed' => true);
$lang->testcase->menuOrder[5] = 'product';
$lang->testcase->menuOrder[10] = 'all';
@@ -751,7 +749,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of bug module. */
$lang->testsuite->menu = new stdclass();
$lang->testsuite->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> 建套件|testsuite|create|productID=%s", 'float' => 'right');
$lang->testsuite->menuOrder[5] = 'product';
@@ -759,8 +756,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of testtask. */
$lang->testtask->menu = new stdclass();
$lang->testtask->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->scope = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->wait = '待測版本|testtask|browse|productID=%s&branch=%s&type=%s,wait';
$lang->testtask->menu->doing = '測試中版本|testtask|browse|productID=%s&branch=%s&type=%s,doing';
$lang->testtask->menu->blocked = '被阻塞版本|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
@@ -784,7 +779,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of caselib module. */
$lang->caselib->menu = new stdclass();
$lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true);
$lang->caselib->menu->all = '所有|testsuite|library|libID=%s&browseType=all';
$lang->caselib->menu->wait = '待評審|testsuite|library|libID=%s&browseType=wait';
$lang->caselib->menu->view = '概況|testsuite|libview|libID=%s';
+2 -2
View File
@@ -245,8 +245,8 @@ class commonModel extends model
if(!$isGuest)
{
echo '<li class="user-profile-item">';
echo '<a href="###">';
echo "<div class='avatar avatar-sm bg-info avatar-circle'>" . strtoupper($app->user->account{0}) . "</div>\n";
echo "<a href='". helper::createLink('my', 'profile', '', '', true) . "' class='iframe" . (!empty($app->user->role) && isset($lang->user->roleList[$app->user->role]) ? '' : ' no-role') . "'>";
echo "<div class='avatar avatar bg-info avatar-circle'>" . strtoupper($app->user->account{0}) . "</div>\n";
echo '<div class="user-profile-name">' . (empty($app->user->realname) ? $app->user->account : $app->user->realname) . '</div>';
if(isset($lang->user->roleList[$app->user->role])) echo '<div class="user-profile-role">' . $lang->user->roleList[$app->user->role] . '</div>';
echo '</a></li><li class="divider"></li>';
+3 -1
View File
@@ -1,4 +1,6 @@
.branch-list {padding-left: 0; margin: 0;}
.branch-list > li {float: left; list-style: none; width: 50%; margin: 5px 0;}
.data-basic.table-data tbody > tr > th {width: 80px;}
.block-release .panel-body, .block-dynamic .panel-body {height: 240px; overflow: auto;}
.block-release .panel-body, .block-dynamic .panel-body {height: 240px; overflow: auto; position: relative;}
.block-release .panel-body {padding-bottom: 50px;}
.block-release .panel-body > .btn.pull-right {position: absolute; right: 20px; bottom: 20px;}
+1
View File
@@ -73,6 +73,7 @@ $lang->product->branch = '%s';
$lang->product->qa = 'QA';
$lang->product->release = 'Release';
$lang->product->latestDynamic = 'Dynamic';
$lang->product->plan = 'Plan';
$lang->product->iteration = 'Iteration';
$lang->product->iterationInfo = '%s Iterations';
$lang->product->iterationView = 'Details';
+1
View File
@@ -73,6 +73,7 @@ $lang->product->branch = '所属%s';
$lang->product->qa = '测试';
$lang->product->release = '发布';
$lang->product->latestDynamic = '最新动态';
$lang->product->plan = '计划';
$lang->product->iteration = '版本迭代';
$lang->product->iterationInfo = '迭代 %s 次';
$lang->product->iterationView = '查看详情';
+43 -41
View File
@@ -11,47 +11,49 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/tablesorter.html.php';?>
<?php js::set('confirmDelete', $lang->build->confirmDelete)?>
<div id='titlebar'>
<div class='heading'><?php echo html::icon($lang->icons['build']);?> <?php echo $lang->product->build;?></div>
<div class='actions'><?php common::printIcon('build', 'create', "product=$product->id");?></div>
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'>
<a class='btn btn-link btn-active-text'><span class='text'><?php echo $lang->product->build;?></span><span class='label label-light label-badge'><?php echo count($builds);?></span></a>
</div>
<div class='btn-toolbar pull-right'><?php common::printLink('build', 'create', "product=$product->id", "<i class='icon icon-plus'> </i>" . $lang->build->create, '', "class='btn btn-primary'");?></div>
</div>
<div id='mainContent' class='main-table'>
<table class='table' id='buildList'>
<thead>
<tr class='text-center'>
<th class='w-id'><?php echo $lang->build->id;?></th>
<th><?php echo $lang->build->name;?></th>
<th><?php echo $lang->build->scmPath;?></th>
<th><?php echo $lang->build->filePath;?></th>
<th class='c-date'><?php echo $lang->build->date;?></th>
<th class='c-user'><?php echo $lang->build->builder;?></th>
<th class='w-130px'><?php echo $lang->actions;?></th>
</tr>
</thead>
<tbody>
<?php foreach($builds as $build):?>
<tr class='text-center'>
<td><?php echo $build->id;?></td>
<td class='text-left'><?php echo html::a($this->createLink('build', 'view', "build=$build->id"), $build->name);?></td>
<td class='text-left' title="<?php echo $build->scmPath?>"><?php echo strpos($build->scmPath, 'http') === 0 ? html::a($build->scmPath) : $build->scmPath;?></td>
<td class='text-left' title="<?php echo $build->filePath?>"><?php echo strpos($build->filePath, 'http') === 0 ? html::a($build->filePath) : $build->filePath;?></td>
<td><?php echo $build->date?></td>
<td><?php echo $users[$build->builder]?></td>
<td class='c-actions'>
<?php
common::printIcon('testtask', 'create', "product=$product->id&project=0&build=$build->id", '', 'list', 'bullhorn');
common::printIcon('build', 'edit', "buildID=$build->id", '', 'list');
if(common::hasPriv('build', 'delete'))
{
$deleteURL = $this->createLink('build', 'delete', "buildID=$build->id&confirm=yes");
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"buildList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn' title='{$lang->build->delete}'");
}
?>
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
<table class='table tablesorter table-fixed' id='buildList'>
<thead>
<tr class='colhead'>
<th class='w-id'><?php echo $lang->build->id;?></th>
<th><?php echo $lang->build->name;?></th>
<th><?php echo $lang->build->scmPath;?></th>
<th><?php echo $lang->build->filePath;?></th>
<th class='w-date'><?php echo $lang->build->date;?></th>
<th class='w-user'><?php echo $lang->build->builder;?></th>
<th class='w-90px'><?php echo $lang->actions;?></th>
</tr>
</thead>
<tbody>
<?php foreach($builds as $build):?>
<tr class='text-center'>
<td><?php echo $build->id;?></td>
<td class='text-left'><?php echo html::a($this->createLink('build', 'view', "build=$build->id"), $build->name);?></td>
<td class='text-left' title="<?php echo $build->scmPath?>"><?php echo strpos($build->scmPath, 'http') === 0 ? html::a($build->scmPath) : $build->scmPath;?></td>
<td class='text-left' title="<?php echo $build->filePath?>"><?php echo strpos($build->filePath, 'http') === 0 ? html::a($build->filePath) : $build->filePath;?></td>
<td><?php echo $build->date?></td>
<td><?php echo $users[$build->builder]?></td>
<td class='text-right'>
<?php
common::printIcon('testtask', 'create', "product=$product->id&project=0&build=$build->id", '', 'list', 'check');
common::printIcon('build', 'edit', "buildID=$build->id", '', 'list');
if(common::hasPriv('build', 'delete'))
{
$deleteURL = $this->createLink('build', 'delete', "buildID=$build->id&confirm=yes");
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"buildList\",confirmDelete)", '<i class="icon-remove"></i>', '', "class='btn-icon' title='{$lang->build->delete}'");
}
?>
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
<?php include '../../common/view/footer.html.php';?>
+1 -1
View File
@@ -17,7 +17,7 @@
<div class="col-sm-6">
<div class="panel block-release">
<div class="panel-heading">
<div class="panel-title"><?php echo $lang->product->iteration;?> <span class="label label-badge label-light"><?php printf($lang->product->iterationInfo, count($releases));?></span></div>
<div class="panel-title"><?php echo $lang->product->plan;?> <span class="label label-badge label-light"><?php printf($lang->product->iterationInfo, count($releases));?></span></div>
</div>
<div class="panel-body">
<div class="release-path">
+18 -18
View File
@@ -101,26 +101,26 @@
</td>
</tr>
<?php if(strpos(",$showFields,", ',pri,') !== false):?>
<?php
$hasCustomPri = false;
foreach($lang->story->priList as $priKey => $priValue)
{
if(!empty($priKey) and (string)$priKey != (string)$priValue)
{
$hasCustomPri = true;
break;
}
}
$priList = $lang->story->priList;
if(end($priList))
{
unset($priList[0]);
$priList[0] = '';
}
?>
<tr>
<th><?php echo $lang->story->pri;?></th>
<td colspan="4">
<?php
$hasCustomPri = false;
foreach($lang->story->priList as $priKey => $priValue)
{
if(!empty($priKey) and (string)$priKey != (string)$priValue)
{
$hasCustomPri = true;
break;
}
}
$priList = $lang->story->priList;
if(end($priList))
{
unset($priList[0]);
$priList[0] = '';
}
?>
<td colspan="<?php echo $hasCustomPri ? 1 : 4;?>">
<?php if($hasCustomPri):?>
<?php echo html::select('pri', (array)$priList, $pri, "class='form-control chosen'");?>
<?php else: ?>
+1 -3
View File
@@ -1,3 +1 @@
#caseList tbody tr > td:first-child {padding-left: 10px;}
.table > caption {border-bottom: 1px solid #ddd}
.table > thead > tr > td {border-top: none}
.main-content .main-col .cell, .main-content .side-col .cell{border: 1px solid #f1f1f1;}
+1 -1
View File
@@ -92,7 +92,7 @@ $status = $this->session->testTaskVersionStatus;
}
common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'list', 'sitemap');
common::printIcon('testtask', 'view', "taskID=$task->id", '', 'list', 'file','','iframe',true);
common::printIcon('testtask', 'view', "taskID=$task->id", '', 'list', 'file','','iframe',true, 'data-width=800px');
common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link');
common::printIcon('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id", $task, 'list','flag');
common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list','','','iframe',true);
+1
View File
@@ -39,6 +39,7 @@
if(!$useDatatable) include '../../common/view/tablesorter.html.php';
$this->config->testcase->datatable->defaultField = $this->config->testtask->datatable->defaultField;
$this->config->testcase->datatable->fieldList['actions']['width'] = '90';
$setting = $this->datatable->getSetting('testtask');
$widths = $this->datatable->setFixedFieldWidth($setting);
+94 -98
View File
@@ -12,106 +12,102 @@
?>
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/kindeditor.html.php';?>
<div id='titlebar'>
<div class='heading'>
<span class='prefix' title='TESTTASK'><?php echo html::icon($lang->icons['testtask']);?> <strong><?php echo $task->id;?></strong></span>
<strong><?php echo $task->name;?></strong>
<?php if($task->deleted):?>
<span class='label label-danger'><?php echo $lang->task->deleted;?></span>
<?php endif; ?>
</div>
<div class='actions'>
<?php
$browseLink = $this->session->testtaskList ? $this->session->testtaskList : $this->createLink('testtask', 'browse', "productID=$task->product");
$actionLinks = '';
if(!$task->deleted)
{
ob_start();
echo "<div class='btn-group'>";
common::printIcon('testtask', 'start', "taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('testtask', 'close', "taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('testtask', 'block', "taskID=$task->id", $task, 'button', 'pause', '', 'iframe', true);
common::printIcon('testtask', 'activate', "taskID=$task->id", $task, 'button', 'magic', '', 'iframe', true);
common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'button', 'sitemap');
common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'button', 'link');
echo '</div>';
echo "<div class='btn-group'>";
common::printIcon('testtask', 'edit', "taskID=$task->id", $task);
common::printIcon('testtask', 'delete', "taskID=$task->id", $task, 'button', '', 'hiddenwin');
echo '</div>';
echo "<div class='btn-group'>";
common::printRPN($browseLink);
echo '</div>';
$actionLinks = ob_get_contents();
ob_end_clean();
echo $actionLinks;
}
?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
<span class='label label-id'><?php echo $task->id;?></span>
<?php echo $task->name;?>
<?php if($task->deleted):?>
<span class='label label-danger'><?php echo $lang->task->deleted;?></span>
<?php endif; ?>
</div>
<div class="main-row">
<div class="col-8 main-col">
<div class="cell">
<div class="detail">
<div class="detail-title"><?php echo $lang->testtask->desc;?></div>
<div class="detail-content article-content"><?php echo !empty($task->desc) ? $task->desc : "<div class='text-center'>" . $lang->noData . '</div>';?></div>
</div>
<?php if($task->report):?>
<div class="detail">
<div class="detail-title"><?php echo $lang->testtask->report;?></div>
<div class="detail-content article-content"><?php echo $task->report;?></div>
</div>
<?php endif;?>
<?php $actionFormLink = $this->createLink('action', 'comment', "objectType=testtask&objectID=$task->id");?>
<?php include '../../common/view/action.html.php';?>
</div>
</div>
<div class="col-4 side-col">
<div class="cell">
<details class="detail" open>
<summary class="detail-title"><?php echo $lang->testtask->legendBasicInfo;?></summary>
<div class="detail-content">
<table class="table table-data">
<?php if($this->config->global->flow != 'onlyTest'):?>
<tr>
<th class='w-80px'><?php echo $lang->testtask->project;?></th>
<td><?php echo html::a($this->createLink('project', 'story', "projectID=$task->project"), $task->projectName);?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->testtask->build;?></th>
<td><?php $task->build == 'trunk' ? print($lang->trunk) : print(html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName));?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->owner;?></th>
<td><?php echo zget($users, $task->owner);?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->mailto;?></th>
<td><?php $mailto = explode(',', str_replace(' ', '', $task->mailto)); foreach($mailto as $account) echo ' ' . zget($users, $account, $account);?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->pri;?></th>
<td><?php echo $task->pri;?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->begin;?></th>
<td><?php echo $task->begin;?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->end;?></th>
<td><?php echo $task->end;?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->status;?></th>
<td class='task-<?php echo $task->status?>'><?php echo $lang->testtask->statusList[$task->status];?></td>
</tr>
</table>
</div>
</details>
</div>
</div>
</div>
</div>
</div>
<div class='row-table'>
<div class='col-main'>
<div class='main'>
<fieldset>
<legend><?php echo $lang->testtask->legendDesc;?></legend>
<div class='article-content'><?php echo $task->desc;?></div>
</fieldset>
<?php if($task->report):?>
<fieldset>
<legend><?php echo $lang->testtask->legendReport;?></legend>
<div class='article-content'><?php echo $task->report;?></div>
</fieldset>
<?php endif;?>
<?php include '../../common/view/action.html.php';?>
<div class='actions'><?php echo $actionLinks;?></div>
</div>
</div>
<div class='col-side'>
<div class='main main-side'>
<fieldset>
<legend><?php echo $lang->testtask->legendBasicInfo;?></legend>
<table class='table table-data table-condensed table-borderless table-fixed'>
<?php if($this->config->global->flow != 'onlyTest'):?>
<tr>
<th class='w-60px'><?php echo $lang->testtask->project;?></th>
<td><?php echo html::a($this->createLink('project', 'story', "projectID=$task->project"), $task->projectName);?></td>
</tr>
<?php endif;?>
<tr>
<th class='w-60px'><?php echo $lang->testtask->build;?></th>
<td><?php $task->build == 'trunk' ? print($lang->trunk) : print(html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName));?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->owner;?></th>
<td><?php echo $users[$task->owner];?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->mailto;?></th>
<td><?php $mailto = explode(',', str_replace(' ', '', $task->mailto)); foreach($mailto as $account) echo ' ' . zget($users, $account, $account);?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->pri;?></th>
<td><?php echo $task->pri;?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->begin;?></th>
<td><?php echo $task->begin;?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->end;?></th>
<td><?php echo $task->end;?></td>
</tr>
<tr>
<th><?php echo $lang->testtask->status;?></th>
<td class='task-<?php echo $task->status?>'><?php echo $lang->testtask->statusList[$task->status];?></td>
</tr>
</table>
</fieldset>
</div>
<div class='mainActions'>
<?php $browseLink = $this->session->testtaskList ? $this->session->testtaskList : $this->createLink('testtask', 'browse', "productID=$task->product");?>
<?php common::printRPN($browseLink);?>
<div class="btn-toolbar">
<?php common::printBack($browseLink);?>
<?php if(!$task->deleted):?>
<div class='divider'></div>
<?php
common::printIcon('testtask', 'start', "taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('testtask', 'close', "taskID=$task->id", $task, 'button', '', '', 'iframe', true);
common::printIcon('testtask', 'block', "taskID=$task->id", $task, 'button', 'pause', '', 'iframe', true);
common::printIcon('testtask', 'activate', "taskID=$task->id", $task, 'button', 'magic', '', 'iframe', true);
common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'button', 'sitemap');
common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'button', 'link');
?>
<div class='divider'></div>
<?php
common::printIcon('testtask', 'edit', "taskID=$task->id", $task);
common::printIcon('testtask', 'delete', "taskID=$task->id", $task, 'button', '', 'hiddenwin');
?>
<?php endif;?>
</div>
</div>
<?php include '../../common/view/footer.html.php';?>
+3 -3
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long