Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
@@ -1,18 +1,2 @@
|
||||
.cards {margin: 5% auto;}
|
||||
.cards > .col-sm-6 {width: 25%; padding: 0 10px}
|
||||
.card {height: 250px; position: relative; padding-top: 50px; border-radius: 0; margin: 0}
|
||||
.card > .media {position: absolute; left: 0; top: 0; width: 100%; background: #f1f1f1; height:50px; bottom: 0; overflow: hidden; z-index: 90; transition: all 0.4s;}
|
||||
.card > .media > .icon {position: absolute; display: block; font-size: 56px; color: #ddd; z-index: 99; bottom: -10px; right: -6px; transition: all 0.4s;}
|
||||
.card > .media > h5 {position: absolute; display: block; color: #666; z-index: 100; font-size: 14px; left: 15px; top: 10px; transition: all 0.4s;}
|
||||
.card:hover > .media {background: #F8FAFE}
|
||||
.card:hover > .media > .icon {color: #ccc}
|
||||
.card .card-content {padding: 20px; border:1px solid #f1f1f1;}
|
||||
.card-content > ul {padding-left: 20px;}
|
||||
.card-content > ul > li {margin-bottom: 5px;}
|
||||
.card a, .card:hover a {color: #444}
|
||||
.card a:hover {color: #000;}
|
||||
|
||||
#notice {margin: -20px -20px 20px}
|
||||
#titlebar {margin-top: -20px; border-top: none}
|
||||
#notice + #titlebar {margin-top: 0; border-top: 1px solid #e5e5e5}
|
||||
#proversion, #zentaotrain{color:#D2322D}
|
||||
#notice {margin: -20px -20px 20px; padding: 20px;}
|
||||
#zentaoLinks {margin-top: 20px;}
|
||||
@@ -14,21 +14,19 @@
|
||||
<div id='mainContent' class='main-content'>
|
||||
<?php if(!$bind and !$ignore and common::hasPriv('admin', 'register')):?>
|
||||
<div id="notice" class='alert alert-success'>
|
||||
<?php echo html::a(inlink('ignore'), '<i class="icon-trash"></i> ' . $lang->admin->notice->ignore, 'hiddenwin', 'class="close" data-dismiss="alert" style="font-size: 12px"');?>
|
||||
<?php echo html::a(inlink('ignore'), '<i class="icon-close icon-sm"></i> ' . $lang->admin->notice->ignore, 'hiddenwin', 'class="close" data-dismiss="alert" style="font-size: 12px"');?>
|
||||
<div class="content"><i class='icon-info-sign'></i> <?php echo sprintf($lang->admin->notice->register, html::a(inlink('register'), $lang->admin->register->click, '', 'class="alert-link"'));?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
<div class='main-header'>
|
||||
<div class='heading'>
|
||||
<strong>
|
||||
<?php
|
||||
printf($lang->admin->info->version, $config->version);
|
||||
if($bind) echo sprintf($lang->admin->info->account, '<span class="red">' . $account . '</span>');
|
||||
echo $lang->admin->info->links;
|
||||
?>
|
||||
</strong>
|
||||
</div>
|
||||
<h2>
|
||||
<?php
|
||||
printf($lang->admin->info->version, $config->version);
|
||||
if($bind) echo sprintf($lang->admin->info->account, '<span class="red">' . $account . '</span>');
|
||||
echo $lang->admin->info->links;
|
||||
?>
|
||||
</h2>
|
||||
</div>
|
||||
<?php include '../../misc/view/links.html.php';?>
|
||||
</div>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,3 +1,9 @@
|
||||
.ke-toolbar .ke-outline[data-name='savetemplate'] {display: none}
|
||||
#modulemenu .nav #dropMenu #searchResult .closed{text-decoration:none;}
|
||||
.nav #moreMenus{cursor: pointer;}
|
||||
|
||||
#batchCreateForm .input-group, #batchEditForm .input-group,
|
||||
#batchCreateForm .input-group .form-control, #batchEditForm .input-group .form-control {position: static;}
|
||||
#batchCreateForm .input-group .colorpicker, #batchEditForm .input-group .colorpicker {z-index: 2;}
|
||||
#batchCreateForm .input-group .colorpicker.open, #batchEditForm .input-group .colorpicker.open {z-index: 5;}
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
.chosen-container[id^="buildProject"] {max-width: 160px; border-radius: 0}
|
||||
.chosen-container[id^="buildProject"] .chosen-drop {min-width: 400px;!important}
|
||||
.chosen-container[id^="buildProject"] .chosen-drop {min-width: 300px;!important}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<?php endif;?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='form-condensed' method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='w-70px'><?php echo $lang->bug->assignedTo;?></th>
|
||||
@@ -32,7 +32,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td><?php echo html::select('openedBuild[]', $builds, $bug->openedBuild, 'size=4 multiple=multiple class="form-control chosen"');?></td>
|
||||
<td colspan='2'><?php echo html::select('openedBuild[]', $builds, $bug->openedBuild, 'size=4 multiple=multiple class="form-control chosen"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->comment;?></th>
|
||||
|
||||
@@ -28,7 +28,7 @@ js::set('page', 'assignedto');
|
||||
<?php endif;?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='form-condensed' method='post' target='hiddenwin'>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='w-80px'><?php echo $lang->bug->assignBug;?></th>
|
||||
|
||||
+127
-149
@@ -13,157 +13,135 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php js::set('dittoNotice', $this->lang->bug->dittoNotice);?>
|
||||
<div id='titlebar'>
|
||||
<div class='heading'>
|
||||
<span class='prefix'><?php echo html::icon($lang->icons['bug']);?></span>
|
||||
<strong><small class='text-muted'><?php echo html::icon($lang->icons['batchEdit']);?></small> <?php echo $lang->bug->common . $lang->colon . $lang->bug->batchEdit;?></strong>
|
||||
<div class='actions'>
|
||||
<button type="button" class="btn btn-default" data-toggle="customModal"><i class='icon icon-cog'></i> </button>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<h2><?php echo $lang->bug->common . $lang->colon . $lang->bug->batchEdit;?></h2>
|
||||
<div class="pull-right btn-toolbar">
|
||||
<?php $customLink = $this->createLink('custom', 'ajaxSaveCustomFields', 'module=bug§ion=custom&key=batchEditFields')?>
|
||||
<?php include '../../common/view/customfield.html.php';?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php if(isset($suhosinInfo)):?>
|
||||
<div class='alert alert-info'><?php echo $suhosinInfo;?></div>
|
||||
<?php else:?>
|
||||
<?php
|
||||
$visibleFields = array();
|
||||
$requiredFields = array();
|
||||
foreach(explode(',', $showFields) as $field)
|
||||
{
|
||||
if($field)$visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->bug->edit->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
$requiredFields[$field] = '';
|
||||
if(strpos(",{$config->bug->list->customBatchEditFields},", ",{$field},") !== false) $visibleFields[$field] = '';
|
||||
}
|
||||
}
|
||||
$columns = count($visibleFields) + 2;
|
||||
?>
|
||||
<form class='form-condensed' method='post' target='hiddenwin' action="<?php echo inLink('batchEdit', "productID=$productID");?>">
|
||||
<table class='table table-form table-fixed with-border'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='w-50px'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-110px<?php echo zget($visibleFields, 'type', ' hidden')?>'>
|
||||
<?php echo $lang->bug->type;?>
|
||||
<?php if(isset($requiredFields['type'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th class='w-70px<?php echo zget($visibleFields, 'severity', ' hidden')?>'>
|
||||
<?php echo $lang->bug->severityAB;?>
|
||||
<?php if(isset($requiredFields['severity'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th class='w-70px<?php echo zget($visibleFields, 'pri', ' hidden')?>'>
|
||||
<?php echo $lang->bug->pri;?>
|
||||
<?php if(isset($requiredFields['pri'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th <?php if(count($visibleFields) >= 10) echo "class='w-150px'"?>><?php echo $lang->bug->title;?> <span class='required'></span></th>
|
||||
<?php if($branchProduct):?>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'branch', ' hidden')?>'><?php echo $lang->bug->branch;?></th>
|
||||
<?php endif;?>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'productplan', ' hidden')?>'>
|
||||
<?php echo $lang->bug->productplan;?>
|
||||
<?php if(isset($requiredFields['productplan'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'assignedTo', ' hidden')?>'>
|
||||
<?php echo $lang->bug->assignedTo;?>
|
||||
<?php if(isset($requiredFields['assignedTo'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'deadline', ' hidden')?>'>
|
||||
<?php echo $lang->bug->deadline;?>
|
||||
<?php if(isset($requiredFields['deadline'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th class='w-90px<?php echo zget($visibleFields, 'status', ' hidden')?>'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'os', ' hidden')?>'>
|
||||
<?php echo $lang->bug->os;?>
|
||||
<?php if(isset($requiredFields['os'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'browser', ' hidden')?>'>
|
||||
<?php echo $lang->bug->browser;?>
|
||||
<?php if(isset($requiredFields['browser'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'keywords', ' hidden')?>'>
|
||||
<?php echo $lang->bug->keywords;?>
|
||||
<?php if(isset($requiredFields['keywords'])) echo " <span class='required'></span>";?>
|
||||
</th>
|
||||
<th class='w-120px<?php echo zget($visibleFields, 'resolvedBy', ' hidden')?>'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-120px<?php echo zget($visibleFields, 'resolution', ' hidden')?>'><?php echo $lang->bug->resolutionAB;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($bugs as $bugID => $bug):?>
|
||||
<?php
|
||||
if(!$productID)
|
||||
|
||||
<?php if(isset($suhosinInfo)):?>
|
||||
<div class='alert alert-info'><?php echo $suhosinInfo;?></div>
|
||||
<?php else:?>
|
||||
<?php
|
||||
$visibleFields = array();
|
||||
$requiredFields = array();
|
||||
foreach(explode(',', $showFields) as $field)
|
||||
{
|
||||
if($field)$visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->bug->edit->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
$product = $this->product->getByID($bug->product);
|
||||
|
||||
$plans = $this->loadModel('productplan')->getPairs($bug->product, $branch);
|
||||
$plans = array('' => '', 'ditto' => $this->lang->bug->ditto) + $plans;
|
||||
|
||||
$branches = $product->type == 'normal' ? array('' => '') : $this->loadModel('branch')->getPairs($product->id);
|
||||
if($product->type != 'normal')
|
||||
{
|
||||
foreach($branches as $branchID => $branchName) $branches[$branchID] = '/' . $product->name . '/' . $branchName;
|
||||
$branches = array('ditto' => $this->lang->story->ditto) + $branches;
|
||||
}
|
||||
$requiredFields[$field] = '';
|
||||
if(strpos(",{$config->bug->list->customBatchEditFields},", ",{$field},") !== false) $visibleFields[$field] = '';
|
||||
}
|
||||
/**
|
||||
* Remove designchange, newfeature, trackings from the typeList, because should be tracked in story or task.
|
||||
* These thress types if upgrade from bugfree2.x.
|
||||
*/
|
||||
if($bug->type != 'designchange') unset($typeList['designchange']);
|
||||
if($bug->type != 'newfeature') unset($typeList['newfeature']);
|
||||
if($bug->type != 'trackthings') unset($typeList['trackthings']);
|
||||
?>
|
||||
<tr class='text-center'>
|
||||
<td><?php echo $bugID . html::hidden("bugIDList[$bugID]", $bugID);?></td>
|
||||
<td <?php echo zget($visibleFields, 'type', "class='hidden'")?>><?php echo html::select("types[$bugID]", $typeList, $bug->type, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'severity', "class='hidden'")?>><?php echo html::select("severities[$bugID]", $severityList, $bug->severity, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'pri', "class='hidden'")?>><?php echo html::select("pris[$bugID]", $priList, $bug->pri, 'class=form-control');?></td>
|
||||
<td style='overflow:visible' title='<?php echo $bug->title?>'>
|
||||
<div class='input-group'>
|
||||
<?php echo html::hidden("colors[$bugID]", $bug->color, "data-provide='colorpicker' data-wrapper='input-group-btn fix-border-right' data-pull-menu-right='false' data-btn-tip='{$lang->bug->colorTag}' data-update-text='#titles\\[{$bugID}\\]'");?>
|
||||
<?php echo html::input("titles[$bugID]", $bug->title, 'class=form-control');?>
|
||||
<div>
|
||||
</td>
|
||||
<?php if($branchProduct):?>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'branch', ' hidden')?>' style='overflow:visible'>
|
||||
<?php $branchProductID = $productID ? $productID : $product->id;?>
|
||||
<?php $disabled = (isset($product) and $product->type == 'normal') ? "disabled='disabled'" : '';?>
|
||||
<?php echo html::select("branches[$bugID]", $branches, $bug->branch, "class='form-control chosen' $disabled");?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'productplan', ' hidden')?>' style='overflow:visible'><?php echo html::select("plans[$bugID]", $plans, $bug->plan, "class='form-control chosen'");?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'assignedTo', ' hidden')?>' style='overflow:visible'><?php echo html::select("assignedTos[$bugID]", $users, $bug->assignedTo, "class='form-control chosen'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'deadline', ' hidden')?>' style='overflow:visible'><?php echo html::input("deadlines[$bugID]", $bug->deadline, "class='form-control form-date'");?></td>
|
||||
<td <?php echo zget($visibleFields, 'status', "class='hidden'")?>><?php echo html::select("statuses[$bugID]", $statusList, $bug->status, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'os', "class='hidden'")?>><?php echo html::select("os[$bugID]", $osList, $bug->os, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'browser', "class='hidden'")?>><?php echo html::select("browsers[$bugID]", $browserList, $bug->browser, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'keywords', "class='hidden'")?>><?php echo html::input("keywords[$bugID]", $bug->keywords, 'class=form-control');?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'resolvedBy', ' hidden')?>' style='overflow:visible'><?php echo html::select("resolvedBys[$bugID]", $users, $bug->resolvedBy, "class='form-control chosen'");?></td>
|
||||
<td <?php echo zget($visibleFields, 'resolution', "class='hidden'")?>>
|
||||
<table class='w-p100'>
|
||||
<tr>
|
||||
<td class='pd-0'>
|
||||
<?php echo html::select("resolutions[$bugID]", $resolutionList, $bug->resolution, "class=form-control onchange=setDuplicate(this.value,$bugID)");?>
|
||||
</td>
|
||||
<td class='pd-0 w-p50' id='<?php echo 'duplicateBugBox' . $bugID;?>' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>>
|
||||
<?php echo html::input("duplicateBugs[$bugID]", '', "class=form-control placeholder='{$lang->bug->duplicateBug}'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr><td colspan='<?php echo $branchProduct ? $columns : ($columns - 1);?>' class='text-center'><?php echo html::submitButton();?></td></tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
<?php $customLink = $this->createLink('custom', 'ajaxSaveCustomFields', 'module=bug§ion=custom&key=batchEditFields')?>
|
||||
<?php include '../../common/view/customfield.html.php';?>
|
||||
}
|
||||
$columns = count($visibleFields) + 2;
|
||||
?>
|
||||
<form class='load-indicator main-form' method='post' target='hiddenwin' action="<?php echo inLink('batchEdit', "productID=$productID")?>" id='batchEditForm'>
|
||||
<table class='table table-form'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='w-50px'><?php echo $lang->idAB;?></th>
|
||||
<th class='w-110px<?php echo zget($visibleFields, 'type', ' hidden') . zget($requiredFields, 'type', '', ' required');?>'><?php echo $lang->bug->type;?></th>
|
||||
<th class='w-70px<?php echo zget($visibleFields, 'severity', ' hidden') . zget($requiredFields, 'severity', '', ' required');?>'><?php echo $lang->bug->severityAB;?></th>
|
||||
<th class='w-70px<?php echo zget($visibleFields, 'pri', ' hidden') . zget($requiredFields, 'pri', '', ' required');?>'><?php echo $lang->bug->pri;?></th>
|
||||
<th class="required <?php if(count($visibleFields) >= 10) echo ' w-150px';?>"><?php echo $lang->bug->title;?></th>
|
||||
<?php if($branchProduct):?>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'branch', ' hidden')?>'><?php echo $lang->bug->branch;?></th>
|
||||
<?php endif;?>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'productplan', ' hidden') . zget($requiredFields, 'productplan', '', ' required');?>'><?php echo $lang->bug->productplan;?></th>
|
||||
<th class='w-150px<?php echo zget($visibleFields, 'assignedTo', ' hidden') . zget($requiredFields, 'assignedTo', '', ' required');?>'><?php echo $lang->bug->assignedTo;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'deadline', ' hidden') . zget($requiredFields, 'deadline', '', ' required');?>'><?php echo $lang->bug->deadline;?></th>
|
||||
<th class='w-90px<?php echo zget($visibleFields, 'status', ' hidden')?>'><?php echo $lang->bug->status;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'os', ' hidden') . zget($requiredFields, 'os', '', ' required');?>'><?php echo $lang->bug->os;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'browser', ' hidden') . zget($requiredFields, 'browser', '', ' required');?>'><?php echo $lang->bug->browser;?></th>
|
||||
<th class='w-100px<?php echo zget($visibleFields, 'keywords', ' hidden') . zget($requiredFields, 'keywords', '', ' required');?>'><?php echo $lang->bug->keywords;?></th>
|
||||
<th class='w-120px<?php echo zget($visibleFields, 'resolvedBy', ' hidden')?>'><?php echo $lang->bug->resolvedByAB;?></th>
|
||||
<th class='w-120px<?php echo zget($visibleFields, 'resolution', ' hidden')?>'><?php echo $lang->bug->resolutionAB;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($bugs as $bugID => $bug):?>
|
||||
<?php
|
||||
if(!$productID)
|
||||
{
|
||||
$product = $this->product->getByID($bug->product);
|
||||
|
||||
$plans = $this->loadModel('productplan')->getPairs($bug->product, $branch);
|
||||
$plans = array('' => '', 'ditto' => $this->lang->bug->ditto) + $plans;
|
||||
|
||||
$branches = $product->type == 'normal' ? array('' => '') : $this->loadModel('branch')->getPairs($product->id);
|
||||
if($product->type != 'normal')
|
||||
{
|
||||
foreach($branches as $branchID => $branchName) $branches[$branchID] = '/' . $product->name . '/' . $branchName;
|
||||
$branches = array('ditto' => $this->lang->story->ditto) + $branches;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Remove designchange, newfeature, trackings from the typeList, because should be tracked in story or task.
|
||||
* These thress types if upgrade from bugfree2.x.
|
||||
*/
|
||||
if($bug->type != 'designchange') unset($typeList['designchange']);
|
||||
if($bug->type != 'newfeature') unset($typeList['newfeature']);
|
||||
if($bug->type != 'trackthings') unset($typeList['trackthings']);
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo $bugID . html::hidden("bugIDList[$bugID]", $bugID);?></td>
|
||||
<td <?php echo zget($visibleFields, 'type', "class='hidden'")?>><?php echo html::select("types[$bugID]", $typeList, $bug->type, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'severity', "class='hidden'")?>><?php echo html::select("severities[$bugID]", $severityList, $bug->severity, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'pri', "class='hidden'")?>><?php echo html::select("pris[$bugID]", $priList, $bug->pri, 'class=form-control');?></td>
|
||||
<td style='overflow:visible' title='<?php echo $bug->title?>'>
|
||||
<div class='input-group'>
|
||||
<div class="input-control has-icon-right">
|
||||
<?php echo html::input("titles[$bugID]", $bug->title, "class='form-control' autocomplete='off' style='color:{$bug->color}'");?>
|
||||
<div class="colorpicker">
|
||||
<button type="button" class="btn btn-link dropdown-toggle" data-toggle="dropdown"><span class="cp-title"></span><span class="color-bar" style="background:<?php echo $bug->color;?>"></span><i class="ic"></i></button>
|
||||
<ul class="dropdown-menu clearfix">
|
||||
<li class="heading"><?php echo $lang->story->colorTag;?><i class="icon icon-close"></i></li>
|
||||
</ul>
|
||||
<?php echo html::hidden("colors[$bugID]", $bug->color, "data-provide='colorpicker' data-icon='color' data-wrapper='input-control-icon-right' data-update-color='#titles\\[{$bugID}\\]'");?>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
</td>
|
||||
<?php if($branchProduct):?>
|
||||
<td class='<?php echo zget($visibleFields, 'branch', ' hidden')?>' style='overflow:visible'>
|
||||
<?php $branchProductID = $productID ? $productID : $product->id;?>
|
||||
<?php $disabled = (isset($product) and $product->type == 'normal') ? "disabled='disabled'" : '';?>
|
||||
<?php echo html::select("branches[$bugID]", $branches, $bug->branch, "class='form-control chosen' $disabled");?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
<td class='<?php echo zget($visibleFields, 'productplan', ' hidden')?>' style='overflow:visible'><?php echo html::select("plans[$bugID]", $plans, $bug->plan, "class='form-control chosen'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'assignedTo', ' hidden')?>' style='overflow:visible'><?php echo html::select("assignedTos[$bugID]", $users, $bug->assignedTo, "class='form-control chosen'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'deadline', ' hidden')?>' style='overflow:visible'><?php echo html::input("deadlines[$bugID]", $bug->deadline, "class='form-control form-date'");?></td>
|
||||
<td <?php echo zget($visibleFields, 'status', "class='hidden'")?>><?php echo html::select("statuses[$bugID]", $statusList, $bug->status, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'os', "class='hidden'")?>><?php echo html::select("os[$bugID]", $osList, $bug->os, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'browser', "class='hidden'")?>><?php echo html::select("browsers[$bugID]", $browserList, $bug->browser, 'class=form-control');?></td>
|
||||
<td <?php echo zget($visibleFields, 'keywords', "class='hidden'")?>><?php echo html::input("keywords[$bugID]", $bug->keywords, 'class=form-control');?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'resolvedBy', ' hidden')?>' style='overflow:visible'><?php echo html::select("resolvedBys[$bugID]", $users, $bug->resolvedBy, "class='form-control chosen'");?></td>
|
||||
<td <?php echo zget($visibleFields, 'resolution', "class='hidden'")?>>
|
||||
<table class='table-borderless w-100px'>
|
||||
<tr>
|
||||
<td class='pd-0'><?php echo html::select("resolutions[$bugID]", $resolutionList, $bug->resolution, "class=form-control onchange=setDuplicate(this.value,$bugID)");?></td>
|
||||
<td class='pd-0 w-p50' id='<?php echo 'duplicateBugBox' . $bugID;?>' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>>
|
||||
<?php echo html::input("duplicateBugs[$bugID]", '', "class=form-control placeholder='{$lang->bug->duplicateBug}'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr><td colspan='<?php echo $branchProduct ? $columns : ($columns - 1);?>' class='text-center'><?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?></td></tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<?php endif;?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='form-condensed' method='post' target='hiddenwin'>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th><?php echo $lang->comment;?></th>
|
||||
|
||||
@@ -28,7 +28,7 @@ js::set('page', 'confirmbug');
|
||||
<?php endif;?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='form-condensed' method='post' target='hiddenwin'>
|
||||
<form method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='w-80px'><?php echo $lang->bug->assignedTo;?></th>
|
||||
@@ -37,11 +37,11 @@ js::set('page', 'confirmbug');
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->type;?></th>
|
||||
<td><?php echo html::select('type', $lang->bug->typeList, $bug->type, 'class=form-control');?></td>
|
||||
<td><?php echo html::select('type', $lang->bug->typeList, $bug->type, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->pri;?></th>
|
||||
<td><?php echo html::select('pri', $lang->bug->priList, $bug->pri, 'class=form-control');?></td>
|
||||
<td><?php echo html::select('pri', $lang->bug->priList, $bug->pri, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->mailto;?></th>
|
||||
|
||||
@@ -29,11 +29,11 @@ js::set('productID' , $bug->product);
|
||||
<?php endif;?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='form-condensed' method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->bug->resolution;?></th>
|
||||
<td class='w-p35-f'><?php echo html::select('resolution', $lang->bug->resolutionList, '', 'class=form-control onchange=setDuplicate(this.value)');?></td>
|
||||
<td class='w-p35-f'><?php echo html::select('resolution', $lang->bug->resolutionList, '', "class='form-control chosen' onchange=setDuplicate(this.value)");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr id='duplicateBugBox' class='hide'>
|
||||
@@ -63,7 +63,11 @@ js::set('productID' , $bug->product);
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->resolvedDate;?></th>
|
||||
<td><?php echo html::input('resolvedDate', helper::now(), "class='form-control form-date'");?></td>
|
||||
<td>
|
||||
<div class='datepicker-wrapper datepicker-date'>
|
||||
<?php echo html::input('resolvedDate', helper::now(), "class='form-control form-date'");?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->assignedTo;?></th>
|
||||
|
||||
@@ -1,19 +1,4 @@
|
||||
.cards {padding-bottom: 0;}
|
||||
.cards > .col-sm-6 {width: 25%; padding: 0 10px}
|
||||
.card {height: 225px; position: relative; padding-top: 50px; margin: 0}
|
||||
.card > .media {position: absolute; left: 0; top: 0; width: 100%; background: #f1f1f1; height:50px; bottom: 0; overflow: hidden; z-index: 90; transition: all 0.4s;}
|
||||
.card > .media > .icon {position: absolute; display: block; font-size: 56px; color: #ddd; z-index: 99; bottom: -10px; right: -6px; transition: all 0.4s;}
|
||||
.card > .media > h5 {position: absolute; display: block; color: #666; z-index: 100; font-size: 14px; left: 15px; top: 10px; transition: all 0.4s;}
|
||||
.card:hover > .media {background: #e5e5e5}
|
||||
.card:hover > .media > .icon {color: #ccc}
|
||||
.card .card-content {padding: 10px 20px}
|
||||
.card-content > ul {padding-left: 8px;}
|
||||
.card-content > ul > li {margin-bottom: 5px;}
|
||||
.card a, .card:hover a {color: #444}
|
||||
.card a:hover {color: #000;}
|
||||
|
||||
body {padding: 20px; font-size: 12px}
|
||||
.modal-dialog.hide-header .modal-header .close {top: 5px; right: 20px}
|
||||
.copyright {padding: 0 10px 20px}
|
||||
|
||||
#proversion, #zentaotrain{color:#D2322D}
|
||||
#mainContent {padding-top: 50px;}
|
||||
#mainContent .main-header {display: none;}
|
||||
#mainContent .copyright {line-height: 20px;}
|
||||
#mainContent .copyright a {vertical-align: baseline;}
|
||||
@@ -1,20 +1,25 @@
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<td class='text-center w-160px'>
|
||||
<img src='theme/default/images/main/logo2.png' />
|
||||
<h4><?php printf($lang->misc->zentao->version, $config->version);?></h4>
|
||||
</td>
|
||||
<td>
|
||||
<?php include './links.html.php';?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'>
|
||||
<div class='text-right copyright'>
|
||||
<?php echo $lang->misc->copyright;?>
|
||||
<main id="main">
|
||||
<div class="container">
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<h2><?php echo $lang->misc->zentao->labels['about'];?></h2>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<td class='text-center w-160px'>
|
||||
<img src='theme/default/images/main/logo2.png' />
|
||||
<h4><?php printf($lang->misc->zentao->version, $config->version);?></h4>
|
||||
</td>
|
||||
<td><?php include './links.html.php';?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' class="copyright text-right text-middle">
|
||||
<?php echo $lang->misc->copyright;?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
<div class='container mw-800px bd-0'>
|
||||
<div class='cards'>
|
||||
<div class='container mw-800px' id="zentaoLinks">
|
||||
<div class='row'>
|
||||
<?php unset($lang->misc->zentao->version);?>
|
||||
<?php foreach($lang->misc->zentao as $label => $groupItems):?>
|
||||
<?php if(strpos(',labels,icons,version,', ",$label,") !== false) continue; ?>
|
||||
<div class='col-sm-6'>
|
||||
<div class='card card-<?php echo $label;?>'>
|
||||
<div class='media'>
|
||||
<?php echo html::icon($lang->misc->zentao->icons[$label], 'icon');?>
|
||||
<h5><?php echo $lang->misc->zentao->labels[$label];?></h5>
|
||||
<div class='col-sm-3'>
|
||||
<div class='panel'>
|
||||
<div class='panel-heading'>
|
||||
<div class="panel-title"><?php echo $lang->misc->zentao->labels[$label];?></div>
|
||||
</div>
|
||||
<div class='card-content'>
|
||||
<div class='panel-body'>
|
||||
<ul>
|
||||
<?php foreach($groupItems as $item => $label):?>
|
||||
<li><?php echo html::a($lang->misc->api . "/goto.php?item=$item&from=about", $label, '_blank', "id='$item'");;?></li>
|
||||
@@ -21,3 +20,11 @@
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
<style>
|
||||
#proversion, #zentaotrain {color: #ff5d5d}
|
||||
#zentaoLinks .panel {box-shadow: 0 2px 4px 0 rgba(240,242,246,0.50); border: 1px solid #eee; min-height: 230px;}
|
||||
#zentaoLinks .panel-heading {background: #eeeeee; color: #666;}
|
||||
#zentaoLinks .panel-body {padding: 10px;}
|
||||
#zentaoLinks ul {}
|
||||
#zentaoLinks ul > li {line-height: 24px;}
|
||||
</style>
|
||||
@@ -1,3 +1,3 @@
|
||||
.datepicker-wrapper{width: 110px!important;}
|
||||
.datepicker-wrapper .form-control {max-width: 110px; line-height: 25px; height: 26px!important}
|
||||
th.c-actions{width:160px !important;}
|
||||
th.c-actions{width:160px !important;}
|
||||
@@ -57,7 +57,7 @@
|
||||
<th class="c-date"> <?php common::printOrderLink('date', $orderBy, $vars, $lang->todo->date);?></th>
|
||||
<th class="c-type"> <?php common::printOrderLink('type', $orderBy, $vars, $lang->todo->type);?></th>
|
||||
<?php $style = $this->app->clientLang == 'en' ? "style='width:80px'" : '';?>
|
||||
<th class="c-pri" <?php echo $style;?>> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class="c-pri w-80px" <?php echo $style;?>> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class="c-name"> <?php common::printOrderLink('name', $orderBy, $vars, $lang->todo->name);?></th>
|
||||
<th class="c-begin"> <?php common::printOrderLink('begin', $orderBy, $vars, $lang->todo->beginAB);?></th>
|
||||
<th class="c-end"> <?php common::printOrderLink('end', $orderBy, $vars, $lang->todo->endAB);?></th>
|
||||
|
||||
@@ -77,13 +77,14 @@
|
||||
<td class='text-center'><?php echo $plan->bugs;?></td>
|
||||
<td class='text-center'><?php echo $plan->hour;?></td>
|
||||
<td class='text-center'><?php if(!empty($plan->projectID)) echo html::a(helper::createLink('project', 'task', 'projectID=' . $plan->projectID), '<i class="icon-search"></i>');?></td>
|
||||
<td class='text-left content'><div class='article-content'><?php echo $plan->desc;?></div></td>
|
||||
<td class='text-left content'><div class='article-content'><?php echo strip_tags($plan->desc, str_replace('<img>', '', $config->allowedTags));?></div></td>
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
if(common::hasPriv('project', 'create')) echo html::a(helper::createLink('project', 'create', "projectID=©ProjectID=&planID=$plan->id"), '<i class="icon-play"></i>', '', "class='btn' title='{$lang->project->create}'");
|
||||
if(common::hasPriv('productplan', 'linkStory')) echo html::a(inlink('view', "planID=$plan->id&type=story&orderBy=id_desc&link=true"), '<i class="icon-link"></i>', '', "class='btn' title='{$lang->productplan->linkStory}'");
|
||||
if(common::hasPriv('productplan', 'linkBug') and $config->global->flow != 'onlyStory') echo html::a(inlink('view', "planID=$plan->id&type=bug&orderBy=id_desc&link=true"), '<i class="icon-bug"></i>', '', "class='btn' title='{$lang->productplan->linkBug}'");
|
||||
common::printIcon('productplan', 'edit', "planID=$plan->id", $plan, 'list');
|
||||
|
||||
if(common::hasPriv('productplan', 'delete', $plan))
|
||||
{
|
||||
$deleteURL = $this->createLink('productplan', 'delete', "planID=$plan->id&confirm=yes");
|
||||
|
||||
@@ -153,7 +153,7 @@ $config->testcase->datatable->fieldList['lastRunDate']['required'] = 'no';
|
||||
|
||||
$config->testcase->datatable->fieldList['lastRunResult']['title'] = 'lastRunResult';
|
||||
$config->testcase->datatable->fieldList['lastRunResult']['fixed'] = 'no';
|
||||
$config->testcase->datatable->fieldList['lastRunResult']['width'] = '80';
|
||||
$config->testcase->datatable->fieldList['lastRunResult']['width'] = '100';
|
||||
$config->testcase->datatable->fieldList['lastRunResult']['required'] = 'no';
|
||||
|
||||
$config->testcase->datatable->fieldList['status']['title'] = 'statusAB';
|
||||
|
||||
@@ -124,6 +124,7 @@ class testcase extends control
|
||||
$this->view->moduleTree = $this->tree->getTreeMenu($productID, $viewType = 'case', $startModuleID = 0, array('treeModel', 'createCaseLink'), '', $branch);
|
||||
$this->view->moduleName = $moduleID ? $this->tree->getById($moduleID)->name : $this->lang->tree->all;
|
||||
$this->view->moduleID = $moduleID;
|
||||
$this->view->summary = $this->testcase->summary($cases);
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->user->getPairs('noletter');
|
||||
$this->view->orderBy = $orderBy;
|
||||
|
||||
@@ -118,6 +118,7 @@ $lang->testcase->allCases = 'All';
|
||||
$lang->testcase->allTestcases = 'All Cases';
|
||||
$lang->testcase->needConfirm = 'StoryChanged';
|
||||
$lang->testcase->bySearch = 'Search';
|
||||
$lang->testcase->unexecuted = 'Unexecuted';
|
||||
|
||||
$lang->testcase->lblStory = 'Story';
|
||||
$lang->testcase->lblLastEdited = 'Last Edit';
|
||||
@@ -131,6 +132,7 @@ $lang->testcase->legendLinkBugs = 'Bug';
|
||||
$lang->testcase->legendOpenAndEdit = 'Create/Edit';
|
||||
$lang->testcase->legendComment = 'Remark';
|
||||
|
||||
$lang->testcase->summary = "Cases on this page : <strong>%s</strong> Total, <strong>%s</strong> runed.";
|
||||
$lang->testcase->confirmDelete = 'Do you want to delete this Test Case?';
|
||||
$lang->testcase->confirmBatchDelete = 'Do you want to batch delete thess Test Cases?';
|
||||
$lang->testcase->ditto = 'Ditto';
|
||||
|
||||
@@ -118,6 +118,7 @@ $lang->testcase->allCases = '所有';
|
||||
$lang->testcase->allTestcases = '所有用例';
|
||||
$lang->testcase->needConfirm = '需求变动';
|
||||
$lang->testcase->bySearch = '搜索';
|
||||
$lang->testcase->unexecuted = '未执行';
|
||||
|
||||
$lang->testcase->lblStory = '相关需求';
|
||||
$lang->testcase->lblLastEdited = '最后编辑';
|
||||
@@ -131,6 +132,7 @@ $lang->testcase->legendLinkBugs = '相关Bug';
|
||||
$lang->testcase->legendOpenAndEdit = '创建编辑';
|
||||
$lang->testcase->legendComment = '备注';
|
||||
|
||||
$lang->testcase->summary = "本页共 <strong>%s</strong> 个用例,已执行<strong>%s</strong>个。";
|
||||
$lang->testcase->confirmDelete = '您确认要删除该测试用例吗?';
|
||||
$lang->testcase->confirmBatchDelete = '您确认要批量删除这些测试用例吗?';
|
||||
$lang->testcase->ditto = '同上';
|
||||
|
||||
@@ -1384,7 +1384,8 @@ class testcaseModel extends model
|
||||
if(!helper::isZeroDate($case->lastRunDate)) echo date(DT_MONTHTIME1, strtotime($case->lastRunDate));
|
||||
break;
|
||||
case 'lastRunResult':
|
||||
if($case->lastRunResult) echo $this->lang->testcase->resultList[$case->lastRunResult];
|
||||
$lastRunResultText = $case->lastRunResult ? zget($this->lang->testcase->resultList, $case->lastRunResult, $case->lastRunResult) : $this->lang->testcase->unexecuted;
|
||||
echo html::a(helper::createLink('testtask', 'results', "runID=0&caseID=$case->id", '', true), "<i class='icon icon-list-alt'></i> <span>{$lastRunResultText}</span>", '', "class='iframe btn btn-icon-left'");
|
||||
break;
|
||||
case 'bugs':
|
||||
echo (common::hasPriv('testcase', 'bugs') and $case->bugs) ? html::a(helper::createLink('testcase', 'bugs', "runID=0&caseID={$case->id}"), $case->bugs, '', "class='iframe'") : $case->bugs;
|
||||
@@ -1398,7 +1399,6 @@ class testcaseModel extends model
|
||||
case 'actions':
|
||||
echo "<div class='more'>";
|
||||
if($this->config->testcase->needReview or !empty($this->config->testcase->forceReview)) common::printIcon('testcase', 'review', "caseID=$case->id", $case, 'list', 'glasses', '', 'iframe');
|
||||
common::printIcon('testcase', 'create', "productID=$case->product&branch=$case->branch&moduleID=$case->module&from=testcase¶m=$case->id", $case, 'list', 'copy');
|
||||
|
||||
if(common::hasPriv('testcase', 'delete', $case))
|
||||
{
|
||||
@@ -1407,9 +1407,9 @@ class testcaseModel extends model
|
||||
}
|
||||
echo '</div>';
|
||||
common::printIcon('testtask', 'runCase', "runID=0&caseID=$case->id&version=$case->version", $case, 'list', 'play', '', 'runCase iframe', false, "data-width='95%'");
|
||||
common::printIcon('testtask', 'results', "runID=0&caseID=$case->id", $case, 'list', '', '', 'results iframe', '', "data-width='90%'");
|
||||
common::printIcon('testcase', 'edit', "caseID=$case->id", $case, 'list');
|
||||
common::printIcon('testcase', 'createBug', "product=$case->product&branch=$case->branch&extra=caseID=$case->id,version=$case->version,runID=", $case, 'list', 'bug', '', 'iframe', '', "data-width='90%'");
|
||||
common::printIcon('testcase', 'create', "productID=$case->product&branch=$case->branch&moduleID=$case->module&from=testcase¶m=$case->id", $case, 'list', 'copy');
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1496,4 +1496,15 @@ class testcaseModel extends model
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function summary($cases)
|
||||
{
|
||||
$executed = 0;
|
||||
foreach($cases as $case)
|
||||
{
|
||||
if($case->lastRunResult != '') $executed ++;
|
||||
}
|
||||
|
||||
return sprintf($this->lang->testcase->summary, count($cases), $executed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,12 +94,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td><?php echo html::select("type[$i]", $lang->testcase->typeList, $type, "class=form-control");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'pri', 'hidden')?>'> <?php echo html::select("pri[$i]", $lang->testcase->priList, $pri, "class=form-control");?></td>
|
||||
<td><?php echo html::select("type[$i]", $lang->testcase->typeList, $type, "class='form-control chosen'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'pri', 'hidden')?>'> <?php echo html::select("pri[$i]", $lang->testcase->priList, $pri, "class='form-control chosen'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'precondition', 'hidden')?>'><?php echo html::textarea("precondition[$i]", '', "rows='1' class='form-control autosize'")?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'keywords', 'hidden')?>'> <?php echo html::input("keywords[$i]", '', "class='form-control' autocomplete='off'");?></td>
|
||||
<td class='text-left<?php echo zget($visibleFields, 'stage', ' hidden')?>' style='overflow:visible'><?php echo html::select("stage[$i][]", $lang->testcase->stageList, '', "class='form-control chosen' multiple");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'review', 'hidden')?>'><?php echo html::select("needReview[$i]", $lang->testcase->reviewList, $needReview, "class='form-control'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'review', 'hidden')?>'><?php echo html::select("needReview[$i]", $lang->testcase->reviewList, $needReview, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<?php endfor;?>
|
||||
<tr>
|
||||
|
||||
@@ -41,6 +41,10 @@ js::set('branch', $branch);
|
||||
<div class='main-col'>
|
||||
<div id='queryBox' class='cell <?php if($browseType =='bysearch') echo 'show';?>'></div>
|
||||
<form class='main-table table-case' data-ride='table' id='batchForm' method='post'>
|
||||
<div class="table-header">
|
||||
<div class="table-statistic"><?php echo $summary;?></div>
|
||||
<nav class="btn-toolbar pull-right"></nav>
|
||||
</div>
|
||||
<?php
|
||||
$datatableId = $this->moduleName . ucfirst($this->methodName);
|
||||
$useDatatable = (isset($this->config->datatable->$datatableId->mode) and $this->config->datatable->$datatableId->mode == 'datatable');
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
<?php endif;?>
|
||||
<td class='text-left' style='overflow:visible'><?php echo html::select("module[$key]", $modules, isset($case->module) ? $case->module : ((!empty($case->id) and isset($cases[$case->id])) ? $cases[$case->id]->module : ''), "class='form-control chosen'")?></td>
|
||||
<td class='text-left' style='overflow:visible'><?php echo html::select("story[$key]", $stories, isset($case->story) ? $case->story : ((!empty($case->id) and isset($cases[$case->id])) ? $cases[$case->id]->story : ''), "class='form-control chosen'")?></td>
|
||||
<td><?php echo html::select("pri[$key]", $lang->testcase->priList, isset($case->pri) ? $case->pri : ((!empty($case->id) and isset($cases[$case->id])) ? $cases[$case->id]->pri : ''), "class='form-control'")?></td>
|
||||
<td><?php echo html::select("type[$key]", $lang->testcase->typeList, $case->type, "class='form-control'")?></td>
|
||||
<td><?php echo html::select("pri[$key]", $lang->testcase->priList, isset($case->pri) ? $case->pri : ((!empty($case->id) and isset($cases[$case->id])) ? $cases[$case->id]->pri : ''), "class='form-control chosen'")?></td>
|
||||
<td><?php echo html::select("type[$key]", $lang->testcase->typeList, $case->type, "class='form-control chosen'")?></td>
|
||||
<td class='text-left' style='overflow:visible'><?php echo html::select("stage[$key][]", $lang->testcase->stageList, !empty($case->stage) ? $case->stage : ((!empty($case->id) and isset($cases[$case->id])) ? $cases[$case->id]->stage : ''), "multiple='multiple' class='form-control chosen'")?></td>
|
||||
<td><?php echo html::input("keywords[$key]", isset($case->keywords) ? $case->keywords : "", "class='form-control' autocomplete='off'")?></td>
|
||||
<td><?php echo html::textarea("precondition[$key]", isset($case->precondition) ? htmlspecialchars($case->precondition) : "", "class='form-control'")?></td>
|
||||
|
||||
@@ -61,8 +61,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td><?php echo html::select("type[$i]", $lang->testcase->typeList, $type, "class=form-control");?></td>
|
||||
<td><?php echo html::select("pri[$i]", $lang->testcase->priList, $pri, "class=form-control");?></td>
|
||||
<td><?php echo html::select("type[$i]", $lang->testcase->typeList, $type, "class='form-control chosen'");?></td>
|
||||
<td><?php echo html::select("pri[$i]", $lang->testcase->priList, $pri, "class='form-control chosen'");?></td>
|
||||
<td><?php echo html::textarea("precondition[$i]", '', "rows='1' class='form-control autosize'")?></td>
|
||||
<td><?php echo html::input("keywords[$i]", '', "class='form-control' autocomplete='off'");?></td>
|
||||
<td class='text-left' style='overflow:visible'><?php echo html::select("stage[$i][]", $lang->testcase->stageList, '', "class='form-control chosen' multiple");?></td>
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
</td>
|
||||
<td><?php echo html::input("title[$key]", $case->title, "class='form-control' style='margin-top:2px' autocomplete='off'")?></td>
|
||||
<td class='text-left' style='overflow:visible'><?php echo html::select("module[$key]", $modules, isset($case->module) ? $case->module : (!empty($case->id) ? $cases[$case->id]->module : ''), "class='form-control chosen'")?></td>
|
||||
<td><?php echo html::select("pri[$key]", $lang->testcase->priList, isset($case->pri) ? $case->pri : (!empty($case->id) ? $cases[$case->id]->pri : ''), "class='form-control'")?></td>
|
||||
<td><?php echo html::select("type[$key]", $lang->testcase->typeList, isset($case->type) ? $case->type : (!empty($case->id) ? $cases[$case->id]->type : ''), "class='form-control'")?></td>
|
||||
<td><?php echo html::select("pri[$key]", $lang->testcase->priList, isset($case->pri) ? $case->pri : (!empty($case->id) ? $cases[$case->id]->pri : ''), "class='form-control chosen'")?></td>
|
||||
<td><?php echo html::select("type[$key]", $lang->testcase->typeList, isset($case->type) ? $case->type : (!empty($case->id) ? $cases[$case->id]->type : ''), "class='form-control chosen'")?></td>
|
||||
<td class='text-left' style='overflow:visible'><?php echo html::select("stage[$key][]", $lang->testcase->stageList, !empty($case->stage) ? $case->stage : (!empty($case->id) ? $cases[$case->id]->stage : ''), "multiple='multiple' class='form-control chosen'")?></td>
|
||||
<td><?php echo html::input("keywords[$key]", isset($case->keywords) ? $case->keywords : "", "class='form-control' autocomplete='off'")?></td>
|
||||
<td><?php echo html::textarea("precondition[$key]", isset($case->precondition) ? htmlspecialchars($case->precondition) : "", "class='form-control'")?></td>
|
||||
|
||||
@@ -50,7 +50,7 @@ class testtask extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($productID = 0, $branch = '', $type = 'local,wait', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1, $beginTime = 0, $endTime = 0)
|
||||
public function browse($productID = 0, $branch = '', $type = 'local,totalStatus', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1, $beginTime = 0, $endTime = 0)
|
||||
{
|
||||
/* Save session. */
|
||||
$this->session->set('testtaskList', $this->app->getURI(true));
|
||||
|
||||
@@ -104,6 +104,7 @@ $lang->testtask->showFail = 'Failed <span class="text-danger">%s</span> tim
|
||||
$lang->testtask->confirmDelete = 'Do you want to delete this test build?';
|
||||
$lang->testtask->confirmUnlinkCase = 'Do you want to unlink this Case?';
|
||||
$lang->testtask->noticeNoOther = 'There are no other test task for this product';
|
||||
$lang->testtask->noTesttask = 'No test task. You could';
|
||||
|
||||
$lang->testtask->assignedToMe = 'My';
|
||||
$lang->testtask->allCases = 'AllCases';
|
||||
|
||||
@@ -104,6 +104,7 @@ $lang->testtask->showFail = '失败<span class="text-danger">%s</span>次';
|
||||
$lang->testtask->confirmDelete = '您确认要删除该版本吗?';
|
||||
$lang->testtask->confirmUnlinkCase = '您确认要移除该用例吗?';
|
||||
$lang->testtask->noticeNoOther = '该产品还没有其他测试版本';
|
||||
$lang->testtask->noTesttask = '暂时没有记录,您现在可以';
|
||||
|
||||
$lang->testtask->assignedToMe = '指派给我';
|
||||
$lang->testtask->allCases = '所有用例';
|
||||
|
||||
@@ -32,11 +32,11 @@ $status = $this->session->testTaskVersionStatus;
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php echo html::a(inlink('browse', "productID=$productID&branch=$branch&type=$scope,totalStatus"), "<span class='text'>{$lang->testtask->totalStatus}</span>", '', "id='totalStatusTab' class='btn btn-link'");?>
|
||||
<?php echo html::a(inlink('browse', "productID=$productID&branch=$branch&type=$scope,wait"), "<span class='text'>{$lang->testtask->wait}</span>", '', "id='waitTab' class='btn btn-link'");?>
|
||||
<?php echo html::a(inlink('browse', "productID=$productID&branch=$branch&type=$scope,doing"), "<span class='text'>{$lang->testtask->testing}</span>", '', "id='doingTab' class='btn btn-link'");?>
|
||||
<?php echo html::a(inlink('browse', "productID=$productID&branch=$branch&type=$scope,blocked"), "<span class='text'>{$lang->testtask->blocked}</span>", '', "id='blockedTab' class='btn btn-link'");?>
|
||||
<?php echo html::a(inlink('browse', "productID=$productID&branch=$branch&type=$scope,done"), "<span class='text'>{$lang->testtask->done}</span>", '', "id='doneTab' class='btn btn-link'");?>
|
||||
<?php echo html::a(inlink('browse', "productID=$productID&branch=$branch&type=$scope,totalStatus"), "<span class='text'>{$lang->testtask->totalStatus}</span>", '', "id='totalStatusTab' class='btn btn-link'");?>
|
||||
<?php $condition = "productID=$productID&branch=$branch&type=$scope,$status&orderBy=$orderBy&recTotal=0&recPerPage={$pager->recPerPage}&pageID=1"?>
|
||||
<div class='input-group w-400px input-group-sm'>
|
||||
<span class='input-group-addon'><?php echo $lang->testtask->beginAndEnd;?></span>
|
||||
@@ -48,6 +48,11 @@ $status = $this->session->testTaskVersionStatus;
|
||||
<div class="btn-toolbar pull-right"><?php common::printLink('testtask', 'create', "product=$productID", "<i class='icon icon-plus'> </i>" . $lang->testtask->create, '', "class='btn btn-primary'");?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php if($scope == 'local' && $status == 'totalStatus' && empty($tasks)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->testtask->noTesttask;?></span> <?php common::printLink('testtask', 'create', "productID={$productID}", "<i class='icon icon-plus'> </i>" . $lang->testtask->create, '', "class='btn btn-info'");?></p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div id='mainContent' class='main-table'>
|
||||
<table class='table has-sort-head' id='taskList'>
|
||||
<thead>
|
||||
@@ -111,5 +116,6 @@ $status = $this->session->testTaskVersionStatus;
|
||||
<div class='table-footer'><?php $pager->show('right', 'pagerjs');?></div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<script>$(function(){$('#<?php echo $status?>Tab').addClass('btn-active-text').append("<span class='label label-light label-badge'><?php echo $pager->recTotal;?></span>")})</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -12,3 +12,5 @@
|
||||
.col-module .chosen-container-single .chosen-single {border-radius: 2px 0 0 2px; border-right-width: 0; padding-right: 1px;}
|
||||
.col-module .chosen-container-active .chosen-single {border-right-width: 1px; padding-right: 0;}
|
||||
.col-shorts .chosen-container-single .chosen-single {border-radius: 0 2px 2px 0;}
|
||||
|
||||
#modulesTree li {padding-left: 20px;}
|
||||
@@ -33,7 +33,7 @@
|
||||
<div class="panel-title"><?php echo $title;?></div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<ul class='tree-lines' id='modulesTree' data-name='tree-<?php echo $viewType;?>'></ul>
|
||||
<ul id='modulesTree' data-name='tree-<?php echo $viewType;?>'></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -50,10 +50,10 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form id='childrenForm' method='post' target='hiddenwin' action='<?php echo $this->createLink('tree', 'manageChild', "root=$rootID&viewType=$viewType");?>'>
|
||||
<table class='table table-form'>
|
||||
<table class='table table-form table-auto'>
|
||||
<tr>
|
||||
<?php if($viewType != 'line'):?>
|
||||
<td class="text-middle text-nowrap text-right with-padding">
|
||||
<td class="text-middle text-right with-padding">
|
||||
<?php
|
||||
echo html::a($this->createLink('tree', 'browse', "root=$rootID&viewType=$viewType"), empty($root->name) ? '' : $root->name) . "<i class='icon icon-angle-right muted'></i>";
|
||||
foreach($parentModules as $module)
|
||||
@@ -143,10 +143,12 @@
|
||||
$(function()
|
||||
{
|
||||
var data = $.parseJSON('<?php echo helper::jsonEncode4Parse($tree);?>');
|
||||
var options = {
|
||||
var options =
|
||||
{
|
||||
initialState: 'preserve',
|
||||
data: data,
|
||||
sortable: {
|
||||
sortable:
|
||||
{
|
||||
lazy: true,
|
||||
nested: true,
|
||||
canMoveHere: function($ele, $target)
|
||||
@@ -234,6 +236,7 @@ $(function()
|
||||
var $tree = $('#modulesTree').tree(options);
|
||||
|
||||
var tree = $tree.data('zui.tree');
|
||||
console.log('tree', tree, options);
|
||||
if(<?php echo $currentModuleID ?>)
|
||||
if(0)
|
||||
{
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<div class='panel-title'><?php echo $title;?></div>
|
||||
</div>
|
||||
<div class='panel-body'>
|
||||
<ul class='tree-lines' id='modulesTree' data-name='tree-task'></ul>
|
||||
<ul id='modulesTree' data-name='tree-task'></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -40,9 +40,9 @@
|
||||
<div class='panel-title'><?php echo $lang->tree->manageTaskChild;?></div>
|
||||
</div>
|
||||
<div class='panel-body'>
|
||||
<table class='table table-form'>
|
||||
<table class='table table-form table-auto'>
|
||||
<tr>
|
||||
<td class="text-middle text-nowrap text-right with-padding">
|
||||
<td class="text-middle text-right with-padding">
|
||||
<?php
|
||||
echo html::a($this->createLink('tree', 'browsetask', "root={$root->id}&productID=$productID&viewType=task"), $root->name) . "<i class='icon icon-angle-right muted'></i>";
|
||||
foreach($parentModules as $module)
|
||||
|
||||
@@ -222,6 +222,7 @@ class upgradeModel extends model
|
||||
}
|
||||
|
||||
$this->deletePatch();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2133,12 +2134,15 @@ class upgradeModel extends model
|
||||
*/
|
||||
public function fixTaskAssignedTo()
|
||||
{
|
||||
$minParent = $this->dao->select('parent')->from(TABLE_TASK)->where('parent')->ne(0)->orderBy('parent')->limit(1)->fetch();
|
||||
if(empty($minParent)) return true;
|
||||
|
||||
$needUpdateTasks = $this->dao->select('id,parent,closedBy')->from(TABLE_TASK)
|
||||
->where('status')->eq('closed')
|
||||
->andWhere('assignedTo')->ne('closed')
|
||||
->andWhere('id')->ge($minParent)
|
||||
->fetchAll('id');
|
||||
|
||||
if(!$needUpdateTasks) return true;
|
||||
if(empty($needUpdateTasks)) return true;
|
||||
|
||||
$needUpdateParentTasks = array();
|
||||
$needUpdateChildTasks = array();
|
||||
|
||||
+2
-2
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