* adjust the search feature, no product in the search fields any more and add full text search.
This commit is contained in:
@@ -3,10 +3,11 @@ global $lang;
|
||||
$config->bug->search['module'] = 'bug';
|
||||
$config->bug->search['fields']['id'] = $lang->bug->id;
|
||||
$config->bug->search['fields']['title'] = $lang->bug->title;
|
||||
$config->bug->search['fields']['product'] = $lang->bug->product;
|
||||
$config->bug->search['fields']['steps'] = $lang->bug->steps;
|
||||
$config->bug->search['fields']['assignedTo'] = $lang->bug->assignedTo;
|
||||
$config->bug->search['fields']['resolvedBy'] = $lang->bug->resolvedBy;
|
||||
$config->bug->search['fields']['openedBy'] = $lang->bug->openedBy;
|
||||
$config->bug->search['fields']['project'] = $lang->bug->project;
|
||||
$config->bug->search['fields']['closedBy'] = $lang->bug->closedBy;
|
||||
$config->bug->search['fields']['lastEditedBy'] = $lang->bug->lastEditedBy;
|
||||
$config->bug->search['fields']['status'] = $lang->bug->status;
|
||||
@@ -22,7 +23,8 @@ $config->bug->search['fields']['closedDate'] = $lang->bug->closedDate;
|
||||
$config->bug->search['fields']['lastEditedDate'] = $lang->bug->lastEditedDate;
|
||||
|
||||
$config->bug->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->bug->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => 'products');
|
||||
$config->bug->search['params']['steps'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => 'projects');
|
||||
$config->bug->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->bug->search['params']['resolvedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->bug->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
|
||||
@@ -49,15 +49,15 @@ class bug extends control
|
||||
/* 浏览一个产品下面的bug。*/
|
||||
public function browse($productID = 0, $browseType = 'byModule', $param = 0, $orderBy = 'id|desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* 设置搜索表单。*/
|
||||
$this->config->bug->search['actionURL'] = $this->createLink('bug', 'browse', "productID=$productID&browseType=bySearch");
|
||||
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->bug->search);
|
||||
|
||||
/* 设置产品id和模块id。*/
|
||||
$browseType = strtolower($browseType);
|
||||
$productID = common::saveProductState($productID, key($this->products));
|
||||
$moduleID = ($browseType == 'bymodule') ? (int)$param : 0;
|
||||
|
||||
/* 设置搜索表单。*/
|
||||
$this->config->bug->search['actionURL'] = $this->createLink('bug', 'browse', "productID=$productID&browseType=bySearch");
|
||||
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->bug->search);
|
||||
|
||||
/* 设置菜单,登记session。*/
|
||||
$this->bug->setMenu($this->products, $productID);
|
||||
$this->session->set('bugList', $this->app->getURI(true));
|
||||
@@ -103,7 +103,7 @@ class bug extends control
|
||||
elseif($browseType == 'bysearch')
|
||||
{
|
||||
if($this->session->bugQuery == false) $this->session->set('bugQuery', ' 1 = 1');
|
||||
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where($this->session->bugQuery)->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where($this->session->bugQuery)->andWhere('product')->eq($productID)->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
}
|
||||
|
||||
$users = $this->user->getPairs($this->app->company->id, 'noletter');
|
||||
@@ -120,9 +120,7 @@ class bug extends control
|
||||
$this->assign('browseType', $browseType);
|
||||
$this->assign('bugs', $bugs);
|
||||
$this->assign('users', $users);
|
||||
$this->assign('recTotal', $pager->recTotal);
|
||||
$this->assign('recPerPage', $pager->recPerPage);
|
||||
$this->assign('pager', $pager->get());
|
||||
$this->assign('pager', $pager);
|
||||
$this->assign('param', $param);
|
||||
$this->assign('orderBy', $orderBy);
|
||||
$this->assign('moduleID', $moduleID);
|
||||
@@ -131,7 +129,7 @@ class bug extends control
|
||||
}
|
||||
|
||||
/* 创建Bug。*/
|
||||
public function create($productID, $moduleID = 0)
|
||||
public function create($productID, $moduleID = 0, $projectID)
|
||||
{
|
||||
if(empty($this->products)) $this->locate($this->createLink('product', 'create'));
|
||||
|
||||
|
||||
@@ -53,14 +53,14 @@ function browseBySearch(active)
|
||||
<div class='f-left'>
|
||||
<?php
|
||||
echo "<span id='bymoduleTab' onclick=\"browseByModule('$browseType')\">" . $lang->bug->moduleBugs . "</span> ";
|
||||
echo "<span id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=assignToMe¶m=0"), $lang->bug->assignToMe) . "</span>";
|
||||
echo "<span id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=openedByMe¶m=0"), $lang->bug->openedByMe) . "</span>";
|
||||
echo "<span id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=resolvedByMe¶m=0"), $lang->bug->resolvedByMe) . "</span>";
|
||||
echo "<span id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=assignToNull¶m=0"), $lang->bug->assignToNull) . "</span>";
|
||||
echo "<span id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=longLifeBugs¶m=0"), $lang->bug->longLifeBugs) . "</span>";
|
||||
echo "<span id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=postponedBugs¶m=0"), $lang->bug->postponedBugs) . "</span>";
|
||||
echo "<span id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToMe¶m=0"), $lang->bug->assignToMe) . "</span>";
|
||||
echo "<span id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=openedByMe¶m=0"), $lang->bug->openedByMe) . "</span>";
|
||||
echo "<span id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=resolvedByMe¶m=0"), $lang->bug->resolvedByMe) . "</span>";
|
||||
echo "<span id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToNull¶m=0"), $lang->bug->assignToNull) . "</span>";
|
||||
echo "<span id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=longLifeBugs¶m=0"), $lang->bug->longLifeBugs) . "</span>";
|
||||
echo "<span id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=postponedBugs¶m=0"), $lang->bug->postponedBugs) . "</span>";
|
||||
echo "<span id='bysearchTab' onclick=\"browseBySearch('$browseType')\">{$lang->bug->byQuery}</span> ";
|
||||
echo "<span id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=all¶m=0&orderBy=$orderBy&recTotal=$recTotal&recPerPage=200"), $lang->bug->allBugs) . "</span>";
|
||||
echo "<span id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=all¶m=0&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage=200"), $lang->bug->allBugs) . "</span>";
|
||||
?>
|
||||
</div>
|
||||
<div class='f-right'>
|
||||
@@ -70,8 +70,8 @@ function browseBySearch(active)
|
||||
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'><?php echo $searchForm;?></div>
|
||||
</div>
|
||||
|
||||
<div class='yui-d0 <?php if($type == 'bymodule') echo 'yui-t7';?>' id='mainbox'>
|
||||
<div class='yui-b <?php if($type != 'bymodule') echo 'hidden';?>' id='treebox'>
|
||||
<div class='yui-d0 <?php if($browseType == 'bymodule') echo 'yui-t7';?>' id='mainbox'>
|
||||
<div class='yui-b <?php if($browseType != 'bymodule') echo 'hidden';?>' id='treebox'>
|
||||
<div class='box-title'><?php echo $productName;?></div>
|
||||
<div class='box-content'>
|
||||
<?php echo $moduleTree;?>
|
||||
@@ -83,7 +83,7 @@ function browseBySearch(active)
|
||||
|
||||
<div class="yui-main">
|
||||
<div class="yui-b">
|
||||
<?php $vars = "productID=$productID&browseType=$browseType¶m=$param&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage"; ?>
|
||||
<?php $vars = "productID=$productID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<table class='table-1 fixed colored'>
|
||||
<thead>
|
||||
<tr class='colhead'>
|
||||
@@ -110,7 +110,7 @@ function browseBySearch(active)
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='a-right'><?php echo $pager;?></div>
|
||||
<?php $pager->show();?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@ $app->loadLang('story');
|
||||
$config->product->search['module'] = 'story';
|
||||
$config->product->search['fields']['id'] = $lang->story->id;
|
||||
$config->product->search['fields']['title'] = $lang->story->title;
|
||||
$config->product->search['fields']['product'] = $lang->story->product;
|
||||
$config->product->search['fields']['spec'] = $lang->story->spec;
|
||||
$config->product->search['fields']['assignedTo'] = $lang->story->assignedTo;
|
||||
$config->product->search['fields']['openedBy'] = $lang->story->openedBy;
|
||||
$config->product->search['fields']['lastEditedBy'] = $lang->story->lastEditedBy;
|
||||
@@ -12,7 +12,7 @@ $config->product->search['fields']['status'] = $lang->story->status;
|
||||
$config->product->search['fields']['pri'] = $lang->story->pri;
|
||||
|
||||
$config->product->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->product->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => 'products');
|
||||
$config->product->search['params']['spec'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->product->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->product->search['params']['resolvedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->product->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
|
||||
@@ -87,7 +87,7 @@ class product extends control
|
||||
elseif($browseType == 'bysearch')
|
||||
{
|
||||
if($this->session->storyQuery == false) $this->session->set('storyQuery', ' 1 = 1');
|
||||
$stories = $this->story->getByQuery($this->session->storyQuery, $orderBy, $pager);
|
||||
$stories = $this->story->getByQuery($productID, $this->session->storyQuery, $orderBy, $pager);
|
||||
}
|
||||
|
||||
$this->assign('productID', $productID);
|
||||
|
||||
@@ -99,7 +99,8 @@ class searchModel extends model
|
||||
$queryForm[$fieldName] = key($fields);
|
||||
$queryForm[$andOrName] = 'and';
|
||||
$queryForm[$operatorName] = $operator;
|
||||
$queryForm[$valueName] = '';
|
||||
$queryForm[$valueName] = '';
|
||||
|
||||
if(!next($fields)) reset($fields);
|
||||
}
|
||||
$queryForm['groupAndOr'] = 'and';
|
||||
@@ -111,12 +112,14 @@ class searchModel extends model
|
||||
{
|
||||
$users = $this->loadModel('user')->getPairs();
|
||||
$products = array('' => '') + $this->loadModel('product')->getPairs();
|
||||
$projects = array('' => '') + $this->loadModel('project')->getPairs();
|
||||
$fields = array_keys($fields);
|
||||
foreach($fields as $fieldName)
|
||||
{
|
||||
if(!isset($params[$fieldName])) $params[$fieldName] = array('operator' => '=', 'control' => 'input', 'values' => '');
|
||||
if($params[$fieldName]['values'] == 'users') $params[$fieldName]['values'] = $users;
|
||||
if($params[$fieldName]['values'] == 'products') $params[$fieldName]['values'] = $products;
|
||||
if($params[$fieldName]['values'] == 'users') $params[$fieldName]['values'] = $users;
|
||||
if($params[$fieldName]['values'] == 'products') $params[$fieldName]['values'] = $products;
|
||||
if($params[$fieldName]['values'] == 'projects') $params[$fieldName]['values'] = $projects;
|
||||
}
|
||||
return $params;
|
||||
}
|
||||
|
||||
@@ -110,9 +110,9 @@ class storyModel extends model
|
||||
}
|
||||
|
||||
/* 按照某一个查询条件获取列表。*/
|
||||
public function getByQuery($query, $orderBy, $pager = null)
|
||||
public function getByQuery($productID, $query, $orderBy, $pager = null)
|
||||
{
|
||||
$tmpStories = $this->dao->select('*')->from(TABLE_STORY)->where($query)->orderBy($orderBy)->page($pager)->fetchGroup('plan');
|
||||
$tmpStories = $this->dao->select('*')->from(TABLE_STORY)->where($query)->andWhere('product')->eq((int)$productID)->orderBy($orderBy)->page($pager)->fetchGroup('plan');
|
||||
if(!$tmpStories) return array();
|
||||
$plans = $this->dao->select('id,title')->from(TABLE_PRODUCTPLAN)->where('id')->in(array_keys($tmpStories))->fetchPairs();
|
||||
$stories = array();
|
||||
|
||||
@@ -3,7 +3,7 @@ global $lang;
|
||||
$config->testcase->search['module'] = 'testcase';
|
||||
$config->testcase->search['fields']['id'] = $lang->testcase->id;
|
||||
$config->testcase->search['fields']['title'] = $lang->testcase->title;
|
||||
$config->testcase->search['fields']['product'] = $lang->testcase->product;
|
||||
$config->testcase->search['fields']['steps'] = $lang->testcase->steps;
|
||||
$config->testcase->search['fields']['openedBy'] = $lang->testcase->openedBy;
|
||||
$config->testcase->search['fields']['lastEditedBy'] = $lang->testcase->lastEditedBy;
|
||||
$config->testcase->search['fields']['status'] = $lang->testcase->status;
|
||||
@@ -13,7 +13,7 @@ $config->testcase->search['fields']['openedDate'] = $lang->testcase->openedD
|
||||
$config->testcase->search['fields']['lastEditedDate'] = $lang->testcase->lastEditedDate;
|
||||
|
||||
$config->testcase->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->testcase->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => 'products');
|
||||
$config->testcase->search['params']['steps'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->testcase->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->testcase->search['params']['lastEditedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->testcase->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->statusList);
|
||||
|
||||
@@ -70,7 +70,7 @@ class testcase extends control
|
||||
elseif($browseType == 'bysearch')
|
||||
{
|
||||
if($this->session->testcaseQuery == false) $this->session->set('testcaseQuery', ' 1 = 1');
|
||||
$this->view->cases = $this->dao->select('*')->from(TABLE_CASE)->where($this->session->testcaseQuery)->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
$this->view->cases = $this->dao->select('*')->from(TABLE_CASE)->where($this->session->testcaseQuery)->andWhere('product')->eq($productID)->orderBy($orderBy)->page($pager)->fetchAll();
|
||||
}
|
||||
|
||||
/* 赋值。*/
|
||||
|
||||
Reference in New Issue
Block a user