Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
@@ -607,7 +607,12 @@ class actionModel extends model
|
||||
->beginIF($projectID == 'all' or $productID == 'all')->andWhere("IF((objectType!= 'doc' && objectType!= 'doclib'), ($condition), '1=1')")->fi()
|
||||
->beginIF($docs and !$this->app->user->admin)->andWhere("IF(objectType != 'doc', '1=1', objectID " . helper::dbIN($docs) . ")")->fi()
|
||||
->beginIF($libs and !$this->app->user->admin)->andWhere("IF(objectType != 'doclib', '1=1', objectID " . helper::dbIN(array_keys($libs)) . ') ')->fi()
|
||||
->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
->beginIF($this->config->global->flow == 'onlyStory')->andWhere('objectType')->notin('bug,build,project,task,taskcase,testreport,testsuite,testtask')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('objectType')->notin('product,productplan,release,story,testcase,testreport,testsuite')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTest')->andWhere('objectType')->notin('project,productplan,release,story,task')->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
|
||||
if(!$actions) return array();
|
||||
|
||||
@@ -691,6 +696,9 @@ class actionModel extends model
|
||||
{
|
||||
return $actions = $this->dao->select('*')->from(TABLE_ACTION)
|
||||
->where($sql)
|
||||
->beginIF($this->config->global->flow == 'onlyStory')->andWhere('objectType')->notin('bug,build,project,task,taskcase,testreport,testsuite,testtask')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('objectType')->notin('product,productplan,release,story,testcase,testreport,testsuite')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTest')->andWhere('objectType')->notin('project,productplan,release,story,task')->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
|
||||
@@ -123,6 +123,9 @@ class blockModel extends model
|
||||
$blocks = $this->dao->select('*')->from(TABLE_BLOCK)->where('account')->eq($this->app->user->account)
|
||||
->andWhere('module')->eq($module)
|
||||
->andWhere('hidden')->eq(0)
|
||||
->beginIF($this->config->global->flow == 'onlyStory')->andWhere('source')->notin('project,qa')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('source')->notin('product,qa')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTest')->andWhere('source')->notin('product,project')->fi()
|
||||
->orderBy('`order`')
|
||||
->fetchAll('id');
|
||||
|
||||
|
||||
@@ -13,11 +13,15 @@
|
||||
<div id='assigntomeBlock'>
|
||||
<ul class="nav nav-secondary">
|
||||
<?php foreach($hasViewPriv as $type => $bool):?>
|
||||
<?php if($config->global->flow != 'full' && $config->global->flow != 'onlyTask' && $type == 'task') continue;?>
|
||||
<?php if($config->global->flow != 'full' && $config->global->flow != 'onlyTest' && $type == 'bug') continue;?>
|
||||
<li<?php if($type === 'todo') echo ' class="active"';?>><a data-tab href='#assigntomeTab-<?php echo $type;?>'><?php echo $lang->block->availableBlocks->$type;?></a></li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<?php foreach($hasViewPriv as $type => $bool):?>
|
||||
<?php if($config->global->flow != 'full' && $config->global->flow != 'onlyTask' && $type == 'task') continue;?>
|
||||
<?php if($config->global->flow != 'full' && $config->global->flow != 'onlyTest' && $type == 'bug') continue;?>
|
||||
<div class="tab-pane<?php if($type === 'todo') echo ' active';?>" id="assigntomeTab-<?php echo $type?>">
|
||||
<?php include "{$type}block.html.php";?>
|
||||
</div>
|
||||
@@ -29,4 +33,4 @@
|
||||
#assigntomeBlock .block-todoes {padding-top: 10px}
|
||||
#assigntomeBlock > .nav {position: absolute; top: -41px; left: 120px;}
|
||||
#assigntomeBlock .block-todoes .todoes-form{top: -55px;}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -91,7 +91,7 @@ class bug extends control
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Set menu and save session. */
|
||||
$this->bug->setMenu($this->products, $productID, $branch, $moduleID);
|
||||
$this->bug->setMenu($this->products, $productID, $branch, $moduleID, $browseType, $orderBy);
|
||||
$this->session->set('bugList', $this->app->getURI(true));
|
||||
|
||||
/* Process the order by field. */
|
||||
|
||||
@@ -4,9 +4,6 @@ $(function()
|
||||
|
||||
if(flow == 'onlyTest')
|
||||
{
|
||||
toggleSearch();
|
||||
$(".export").modalTrigger({width:650, type:'iframe'});
|
||||
|
||||
$('#subNavbar > .nav > li').removeClass('active');
|
||||
$('#subNavbar > .nav > li[data-id=' + browseType + ']').addClass('active');
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
$(function()
|
||||
{
|
||||
$('#subNavbar a[data-toggle=dropdown]').parent().addClass('dropdown dropdown-hover');
|
||||
|
||||
if(typeof page == 'undefined') page = '';
|
||||
if(page == 'create')
|
||||
{
|
||||
@@ -20,6 +22,14 @@ $(function()
|
||||
oldProductID = $('#product').val();
|
||||
$("#story, #task, #mailto").chosen(defaultChosenOptions);
|
||||
}
|
||||
|
||||
if(flow != 'full')
|
||||
{
|
||||
$('.querybox-toggle').click(function()
|
||||
{
|
||||
$(this).parent().toggleClass('active');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
+87
-8
@@ -15,22 +15,71 @@ class bugModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menu.
|
||||
*
|
||||
* @param array $products
|
||||
* @param int $productID
|
||||
*
|
||||
* @param array $products
|
||||
* @param int $productID
|
||||
* @param int $branch
|
||||
* @param int $moduleID
|
||||
* @param string $browseType
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($products, $productID, $branch = 0, $moduleID = 0)
|
||||
public function setMenu($products, $productID, $branch = 0, $moduleID = 0, $browseType = 'unclosed', $orderBy = '')
|
||||
{
|
||||
$this->loadModel('product')->setMenu($products, $productID, $branch, $moduleID, 'bug');
|
||||
$selectHtml = $this->product->select($products, $productID, 'bug', 'browse', '', $branch, $moduleID, 'bug');
|
||||
|
||||
$this->app->loadLang('qa');
|
||||
$productIndex = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
$productIndex .= $selectHtml;
|
||||
$pageNav = '';
|
||||
$pageActions = '';
|
||||
if($this->config->global->flow == 'full')
|
||||
{
|
||||
$this->app->loadLang('qa');
|
||||
$pageNav = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if(common::hasPriv('bug', 'report'))
|
||||
{
|
||||
$link = helper::createLink('bug', 'report', "productID=$productID&browseType=$browseType&branchID=$branch&moduleID=$moduleID");
|
||||
$pageActions .= html::a($link, "<i class='icon-common-report icon-bar-chart muted'></i> <span class='text'>" . $this->lang->bug->report->common . '</span>', '', "class='btn btn-link'");
|
||||
}
|
||||
if(common::hasPriv('bug', 'export'))
|
||||
{
|
||||
$link = helper::createLink('bug', 'export', "productID=$productID&orderBy=$orderBy");
|
||||
$pageActions .= "<div class='btn-group'>";
|
||||
$pageActions .= "<button type='button' class='btn btn-link dropdown-toggle' data-toggle='dropdown'>";
|
||||
$pageActions .= "<i class='icon icon-export muted'></i><span class='text'>{$this->lang->export}</span><span class='caret'></span></button>";
|
||||
$pageActions .= '</button>';
|
||||
$pageActions .= "<ul class='dropdown-menu' id='exportActionMenu'>";
|
||||
$pageActions .= '<li>' . html::a($link, $this->lang->bug->export, '', "class='export'") . '</li>';
|
||||
$pageActions .= '</ul>';
|
||||
$pageActions .= '</div>';
|
||||
}
|
||||
if(common::hasPriv('bug', 'batchCreate'))
|
||||
{
|
||||
$link = helper::createLink('bug', 'batchCreate', "productID=$productID&branch=$branch&projectID=0&moduleID=$moduleID");
|
||||
$pageActions .= html::a($link, "<i class='icon icon-plus'></i>" . $this->lang->bug->batchCreate, '', "class='btn btn-secondary'");
|
||||
}
|
||||
if(commonModel::isTutorialMode())
|
||||
{
|
||||
$wizardParams = helper::safe64Encode("productID=$productID&branch=$branch&extra=moduleID=$moduleID");
|
||||
$link = helper::createLink('tutorial', 'wizard', "module=bug&method=create¶ms=$wizardParams");
|
||||
$pageActions .= html::a($link, "<i class='icon-plus'></i>" . $this->lang->bug->create, '', "class='btn btn-primary btn-bug-create'");
|
||||
}
|
||||
else
|
||||
{
|
||||
if(common::hasPriv('bug', 'create'))
|
||||
{
|
||||
$link = helper::createLink('bug', 'create', "productID=$productID&branch=$branch&extra=moduleID=$moduleID");
|
||||
$pageActions .= html::a($link, "<i class='icon icon-plus'></i>" . $this->lang->bug->create, '', "class='btn btn-primary'");
|
||||
}
|
||||
}
|
||||
}
|
||||
$pageNav .= $selectHtml;
|
||||
|
||||
$this->lang->modulePageNav = $productIndex;
|
||||
$this->lang->modulePageNav = $pageNav;
|
||||
$this->lang->modulePageActions = $pageActions;
|
||||
foreach($this->lang->bug->menu as $key => $menu)
|
||||
{
|
||||
if($this->config->global->flow != 'onlyTest')
|
||||
@@ -46,6 +95,36 @@ class bugModel extends model
|
||||
}
|
||||
common::setMenuVars($this->lang->bug->menu, $key, $replace);
|
||||
}
|
||||
if($this->config->global->flow != 'full')
|
||||
{
|
||||
$tmpMenu = (array)$this->lang->bug->menu;
|
||||
$moreMenu = array_slice($tmpMenu, -6);
|
||||
$tmpMenu = array_slice($tmpMenu, 0, count($tmpMenu) - 6);
|
||||
if($moreMenu)
|
||||
{
|
||||
$moreKey = 'more';
|
||||
$moreLabel = $this->lang->more;
|
||||
if(strpos(",unconfirmed,assigntonull,longlifebugs,postponedbugs,overduebugs,needconfirm,", ",$browseType,") !== false)
|
||||
{
|
||||
$moreKey = $browseType;
|
||||
$moreLabel = $this->lang->bug->featureBar['browse'][$browseType];
|
||||
}
|
||||
$more = "<a data-toggle='dropdown'>{$moreLabel}<span class='caret'></span></a>";
|
||||
$more .= "<ul class='dropdown-menu'>";
|
||||
foreach($moreMenu as $menu)
|
||||
{
|
||||
list($label, $module, $method, $params) = explode('|', $menu);
|
||||
if(common::hasPriv($module, $method))
|
||||
{
|
||||
$more .= '<li>' . html::a(helper::createLink($module, $method, $params), $label) . '</li>';
|
||||
}
|
||||
}
|
||||
$more .= '</ul>';
|
||||
$tmpMenu[$moreKey] = $more;
|
||||
}
|
||||
if($this->app->getMethodName() != 'view') $tmpMenu['bysearch'] = "<a class='querybox-toggle' id='bysearchTab'><i class='icon icon-search muted'> </i>{$this->lang->bug->byQuery}</a>";
|
||||
$this->lang->bug->menu = (object)$tmpMenu;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
if($field) $visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->bug->create->requiredFields) as $field)
|
||||
foreach(explode(',', $config->bug->create->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
if($field)$visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->bug->edit->requiredFields) as $field)
|
||||
foreach(explode(',', $config->bug->edit->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
|
||||
@@ -16,61 +16,13 @@ include '../../common/view/datatable.fix.html.php';
|
||||
js::set('browseType', $browseType);
|
||||
js::set('moduleID', $moduleID);
|
||||
js::set('bugBrowseType', ($browseType == 'bymodule' and $this->session->bugBrowseType == 'bysearch') ? 'all' : $this->session->bugBrowseType);
|
||||
js::set('flow', $this->config->global->flow);
|
||||
js::set('productID', $productID);
|
||||
js::set('branch', $branch);
|
||||
js::set('flow', $config->global->flow);
|
||||
js::set('productID', $productID);
|
||||
js::set('branch', $branch);
|
||||
$currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($browseType, array_keys($lang->bug->mySelects)) ? $browseType : '';
|
||||
?>
|
||||
<?php if($config->global->flow == 'full'):?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<?php if($this->config->global->flow == 'onlyTest'):?>
|
||||
<div id='featurebar'>
|
||||
<ul class='submenu hidden'>
|
||||
<li id='moreMenus' class='hidden'>
|
||||
<a href='###' class='dropdown-toggle' data-toggle='dropdown'>
|
||||
<?php echo $lang->more;?> <span class='caret'></span>
|
||||
</a>
|
||||
<ul class='dropdown-menu right'>
|
||||
</ul>
|
||||
</li>
|
||||
<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i> <?php echo $lang->bug->byQuery;?></a></li>
|
||||
<li class='right'>
|
||||
<div class='btn-group' id='createActionMenu'>
|
||||
<?php
|
||||
$misc = common::hasPriv('bug', 'create') ? "class='btn btn-primary'" : "class='btn btn-primary disabled'";
|
||||
$link = common::hasPriv('bug', 'create') ? $this->createLink('bug', 'create', "productID=$productID&branch=$branch&extra=moduleID=$moduleID") : '#';
|
||||
echo html::a($link, "<i class='icon icon-plus'></i>" . $lang->bug->create, '', $misc);
|
||||
|
||||
$misc = common::hasPriv('bug', 'batchCreate') ? '' : "disabled";
|
||||
$link = common::hasPriv('bug', 'batchCreate') ? $this->createLink('bug', 'batchCreate', "productID=$productID&branch=$branch&projectID=0&moduleID=$moduleID") : '#';
|
||||
?>
|
||||
<button type='button' class='btn btn-primary dropdown-toggle <?php echo $misc?>' data-toggle='dropdown'>
|
||||
<span class='caret'></span>
|
||||
</button>
|
||||
<ul class='dropdown-menu right'>
|
||||
<?php echo "<li>" . html::a($link, $lang->bug->batchCreate, '', "class='$misc'") . "</li>";?>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li class='right'>
|
||||
<?php common::printLink('bug', 'report', "productID=$productID&browseType=$browseType&branchID=$branch&moduleID=$moduleID", "<i class='icon icon-bar-chart muted'></i> " . $lang->bug->report->common); ?>
|
||||
</li>
|
||||
<li class='right'>
|
||||
<a href='###' class='dropdown-toggle' data-toggle='dropdown'>
|
||||
<i class='icon-download-alt'></i> <?php echo $lang->export ?>
|
||||
<span class='caret'></span>
|
||||
</a>
|
||||
<ul class='dropdown-menu' id='exportActionMenu'>
|
||||
<?php
|
||||
$misc = common::hasPriv('bug', 'export') ? "class='export'" : "class=disabled";
|
||||
$link = common::hasPriv('bug', 'export') ? $this->createLink('bug', 'export', "productID=$productID&orderBy=$orderBy") : '#';
|
||||
echo "<li>" . html::a($link, $lang->bug->export, '', $misc) . "</li>";
|
||||
?>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div id='queryBox' class='<?php if($browseType =='bysearch') echo 'show';?>'></div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
<?php
|
||||
@@ -102,7 +54,6 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
|
||||
foreach($menus as $menuItem)
|
||||
{
|
||||
if(isset($menuItem->hidden) and $menuItem->name != 'QUERY') continue;
|
||||
if($this->config->global->flow == 'onlyTest' and $menuItem->name == 'needconfirm') continue;
|
||||
|
||||
$menuBrowseType = strpos($menuItem->name, 'QUERY') === 0 ? 'bySearch' : $menuItem->name;
|
||||
$label = "<span class='text'>{$menuItem->text}</span>";
|
||||
@@ -195,8 +146,8 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div id="mainContent" class="main-row fade">
|
||||
<div class="side-col" id="sidebar">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
@@ -221,7 +172,7 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
|
||||
</div>
|
||||
<?php
|
||||
$datatableId = $this->moduleName . ucfirst($this->methodName);
|
||||
$useDatatable = (isset($this->config->datatable->$datatableId->mode) and $this->config->datatable->$datatableId->mode == 'datatable');
|
||||
$useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable');
|
||||
$vars = "productID=$productID&branch=$branch&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";
|
||||
if($useDatatable) include '../../common/view/datatable.html.php';
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ js::set('confirmDeleteTemplate', $lang->bug->confirmDeleteTemplate);
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $showProject = (strpos(",$showFields,", ',project,') !== false && $this->config->global->flow != 'onlyTest');?>
|
||||
<?php $showProject = (strpos(",$showFields,", ',project,') !== false && $config->global->flow != 'onlyTest');?>
|
||||
<?php if($showProject):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->project;?></th>
|
||||
@@ -148,7 +148,7 @@ js::set('confirmDeleteTemplate', $lang->bug->confirmDeleteTemplate);
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->global->flow != 'onlyTest' && $showProject):?>
|
||||
<?php if($config->global->flow != 'onlyTest' && $showProject):?>
|
||||
<?php $showOS = strpos(",$showFields,", ',os,') !== false;?>
|
||||
<?php $showBrowser = strpos(",$showFields,", ',browser,') !== false;?>
|
||||
<tr>
|
||||
@@ -210,13 +210,13 @@ js::set('confirmDeleteTemplate', $lang->bug->confirmDeleteTemplate);
|
||||
$showStory = strpos(",$showFields,", ',story,') !== false;
|
||||
$showTask = strpos(",$showFields,", ',task,') !== false;
|
||||
?>
|
||||
<?php if($showStory and $this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($showStory and $config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->story;?></th>
|
||||
<td colspan='2'><div id='storyIdBox' class='input-group'><?php echo html::select('story', empty($stories) ? '' : $stories, $storyID, "class='form-control chosen'");?></div></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($showTask and $this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($showTask and $config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->task;?></th>
|
||||
<td colspan='2'><div id='taskIdBox' class='input-group'> <?php echo html::select('task', '', $taskID, "class='form-control chosen'") . html::hidden('oldTaskID', $taskID);?></div></td>
|
||||
|
||||
@@ -115,7 +115,7 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->productplan;?></th>
|
||||
<td>
|
||||
@@ -184,7 +184,7 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><?php echo $lang->bug->legendPrjStoryTask;?></div>
|
||||
<table class='table table-form'>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<tr>
|
||||
<td style='padding: 10px; background-color: #F8FAFE; border: none; font-size: 14px; font-weight: 500; border-bottom: 1px solid #e5e5e5;'>
|
||||
<?php $color = empty($bug->color) ? '#333' : $bug->color;?>
|
||||
<?php echo html::a(zget($this->config->mail, 'domain', common::getSysURL()) . helper::createLink('bug', 'view', "bugID=$bug->id"), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>
|
||||
<?php echo html::a(zget($config->mail, 'domain', common::getSysURL()) . helper::createLink('bug', 'view', "bugID=$bug->id"), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<?php if($bug->toStory != 0):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->toStory;?></th>
|
||||
@@ -328,7 +328,7 @@ $convertParams = "productID=$productID&branch=$bug->branch&moduleID=0&from=bug&b
|
||||
common::printIcon('bug', 'close', $params, $bug, 'button', '', '', 'text-danger iframe showinonlybody', true);
|
||||
common::printIcon('bug', 'activate', $params, $bug, 'button', '', '', 'text-success iframe showinonlybody', true);
|
||||
|
||||
if($this->config->global->flow != 'onlyTest') common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', $lang->icons['story']);
|
||||
if($config->global->flow != 'onlyTest') common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', $lang->icons['story']);
|
||||
common::printIcon('bug', 'createCase', $convertParams, $bug, 'button', 'sitemap');
|
||||
|
||||
echo "<div class='divider'></div>";
|
||||
|
||||
@@ -58,3 +58,4 @@ $lang->build->placeholder->filePath = ' 該版本軟件包下載存儲地址';
|
||||
|
||||
$lang->build->action = new stdclass();
|
||||
$lang->build->action->buildopened = '$date, 由 <strong>$actor</strong> 創建版本 <strong>$extra</strong>。' . "\n";
|
||||
$lang->backhome = '返回';
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<td colspan="3" class="text-center form-actions">
|
||||
<?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?>
|
||||
<?php echo html::backButton('', '', 'btn btn-wide');?>
|
||||
<?php echo $this->config->global->flow != 'onlyTest' ? html::hidden('project', $build->project) : '';?>
|
||||
<?php echo $config->global->flow != 'onlyTest' ? html::hidden('project', $build->project) : '';?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('confirmUnlinkStory', $lang->build->confirmUnlinkStory)?>
|
||||
<?php js::set('confirmUnlinkBug', $lang->build->confirmUnlinkBug)?>
|
||||
<?php js::set('flow', $this->config->global->flow)?>
|
||||
<?php js::set('flow', $config->global->flow)?>
|
||||
<?php if(isonlybody()):?>
|
||||
<style>
|
||||
#stories .action{display:none;}
|
||||
@@ -38,7 +38,7 @@ tbody tr td:first-child input{display:none;}
|
||||
<?php
|
||||
if(!$build->deleted)
|
||||
{
|
||||
if($this->config->global->flow != 'onlyTest')
|
||||
if($config->global->flow != 'onlyTest')
|
||||
{
|
||||
if(common::hasPriv('build', 'linkStory')) echo html::a(inlink('view', "buildID=$build->id&type=story&link=true"), '<i class="icon-link"></i> ' . $lang->build->linkStory, '', "class='btn btn-link'");
|
||||
if(common::hasPriv('build', 'linkBug')) echo html::a(inlink('view', "buildID=$build->id&type=bug&link=true"), '<i class="icon-bug"></i> ' . $lang->build->linkBug, '', "class='btn btn-link'");
|
||||
@@ -50,7 +50,7 @@ tbody tr td:first-child input{display:none;}
|
||||
</div>
|
||||
</div>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<?php if($this->config->global->flow == 'onlyTest'):?>
|
||||
<?php if($config->global->flow == 'onlyTest'):?>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><?php echo $lang->build->desc;?></div>
|
||||
<div class='detail-content article-content'><?php echo $build->desc;?></div>
|
||||
@@ -314,7 +314,7 @@ tbody tr td:first-child input{display:none;}
|
||||
<th><?php echo $lang->build->filePath;?></th>
|
||||
<td style='word-break:break-all;'><?php echo html::a($build->filePath, $build->filePath, '_blank');?></td>
|
||||
</tr>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th style="vertical-align:top"><?php echo $lang->build->desc;?></th>
|
||||
<td>
|
||||
@@ -329,7 +329,7 @@ tbody tr td:first-child input{display:none;}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $build->files, 'fieldset' => 'true'));?>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
@@ -339,7 +339,7 @@ tbody tr td:first-child input{display:none;}
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<?php js::set('param', helper::safe64Decode($param))?>
|
||||
<?php js::set('link', $link)?>
|
||||
<?php js::set('buildID', $build->id)?>
|
||||
|
||||
+36
-35
@@ -160,13 +160,14 @@ $lang->exportTypeList['selected'] = 'Selected';
|
||||
$lang->lang = 'Language';
|
||||
|
||||
/* 风格列表。*/
|
||||
$lang->themes['default'] = 'ZenTao Blue (default)';
|
||||
$lang->themes['green'] = 'Green';
|
||||
$lang->themes['red'] = 'Red';
|
||||
$lang->themes['purple'] = 'Purple';
|
||||
$lang->themes['pink'] = 'Pink';
|
||||
$lang->themes['blackberry'] = 'Blackberry';
|
||||
$lang->themes['classic'] = 'Classic';
|
||||
$lang->theme = 'Theme';
|
||||
$lang->themes['default'] = 'ZenTao Blue (default)';
|
||||
$lang->themes['green'] = 'Green';
|
||||
$lang->themes['red'] = 'Red';
|
||||
$lang->themes['purple'] = 'Purple';
|
||||
$lang->themes['pink'] = 'Pink';
|
||||
$lang->themes['blackberry'] = 'Blackberry';
|
||||
$lang->themes['classic'] = 'Classic';
|
||||
|
||||
/* 首页菜单设置。*/
|
||||
$lang->index = new stdclass();
|
||||
@@ -634,6 +635,8 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
@@ -664,14 +667,13 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
@@ -713,32 +715,34 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->unclosed = 'Open|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'AssignedToMe|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->unclosed = 'Open|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = 'CreatedByMe|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'AssignedToMe|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = 'ResolvedByMe|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = 'ToBeClosed|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Unresolved|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->unconfirmed = 'Unconfirmed|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->menu->assigntonull = 'Unassigned|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Unresolved|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->toclosed = 'ToBeClosed|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->longlifebugs = 'Pending|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->menu->postponedbugs = 'PostPoned|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->menu->overduebugs = 'Overdue|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->menu->needconfirm = 'NeedConfirm|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'unclosed';
|
||||
$lang->bug->menuOrder[15] = 'all';
|
||||
$lang->bug->menuOrder[20] = 'assigntome';
|
||||
$lang->bug->menuOrder[25] = 'openedbyme';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'unresolved';
|
||||
$lang->bug->menuOrder[40] = 'assigntonull';
|
||||
$lang->bug->menuOrder[45] = 'unresolved';
|
||||
$lang->bug->menuOrder[50] = 'toclosed';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
@@ -753,30 +757,26 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> Create Suite|testsuite|create|productID=%s", 'float' => 'right');
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
$lang->testsuite->menuOrder[10] = 'create';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = 'All|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$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';
|
||||
$lang->testtask->menu->done = 'Done|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->totalStatus = 'All|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->report = array('link' => 'Report|testreport|browse');
|
||||
$lang->testtask->menu->create = array('link' => "<i class='icon-plus'></i> Create|testtask|create|productID=%s", 'float' => 'right');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'wait';
|
||||
$lang->testtask->menuOrder[20] = 'doing';
|
||||
$lang->testtask->menuOrder[25] = 'blocked';
|
||||
$lang->testtask->menuOrder[30] = 'done';
|
||||
$lang->testtask->menuOrder[35] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
$lang->testtask->menuOrder[45] = 'create';
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
@@ -824,5 +824,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
@@ -635,6 +635,8 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
@@ -665,14 +667,13 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
@@ -714,32 +715,34 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->unclosed = '未关闭|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->assigntome = '指派给我|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->unclosed = '未关闭|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = '由我创建|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = '指派给我|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = '由我解决|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = '待关闭|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = '未解决|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->unconfirmed = '未确认|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->menu->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->menu->unresolved = '未解决|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->toclosed = '待关闭|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->longlifebugs = '久未处理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->menu->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->menu->overduebugs = '过期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->menu->needconfirm = '需求变动|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'unclosed';
|
||||
$lang->bug->menuOrder[15] = 'all';
|
||||
$lang->bug->menuOrder[20] = 'assigntome';
|
||||
$lang->bug->menuOrder[25] = 'openedbyme';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'unresolved';
|
||||
$lang->bug->menuOrder[40] = 'assigntonull';
|
||||
$lang->bug->menuOrder[45] = 'unresolved';
|
||||
$lang->bug->menuOrder[50] = 'toclosed';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
@@ -754,30 +757,26 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> 建套件|testsuite|create|productID=%s", 'float' => 'right');
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
$lang->testsuite->menuOrder[10] = 'create';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = '所有|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$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';
|
||||
$lang->testtask->menu->done = '已测版本|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->totalStatus = '全部|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->report = array('link' => '报告|testreport|browse', 'alias' => 'view,create,edit');
|
||||
$lang->testtask->menu->create = array('link' => "<i class='icon-plus'></i> 提交测试|testtask|create|productID=%s", 'float' => 'right');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'wait';
|
||||
$lang->testtask->menuOrder[20] = 'doing';
|
||||
$lang->testtask->menuOrder[25] = 'blocked';
|
||||
$lang->testtask->menuOrder[30] = 'done';
|
||||
$lang->testtask->menuOrder[35] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
$lang->testtask->menuOrder[45] = 'create';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
@@ -825,5 +824,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
@@ -635,6 +635,8 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
@@ -665,14 +667,13 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
@@ -714,32 +715,34 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->unclosed = '未關閉|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->assigntome = '指派給我|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->unclosed = '未關閉|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = '由我創建|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = '指派給我|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = '由我解決|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = '待關閉|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = '未解決|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->unconfirmed = '未確認|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->menu->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->menu->unresolved = '未解決|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->toclosed = '待關閉|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->longlifebugs = '久未處理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->menu->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->menu->overduebugs = '過期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->menu->needconfirm = '需求變動|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'unclosed';
|
||||
$lang->bug->menuOrder[15] = 'all';
|
||||
$lang->bug->menuOrder[20] = 'assigntome';
|
||||
$lang->bug->menuOrder[25] = 'openedbyme';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'unresolved';
|
||||
$lang->bug->menuOrder[40] = 'assigntonull';
|
||||
$lang->bug->menuOrder[45] = 'unresolved';
|
||||
$lang->bug->menuOrder[50] = 'toclosed';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
@@ -754,30 +757,26 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> 建套件|testsuite|create|productID=%s", 'float' => 'right');
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
$lang->testsuite->menuOrder[10] = 'create';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = '所有|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$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';
|
||||
$lang->testtask->menu->done = '已測版本|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->totalStatus = '全部|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->report = array('link' => '報告|testreport|browse', 'alias' => 'view,create,edit');
|
||||
$lang->testtask->menu->create = array('link' => "<i class='icon-plus'></i> 提交測試|testtask|create|productID=%s", 'float' => 'right');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'wait';
|
||||
$lang->testtask->menuOrder[20] = 'doing';
|
||||
$lang->testtask->menuOrder[25] = 'blocked';
|
||||
$lang->testtask->menuOrder[30] = 'done';
|
||||
$lang->testtask->menuOrder[35] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
$lang->testtask->menuOrder[45] = 'create';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
@@ -825,5 +824,6 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ $(function()
|
||||
var $btnToolbar = $('#main .table-header .btn-toolbar:first');
|
||||
if($btnToolbar.length > 0)
|
||||
{
|
||||
<?php $mode = isset($this->config->datatable->$datatableId->mode) ? $this->config->datatable->$datatableId->mode : 'table';?>
|
||||
<?php $mode = isset($config->datatable->$datatableId->mode) ? $config->datatable->$datatableId->mode : 'table';?>
|
||||
// $btnToolbar.append("<a href=\"javascript:saveDatatableConfig('mode', 'table', true);\" class='btn btn-link <?php echo $mode == 'table' ? 'btn-active-line' : '';?>'><?php echo $lang->datatable->table?></a>");
|
||||
// $btnToolbar.append("<a href=\"javascript:saveDatatableConfig('mode', 'datatable', true);\" class='btn btn-link <?php echo $mode == 'datatable' ? 'btn-active-line' : '';?>'><?php echo $lang->datatable->datatable?></a>");
|
||||
$btnToolbar.append("<a id='tableCustomBtn' class='btn btn-link' title='<?php echo $lang->datatable->custom?>' href='<?php echo $this->createLink('datatable', 'ajaxCustom', 'id=' . $this->moduleName . '&method=' . $this->methodName)?>' data-toggle='modal' data-type='ajax'><i class='icon icon-cog'></i></a>");
|
||||
|
||||
@@ -55,13 +55,13 @@ $(function()
|
||||
}, 90 * 1000);
|
||||
})
|
||||
|
||||
<?php if(!empty($this->config->sso->redirect)):?>
|
||||
<?php if(!empty($config->sso->redirect)):?>
|
||||
<?php
|
||||
$ranzhiAddr = $this->config->sso->addr;
|
||||
$ranzhiAddr = $config->sso->addr;
|
||||
$ranzhiURL = substr($ranzhiAddr, 0, strrpos($ranzhiAddr, '/sys/'));
|
||||
?>
|
||||
<?php if(!empty($ranzhiURL)):?>
|
||||
$(function(){ redirect('<?php echo $ranzhiURL?>', '<?php echo $this->config->sso->code?>'); });
|
||||
$(function(){ redirect('<?php echo $ranzhiURL?>', '<?php echo $config->sso->code?>'); });
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
</script>
|
||||
|
||||
@@ -13,12 +13,12 @@ if($extHookFiles) foreach($extHookFiles as $extHookFile) include $extHookFile;
|
||||
?>
|
||||
<?php if(empty($_GET['onlybody']) or $_GET['onlybody'] != 'yes'):?>
|
||||
<?php $this->app->loadConfig('sso');?>
|
||||
<?php if(!empty($this->config->sso->redirect)) js::set('ssoRedirect', $this->config->sso->redirect);?>
|
||||
<?php if(!empty($config->sso->redirect)) js::set('ssoRedirect', $config->sso->redirect);?>
|
||||
<header id='header'>
|
||||
<div id='mainHeader'>
|
||||
<div class='container'>
|
||||
<hrgroup id='heading'>
|
||||
<?php if(empty($this->config->sso->redirect)):?>
|
||||
<?php if(empty($config->sso->redirect)):?>
|
||||
<?php $heading = sprintf($lang->welcome, $app->company->name);?>
|
||||
<h1 id='companyname' title='<?php echo $heading . strlen($heading);?>'<?php if(strlen($heading) > 36) echo " class='long-name'" ?>><?php echo html::a(helper::createLink('index'), $heading);?></h1>
|
||||
<?php endif;?>
|
||||
@@ -45,7 +45,7 @@ if($extHookFiles) foreach($extHookFiles as $extHookFile) include $extHookFile;
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
if(!empty($this->config->sso->redirect))
|
||||
if(!empty($config->sso->redirect))
|
||||
{
|
||||
css::import($defaultTheme . 'bindranzhi.css');
|
||||
js::import($jsRoot . 'bindranzhi.js');
|
||||
@@ -54,5 +54,5 @@ if($extHookFiles) foreach($extHookFiles as $extHookFile) include $extHookFile;
|
||||
</header>
|
||||
|
||||
<?php endif;?>
|
||||
<main id='main' <?php if(!empty($this->config->sso->redirect)) echo "class='ranzhiFixedTfootAction'";?> >
|
||||
<main id='main' <?php if(!empty($config->sso->redirect)) echo "class='ranzhiFixedTfootAction'";?> >
|
||||
<div class='container'>
|
||||
|
||||
@@ -4,7 +4,7 @@ js::import($jsRoot . 'jquery/validation/min.js');
|
||||
?>
|
||||
<style>label.error {color:red}</style>
|
||||
<script>
|
||||
requiredFields = "<?php echo isset($this->config->{$this->app->getModuleName()}->{$this->app->getMethodName()}->requiredFields) ? $this->config->{$this->app->getModuleName()}->{$this->app->getMethodName()}->requiredFields : '';?>";
|
||||
requiredFields = "<?php echo isset($config->{$this->app->getModuleName()}->{$this->app->getMethodName()}->requiredFields) ? $config->{$this->app->getModuleName()}->{$this->app->getMethodName()}->requiredFields : '';?>";
|
||||
$(document).ready(function()
|
||||
{
|
||||
if(typeOf requiredFields == 'unDefined') return;
|
||||
|
||||
@@ -109,7 +109,7 @@ js::set('confirmDelete', $lang->user->confirmDelete);
|
||||
{
|
||||
echo html::a('javascript:;', "<i class='icon icon-unlink'></i>", '', "class='btn disabled'");
|
||||
}
|
||||
if((strtotime(date('Y-m-d H:i:s')) - strtotime($user->locked)) < $this->config->user->lockMinutes * 60)
|
||||
if((strtotime(date('Y-m-d H:i:s')) - strtotime($user->locked)) < $config->user->lockMinutes * 60)
|
||||
{
|
||||
common::printIcon('user', 'unlock', "userID=$user->account", '', 'list', 'unlock', "hiddenwin");
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<?php endforeach;?>
|
||||
<div class="input-control space w-150px"><?php echo html::select('account', $users, $account, 'onchange=changeUser(this.value) class="form-control chosen"');?></div>
|
||||
<div class="input-control space w-150px"><?php echo html::select('product', $products, $product, 'onchange=changeProduct(this.value) class="form-control chosen"');?></div>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class="input-control space w-150px"><?php echo html::select('project', $projects, $project, 'onchange=changeProject(this.value) class="form-control chosen"'); ?></div>
|
||||
<?php endif;?>
|
||||
<a class="btn btn-link querybox-toggle" id="bysearchTab"><i class="icon icon-search muted"></i> <?php echo $lang->action->dynamic->search;?></a>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<nav id='modulemenu'>
|
||||
<ul></ul>
|
||||
</nav>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<nav id='featurebar'>
|
||||
<ul></ul>
|
||||
</nav>
|
||||
|
||||
@@ -51,8 +51,8 @@
|
||||
<div class="row row-grid files-grid" data-size="300">
|
||||
<?php foreach($libs as $libID => $lib):?>
|
||||
<?php if($libID == 'project' and $from != 'doc') continue;?>
|
||||
<?php if(strpos($this->config->doc->custom->objectLibs, 'files') === false && $libID == 'files') continue;?>
|
||||
<?php if(strpos($this->config->doc->custom->objectLibs, 'customFiles') === false && isset($lib->main) && !$lib->main) continue;?>
|
||||
<?php if(strpos($config->doc->custom->objectLibs, 'files') === false && $libID == 'files') continue;?>
|
||||
<?php if(strpos($config->doc->custom->objectLibs, 'customFiles') === false && isset($lib->main) && !$lib->main) continue;?>
|
||||
|
||||
<?php $libLink = inlink('browse', "libID=$libID&browseType=all¶m=0&orderBy=id_desc&from=$from");?>
|
||||
<?php if($libID == 'project') $libLink = inlink('allLibs', "type=project&product=$object->id");?>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<div class="btn-group">
|
||||
<form class='input-control has-icon-right table-col' method='get'>
|
||||
<?php
|
||||
if($this->config->requestType == 'GET')
|
||||
if($config->requestType == 'GET')
|
||||
{
|
||||
echo html::hidden('m', 'doc');
|
||||
echo html::hidden('f', 'showFiles');
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
<td colspan='2' class='text-center'>
|
||||
<?php
|
||||
echo html::submitButton();
|
||||
if($this->config->mail->turnon and $mailExist) echo html::linkButton($lang->mail->test, inlink('test'));
|
||||
if($config->mail->turnon and $mailExist) echo html::linkButton($lang->mail->test, inlink('test'));
|
||||
echo html::linkButton($lang->mail->reset, inlink('reset'));
|
||||
if(common::hasPriv('mail', 'browse') and !empty($config->mail->async) and !empty($config->global->cron)) echo html::linkButton($lang->mail->browse, inlink('browse'));
|
||||
?>
|
||||
|
||||
@@ -53,9 +53,9 @@
|
||||
<td colspan='2' class='text-center'>
|
||||
<?php
|
||||
echo html::submitButton();
|
||||
if($this->config->mail->turnon and $mailExist) echo html::linkButton($lang->mail->test, inlink('test'));
|
||||
if($config->mail->turnon and $mailExist) echo html::linkButton($lang->mail->test, inlink('test'));
|
||||
echo html::linkButton($lang->mail->closeSendCloud, inlink('reset'));
|
||||
if($this->config->mail->turnon and common::hasPriv('mail', 'sendcloudUser')) echo html::linkButton($lang->mail->sendcloudUser, inlink('sendcloudUser'));
|
||||
if($config->mail->turnon and common::hasPriv('mail', 'sendcloudUser')) echo html::linkButton($lang->mail->sendcloudUser, inlink('sendcloudUser'));
|
||||
if(common::hasPriv('mail', 'browse') and !empty($config->mail->async) and !empty($config->global->cron)) echo html::linkButton($lang->mail->browse, inlink('browse'));
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton('', '', 'btn btn-primary btn-wide');?>
|
||||
<?php
|
||||
if($this->config->mail->turnon and $mailExist) echo html::a(inlink('test'), $lang->mail->test, '', "class='btn btn-wide'");
|
||||
if($config->mail->turnon and $mailExist) echo html::a(inlink('test'), $lang->mail->test, '', "class='btn btn-wide'");
|
||||
echo html::a(inlink('reset'), $lang->mail->reset, '', "class='btn btn-wide'");
|
||||
if(common::hasPriv('mail', 'browse') and !empty($config->mail->async) and !empty($config->global->cron)) echo html::a(inlink('browse'), $lang->mail->browse, '', "class='btn btn-wide'");
|
||||
?>
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'glasses');
|
||||
common::printIcon('story', 'close', $vars, $story, 'list', 'off', '', 'iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $story, 'list');
|
||||
if($this->config->global->flow != 'onlyStory') common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap');
|
||||
if($config->global->flow != 'onlyStory') common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -52,27 +52,39 @@ class productModel extends model
|
||||
$selectHtml = $this->select($products, $productID, $currentModule, $currentMethod, $extra, $branch, $module, $moduleType);
|
||||
|
||||
$label = $this->lang->product->index;
|
||||
if($this->config->global->flow != 'full') $label = $this->lang->product->all;
|
||||
if($currentModule == 'product' && $currentMethod == 'all') $label = $this->lang->product->all;
|
||||
if($currentModule == 'product' && $currentMethod == 'create') $label = $this->lang->product->create;
|
||||
|
||||
$productIndex = '<div class="btn-group angle-btn"><div class="btn-group"><button data-toggle="dropdown" type="button" class="btn">' . $label . ' <span class="caret"></span></button>';
|
||||
$productIndex .= '<ul class="dropdown-menu">';
|
||||
if(common::hasPriv('product', 'index')) $productIndex .= '<li>' . html::a(helper::createLink('product', 'index', 'locate=no'), '<i class="icon icon-home"></i> ' . $this->lang->product->index) . '</li>';
|
||||
if(common::hasPriv('product', 'all')) $productIndex .= '<li>' . html::a(helper::createLink('product', 'all'), '<i class="icon icon-cards-view"></i> ' . $this->lang->product->all) . '</li>';
|
||||
$pageNav = '<div class="btn-group angle-btn"><div class="btn-group"><button data-toggle="dropdown" type="button" class="btn">' . $label . ' <span class="caret"></span></button>';
|
||||
$pageNav .= '<ul class="dropdown-menu">';
|
||||
if($this->config->global->flow == 'full' && common::hasPriv('product', 'index')) $pageNav .= '<li>' . html::a(helper::createLink('product', 'index', 'locate=no'), '<i class="icon icon-home"></i> ' . $this->lang->product->index) . '</li>';
|
||||
if(common::hasPriv('product', 'all')) $pageNav .= '<li>' . html::a(helper::createLink('product', 'all'), '<i class="icon icon-cards-view"></i> ' . $this->lang->product->all) . '</li>';
|
||||
if(common::isTutorialMode())
|
||||
{
|
||||
$wizardParams = helper::safe64Encode('');
|
||||
$link = helper::createLink('tutorial', 'wizard', "module=product&method=create¶ms=$wizardParams");
|
||||
$productIndex .= '<li>' . html::a($link, "<i class='icon icon-plus'></i> {$this->lang->product->create}", '', "class='create-product-btn'") . '</li>';
|
||||
$pageNav .= '<li>' . html::a($link, "<i class='icon icon-plus'></i> {$this->lang->product->create}", '', "class='create-product-btn'") . '</li>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if(common::hasPriv('product', 'create')) $productIndex .= '<li>' . html::a(helper::createLink('product', 'create'), '<i class="icon icon-plus"></i> ' . $this->lang->product->create) . '</li>';
|
||||
if(common::hasPriv('product', 'create')) $pageNav .= '<li>' . html::a(helper::createLink('product', 'create'), '<i class="icon icon-plus"></i> ' . $this->lang->product->create) . '</li>';
|
||||
}
|
||||
$productIndex .= '</ul></div></div>';
|
||||
$productIndex .= $selectHtml;
|
||||
$pageNav .= '</ul></div></div>';
|
||||
$pageNav .= $selectHtml;
|
||||
|
||||
$this->lang->modulePageNav = $productIndex;
|
||||
$pageActions = '';
|
||||
if($this->config->global->flow != 'full')
|
||||
{
|
||||
if($currentMethod == 'build' && common::hasPriv('build', 'create'))
|
||||
{
|
||||
$this->app->loadLang('build');
|
||||
$pageActions .= html::a(helper::createLink('build', 'create', "productID=$productID"), "<i class='icon icon-plus'></i> {$this->lang->build->create}", '', "class='btn btn-primary'");
|
||||
}
|
||||
}
|
||||
|
||||
$this->lang->modulePageNav = $pageNav;
|
||||
$this->lang->modulePageActions = $pageActions;
|
||||
foreach($this->lang->product->menu as $key => $menu)
|
||||
{
|
||||
$replace = $productID;
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
{
|
||||
if($field) $visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->product->edit->requiredFields) as $field)
|
||||
foreach(explode(',', $config->product->edit->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</div>
|
||||
<?php
|
||||
$datatableId = $this->moduleName . ucfirst($this->methodName);
|
||||
$useDatatable = (isset($this->config->datatable->$datatableId->mode) and $this->config->datatable->$datatableId->mode == 'datatable');
|
||||
$useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable');
|
||||
$vars = "productID=$productID&branch=$branch&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";
|
||||
|
||||
if($useDatatable) include '../../common/view/datatable.html.php';
|
||||
|
||||
Executable → Regular
+61
-59
@@ -1,59 +1,61 @@
|
||||
<?php
|
||||
/**
|
||||
* The build view file of product module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('confirmDelete', $lang->build->confirmDelete)?>
|
||||
<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='c-actions-3'><?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>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php
|
||||
/**
|
||||
* The build view file of product module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package product
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('confirmDelete', $lang->build->confirmDelete)?>
|
||||
<?php if($config->global->flow == 'full'):?>
|
||||
<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>
|
||||
<?php endif;?>
|
||||
<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='c-actions-3'><?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>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<?php echo $this->fetch('block', 'dashboard', 'module=product');?>
|
||||
<?php endif;?>
|
||||
<script>
|
||||
<?php if(isset($this->config->product->homepage) && $this->config->product->homepage != 'index'):?>
|
||||
<?php if(isset($config->product->homepage) && $config->product->homepage != 'index'):?>
|
||||
$(function()
|
||||
{
|
||||
$('#modulemenu .nav li.right:last').after("<li class='right'><a style='font-size:12px' href='javascript:setHomepage(\"product\", \"index\")'><i class='icon icon-cog'></i> <?php echo $lang->homepage?></a></li>")
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class="detail">
|
||||
<div class="detail-title"><strong><?php echo $lang->product->otherInfo;?></strong></div>
|
||||
<div class="detail-content">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
{
|
||||
if($field)$visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->project->edit->requiredFields) as $field)
|
||||
foreach(explode(',', $config->project->edit->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
<td><?php echo html::select('type', $lang->project->typeList, '', "class='form-control' onchange='showTypeTips()'");?></td>
|
||||
<td class='muted' colspan='2'><div class='type-tips'><?php echo $lang->project->typeDesc;?></div></td>
|
||||
</tr>
|
||||
<tr <?php if($this->config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<tr <?php if($config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<th><?php echo $lang->project->manageProducts;?></th>
|
||||
<td class='text-left' id='productsBox' colspan="3">
|
||||
<div class='row'>
|
||||
@@ -111,7 +111,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr <?php if($this->config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<tr <?php if($config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<th><?php echo $lang->project->linkPlan;?></th>
|
||||
<td colspan="3" id="plansBox">
|
||||
<div class='row'>
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<th><?php echo $lang->project->status;?></th>
|
||||
<td><?php echo html::select('status', $lang->project->statusList, $project->status, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<?php if($this->config->global->flow == 'onlyTask'):?>
|
||||
<?php if($config->global->flow == 'onlyTask'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->owner;?></th>
|
||||
<td><?php echo html::select('PM', $pmUsers, $project->PM, "class='form-control chosen'");?></td>
|
||||
@@ -108,7 +108,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr <?php if($this->config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<tr <?php if($config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<th><?php echo $lang->project->manageProducts;?></th>
|
||||
<td class='text-left' id='productsBox' colspan="2">
|
||||
<div class='row'>
|
||||
|
||||
@@ -171,7 +171,7 @@ js::set('browseType', $browseType);
|
||||
</div>
|
||||
<?php
|
||||
$datatableId = $this->moduleName . ucfirst($this->methodName);
|
||||
$useDatatable = (isset($this->config->datatable->$datatableId->mode) and $this->config->datatable->$datatableId->mode == 'datatable');
|
||||
$useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable');
|
||||
$vars = "projectID=$project->id&status=$status&parma=$param&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage";
|
||||
|
||||
$customFields = $this->datatable->getSetting('project');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<p><strong><?php echo $lang->project->afterInfo;?></strong></p>
|
||||
<div>
|
||||
<?php echo html::a($this->createLink('project', 'team', "projectID=$projectID"), $lang->project->setTeam, '', "class='btn'");?>
|
||||
<?php if($this->config->global->flow != 'onlyTask' && $project->type != 'ops') echo html::a($this->createLink('project', 'linkstory', "projectID=$projectID"), $lang->project->linkStory, '', "class='btn'");?>
|
||||
<?php if($config->global->flow != 'onlyTask' && $project->type != 'ops') echo html::a($this->createLink('project', 'linkstory', "projectID=$projectID"), $lang->project->linkStory, '', "class='btn'");?>
|
||||
<?php echo html::a($this->createLink('task', 'create', "project=$projectID"), $lang->project->createTask, '', "class='btn'");?>
|
||||
<?php echo html::a($this->createLink('project', 'task', "projectID=$projectID"), $lang->project->goback, '', "class='btn'");?>
|
||||
</div>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'glasses', '', 'btn btn-info btn-icon');
|
||||
common::printIcon('story', 'close', $vars, $story, 'list', 'off', '', 'btn btn-info btn-icon iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $story, 'list', '', '', 'btn btn-info btn-icon');
|
||||
if($this->config->global->flow != 'onlyStory') common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', 'btn btn-info btn-icon');
|
||||
if($config->global->flow != 'onlyStory') common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', 'btn btn-info btn-icon');
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
<div class="panel-body">
|
||||
<div class="row row-grid">
|
||||
<?php $i = 9; $j = 0;?>
|
||||
<?php if($this->config->global->flow != 'onlyTask'):?>
|
||||
<?php if($config->global->flow != 'onlyTask'):?>
|
||||
<?php if($project->PM):?>
|
||||
<?php $i--;?>
|
||||
<?php unset($teamMembers[$project->PM]);?>
|
||||
@@ -166,7 +166,7 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($this->config->global->flow != 'onlyTask'):?>
|
||||
<?php if($config->global->flow != 'onlyTask'):?>
|
||||
<div class="detail">
|
||||
<div class="detail-title">
|
||||
<strong><?php echo $lang->project->manageProducts;?></strong>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php echo $this->fetch('block', 'dashboard', 'module=qa');?>
|
||||
<script>
|
||||
<?php if($this->config->qa->homepage != 'index'):?>
|
||||
<?php if($config->qa->homepage != 'index'):?>
|
||||
$(function()
|
||||
{
|
||||
$('#modulemenu .nav li:last').after("<li class='right'><a style='font-size:12px' href='javascript:setHomepage(\"qa\", \"index\")'><i class='icon icon-cog'></i> <?php echo $lang->homepage?></a></li>")
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
if(common::hasPriv('release', 'linkStory')) echo html::a(inlink('view', "releaseID=$release->id&type=story&link=true"), '<i class="icon-link"></i> ', '', "class='btn' title='{$lang->release->linkStory}'");
|
||||
if(common::hasPriv('release', 'linkBug') and $this->config->global->flow != 'onlyStory') echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), '<i class="icon-bug"></i> ', '', "class='btn' title='{$lang->release->linkBug}'");
|
||||
if(common::hasPriv('release', 'linkBug') and $config->global->flow != 'onlyStory') echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), '<i class="icon-bug"></i> ', '', "class='btn' title='{$lang->release->linkBug}'");
|
||||
if(common::hasPriv('release', 'changeStatus', $release))
|
||||
{
|
||||
$changedStatus = $release->status == 'normal' ? 'terminate' : 'normal';
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
if(!$release->deleted)
|
||||
{
|
||||
if(common::hasPriv('release', 'linkStory')) echo html::a(inlink('view', "releaseID=$release->id&type=story&link=true"), '<i class="icon-link"></i> ' . $lang->release->linkStory, '', "class='btn btn-link'");
|
||||
if(common::hasPriv('release', 'linkBug') and $this->config->global->flow != 'onlyStory') echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), '<i class="icon-bug"></i> ' . $lang->release->linkBug, '', "class='btn btn-link'");
|
||||
if(common::hasPriv('release', 'linkBug') and $config->global->flow != 'onlyStory') echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), '<i class="icon-bug"></i> ' . $lang->release->linkBug, '', "class='btn btn-link'");
|
||||
|
||||
if(common::hasPriv('release', 'changeStatus', $release))
|
||||
{
|
||||
@@ -51,12 +51,12 @@
|
||||
<?php $countStories = count($stories); $countBugs = count($bugs); $countLeftBugs = count($leftBugs);?>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li <?php if($type == 'story') echo "class='active'"?>><a href='#stories' data-toggle='tab'><?php echo html::icon($lang->icons['story'], 'text-green') . ' ' . $lang->release->stories;?></a></li>
|
||||
<?php if($this->config->global->flow != 'onlyStory'):?>
|
||||
<?php if($config->global->flow != 'onlyStory'):?>
|
||||
<li <?php if($type == 'bug') echo "class='active'"?>><a href='#bugs' data-toggle='tab'><?php echo html::icon($lang->icons['bug'], 'text-green') . ' ' . $lang->release->bugs;?></a></li>
|
||||
<li <?php if($type == 'leftBug') echo "class='active'"?>><a href='#leftBugs' data-toggle='tab'><?php echo html::icon($lang->icons['bug'], 'text-red') . ' ' . $lang->release->generatedBugs;?></a></li>
|
||||
<?php endif;?>
|
||||
<li <?php if($type == 'releaseInfo') echo "class='active'"?>><a href='#releaseInfo' data-toggle='tab'><?php echo html::icon($lang->icons['plan'], 'text-info') . ' ' . $lang->release->view;?></a></li>
|
||||
<?php if($countStories or ($this->config->global->flow != 'onlyStory' and ($countBugs or $countLeftBugs))):?>
|
||||
<?php if($countStories or ($config->global->flow != 'onlyStory' and ($countBugs or $countLeftBugs))):?>
|
||||
<li class='pull-right'><div><?php common::printIcon('release', 'export', '', '', 'button', '', '', "export btn-sm");?></div></li>
|
||||
<?php endif;?>
|
||||
</ul>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
{
|
||||
if($field) $visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->story->create->requiredFields) as $field)
|
||||
foreach(explode(',', $config->story->create->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<tr>
|
||||
<td style='padding: 10px; background-color: #F8FAFE; border: none; font-size: 14px; font-weight: 500; border-bottom: 1px solid #e5e5e5;'>
|
||||
<?php $color = empty($story->color) ? '#333' : $story->color;?>
|
||||
<?php echo html::a(zget($this->config->mail, 'domain', common::getSysURL()) . helper::createLink('story', 'view', "storyID=$story->id"), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>
|
||||
<?php echo html::a(zget($config->mail, 'domain', common::getSysURL()) . helper::createLink('story', 'view', "storyID=$story->id"), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
common::printIcon('story', 'close', "storyID=$story->id", $story, 'button', '', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('story', 'activate', "storyID=$story->id", $story, 'button', '', '', 'iframe showinonlybody', true);
|
||||
|
||||
if($this->config->global->flow != 'onlyStory' and !isonlybody() and (common::hasPriv('testcase', 'create') or common::hasPriv('testcase', 'batchCreate')))
|
||||
if($config->global->flow != 'onlyStory' and !isonlybody() and (common::hasPriv('testcase', 'create') or common::hasPriv('testcase', 'batchCreate')))
|
||||
{
|
||||
$this->app->loadLang('testcase');
|
||||
echo "<div class='btn-group dropup'>";
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<?php echo $lang->task->batchCreate;?>
|
||||
<?php endif;?>
|
||||
</h2>
|
||||
<?php if($project->type != 'ops' && $this->config->global->flow != 'onlyTask'):?>
|
||||
<?php if($project->type != 'ops' && $config->global->flow != 'onlyTask'):?>
|
||||
<a class="checkbox-primary pull-left" id='zeroTaskStory' href='javascript:toggleZeroTaskStory();'>
|
||||
<label><?php echo $lang->story->zeroTask;?></label>
|
||||
</a>
|
||||
@@ -40,7 +40,7 @@
|
||||
{
|
||||
if($field)$visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->task->create->requiredFields) as $field)
|
||||
foreach(explode(',', $config->task->create->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
@@ -49,7 +49,7 @@
|
||||
}
|
||||
}
|
||||
$colspan = count($visibleFields) + 3;
|
||||
$hiddenStory = ((isonlybody() and $storyID) || $this->config->global->flow == 'onlyTask') ? ' hidden' : '';
|
||||
$hiddenStory = ((isonlybody() and $storyID) || $config->global->flow == 'onlyTask') ? ' hidden' : '';
|
||||
if($hiddenStory and isset($visibleFields['story'])) $colspan -= 1;
|
||||
?>
|
||||
<form method='post' class='load-indicator batch-actions-form' enctype='multipart/form-data' target='hiddenwin' id="batchCreateForm">
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
{
|
||||
if($field)$visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->task->edit->requiredFields) as $field)
|
||||
foreach(explode(',', $config->task->edit->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('toTaskList', $this->config->global->flow == 'onlyTask' || !empty($task->id));?>
|
||||
<?php js::set('toTaskList', $config->global->flow == 'onlyTask' || !empty($task->id));?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
@@ -48,7 +48,7 @@
|
||||
<button id='selectAllUser' type="button" class="btn btn-link<?php if($task->type !== 'affair') echo ' hidden';?>"><?php echo $lang->task->selectAllUser;?></button>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if(strpos(",$showFields,", ',story,') !== false and $this->config->global->flow != 'onlyTask' and $project->type != 'ops'):?>
|
||||
<?php if(strpos(",$showFields,", ',story,') !== false and $config->global->flow != 'onlyTask' and $project->type != 'ops'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->story;?></th>
|
||||
<td colspan='3'>
|
||||
@@ -75,7 +75,7 @@
|
||||
<input type="hidden" class="colorpicker" id="color" name="color" value="" data-icon="color" data-wrapper="input-control-icon-right" data-update-color="#name" data-provide="colorpicker">
|
||||
</div>
|
||||
<?php echo html::input('name', $task->name, "class='form-control' autocomplete='off' required");?>
|
||||
<?php if($this->config->global->flow != 'onlyTask'):?>
|
||||
<?php if($config->global->flow != 'onlyTask'):?>
|
||||
<a href='javascript:copyStoryTitle();' id='copyButton' class='input-control-icon-right'><?php echo $lang->task->copyStoryTitle;?></a>
|
||||
<?php echo html::hidden("storyEstimate") . html::hidden("storyDesc") . html::hidden("storyPri");?>
|
||||
<?php endif;?>
|
||||
@@ -159,9 +159,9 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr <?php echo $this->config->global->flow == 'onlyTask' ? "class='hidden'" : '';?>>
|
||||
<tr <?php echo $config->global->flow == 'onlyTask' ? "class='hidden'" : '';?>>
|
||||
<th><?php echo $lang->task->afterSubmit;?></th>
|
||||
<td colspan='3'><?php echo html::radio('after', $lang->task->afterChoices, $this->config->global->flow == 'onlyTask' || !empty($task->id) ? 'toTaskList' : 'continueAdding');?></td>
|
||||
<td colspan='3'><?php echo html::radio('after', $lang->task->afterChoices, $config->global->flow == 'onlyTask' || !empty($task->id) ? 'toTaskList' : 'continueAdding');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='4' class='text-center form-actions'>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<tr>
|
||||
<td style='padding: 10px; background-color: #F8FAFE; border: none; font-size: 14px; font-weight: 500; border-bottom: 1px solid #e5e5e5;'>
|
||||
<?php $color = empty($task->color) ? '#333' : $task->color;?>
|
||||
<?php echo html::a(zget($this->config->mail, 'domain', common::getSysURL()) . helper::createLink('task', 'view', "taskID=$task->id"), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>
|
||||
<?php echo html::a(zget($config->mail, 'domain', common::getSysURL()) . helper::createLink('task', 'view', "taskID=$task->id"), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -80,7 +80,7 @@ class testcase extends control
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
|
||||
/* Set menu, save session. */
|
||||
$this->testcase->setMenu($this->products, $productID, $branch, $moduleID, $suiteID);
|
||||
$this->testcase->setMenu($this->products, $productID, $branch, $moduleID, $suiteID, $orderBy);
|
||||
$this->session->set('caseList', $this->app->getURI(true));
|
||||
$this->session->set('productID', $productID);
|
||||
$this->session->set('moduleID', $moduleID);
|
||||
|
||||
@@ -17,9 +17,6 @@ $(function()
|
||||
|
||||
if(flow == 'onlyTest')
|
||||
{
|
||||
toggleSearch();
|
||||
$('.export').modalTrigger({width:650, type:'iframe', afterShown: setCheckedCookie})
|
||||
|
||||
$('#subNavbar > .nav > li').removeClass('active');
|
||||
$('#subNavbar > .nav > li[data-id=' + browseType + ']').addClass('active');
|
||||
}
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
$(function()
|
||||
{
|
||||
$('#subNavbar a[data-toggle=dropdown]').parent().addClass('dropdown dropdown-hover');
|
||||
|
||||
if(flow != 'full')
|
||||
{
|
||||
$('.querybox-toggle').click(function()
|
||||
{
|
||||
$(this).parent().toggleClass('active');
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
var newRowID = 0;
|
||||
/**
|
||||
* Load modules and stories of a product.
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
$(function()
|
||||
{
|
||||
$('.querybox-toggle').parent().addClass('active');
|
||||
})
|
||||
|
||||
function reload(libID)
|
||||
{
|
||||
link = createLink('testcase','importFromLib','productID='+ productID + '&branch=' + branch + '&libID='+libID);
|
||||
@@ -18,4 +23,4 @@ function setModule(obj)
|
||||
$(this).find("[data-module='" + libModule + "']").find("select[id^='module']").val(moduleID).trigger("chosen:updated");
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
+95
-14
@@ -16,21 +16,91 @@ class testcaseModel extends model
|
||||
/**
|
||||
* Set menu.
|
||||
*
|
||||
* @param array $products
|
||||
* @param int $productID
|
||||
* @param array $products
|
||||
* @param int $productID
|
||||
* @param int $branch
|
||||
* @param int $moduleID
|
||||
* @param int $suiteID
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu($products, $productID, $branch = 0, $moduleID = 0, $suiteID = 0)
|
||||
public function setMenu($products, $productID, $branch = 0, $moduleID = 0, $suiteID = 0, $orderBy = 'id_desc')
|
||||
{
|
||||
$this->loadModel('product')->setMenu($products, $productID, $branch, $moduleID, 'case');
|
||||
$selectHtml = $this->product->select($products, $productID, 'testcase', 'browse', '', $branch, $moduleID, 'case');
|
||||
|
||||
$this->app->loadLang('qa');
|
||||
$productIndex = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
$productIndex .= $selectHtml;
|
||||
$pageNav = '';
|
||||
$pageActions = '';
|
||||
if($this->config->global->flow == 'full')
|
||||
{
|
||||
$this->app->loadLang('qa');
|
||||
$pageNav = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$exportPriv = common::hasPriv('testcase', 'export');
|
||||
$exportTempletPriv = common::hasPriv('testcase', 'exportTemplet');
|
||||
$importPriv = common::hasPriv('testcase', 'import');
|
||||
$importFromLibPriv = common::hasPriv('testcase', 'importFromLib');
|
||||
if($exportPriv or $exportTempletPriv)
|
||||
{
|
||||
$pageActions .= "<div class='btn-group'>";
|
||||
$pageActions .= "<button type='button' class='btn btn-link dropdown-toggle' data-toggle='dropdown'>";
|
||||
$pageActions .= "<i class='icon icon-export muted'></i> {$this->lang->export}";
|
||||
$pageActions .= "<span class='caret'></span>";
|
||||
$pageActions .= '</button>';
|
||||
$pageActions .= "<ul class='dropdown-menu' id='exportActionMenu'>";
|
||||
if($exportPriv)
|
||||
{
|
||||
$link = helper::createLink('testcase', 'export', "productID=$productID&orderBy=$orderBy");
|
||||
$pageActions .= '<li>' . html::a($link, $this->lang->testcase->export, '', "class='export'") . '</li>';
|
||||
}
|
||||
if($exportTempletPriv)
|
||||
{
|
||||
$link = helper::createLink('testcase', 'exportTemplet', "productID=$productID");
|
||||
$pageActions .= '<li>' . html::a($link, $this->lang->testcase->exportTemplet, '', "class='export'") . '</li>';
|
||||
}
|
||||
$pageActions .= '</ul>';
|
||||
$pageActions .= '</div>';
|
||||
|
||||
$this->lang->modulePageNav = $productIndex;
|
||||
}
|
||||
if($importPriv or $importFromLibPriv)
|
||||
{
|
||||
$pageActions .= "<div class='btn-group'>";
|
||||
$pageActions .= "<button type='button' class='btn btn-link dropdown-toggle' data-toggle='dropdown' id='importAction'><i class='icon icon-import muted'></i> {$this->lang->import}<span class='caret'></span></button>";
|
||||
$pageActions .= "<ul class='dropdown-menu' id='importActionMenu'>";
|
||||
if($importPriv)
|
||||
{
|
||||
$link = helper::createLink('testcase', 'import', "productID=$productID&branch=$branch");
|
||||
$pageActions .= '<li>' . html::a($link, $this->lang->testcase->importFile, '', "class='export'") . '</li>';
|
||||
}
|
||||
if($importFromLibPriv)
|
||||
{
|
||||
$link = helper::createLink('testcase', 'importFromLib', "productID=$productID&branch=$branch");
|
||||
$pageActions .= '<li>' . html::a($link, $this->lang->testcase->importFromLib) . '</li>';
|
||||
}
|
||||
$pageActions .= '</ul>';
|
||||
$pageActions .= '</div>';
|
||||
}
|
||||
$initModule = isset($moduleID) ? (int)$moduleID : 0;
|
||||
|
||||
if(common::hasPriv('testcase', 'batchCreate'))
|
||||
{
|
||||
$link = helper::createLink('testcase', 'batchCreate', "productID=$productID&branch=$branch&moduleID=$initModule");
|
||||
$pageActions .= html::a($link, "<i class='icon-plus'></i> " . $this->lang->testcase->batchCreate, '', "class='btn btn-secondary'");
|
||||
}
|
||||
|
||||
if(common::hasPriv('testcase', 'create'))
|
||||
{
|
||||
$link = helper::createLink('testcase', 'create', "productID=$productID&branch=$branch&moduleID=$initModule");
|
||||
$pageActions .= html::a($link, "<i class='icon-plus'></i> " . $this->lang->testcase->create, '', "class='btn btn-primary'");
|
||||
}
|
||||
}
|
||||
$pageNav .= $selectHtml;
|
||||
|
||||
$this->lang->modulePageNav = $pageNav;
|
||||
$this->lang->modulePageActions = $pageActions;
|
||||
foreach($this->lang->testcase->menu as $key => $menu)
|
||||
{
|
||||
if($this->config->global->flow != 'onlyTest')
|
||||
@@ -46,18 +116,28 @@ class testcaseModel extends model
|
||||
$currentSuite = zget($suiteList, $currentSuiteID, '');
|
||||
$currentLable = empty($currentSuite) ? $this->lang->testsuite->common : $currentSuite->name;
|
||||
|
||||
$replace = "<li id='bysuiteTab' class='dropdown'>";
|
||||
$replace = "<li id='bysuiteTab' class='dropdown' data-id='bysuite'>";
|
||||
$replace .= html::a('javascript:;', $currentLable . " <span class='caret'></span>", '', "data-toggle='dropdown'");
|
||||
$replace .="<ul class='dropdown-menu' style='max-height:240px; overflow-y:auto'>";
|
||||
|
||||
foreach ($suiteList as $suiteID => $suite)
|
||||
if($suiteList)
|
||||
{
|
||||
$suiteName = $suite->name;
|
||||
if($suite->type == 'public') $suiteName .= " <span class='label label-info'>{$this->lang->testsuite->authorList[$suite->type]}</span>";
|
||||
foreach($suiteList as $suiteID => $suite)
|
||||
{
|
||||
$suiteName = $suite->name;
|
||||
if($suite->type == 'public') $suiteName .= " <span class='label label-info'>{$this->lang->testsuite->authorList[$suite->type]}</span>";
|
||||
|
||||
$replace .= '<li' . ($suiteID == (int)$currentSuiteID ? " class='active'" : '') . '>';
|
||||
$replace .= html::a(helper::createLink('testcase', 'browse', "productID=$productID&branch=$branch&browseType=bySuite¶m=$suiteID"), $suiteName);
|
||||
$replace .= "</li>";
|
||||
$replace .= '<li' . ($suiteID == (int)$currentSuiteID ? " class='active'" : '') . '>';
|
||||
$replace .= html::a(helper::createLink('testcase', 'browse', "productID=$productID&branch=$branch&browseType=bySuite¶m=$suiteID"), $suiteName);
|
||||
$replace .= "</li>";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(common::hasPriv('testsuite', 'create'))
|
||||
{
|
||||
$replace .= '<li>' . html::a(helper::createLink('testsuite', 'create', "productID=$productID"), $this->lang->testsuite->create) . '</li>';
|
||||
}
|
||||
}
|
||||
|
||||
$replace .= '</ul></li>';
|
||||
@@ -71,6 +151,7 @@ class testcaseModel extends model
|
||||
}
|
||||
common::setMenuVars($this->lang->testcase->menu, $key, $replace);
|
||||
}
|
||||
if($this->config->global->flow != 'full' && $this->app->getMethodName() != 'view') $this->lang->testcase->menu->bysearch = "<a class='querybox-toggle' id='bysearchTab'><i class='icon icon-search muted'> </i>{$this->lang->testcase->bySearch}</a>";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
{
|
||||
if($field) $visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->testcase->create->requiredFields) as $field)
|
||||
foreach(explode(',', $config->testcase->create->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
{
|
||||
if($field)$visibleFields[$field] = '';
|
||||
}
|
||||
foreach(explode(',', $this->config->testcase->edit->requiredFields) as $field)
|
||||
foreach(explode(',', $config->testcase->edit->requiredFields) as $field)
|
||||
{
|
||||
if($field)
|
||||
{
|
||||
|
||||
@@ -47,7 +47,7 @@ js::set('branch', $branch);
|
||||
</div>
|
||||
<?php
|
||||
$datatableId = $this->moduleName . ucfirst($this->methodName);
|
||||
$useDatatable = (isset($this->config->datatable->$datatableId->mode) and $this->config->datatable->$datatableId->mode == 'datatable');
|
||||
$useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable');
|
||||
$vars = "productID=$productID&branch=$branch&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";
|
||||
|
||||
if($useDatatable) include '../../common/view/datatable.html.php';
|
||||
|
||||
@@ -1,66 +1,6 @@
|
||||
<?php js::set('flow', $this->config->global->flow);?>
|
||||
<?php js::set('flow', $config->global->flow);?>
|
||||
<?php if(!isset($branch)) $branch = 0;?>
|
||||
<?php if($this->config->global->flow == 'onlyTest'):?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='btn-toolbar pull-left hidden'>
|
||||
<?php
|
||||
$hasBrowsePriv = common::hasPriv('testcase', 'browse');
|
||||
$hasGroupPriv = common::hasPriv('testcase', 'groupcase');
|
||||
$hasZeroPriv = common::hasPriv('story', 'zerocase');
|
||||
?>
|
||||
<?php if($this->methodName == 'browse') echo "<a id='bysearchTab' class='btn btn-link querybox-toggle'><i class='icon-search icon'></i> {$lang->testcase->bySearch}</a>";?>
|
||||
</div>
|
||||
<div class='btn-toolbar pull-right'>
|
||||
<div class='btn-group'>
|
||||
<button type='button' class='btn btn-link dropdown-toggle' data-toggle='dropdown'>
|
||||
<i class='icon icon-export muted'></i> <?php echo $lang->export ?>
|
||||
<span class='caret'></span>
|
||||
</button>
|
||||
<ul class='dropdown-menu' id='exportActionMenu'>
|
||||
<?php
|
||||
$misc = common::hasPriv('testcase', 'export') ? "class='export'" : "class=disabled";
|
||||
$link = common::hasPriv('testcase', 'export') ? $this->createLink('testcase', 'export', "productID=$productID&orderBy=$orderBy") : '#';
|
||||
echo "<li>" . html::a($link, $lang->testcase->export, '', $misc) . "</li>";
|
||||
|
||||
$misc = common::hasPriv('testcase', 'exportTemplet') ? "class='export'" : "class=disabled";
|
||||
$link = common::hasPriv('testcase', 'exportTemplet') ? $this->createLink('testcase', 'exportTemplet', "productID=$productID") : '#';
|
||||
echo "<li>" . html::a($link, $lang->testcase->exportTemplet, '', $misc) . "</li>";
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<div class='btn-group'>
|
||||
<button type='button' class='btn btn-link dropdown-toggle' data-toggle='dropdown' id='importAction'><i class='icon icon-import muted'></i> <?php echo $lang->import ?><span class='caret'></span></button>
|
||||
<ul class='dropdown-menu' id='importActionMenu'>
|
||||
<?php
|
||||
$misc = common::hasPriv('testcase', 'import') ? "class='export'" : "class=disabled";
|
||||
$link = common::hasPriv('testcase', 'import') ? $this->createLink('testcase', 'import', "productID=$productID&branch=$branch") : '#';
|
||||
echo "<li>" . html::a($link, $lang->testcase->importFile, '', $misc) . "</li>";
|
||||
|
||||
$misc = common::hasPriv('testcase', 'importFromLib') ? '' : "class=disabled";
|
||||
$link = common::hasPriv('testcase', 'importFromLib') ? $this->createLink('testcase', 'importFromLib', "productID=$productID&branch=$branch") : '#';
|
||||
echo "<li>" . html::a($link, $lang->testcase->importFromLib, '', $misc) . "</li>";
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php
|
||||
$initModule = isset($moduleID) ? (int)$moduleID : 0;
|
||||
|
||||
if(common::hasPriv('testcase', 'batchCreate'))
|
||||
{
|
||||
$link = $this->createLink('testcase', 'batchCreate', "productID=$productID&branch=$branch&moduleID=$initModule");
|
||||
echo html::a($link, "<i class='icon-plus'></i> " . $lang->testcase->batchCreate, '', "class='btn btn-secondary'");
|
||||
}
|
||||
|
||||
if(common::hasPriv('testcase', 'create'))
|
||||
{
|
||||
$link = $this->createLink('testcase', 'create', "productID=$productID&branch=$branch&moduleID=$initModule");
|
||||
echo html::a($link, "<i class='icon-plus'></i> " . $lang->testcase->create, '', "class='btn btn-primary'");
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='queryBox' class='<?php if($browseType =='bysearch') echo 'show';?>'></div>
|
||||
<?php else:?>
|
||||
<?php if($config->global->flow == 'full'):?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
@@ -85,7 +25,7 @@
|
||||
if(isset($menuItem->hidden) and $menuItem->name != 'QUERY') continue;
|
||||
$menuType = $menuItem->name;
|
||||
if(!$config->testcase->needReview and empty($config->testcase->forceReview) and $menuType == 'wait') continue;
|
||||
if($this->config->global->flow == 'onlyTest' and (strpos(',needconfirm,group,zerocase,', ',' . $menuType . ',') !== false)) continue;
|
||||
if($config->global->flow == 'onlyTest' and (strpos(',needconfirm,group,zerocase,', ',' . $menuType . ',') !== false)) continue;
|
||||
if($hasBrowsePriv and $menuType == 'QUERY')
|
||||
{
|
||||
if(isset($lang->custom->queryList))
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
</td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php if(strpos(",$showFields,", ',story,') !== false and $this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if(strpos(",$showFields,", ',story,') !== false and $config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->testcase->lblStory;?></th>
|
||||
<td colspan='2'>
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if(!$isLibCase and $this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if(!$isLibCase and $config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->testcase->story;?></th>
|
||||
<td class='text-left'><div id='storyIdBox'><?php echo html::select('story', $stories, $case->story, 'class=form-control chosen');?></div>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('flow', $config->global->flow);?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
<div class='input-group w-150px'>
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if(!$isLibCase and $this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if(!$isLibCase and $config->global->flow != 'onlyTest'):?>
|
||||
<tr class='nofixed'>
|
||||
<th><?php echo $lang->testcase->story;?></th>
|
||||
<td>
|
||||
|
||||
@@ -28,11 +28,25 @@ class testreportModel extends model
|
||||
/* Remove branch. */
|
||||
if(strpos($selectHtml, 'currentBranch') !== false) $selectHtml = substr($selectHtml, 0, strrpos($selectHtml, "<div class='btn-group'>")) . '</div>';
|
||||
|
||||
$this->app->loadLang('qa');
|
||||
$productIndex = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
$productIndex .= $selectHtml;
|
||||
$pageNav = '';
|
||||
$pageActions = '';
|
||||
if($this->config->global->flow == 'full')
|
||||
{
|
||||
$this->app->loadLang('qa');
|
||||
$pageNav = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if(common::hasPriv('testtask', 'create'))
|
||||
{
|
||||
$link = helper::createLink('testtask', 'create', "productID=$productID");
|
||||
$pageActions .= html::a($link, "<i class='icon icon-plus'></i> {$this->lang->testtask->create}", '', "class='btn btn-primary'");
|
||||
}
|
||||
}
|
||||
$pageNav .= $selectHtml;
|
||||
|
||||
$this->lang->modulePageNav = $productIndex;
|
||||
$this->lang->modulePageNav = $pageNav;
|
||||
$this->lang->modulePageActions = $pageActions;
|
||||
foreach($this->lang->testtask->menu as $key => $value)
|
||||
{
|
||||
if($this->config->global->flow != 'onlyTest')
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php if($config->global->flow == 'full'):?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='pull-left btn-toolbar'>
|
||||
<span class='btn btn-link btn-active-text'>
|
||||
@@ -19,6 +20,7 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div id='mainContent' class='main-table'>
|
||||
<table class='table has-sort-head table-fixed' id='reportList'>
|
||||
<?php $vars = "objectID=$objectID&objectType=$objectType&extra=$extra&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
|
||||
@@ -14,5 +14,3 @@
|
||||
.datatable-menu {display:none;}
|
||||
|
||||
.pl-5px{padding-left:5px;}
|
||||
|
||||
#pageActions {top: -60px;}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
$(document).ready(function()
|
||||
$(function()
|
||||
{
|
||||
if(typeof(flow) != 'undefined' && flow == 'onlyTest') toggleSearch();
|
||||
if(flow != 'full')
|
||||
{
|
||||
$('.querybox-toggle').click(function()
|
||||
{
|
||||
$(this).parent().toggleClass('active');
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
@@ -44,6 +44,7 @@ $lang->testsuite->libraryDelete = 'Do you want to delete this library?';
|
||||
$lang->testsuite->confirmUnlinkCase = 'Do you want to unlink this Case?';
|
||||
$lang->testsuite->noticeNone = 'You have not created a suite yet.';
|
||||
$lang->testsuite->noModule = '<div>You have no modules</div><div>Manage now</div>';
|
||||
$lang->testsuite->noTestsuite = 'No testsuite. You could ';
|
||||
|
||||
$lang->testsuite->lblCases = 'Cases';
|
||||
$lang->testsuite->lblUnlinkCase = 'Unlink Case';
|
||||
|
||||
@@ -44,6 +44,7 @@ $lang->testsuite->libraryDelete = '您确认要删除该用例库吗?';
|
||||
$lang->testsuite->confirmUnlinkCase = '您确认要移除该用例吗?';
|
||||
$lang->testsuite->noticeNone = '您还没有创建套件';
|
||||
$lang->testsuite->noModule = '<div>您现在还没有模块信息</div><div>请维护用例库模块</div>';
|
||||
$lang->testsuite->noTestsuite = '暂时没有套件,您现在可以';
|
||||
|
||||
$lang->testsuite->lblCases = '用例列表';
|
||||
$lang->testsuite->lblUnlinkCase = '移除用例';
|
||||
|
||||
@@ -44,6 +44,7 @@ $lang->testsuite->libraryDelete = '您確認要刪除該用例庫嗎?';
|
||||
$lang->testsuite->confirmUnlinkCase = '您確認要移除該用例嗎?';
|
||||
$lang->testsuite->noticeNone = '您還沒有創建套件';
|
||||
$lang->testsuite->noModule = '<div>您現在還沒有模組信息</div><div>請維護用例庫模組</div>';
|
||||
$lang->testsuite->noTestsuite = '暫時沒有套件,您現在可以';
|
||||
|
||||
$lang->testsuite->lblCases = '用例列表';
|
||||
$lang->testsuite->lblUnlinkCase = '移除用例';
|
||||
|
||||
+73
-11
@@ -27,11 +27,25 @@ class testsuiteModel extends model
|
||||
$selectHtml = $this->select($products, $productID, 'testsuite', 'browse');
|
||||
if(strpos($selectHtml, 'currentBranch') !== false) $selectHtml = substr($selectHtml, 0, strrpos($selectHtml, "<div class='btn-group'>")) . '</div>';
|
||||
|
||||
$this->app->loadLang('qa');
|
||||
$productIndex = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
$productIndex .= $selectHtml;
|
||||
$pageNav = '';
|
||||
$pageActions = '';
|
||||
if($this->config->global->flow == 'full')
|
||||
{
|
||||
$this->app->loadLang('qa');
|
||||
$pageNav = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if(common::hasPriv('testsuite', 'create'))
|
||||
{
|
||||
$link = helper::createLink('testsuite', 'create', "productID=$productID");
|
||||
$pageActions .= html::a($link, "<i class='icon icon-plus'></i> {$this->lang->testsuite->create}", '', "class='btn btn-primary'");
|
||||
}
|
||||
}
|
||||
$pageNav .= $selectHtml;
|
||||
|
||||
$this->lang->modulePageNav = $productIndex;
|
||||
$this->lang->modulePageNav = $pageNav;
|
||||
$this->lang->modulePageActions = $pageActions;
|
||||
foreach($this->lang->testsuite->menu as $key => $value)
|
||||
{
|
||||
$replace = $productID;
|
||||
@@ -118,14 +132,53 @@ class testsuiteModel extends model
|
||||
|
||||
setCookie("lastCaseLib", $libID, $this->config->cookieLife, $this->config->webRoot);
|
||||
|
||||
$this->app->loadLang('qa');
|
||||
$productIndex = '<div class="btn-group angle-btn"><div class="btn-group"><button data-toggle="dropdown" type="button" class="btn">' . $this->lang->qa->index . ' <span class="caret"></span></button>';
|
||||
$productIndex .= '<ul class="dropdown-menu">';
|
||||
if(common::hasPriv('testsuite', 'createLib')) $productIndex .= '<li>' . html::a(helper::createLink('testsuite', 'createLib'), '<i class="icon icon-plus"></i> ' . $this->lang->testsuite->createLib) . '</li>';
|
||||
$productIndex .= '</ul></div></div>';
|
||||
$productIndex .= $selectHtml;
|
||||
$pageNav = '';
|
||||
$pageActions = '';
|
||||
if($this->config->global->flow == 'full')
|
||||
{
|
||||
$this->app->loadLang('qa');
|
||||
$pageNav .= '<div class="btn-group angle-btn"><div class="btn-group"><button data-toggle="dropdown" type="button" class="btn">' . $this->lang->qa->index . ' <span class="caret"></span></button>';
|
||||
$pageNav .= '<ul class="dropdown-menu">';
|
||||
if(common::hasPriv('testsuite', 'createLib')) $pageNav .= '<li>' . html::a(helper::createLink('testsuite', 'createLib'), '<i class="icon icon-plus"></i> ' . $this->lang->testsuite->createLib) . '</li>';
|
||||
$pageNav .= '</ul></div></div>';
|
||||
|
||||
$this->lang->modulePageNav = $productIndex;
|
||||
if(common::hasPriv('testsuite', 'libView'))
|
||||
{
|
||||
$link = helper::createLink('testsuite', 'libView', "libID=$libID");
|
||||
$pageActions .= html::a($link, "<i class='icon icon-list-alt muted'> </i>" . $this->lang->testsuite->view, '', "class='btn'");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->app->loadLang('testcase');
|
||||
$pageActions .= "<div class='btn-group'>";
|
||||
if(common::hasPriv('testsuite', 'exportTemplet'))
|
||||
{
|
||||
$link = helper::createLink('testsuite', 'exportTemplet', "libID=$libID");
|
||||
$pageActions .= html::a($link, "<i class='icon icon-export muted'> </i>" . $this->lang->testsuite->exportTemplet, '', "class='btn btn-link export'");
|
||||
}
|
||||
if(common::hasPriv('testsuite', 'import'))
|
||||
{
|
||||
$link = helper::createLink('testsuite', 'import', "libID=$libID");
|
||||
$pageActions .= html::a($link, "<i class='icon muted icon-import'> </i>" . $this->lang->testcase->importFile, '', "class='btn btn-link export'");
|
||||
}
|
||||
$pageActions .= '</div>';
|
||||
$params = "libID=$libID&moduleID=" . (isset($moduleID) ? $moduleID : 0);
|
||||
if(common::hasPriv('testsuite', 'batchCreateCase'))
|
||||
{
|
||||
$link = helper::createLink('testsuite', 'batchCreateCase', $params);
|
||||
$pageActions .= html::a($link, "<i class='icon-plus'></i>" . $this->lang->testcase->batchCreate, '', "class='btn btn-secondary'");
|
||||
}
|
||||
if(common::hasPriv('testsuite', 'createCase'))
|
||||
{
|
||||
$link = helper::createLink('testsuite', 'createCase', $params);
|
||||
$pageActions .= html::a($link, "<i class='icon-plus'></i>" . $this->lang->testcase->create, '', "class='btn btn-primary'");
|
||||
}
|
||||
}
|
||||
$pageNav .= $selectHtml;
|
||||
|
||||
$this->lang->modulePageNav = $pageNav;
|
||||
$this->lang->modulePageActions = $pageActions;
|
||||
foreach($this->lang->caselib->menu as $key => $value)
|
||||
{
|
||||
$replace = '';
|
||||
@@ -133,8 +186,17 @@ class testsuiteModel extends model
|
||||
common::setMenuVars($this->lang->caselib->menu, $key, $replace);
|
||||
}
|
||||
$this->lang->testsuite->menu = $this->lang->caselib->menu;
|
||||
if($this->config->global->flow != 'full' && $this->app->getMethodName() != 'libview') $this->lang->testsuite->menu->bysearch = "<a class='querybox-toggle' id='bysearchTab'><i class='icon icon-search muted'> </i>{$this->lang->testcase->bySearch}</a>";
|
||||
}
|
||||
|
||||
/**
|
||||
* Save lib state.
|
||||
*
|
||||
* @param int $libID
|
||||
* @param array $libraries
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function saveLibState($libID = 0, $libraries = array())
|
||||
{
|
||||
if($libID > 0) $this->session->set('caseLib', (int)$libID);
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('confirmDelete', $lang->testsuite->confirmDelete)?>
|
||||
<?php js::set('flow', $this->config->global->flow);?>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php js::set('flow', $config->global->flow);?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div id="mainMenu" class='clearfix'>
|
||||
<div class="btn-toolbar pull-left">
|
||||
<a href class='btn btn-link btn-active-text'>
|
||||
@@ -26,6 +26,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php if(empty($suites)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->testsuite->noTestsuite;?></span> <?php common::printLink('testsuite', 'create', "productID={$productID}", "<i class='icon icon-plus'></i> " . $lang->testsuite->create, '', "class='btn btn-info'");?></p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div id='mainContent' class='main-table'>
|
||||
<table class='table has-sort-head' id='suiteList'>
|
||||
<thead>
|
||||
@@ -71,4 +76,5 @@
|
||||
<div class='table-footer'><?php $pager->show('right', 'pagerjs');?></div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -17,58 +17,9 @@ js::set('browseType', $browseType);
|
||||
js::set('moduleID', $moduleID);
|
||||
js::set('confirmDelete', $lang->testsuite->confirmDelete);
|
||||
js::set('batchDelete', $lang->testcase->confirmBatchDelete);
|
||||
js::set('flow', $this->config->global->flow);
|
||||
js::set('flow', $config->global->flow);
|
||||
?>
|
||||
<?php if($this->config->global->flow == 'onlyTest'):?>
|
||||
<style>
|
||||
.nav > li > .btn-group > a, .nav > li > .btn-group > a:hover, .nav > li > .btn-group > a:focus{background: #1a4f85; border-color: #164270;}
|
||||
#querybox #searchform{border-bottom: 1px solid #ddd; margin-bottom: 20px;}
|
||||
</style>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
</div>
|
||||
<ul class='submenu hidden'>
|
||||
<?php echo "<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i> {$lang->testcase->bySearch}</a></li> ";?>
|
||||
|
||||
<li class='right'>
|
||||
<div class='btn-group' id='createActionMenu'>
|
||||
<?php
|
||||
$misc = common::hasPriv('testsuite', 'createCase') ? "class='btn btn-primary'" : "class='btn btn-primary disabled'";
|
||||
$link = common::hasPriv('testsuite', 'createCase') ? $this->createLink('testsuite', 'createCase', "libID=$libID&moduleID=" . (isset($moduleID) ? $moduleID : 0)) : '#';
|
||||
echo html::a($link, "<i class='icon-plus'></i>" . $lang->testcase->create, '', $misc);
|
||||
?>
|
||||
<button type='button' class='btn btn-primary dropdown-toggle' data-toggle='dropdown'>
|
||||
<span class='caret'></span>
|
||||
</button>
|
||||
<ul class='dropdown-menu pull-right'>
|
||||
<?php
|
||||
$misc = common::hasPriv('testsuite', 'batchCreateCase') ? '' : "class=disabled";
|
||||
$link = common::hasPriv('testsuite', 'batchCreateCase') ? $this->createLink('testsuite', 'batchCreateCase', "libID=$libID&moduleID=" . (isset($moduleID) ? $moduleID : 0)) : '#';
|
||||
echo "<li>" . html::a($link, $lang->testcase->batchCreate, '', $misc) . "</li>";
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class='right'>
|
||||
<?php
|
||||
$link = common::hasPriv('testsuite', 'import') ? $this->createLink('testsuite', 'import', "libID=$libID") : '#';
|
||||
if(common::hasPriv('testsuite', 'import')) echo html::a($link, "<i class='icon-upload-alt'></i> " . $lang->testcase->importFile, '', "class='export'");
|
||||
?>
|
||||
</li>
|
||||
|
||||
<li class='right'>
|
||||
<?php
|
||||
$link = common::hasPriv('testsuite', 'exportTemplet') ? $this->createLink('testsuite', 'exportTemplet', "libID=$libID") : '#';
|
||||
if(common::hasPriv('testsuite', 'exportTemplet')) echo html::a($link, "<i class='icon-download-alt'></i> " . $lang->testsuite->exportTemplet, '', "class='export'");
|
||||
?>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div id='pageActions'>
|
||||
<?php common::printLink('testsuite', 'libView', "libID=$libID", "<i class='icon icon-list-alt muted'> </i>" . $lang->testsuite->view, '', "class='btn'");?>
|
||||
</div>
|
||||
<?php if($config->global->flow == 'full'):?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
@@ -83,7 +34,6 @@ js::set('flow', $this->config->global->flow);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
<?php
|
||||
if(common::hasPriv('testsuite', 'library'))
|
||||
@@ -104,6 +54,7 @@ js::set('flow', $this->config->global->flow);
|
||||
<?php common::printLink('testsuite', 'createCase', $params, "<i class='icon-plus'></i>" . $lang->testcase->create, '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div id="mainContent" class="main-row fade">
|
||||
<div class="side-col" id="sidebar">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
@@ -250,11 +201,11 @@ js::set('flow', $this->config->global->flow);
|
||||
</div>
|
||||
<script>
|
||||
$('#module' + moduleID).addClass('active');
|
||||
<?php if($config->global->flow == 'full'):?>
|
||||
$('#<?php echo $this->session->libBrowseType?>Tab').addClass('btn-active-text').append("<span class='label label-light label-badge'><?php echo $pager->recTotal;?></span>");
|
||||
<?php endif;?>
|
||||
if(flow == 'onlyTest')
|
||||
{
|
||||
toggleSearch();
|
||||
|
||||
$('#subNavbar > .nav > li').removeClass('active');
|
||||
$('#subNavbar > .nav > li[data-id=' + browseType + ']').addClass('active');
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<?php js::set('flow', $this->config->global->flow);?>
|
||||
<?php js::set('flow', $config->global->flow);?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
<?php common::printBack($this->session->testsuiteList, 'btn btn-link');?>
|
||||
|
||||
@@ -2,8 +2,8 @@ $(document).ready(function()
|
||||
{
|
||||
if(flow == 'onlyTest')
|
||||
{
|
||||
$('#modulemenu > .nav > li').removeClass('active');
|
||||
$('#modulemenu > .nav > li[data-id=' + status + ']').addClass('active');
|
||||
$('#subNavbar > .nav > li').removeClass('active');
|
||||
$('#subNavbar > .nav > li[data-id=' + status + ']').addClass('active');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -44,11 +44,25 @@ class testtaskModel extends model
|
||||
if(common::hasPriv('testreport', 'browse')) $this->lang->modulePageActions .= html::a(helper::createLink('testreport', 'browse', "objectID=$productID&objectType=product&extra={$testtask->id}"), "<i class='icon icon-flag'> </i>" . $this->lang->testtask->reportField, '', "class='btn'");
|
||||
}
|
||||
|
||||
$this->app->loadLang('qa');
|
||||
$productIndex = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
$productIndex .= $selectHtml;
|
||||
$pageNav = '';
|
||||
$pageActions = '';
|
||||
if($this->config->global->flow == 'full')
|
||||
{
|
||||
$this->app->loadLang('qa');
|
||||
$pageNav = '<div class="btn-group angle-btn"><div class="btn-group">' . html::a(helper::createLink('qa', 'index', 'locate=no'), $this->lang->qa->index, '', "class='btn'") . '</div></div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if(common::hasPriv('testtask', 'create'))
|
||||
{
|
||||
$link = helper::createLink('testtask', 'create', "productID=$productID");
|
||||
$pageActions .= html::a($link, "<i class='icon icon-plus'></i> {$this->lang->testtask->create}", '', "class='btn btn-primary'");
|
||||
}
|
||||
}
|
||||
$pageNav .= $selectHtml;
|
||||
|
||||
$this->lang->modulePageNav = $productIndex;
|
||||
$this->lang->modulePageNav = $pageNav;
|
||||
$this->lang->modulePageActions = $pageActions;
|
||||
foreach($this->lang->testtask->menu as $key => $value)
|
||||
{
|
||||
if($this->config->global->flow != 'onlyTest')
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<?php js::set('confirmDelete', $lang->testtask->confirmDelete)?>
|
||||
<?php js::set('flow', $this->config->global->flow);?>
|
||||
<?php js::set('flow', $config->global->flow);?>
|
||||
<?php
|
||||
$scope = $this->session->testTaskVersionScope;
|
||||
$status = $this->session->testTaskVersionStatus;
|
||||
?>
|
||||
<?php js::set('status', $status);?>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div id="mainMenu" class='clearfix'>
|
||||
<div class="btn-toolbar pull-left">
|
||||
<div class='btn-group'>
|
||||
@@ -61,7 +61,7 @@ $status = $this->session->testTaskVersionStatus;
|
||||
<th class='c-id text-left'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='w-200px text-left'><?php common::printOrderLink('name', $orderBy, $vars, $lang->testtask->name);?></th>
|
||||
<th class='text-left'> <?php common::printOrderLink('product', $orderBy, $vars, $lang->testtask->product);?></th>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<th class='text-left'> <?php common::printOrderLink('project', $orderBy, $vars, $lang->testtask->project);?></th>
|
||||
<?php endif;?>
|
||||
<th class='text-left'> <?php common::printOrderLink('build', $orderBy, $vars, $lang->testtask->build);?></th>
|
||||
@@ -78,7 +78,7 @@ $status = $this->session->testTaskVersionStatus;
|
||||
<td><?php echo html::a(inlink('cases', "taskID=$task->id"), sprintf('%03d', $task->id));?></td>
|
||||
<td class='c-name' title="<?php echo $task->name?>"><?php echo html::a(inlink('cases', "taskID=$task->id"), $task->name);?></td>
|
||||
<td class='c-name' title="<?php echo $task->productName?>"><?php echo $task->productName?></td>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<td class='c-name' title="<?php echo $task->projectName?>"><?php echo $task->projectName?></td>
|
||||
<?php endif;?>
|
||||
<td class='c-name'><?php echo ($task->build == 'trunk' || empty($task->buildName)) ? $lang->trunk : html::a($this->createLink('build', 'view', "buildID=$task->build",'',true), $task->buildName);?></td>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
if($hasCasesPriv) echo html::a($this->inlink('cases', "taskID=$taskID&browseType=all¶m=0"), "<span class='text'>{$lang->testtask->allCases}</span>", '', "id='allTab' class='btn btn-link'");
|
||||
if($hasCasesPriv) echo html::a($this->inlink('cases', "taskID=$taskID&browseType=assignedtome¶m=0"), "<span class='text'>{$lang->testtask->assignedToMe}</span>", '', "id='assignedtomeTab' class='btn btn-link'");
|
||||
|
||||
if($hasGroupPriv and $this->config->global->flow != 'onlyTest')
|
||||
if($hasGroupPriv and $config->global->flow != 'onlyTest')
|
||||
{
|
||||
echo "<div class='btn-group'>";
|
||||
$active = $browseType == 'group' ? 'btn-active-text' : '';
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<?php
|
||||
$vars = "taskID=$task->id&browseType=$browseType¶m=$param&orderBy=%s&recToal={$pager->recTotal}&recPerPage={$pager->recPerPage}";
|
||||
$datatableId = $this->moduleName . ucfirst($this->methodName);
|
||||
$useDatatable = (isset($this->config->datatable->$datatableId->mode) and $this->config->datatable->$datatableId->mode == 'datatable');
|
||||
$useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable');
|
||||
|
||||
$canBatchEdit = common::hasPriv('testcase', 'batchEdit');
|
||||
$canBatchUnlink = common::hasPriv('testtask', 'batchUnlinkCases');
|
||||
@@ -39,8 +39,8 @@
|
||||
if($useDatatable) include '../../common/view/datatable.html.php';
|
||||
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';
|
||||
$config->testcase->datatable->defaultField = $config->testtask->datatable->defaultField;
|
||||
$config->testcase->datatable->fieldList['actions']['width'] = '90';
|
||||
|
||||
$setting = $this->datatable->getSetting('testtask');
|
||||
$widths = $this->datatable->setFixedFieldWidth($setting);
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<td class='w-p35-f'><?php echo html::input('product', $productID, "class='form-control'");?></td><td></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th class='w-80px'><?php echo $lang->testtask->project;?></th>
|
||||
<td class='w-p35-f'><?php echo html::select('project', $projects, '', "class='form-control chosen' onchange='loadProjectRelated(this.value)'");?></td><td></td>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<form method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table table-form'>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th class='w-80px'><?php echo $lang->testtask->project;?></th>
|
||||
<td class='w-p35-f'>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<tr>
|
||||
<td style='padding: 10px; background-color: #F8FAFE; border: none; font-size: 14px; font-weight: 500; border-bottom: 1px solid #e5e5e5;'>
|
||||
<?php $color = empty($testtask->color) ? '#333' : $testtask->color;?>
|
||||
<?php echo html::a(zget($this->config->mail, 'domain', common::getSysURL()) . helper::createLink('testtask', 'view', "testtaskID=$testtask->id"), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>
|
||||
<?php echo html::a(zget($config->mail, 'domain', common::getSysURL()) . helper::createLink('testtask', 'view', "testtaskID=$testtask->id"), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<div class="detail-title"><?php echo $lang->testtask->legendBasicInfo;?></div>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if($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>
|
||||
|
||||
Reference in New Issue
Block a user