This commit is contained in:
wangyidong
2011-03-09 04:03:38 +00:00
parent a556e655b7
commit b89aec14df
17 changed files with 234 additions and 15 deletions
+1
View File
@@ -176,6 +176,7 @@ $lang->doc->menu->browse = array('link' => 'Doc|doc|browse|libID=%s');
$lang->doc->menu->edit = 'Edit Library|doc|editLib|libID=%s';
$lang->doc->menu->module = 'Modules|tree|browse|libID=%s&viewType=doc';
$lang->doc->menu->delete = array('link' => 'Delete Library|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
$lang->doc->menu->search = array('link' => 'Search|doc|byQuery');
$lang->doc->menu->create = array('link' => 'New Library|doc|createLib', 'float' => 'right');
/* Company menu. */
+1
View File
@@ -176,6 +176,7 @@ $lang->doc->menu->browse = array('link' => '文档列表|doc|browse|libID=%s');
$lang->doc->menu->edit = '编辑文档库|doc|editLib|libID=%s';
$lang->doc->menu->module = '维护模块|tree|browse|libID=%s&viewType=doc';
$lang->doc->menu->delete = array('link' => '删除文档库|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
$lang->doc->menu->search = array('link' => '搜索|doc|byQuery');
$lang->doc->menu->create = array('link' => '新增文档库|doc|createLib', 'float' => 'right');
/* 组织结构视图菜单设置。*/
+7 -2
View File
@@ -297,8 +297,13 @@ class commonModel extends model
/* Is the currentModule active? */
if($currentModule == $subModule) $active = 'active';
if($module == $currentModule and ($method == $currentMethod or strpos($alias, $currentMethod) !== false)) $active = 'active';
echo "<li class='$float $active'>" . html::a(helper::createLink($module, $method, $vars), $label, $target) . "</li>\n";
if($method == "byQuery")
{
echo "<li class='$float $active'>" . html::a('#',$label,$target,"id='$method'") . "</li>\n";
}else
{
echo "<li class='$float $active'>" . html::a(helper::createLink($module, $method, $vars), $label, $target) . "</li>\n";
}
}
}
}
+35
View File
@@ -1,4 +1,5 @@
<?php
global $lang;
$config->doc->createLib->requiredFields = 'name';
$config->doc->editLib->requiredFields = 'name';
$config->doc->create->requiredFields = 'title';
@@ -6,3 +7,37 @@ $config->doc->edit->requiredFields = 'title';
$config->doc->editor->create = array('id' => 'content', 'tools' => 'fullTools');
$config->doc->editor->edit = array('id' => 'content', 'tools' => 'fullTools');
$config->doc->search['module'] = 'doc';
$config->doc->search['fields']['title'] = $lang->doc->title;
$config->doc->search['fields']['id'] = $lang->doc->id;
$config->doc->search['fields']['keywords'] = $lang->doc->keywords;
$config->doc->search['fields']['product'] = $lang->doc->product;
$config->doc->search['fields']['module'] = $lang->doc->module;
$config->doc->search['fields']['project'] = $lang->doc->project;
$config->doc->search['fields']['type'] = $lang->doc->type;
$config->doc->search['fields']['lib'] = $lang->doc->lib;
$config->doc->search['fields']['digest'] = $lang->doc->digest;
$config->doc->search['fields']['content'] = $lang->doc->content;
$config->doc->search['fields']['url'] = $lang->doc->url;
$config->doc->search['fields']['views'] = $lang->doc->views;
$config->doc->search['fields']['addedBy'] = $lang->doc->addedBy;
$config->doc->search['fields']['addedDate'] = $lang->doc->addedDate;
$config->doc->search['fields']['editedBy'] = $lang->doc->editedBy;
$config->doc->search['fields']['editedDate'] = $lang->doc->editedDate;
$config->doc->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->doc->search['params']['keywords'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->doc->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->doc->search['params']['module'] = array('operator' => '=', 'control' => 'select', 'values' => 'modules');
$config->doc->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => 'projects');
$config->doc->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->doc->types);
$config->doc->search['params']['lib'] = array('operator' => '=', 'control' => 'select', 'values' => '' );
$config->doc->search['params']['digest'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->doc->search['params']['content'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->doc->search['params']['url'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->doc->search['params']['views'] = array('operator' => '>', 'control' => 'input', 'values' => '' );
$config->doc->search['params']['addedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->doc->search['params']['addedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '');
$config->doc->search['params']['editedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->doc->search['params']['editedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '');
+57 -5
View File
@@ -11,6 +11,7 @@
*/
class doc extends control
{
private $products = array();
/**
* Construct function, load user, tree, action auto.
*
@@ -23,7 +24,15 @@ class doc extends control
$this->loadModel('user');
$this->loadModel('tree');
$this->loadModel('action');
$this->loadModel('product');
$this->libs = $this->doc->getLibs();
$this->products = $this->product->getPairs();
if(empty($this->products))
{
echo js::alert($this->lang->product->errorNoProduct);
die(js::locate($this->createLink('product', 'create')));
}
$this->view->products = $this->products;
}
/**
@@ -51,8 +60,13 @@ class doc extends control
* @access public
* @return void
*/
public function browse($libID = 'product', $moduleID = 0, $productID = 0, $projectID = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
public function browse($libID = 'product', $moduleID = 0, $productID = 0, $projectID = 0, $browseType = 'byModule', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
/* Set browseType.*/
$browseType = strtolower($browseType);
$productID = $this->product->saveState($productID, $this->products);
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
/* Set menu, save session. */
$this->doc->setMenu($this->libs, $libID, 'doc');
$this->session->set('docList', $this->app->getURI(true));
@@ -64,11 +78,39 @@ class doc extends control
/* Load pager. */
$this->app->loadClass('pager', $static = true);
$pager = new pager($recTotal, $recPerPage, $pageID);
/* Get docs. */
$modules = 0;
if($moduleID) $modules = $this->tree->getAllChildID($moduleID);
$docs = $this->doc->getDocs($libID, $productID, $projectID, $modules, $orderBy, $pager);
$docs=array();
if($browseType == "bymodule")
{
if($moduleID) $modules = $this->tree->getAllChildID($moduleID);
$docs = $this->doc->getDocs($libID, $productID, $projectID, $modules, $orderBy, $pager);
}
elseif($browseType == "bysearch")
{
if($queryID)
{
$query = $this->loadModel('search')->getQuery($queryID);
if($query)
{
$this->session->set('docQuery', $query->sql);
$this->session->set('docForm', $query->form);
}
else
{
$this->session->set('docQuery', ' 1 = 1');
}
}
else
{
if($this->session->docQuery == false) $this->session->set('docQuery', ' 1 = 1');
}
$docQuery = str_replace("`product` = 'all'", '1', $this->session->docQuery); // Search all producti.
$docs = $this->dao->select('*')->from(TABLE_DOC)->where($docQuery)
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
/* Get the tree menu. */
if($libID == 'product')
@@ -83,6 +125,14 @@ class doc extends control
{
$moduleTree = $this->tree->getTreeMenu($libID, $viewType = 'customdoc', $startModuleID = 0, array('treeModel', 'createDocLink'));
}
/* Build the search form. */
$this->config->doc->search['actionURL'] = $this->createLink('doc', 'browse', "libID=$libID&moduleID=$moduleID&procuctID=$productID&projectID=$projectID&browseType=bySearch&queryID=myQueryID");
$this->config->doc->search['queryID'] = $queryID;
$this->config->doc->search['params']['product']['values'] = array($productID => $this->products[$productID], 'all' => $this->lang->doc->allProduct);
$this->config->doc->search['params']['lib']['values'] = $this->doc->getLibs();
$this->config->doc->search['params']['module']['values'] = $this->tree->getOptionMenu($productID, $viewType = 'doc', $startModuleID = 0);
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->doc->search);
$this->view->libID = $libID;
$this->view->libName = $this->libs[$libID];
@@ -95,6 +145,8 @@ class doc extends control
$this->view->orderBy = $orderBy;
$this->view->productID = $productID;
$this->view->projectID = $projectID;
$this->view->browseType = $browseType;
$this->view->param = $param;
$this->display();
}
+7
View File
@@ -0,0 +1,7 @@
$(function(){$("#byQuery").css("color","red");});
/* Search doc. */
$("#byQuery").bind("click",function(){
$(this).css({color:"green","font-weight":"bold"});
$('.divider').addClass('hidden');
$('#querybox').removeClass('hidden');
});
+3
View File
@@ -44,6 +44,9 @@ $lang->doc->editLib = 'Edit library';
$lang->doc->deleteLib = 'Delete library';
$lang->doc->libName = 'Library name';
/* Browse tabs. */
$lang->doc->allProduct = 'All products';
$lang->doc->systemLibs['product'] = 'Product doc';
$lang->doc->systemLibs['project'] = 'Project doc';
+3
View File
@@ -44,6 +44,9 @@ $lang->doc->editLib = '编辑文档库';
$lang->doc->deleteLib = '删除文档库';
$lang->doc->libName = '文档库名称';
/* 查询条件列表 */
$lang->doc->allProduct = '所有产品';
$lang->doc->systemLibs['product'] = '产品文档库';
$lang->doc->systemLibs['project'] = '项目文档库';
+2 -1
View File
@@ -18,6 +18,7 @@
<?php common::printLink('doc', 'create', "libID=$libID&moduleID=$moduleID&productID=$productID&projectID=$projectID&from=doc", $lang->doc->create);?>
</div>
</div>
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'><?php echo $searchForm;?></div>
<table class='cont-lt3'>
<tr valign='top'>
@@ -35,7 +36,7 @@
<table class='table-1 fixed colored tablesorter datatable'>
<thead>
<tr class='colhead'>
<?php $vars = "libID=$libID&module=$moduleID&productID=$productID&projectID=$projectID&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
<?php $vars = "libID=$libID&module=$moduleID&productID=$productID&projectID=$projectID&$browseType=$browseType&param=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
<th><?php common::printOrderLink('title', $orderBy, $vars, $lang->doc->title);?></th>
<th class='w-100px'><?php common::printOrderLink('type', $orderBy, $vars, $lang->doc->type);?></th>
+46
View File
@@ -1,6 +1,52 @@
<?php
global $lang, $app;
$app->loadLang('task');
$config->project->create->requiredFields = 'name,code,team,begin,end';
$config->project->edit->requiredFields = 'name,code,team,begin,end';
$config->project->editor->create = array('id' => 'desc,goal', 'tools' => 'simpleTools');
$config->project->editor->edit = array('id' => 'desc,goal', 'tools' => 'simpleTools');
$config->project->search['module'] = 'task';
$config->project->search['fields']['name'] = $lang->task->name;
$config->project->search['fields']['id'] = $lang->task->id;
$config->project->search['fields']['story'] = $lang->task->story;
$config->project->search['fields']['project'] = $lang->task->project;
$config->project->search['fields']['type'] = $lang->task->type;
$config->project->search['fields']['mailto'] = $lang->task->mailto;
$config->project->search['fields']['estimate'] = $lang->task->estimate;
$config->project->search['fields']['left'] = $lang->task->left;
$config->project->search['fields']['consumed'] = $lang->task->consumed;
$config->project->search['fields']['deadline'] = $lang->task->deadline;
$config->project->search['fields']['status'] = $lang->task->status;
$config->project->search['fields']['pri'] = $lang->task->pri;
$config->project->search['fields']['desc'] = $lang->task->desc;
$config->project->search['fields']['assignedTo'] = $lang->task->assignedTo;
$config->project->search['fields']['assignedDate'] = $lang->task->assignedDate;
$config->project->search['fields']['openedDate'] = $lang->task->openedDate;
$config->project->search['fields']['openedBy'] = $lang->task->openedBy;
$config->project->search['fields']['finishedBy'] = $lang->task->finishedBy;
$config->project->search['fields']['finishedDate'] = $lang->task->finishedDate;
$config->project->search['fields']['canceledBy'] = $lang->task->canceledBy;
$config->project->search['fields']['canceledDate'] = $lang->task->canceledDate;
$config->project->search['fields']['closedBy'] = $lang->task->closedBy;
$config->project->search['fields']['closedDate'] = $lang->task->closedDate;
$config->project->search['fields']['closedReason'] = $lang->task->closedReason;
$config->project->search['fields']['lastEdited'] = $lang->task->lastEdited;
$config->project->search['params']['name'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->project->search['params']['story'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->project->search['params']['desc'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->project->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->project->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['closedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['cancelBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['lastEdited'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['finishedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['mailto'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->statusList);
$config->project->search['params']['sclosedReason'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->reasonList);
$config->project->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->priList);
$config->project->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->typeList);
+52 -4
View File
@@ -102,8 +102,11 @@ class project extends control
* @access public
* @return void
*/
public function task($projectID = 0, $status = 'all', $orderBy = 'status_asc,id_desc', $recTotal = 0, $recPerPage = 100, $pageID = 1)
{
public function task($projectID = 0, $status = 'all', $param=0, $orderBy = 'status_asc,id_desc', $recTotal = 0, $recPerPage = 100, $pageID = 1)
{
/* Set browseType, productID, moduleID and queryID. */
$browseType = strtolower($status);
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
$project = $this->commonAction($projectID);
$projectID = $project->id;
@@ -121,7 +124,51 @@ class project extends control
/* Load pager and get tasks. */
$this->app->loadClass('pager', $static = true);
$pager = new pager($recTotal, $recPerPage, $pageID);
$tasks = $this->loadModel('task')->getProjectTasks($projectID, $status, $orderBy, $pager);
$tasks=array();
if($browseType!="bysearch")
{
$tasks = $this->loadModel('task')->getProjectTasks($projectID, $status, $orderBy, $pager);
}
else
{
if($queryID)
{
$query = $this->loadModel('search')->getQuery($queryID);
if($query)
{
$this->session->set('taskQuery', $query->sql);
$this->session->set('taskForm', $query->form);
}
else
{
$this->session->set('taskQuery', ' 1 = 1');
}
}
else
{
if($this->session->taskQuery == false) $this->session->set('taskQuery', ' 1 = 1');
}
$taskQuery = str_replace("`project` = 'all'", '1', $this->session->taskQuery); // Search all product.
$taskids = $this->dao->select('id')->from(TABLE_TASK)->where($taskQuery)
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->fetchAll('id');
$tasks = $this->dao->select('t1.*, t2.id AS storyID, t2.title AS storyTitle, t2.version AS latestStoryVersion, t2.status AS storyStatus, t3.realname AS assignedToRealName')
->from(TABLE_TASK)->alias('t1')
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
->leftJoin(TABLE_USER)->alias('t3')->on('t1.assignedTo = t3.account')
->where('t1.project')->eq((int)$projectID)
->andWhere('t1.deleted')->eq(0)
->andWhere('t1.id')->in(array_keys($taskids))
->orderBy($orderBy)
->page($pager)
->fetchAll();
}
/* Build the search form. */
$this->config->project->search['actionURL'] = $this->createLink('project', 'task', "projectID=$projectID&status=bySearch&param=myQueryID");
$this->config->project->search['queryID'] = $queryID;
$this->config->project->search['params']['project']['values'] = array($projectID => $this->projects[$projectID], 'all' => $this->lang->project->allProject);
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->project->search);
/* Assign. */
$this->view->tasks = $tasks ? $tasks : array();
@@ -130,9 +177,10 @@ class project extends control
$this->view->recTotal = $pager->recTotal;
$this->view->recPerPage = $pager->recPerPage;
$this->view->orderBy = $orderBy;
$this->view->browseType = strtolower($status);
$this->view->browseType = $browseType;
$this->view->status = $status;
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->param = $param;
$this->display();
}
+7
View File
@@ -0,0 +1,7 @@
/* Search bugs. */
function browseBySearch(active)
{
$('.divider').addClass('hidden');
$('#querybox').removeClass('hidden');
$('#' + active + 'Tab').removeClass('active');
}
+4
View File
@@ -103,6 +103,10 @@ $lang->project->groups['left'] = 'Group by left';
$lang->project->groups['type'] = 'Group by type';
$lang->project->groups['deadline'] = 'Group by deadline';
$lang->project->listTaskNeedConfrim = 'Story changed';
$lang->project->byQuery = 'Search';
/* Browse tabs. */
$lang->project->allProject = 'All projects';
/* Notcie. */
$lang->project->selectProject = "Select project";
+4
View File
@@ -102,6 +102,10 @@ $lang->project->groups['left'] = '剩余分组';
$lang->project->groups['type'] = '类型分组';
$lang->project->groups['deadline'] = '截止分组';
$lang->project->listTaskNeedConfrim = '需求变动';
$lang->project->byQuery = '搜索';
/* 查询条件列表。*/
$lang->project->allProject = '所有项目';
/* 页面提示。*/
$lang->project->selectProject = "请选择项目";
+2 -1
View File
@@ -14,8 +14,9 @@
<?php include '../../common/view/colorize.html.php';?>
<?php include '../../common/view/table2csv.html.php';?>
<?php include './taskheader.html.php';?>
<div id='querybox' class='<?php if($browseType !='bysearch') echo 'hidden';?>'><?php echo $searchForm;?></div>
<table class='table-1 fixed colored tablesorter datatable'>
<?php $vars = "projectID=$project->id&status=$status&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage"; ?>
<?php $vars = "projectID=$project->id&status=$status&parma=$param&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage"; ?>
<thead>
<tr class='colhead'>
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
+1
View File
@@ -13,6 +13,7 @@
echo html::select('groupBy', $lang->project->groups, isset($groupBy) ? $groupBy : '', "onchange='switchGroup({$project->id}, this.value)'");
echo "</span>";
echo "<span id='needconfirmTab'>"; common::printLink('project', 'task', "project=$project->id&status=needConfirm",$lang->project->listTaskNeedConfrim); echo '</span>' ;
echo "<span id='bysearchTab' onclick=\"browseBySearch('$browseType')\"><a href='#'>{$lang->project->byQuery}</a></span> ";
?>
</div>
<div class='f-right'>
+2 -2
View File
@@ -34,8 +34,8 @@ var actionURL = '<?php echo $actionURL;?>';
function setField(fieldName, fieldNO)
{
$('#operator' + fieldNO).val(params[fieldName]['operator']); // Set the operator according the param setting.
htmlString = $('#box' + fieldName).html().replace(fieldName, 'value' + fieldNO).replace(fieldName, 'value' + fieldNO);
$('#valueBox' + fieldNO).html(htmlString);
$('#valueBox' + fieldNO) .html($('#box' + fieldName).children().clone());
$('#valueBox' + fieldNO).children().attr({name : 'value' + fieldNO, id : 'value' + fieldNO});
}
/**