* Code for task#53657
This commit is contained in:
@@ -22,3 +22,31 @@ $config->program->sortFields = new stdclass();
|
||||
$config->program->sortFields->id = 'id';
|
||||
$config->program->sortFields->begin = 'begin';
|
||||
$config->program->sortFields->end = 'end';
|
||||
|
||||
global $lang;
|
||||
$config->program->search['module'] = 'program';
|
||||
$config->program->search['fields']['name'] = $lang->program->name;
|
||||
$config->program->search['fields']['status'] = $lang->program->status;
|
||||
$config->program->search['fields']['desc'] = $lang->program->desc;
|
||||
$config->program->search['fields']['PM'] = $lang->program->PM;
|
||||
$config->program->search['fields']['openedDate'] = $lang->program->openedDate;
|
||||
$config->program->search['fields']['begin'] = $lang->program->begin;
|
||||
$config->program->search['fields']['end'] = $lang->program->end;
|
||||
$config->program->search['fields']['openedBy'] = $lang->program->openedBy;
|
||||
$config->program->search['fields']['lastEditedDate'] = $lang->program->lastEditedDate;
|
||||
$config->program->search['fields']['realBegan'] = $lang->program->realBegin;
|
||||
$config->program->search['fields']['realEnd'] = $lang->program->realEnd;
|
||||
$config->program->search['fields']['closedDate'] = $lang->program->closedDate;
|
||||
|
||||
$config->program->search['params']['name'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->program->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => array('' => '') + $lang->program->statusList);
|
||||
$config->program->search['params']['desc'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->program->search['params']['PM'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->program->search['params']['openedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->program->search['params']['begin'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->program->search['params']['end'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->program->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->program->search['params']['lastEditedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->program->search['params']['realBegan'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->program->search['params']['realEnd'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->program->search['params']['closedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
|
||||
@@ -26,7 +26,7 @@ class program extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($status = 'all', $orderBy = 'order_asc', $recTotal = 0, $recPerPage = 10, $pageID = 1)
|
||||
public function browse($status = 'all', $orderBy = 'order_asc', $recTotal = 0, $recPerPage = 10, $pageID = 1, $param = 0)
|
||||
{
|
||||
if(common::hasPriv('program', 'create')) $this->lang->pageActions = html::a($this->createLink('program', 'create'), "<i class='icon icon-plus'></i> " . $this->lang->program->create, '', "class='btn btn-primary create-program-btn'");
|
||||
|
||||
@@ -44,10 +44,18 @@ class program extends control
|
||||
}
|
||||
else
|
||||
{
|
||||
$topPrograms = $this->program->getList($status, $orderBy, $pager, 'topProgram');
|
||||
$programIDs = array();
|
||||
foreach($topPrograms as $programID => $program) $programIDs[] = $programID;
|
||||
$programs = $this->program->getList($status, $orderBy, null, 'byTopIDs', $programIDs);
|
||||
if(strtolower($status) == 'bysearch')
|
||||
{
|
||||
$queryID = (int)$param;
|
||||
$programs = $this->program->getListBySearch($orderBy, $pager, $queryID);
|
||||
}
|
||||
else
|
||||
{
|
||||
$topPrograms = $this->program->getList($status, $orderBy, $pager, 'top');
|
||||
$programIDs = array();
|
||||
foreach($topPrograms as $programID => $program) $programIDs[] = $programID;
|
||||
$programs = $this->program->getList($status, $orderBy, null, 'child', $programIDs);
|
||||
}
|
||||
}
|
||||
|
||||
/* Get PM id list. */
|
||||
@@ -58,6 +66,12 @@ class program extends control
|
||||
}
|
||||
$PMList = $this->loadModel('user')->getListByAccounts($accounts, 'account');
|
||||
|
||||
/* Build the search form. */
|
||||
$actionURL = $this->createLink('program', 'browse', "status=bySearch&orderBy={$orderBy}&recTotal={$recTotal}&recPerPage={$recPerPage}&pageID={$pageID}¶m=myQueryID");
|
||||
$this->config->program->search['onMenuBar'] = 'yes';
|
||||
$this->config->program->search['actionURL'] = $actionURL;
|
||||
$this->loadModel('search')->setSearchParams($this->config->program->search);
|
||||
|
||||
$this->view->title = $this->lang->program->browse;
|
||||
$this->view->position[] = $this->lang->program->browse;
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ $(function()
|
||||
});
|
||||
|
||||
var myPager = $('.pager').data('zui.pager');
|
||||
if(myPager)
|
||||
if(status != 'bySearch' && myPager)
|
||||
{
|
||||
myPager.lang.pageSize = pageSize;
|
||||
myPager.set();
|
||||
|
||||
@@ -1,33 +1,36 @@
|
||||
<?php
|
||||
/* Fields. */
|
||||
$lang->program->id = 'ID';
|
||||
$lang->program->name = 'Name';
|
||||
$lang->program->template = 'Template';
|
||||
$lang->program->category = 'Type';
|
||||
$lang->program->desc = 'Description';
|
||||
$lang->program->status = 'Status';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->budget = 'Budget';
|
||||
$lang->program->budgetUnit = 'Budget Unit';
|
||||
$lang->program->begin = 'Begin';
|
||||
$lang->program->end = 'End';
|
||||
$lang->program->stage = 'Stage';
|
||||
$lang->program->type = 'Type';
|
||||
$lang->program->pri = 'Priority';
|
||||
$lang->program->parent = 'Parent';
|
||||
$lang->program->exchangeRate = 'Exchange Rate';
|
||||
$lang->program->openedBy = 'OpenedBy';
|
||||
$lang->program->openedDate = 'OpenedDate';
|
||||
$lang->program->closedBy = 'ClosedBy';
|
||||
$lang->program->closedDate = 'ClosedDate';
|
||||
$lang->program->canceledBy = 'CanceledBy';
|
||||
$lang->program->canceledDate = 'CanceledDate';
|
||||
$lang->program->team = 'Team';
|
||||
$lang->program->order = 'Rank';
|
||||
$lang->program->days = 'Days';
|
||||
$lang->program->acl = 'Access Control';
|
||||
$lang->program->whitelist = 'WhiteList';
|
||||
$lang->program->deleted = 'Deleted';
|
||||
$lang->program->id = 'ID';
|
||||
$lang->program->name = 'Name';
|
||||
$lang->program->template = 'Template';
|
||||
$lang->program->category = 'Type';
|
||||
$lang->program->desc = 'Description';
|
||||
$lang->program->status = 'Status';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->budget = 'Budget';
|
||||
$lang->program->budgetUnit = 'Budget Unit';
|
||||
$lang->program->begin = 'Begin';
|
||||
$lang->program->end = 'End';
|
||||
$lang->program->realBegin = 'Actual Begin';
|
||||
$lang->program->realEnd = 'Actual End';
|
||||
$lang->program->stage = 'Stage';
|
||||
$lang->program->type = 'Type';
|
||||
$lang->program->pri = 'Priority';
|
||||
$lang->program->parent = 'Parent';
|
||||
$lang->program->exchangeRate = 'Exchange Rate';
|
||||
$lang->program->openedBy = 'OpenedBy';
|
||||
$lang->program->openedDate = 'OpenedDate';
|
||||
$lang->program->closedBy = 'ClosedBy';
|
||||
$lang->program->closedDate = 'ClosedDate';
|
||||
$lang->program->canceledBy = 'CanceledBy';
|
||||
$lang->program->canceledDate = 'CanceledDate';
|
||||
$lang->program->lastEditedDate = 'LastEditedDate';
|
||||
$lang->program->team = 'Team';
|
||||
$lang->program->order = 'Rank';
|
||||
$lang->program->days = 'Days';
|
||||
$lang->program->acl = 'Access Control';
|
||||
$lang->program->whitelist = 'WhiteList';
|
||||
$lang->program->deleted = 'Deleted';
|
||||
|
||||
/* Actions. */
|
||||
$lang->program->common = 'Program';
|
||||
|
||||
@@ -1,33 +1,36 @@
|
||||
<?php
|
||||
/* Fields. */
|
||||
$lang->program->id = '编号';
|
||||
$lang->program->name = '项目集名称';
|
||||
$lang->program->template = '项目集模板';
|
||||
$lang->program->category = '项目集类型';
|
||||
$lang->program->desc = '项目集描述';
|
||||
$lang->program->status = '状态';
|
||||
$lang->program->PM = '负责人';
|
||||
$lang->program->budget = '预算';
|
||||
$lang->program->budgetUnit = '预算单位';
|
||||
$lang->program->begin = '计划开始';
|
||||
$lang->program->end = '计划完成';
|
||||
$lang->program->stage = '阶段';
|
||||
$lang->program->type = '类型';
|
||||
$lang->program->pri = '优先级';
|
||||
$lang->program->parent = '父项目集';
|
||||
$lang->program->exchangeRate = '汇率';
|
||||
$lang->program->openedBy = '由谁创建';
|
||||
$lang->program->openedDate = '创建日期';
|
||||
$lang->program->closedBy = '由谁关闭';
|
||||
$lang->program->closedDate = '关闭日期';
|
||||
$lang->program->canceledBy = '由谁取消';
|
||||
$lang->program->canceledDate = '取消日期';
|
||||
$lang->program->team = '团队';
|
||||
$lang->program->order = '排序';
|
||||
$lang->program->days = '可用工作日';
|
||||
$lang->program->acl = '访问控制';
|
||||
$lang->program->whitelist = '白名单';
|
||||
$lang->program->deleted = '已删除';
|
||||
$lang->program->id = '编号';
|
||||
$lang->program->name = '项目集名称';
|
||||
$lang->program->template = '项目集模板';
|
||||
$lang->program->category = '项目集类型';
|
||||
$lang->program->desc = '项目集描述';
|
||||
$lang->program->status = '状态';
|
||||
$lang->program->PM = '负责人';
|
||||
$lang->program->budget = '预算';
|
||||
$lang->program->budgetUnit = '预算单位';
|
||||
$lang->program->begin = '计划开始';
|
||||
$lang->program->end = '计划完成';
|
||||
$lang->program->realBegin = '实际开始';
|
||||
$lang->program->realEnd = '实际完成';
|
||||
$lang->program->stage = '阶段';
|
||||
$lang->program->type = '类型';
|
||||
$lang->program->pri = '优先级';
|
||||
$lang->program->parent = '父项目集';
|
||||
$lang->program->exchangeRate = '汇率';
|
||||
$lang->program->openedBy = '由谁创建';
|
||||
$lang->program->openedDate = '创建日期';
|
||||
$lang->program->closedBy = '由谁关闭';
|
||||
$lang->program->closedDate = '关闭日期';
|
||||
$lang->program->canceledBy = '由谁取消';
|
||||
$lang->program->canceledDate = '取消日期';
|
||||
$lang->program->lastEditedDate = '最后编辑';
|
||||
$lang->program->team = '团队';
|
||||
$lang->program->order = '排序';
|
||||
$lang->program->days = '可用工作日';
|
||||
$lang->program->acl = '访问控制';
|
||||
$lang->program->whitelist = '白名单';
|
||||
$lang->program->deleted = '已删除';
|
||||
|
||||
/* Actions. */
|
||||
$lang->program->common = '项目集';
|
||||
|
||||
@@ -130,18 +130,21 @@ class programModel extends model
|
||||
* @param string $status
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param string $filter topProgram|byTopIDs
|
||||
* @param mixed $filterParams
|
||||
* @param string $type top|child
|
||||
* @param mixed $typeParams
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getList($status = 'all', $orderBy = 'id_asc', $pager = NULL, $filter = '', $filterParams = '')
|
||||
public function getList($status = 'all', $orderBy = 'id_asc', $pager = NULL, $type = '', $typeParams = '')
|
||||
{
|
||||
$filterSql = '';
|
||||
if($filter === 'byTopIDs')
|
||||
$ids = array();
|
||||
if($type === 'child')
|
||||
{
|
||||
foreach($filterParams as $topID) $filterSql .= "path like ',{$topID},%' or ";
|
||||
if($filterSql) $filterSql = '(' . substr($filterSql, 0, -3) . ')'; // Remove last or.
|
||||
foreach($typeParams as $topID)
|
||||
{
|
||||
$topIDs = $this->dao->select('id')->from(TABLE_PROGRAM)->Where('path')->like(",$topID,%")->fetchPairs('id');
|
||||
if($topIDs) $ids = array_merge($ids, $topIDs);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_PROGRAM)
|
||||
@@ -155,8 +158,54 @@ class programModel extends model
|
||||
->markRight(2)
|
||||
->beginIF($status != 'all')->andWhere('status')->eq($status)->fi()
|
||||
->beginIF(!$this->cookie->showClosed)->andWhere('status')->ne('closed')->fi()
|
||||
->beginIF($filter === 'topProgram')->andWhere('parent')->eq(0)->fi()
|
||||
->beginIF(!empty($filterSql))->andWhere($filterSql)->fi()
|
||||
->beginIF($type === 'top')->andWhere('parent')->eq(0)->fi()
|
||||
->beginIF(!empty($ids))->andWhere('id')->in($ids)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get program list by search.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $queryID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getListBySearch($orderBy = 'id_asc', $pager = NULL, $queryID = 0)
|
||||
{
|
||||
if($queryID)
|
||||
{
|
||||
$query = $this->loadModel('search')->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('programQuery', $query->sql);
|
||||
$this->session->set('programForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('programQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->session->programQuery == false) $this->session->set('programQuery', ' 1 = 1');
|
||||
}
|
||||
$query = $this->session->programQuery;
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_PROGRAM)
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->andWhere('((type')->eq('program')
|
||||
->beginIF(!$this->app->user->admin and $this->app->rawMethod != 'browse')->andWhere('id')->in($this->app->user->view->programs)->fi()
|
||||
->markRight(1)
|
||||
->orWhere('(type')->eq('project')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->markRight(2)
|
||||
->beginIF(!$this->cookie->showClosed)->andWhere('status')->ne('closed')->fi()
|
||||
->beginIF($query)->andWhere($query)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<?php endforeach;?>
|
||||
<?php echo html::checkbox('showClosed', array('1' => $lang->program->showClosed), '', $this->cookie->showClosed ? 'checked=checked' : '');?>
|
||||
<?php if(common::hasPriv('project', 'batchEdit') and $programType != 'bygrid') echo html::checkbox('editProject', array('1' => $lang->project->edit), '', $this->cookie->editProject ? 'checked=checked' : '');?>
|
||||
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo $lang->user->search;?></a>
|
||||
</div>
|
||||
<div class='pull-right'>
|
||||
<?php if(common::hasPriv('project', 'create')) common::printLink('project', 'createGuide', "programID=0&from=PGM", '<i class="icon icon-plus"></i> ' . $lang->project->create, '', 'class="btn btn-secondary" data-toggle="modal" data-target="#guideDialog"');?>
|
||||
@@ -36,6 +37,7 @@
|
||||
</div>
|
||||
<div id='mainContent' class='main-row'>
|
||||
<?php if(empty($programs)):?>
|
||||
<div class="cell<?php if($status == 'bySearch') echo ' show';?>" id="queryBox" data-module='program'></div>
|
||||
<div class="table-empty-tip">
|
||||
<p>
|
||||
<span class="text-muted"><?php echo $lang->program->noProgram;?></span>
|
||||
@@ -44,6 +46,7 @@
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class='main-col'>
|
||||
<div class="cell<?php if($status == 'bySearch') echo ' show';?>" id="queryBox" data-module='program'></div>
|
||||
<?php
|
||||
if($programType == 'bygrid')
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user