* adjust the search feature, no product in the search fields any more and add full text search.

This commit is contained in:
wangchunsheng
2010-01-14 07:38:37 +00:00
parent 1b8f2c6264
commit 74368ecccc
9 changed files with 36 additions and 33 deletions

View File

@@ -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');

View File

@@ -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'));

View File

@@ -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&param=0"), $lang->bug->assignToMe) . "</span>";
echo "<span id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=openedByMe&param=0"), $lang->bug->openedByMe) . "</span>";
echo "<span id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=resolvedByMe&param=0"), $lang->bug->resolvedByMe) . "</span>";
echo "<span id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=assignToNull&param=0"), $lang->bug->assignToNull) . "</span>";
echo "<span id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=longLifeBugs&param=0"), $lang->bug->longLifeBugs) . "</span>";
echo "<span id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&type=postponedBugs&param=0"), $lang->bug->postponedBugs) . "</span>";
echo "<span id='assigntomeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToMe&param=0"), $lang->bug->assignToMe) . "</span>";
echo "<span id='openedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=openedByMe&param=0"), $lang->bug->openedByMe) . "</span>";
echo "<span id='resolvedbymeTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=resolvedByMe&param=0"), $lang->bug->resolvedByMe) . "</span>";
echo "<span id='assigntonullTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=assignToNull&param=0"), $lang->bug->assignToNull) . "</span>";
echo "<span id='longlifebugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=longLifeBugs&param=0"), $lang->bug->longLifeBugs) . "</span>";
echo "<span id='postponedbugsTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=postponedBugs&param=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&param=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&param=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&param=$param&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage"; ?>
<?php $vars = "productID=$productID&browseType=$browseType&param=$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>

View File

@@ -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');

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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();
}
/* 赋值。*/