* code for task#1377.

This commit is contained in:
chencongzhi520@gmail.com
2013-06-18 08:26:45 +00:00
parent 52eaccd025
commit 17563eae27
8 changed files with 126 additions and 48 deletions

View File

@@ -479,10 +479,10 @@ class product extends control
* @access public
* @return void
*/
public function searchProduct($keywords, $module, $method, $extra)
public function searchItems($keywords, $module, $method, $extra)
{
$this->view->link = $this->getProductLink($module, $method, $extra);
$this->view->products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('name')->like("%$keywords%")->orderBy('code')->fetchAll();
$this->view->products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('deleted')->eq(0)->andWhere('name')->like("%$keywords%")->orderBy('code')->fetchAll();
$this->view->keywords = $keywords;
$this->display();
}

View File

@@ -59,12 +59,9 @@ class productModel extends model
*/
public function select($products, $productID, $currentModule, $currentMethod, $extra = '')
{
$productMode = $this->cookie->productMode ? $this->cookie->productMode : 'all';
$productGroup = array();
$products = $this->dao->select('id, status, name')->from(TABLE_PRODUCT)->where('id')->in(array_keys($products))->orderBy('`order`')->fetchAll('id');
$output = "<div id='currentProduct'>";
$output .= "<a onclick=\"showDropMenu('$productID', '$currentModule', '$currentMethod', '$extra')\">{$products[$productID]->name}<span id='dropIcon'></span></a>";
$currentProduct = $this->getById($productID);
$output = "<div id='currentItem'>";
$output .= "<a onclick=\"showDropMenu('product', '$productID', '$currentModule', '$currentMethod', '$extra')\">{$currentProduct->name}<span id='dropIcon'></span></a>";
$output .= "</div><div id='dropMenu'></div>";
return $output;
}

View File

@@ -2,16 +2,10 @@
<?php js::set('module', $module);?>
<?php js::set('method', $method);?>
<?php js::set('extra', $extra);?>
<script>
function showMore()
{
$('#moreMenu').removeClass('hidden')
}
</script>
<input type='text' id='search' value='' onkeyup='searchItems(this.value, "product", productID, module, method, extra)' placeholder='<?php echo $this->app->loadLang('search')->search->common;?>'>
搜索:<input type='text' id='search' value='' onkeyup='searchProduct(this.value, productID, module, method, extra)'>
<div id='searchResult'>
<div class='f-left'>
<div id='defaultMenu' class='f-left'>
<ul>
<?php
foreach($products as $product)
@@ -26,7 +20,7 @@ function showMore()
}
?>
</ul>
<div class='a-right'><a id='more' onClick='showMore()'>更多&raquo;</a></div>
<div class='a-right'><a id='more' onClick='showMore()'><?php echo $lang->more;?>&raquo;</a></div>
</div>
<div id='moreMenu' class='hidden f-left'>

View File

@@ -1523,4 +1523,73 @@ class project extends control
$this->view->projectID = $projectID;
$this->display('project', 'tips');
}
/**
* Drop menu page.
*
* @param int $projectID
* @param int $module
* @param int $method
* @param int $extra
* @access public
* @return void
*/
public function dropMenu($projectID, $module, $method, $extra)
{
$this->view->link = $this->getProjectLink($module, $method, $extra);
$this->view->projectID = $projectID;
$this->view->module = $module;
$this->view->method = $method;
$this->view->extra = $extra;
$this->view->projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->in(array_keys($this->projects))->orderBy('code')->fetchAll();
$this->display();
}
/**
* The results page of search.
*
* @param string $keywords
* @param string $module
* @param string $method
* @param mix $extra
* @access public
* @return void
*/
public function searchItems($keywords, $module, $method, $extra)
{
$this->view->link = $this->getProjectLink($module, $method, $extra);
$this->view->projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('deleted')->eq(0)->andWhere('name')->like("%$keywords%")->orderBy('code')->fetchAll();
$this->view->keywords = $keywords;
$this->display();
}
/**
* Create the link from module,method,extra
*
* @param string $module
* @param string $method
* @param mix $extra
* @access public
* @return void
*/
public function getProjectLink($module, $method, $extra)
{
$link = '';
if($module == 'task' && ($method == 'view' || $method == 'edit' || $method == 'batchedit'))
{
$module = 'project';
$method = 'task';
}
if($module == 'build' && $method == 'edit')
{
$module = 'project';
$method = 'build';
}
if($module == 'project' && $method == 'create') return;
$link = $this->createLink($module, $method, "projectID=%s");
if($extra != '') $link = $this->createLink($module, $method, "projectID=%s&type=$extra");
return $link;
}
}

View File

@@ -116,37 +116,11 @@ class projectModel extends model
*/
public function select($projects, $projectID, $currentModule, $currentMethod, $extra = '')
{
$projectMode = $this->cookie->projectMode ? $this->cookie->projectMode : 'all';
$products = $this->loadModel('product')->getPairs('nocode');
$productGroup = $this->getProductGroupList();
$selectGroup = array();
foreach($productGroup as $productID => $projects)
{
if(!isset($products[$productID]) and $productID != '') continue;
foreach($projects as $project)
{
if($projectMode == 'noclosed' and ($project->status == 'done' or $project->status == 'suspended')) continue;
$status = $project->status != 'done' ? $this->lang->project->selectGroup->doing : '';
if($project->product)
{
$product = isset($products[$project->product]) ? $products[$project->product] : '';
$selectGroup[$product][$project->id] = $project->name . $status;
}
else
{
$selectGroup[$this->lang->project->noProduct][$project->id] = $project->name . $status;
}
}
}
/* See product's model method:select. */
$switchCode = "switchProject($('#projectID').val(), '$currentModule', '$currentMethod', '$extra');";
$onchange = "onchange=\"$switchCode\"";
$onkeypress = "onkeypress=\"eventKeyCode=event.keyCode; if(eventKeyCode == 13) $switchCode\"";
$onclick = "onclick=\"eventKeyCode = 13; $switchCode\"";
$selectHtml = html::selectGroup('projectID', $selectGroup, $projectID, "tabindex=2 $onchange $onkeypress");
return $selectHtml;
$currentProject = $this->getById($projectID);
$output = "<div id='currentItem'>";
$output .= "<a onclick=\"showDropMenu('project', '$projectID', '$currentModule', '$currentMethod', '$extra')\">{$currentProject->name}<span id='dropIcon'></span></a>";
$output .= "</div><div id='dropMenu'></div>";
return $output;
}
/**

View File

@@ -0,0 +1,36 @@
<?php js::set('projectID', $projectID);?>
<?php js::set('module', $module);?>
<?php js::set('method', $method);?>
<?php js::set('extra', $extra);?>
<input type='text' id='search' value='' onkeyup='searchItems(this.value, "project", projectID, module, method, extra)' placeholder='<?php echo $this->app->loadLang('search')->search->common;?>'>
<div id='searchResult'>
<div id='defaultMenu' class='f-left'>
<ul>
<?php
foreach($projects as $project)
{
$isOwner = $project->PO == $this->app->user->account or $project->PM == $this->app->user->account or $project->QD == $this->app->user->account or $project->RD == $this->app->user->account;
if($project->status != 'done' and $isOwner) echo "<li>" . html::a(sprintf($link, $project->id), $project->name). "</li>";
}
foreach($projects as $project)
{
$isOwner = $project->PO == $this->app->user->account or $project->PM == $this->app->user->account or $project->QD == $this->app->user->account or $project->RD == $this->app->user->account;
if($project->status != 'done' and !$isOwner) echo "<li>" . html::a(sprintf($link, $project->id), $project->name). "</li>";
}
?>
</ul>
<div class='a-right'><a id='more' onClick='showMore()'><?php echo $lang->more;?>&raquo;</a></div>
</div>
<div id='moreMenu' class='hidden f-left'>
<ul>
<?php
foreach($projects as $project)
{
if($project->status == 'done') echo "<li>" . html::a(sprintf($link, $project->id), $project->name). "</li>";
}
?>
</ul>
</div>
</div>

View File

@@ -0,0 +1,8 @@
<ul>
<?php
foreach($projects as $project)
{
echo "<li>" . html::a(sprintf($link, $project->id), $project->name). "</li>";
}
?>
</ul>