*Finish task #53659.

This commit is contained in:
孙华伟
2022-05-11 15:40:59 +08:00
parent a734294394
commit 0695047d20
6 changed files with 84 additions and 3 deletions
+3 -3
View File
@@ -240,15 +240,15 @@ class programModel extends model
foreach($products as $product)
{
$product->plans = zget($plans, $product->id, array());
/* Convert predefined HTML entities to characters. */
!empty($product->plans) && array_map(function($planVal)
{
return $planVal->title = htmlspecialchars_decode($planVal->title, ENT_QUOTES);
},
},
$product->plans);
$product->name = htmlspecialchars_decode($product->name, ENT_QUOTES);
$product->releases = zget($releases, $product->id, array());
$projects = zget($projectGroup, $product->id, array());
foreach($projects as $project)
+37
View File
@@ -132,6 +132,43 @@ $config->project->maxCheckList = new stdclass();
$config->project->maxCheckList->scrum = array('bug', 'execution', 'build', 'doc', 'release', 'testtask', 'case', 'issue', 'risk', 'meeting');
$config->project->maxCheckList->waterfall = array('execution', 'design', 'doc', 'bug', 'case', 'build', 'release', 'testtask', 'review', 'build', 'researchplan', 'issue', 'risk', 'opportunity', 'auditplan', 'gapanalysis', 'meeting');
$config->project->search['module'] = 'project';
$config->project->search['fields']['name'] = $lang->project->name;
$config->project->search['fields']['code'] = $lang->project->code;
$config->project->search['fields']['id'] = $lang->project->id;
$config->project->search['fields']['model'] = $lang->project->manageType;
$config->project->search['fields']['parent'] = $lang->project->parent;
$config->project->search['fields']['status'] = $lang->project->projectStatus;
$config->project->search['fields']['desc'] = $lang->project->desc;
$config->project->search['fields']['PM'] = $lang->project->PM;
$config->project->search['fields']['openedDate'] = $lang->project->openedDate;
$config->project->search['fields']['begin'] = $lang->project->begin;
$config->project->search['fields']['end'] = $lang->project->end;
$config->project->search['fields']['realBeginAB'] = $lang->project->realBeginAB;
$config->project->search['fields']['realEndAB'] = $lang->project->realEndAB;
$config->project->search['fields']['openedBy'] = $lang->project->openedBy;
$config->project->search['fields']['closedBy'] = $lang->project->closedBy;
$config->project->search['fields']['lastEditedDate'] = $lang->project->lastEditedDate;
$config->project->search['fields']['closedDate'] = $lang->project->closedDate;
$config->project->search['params']['name'] = array('operator' => 'include', 'control' => 'input' , 'values' => '');
$config->project->search['params']['code'] = array('operator' => '=' , 'control' => 'input' , 'values' => '');
$config->project->search['params']['id'] = array('operator' => '=' , 'control' => 'input' , 'values' => '');
$config->project->search['params']['model'] = array('operator' => '=' , 'control' => 'select', 'values' => $lang->project->modelList);
$config->project->search['params']['parent'] = array('operator' => '=' , 'control' => 'select', 'values' => '');
$config->project->search['params']['status'] = array('operator' => '=' , 'control' => 'select', 'values' => $lang->project->statusList);
$config->project->search['params']['desc'] = array('operator' => 'include', 'control' => 'input' , 'values' => '');
$config->project->search['params']['PM'] = array('operator' => '=' , 'control' => 'select', 'values' => 'users');
$config->project->search['params']['openedDate'] = array('operator' => '=' , 'control' => 'input' , 'values' => '', 'class' => 'date');
$config->project->search['params']['begin'] = array('operator' => '=' , 'control' => 'input' , 'values' => '', 'class' => 'date');
$config->project->search['params']['end'] = array('operator' => '=' , 'control' => 'input' , 'values' => '', 'class' => 'date');
$config->project->search['params']['realBeginAB'] = array('operator' => '=' , 'control' => 'input' , 'values' => '', 'class' => 'date');
$config->project->search['params']['realEndAB'] = array('operator' => '=' , 'control' => 'input' , 'values' => '', 'class' => 'date');
$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']['lastEditedDate'] = array('operator' => '=' , 'control' => 'input' , 'values' => '', 'class' => 'date');
$config->project->search['params']['closedDate'] = array('operator' => '=' , 'control' => 'input' , 'values' => '', 'class' => 'date');
$config->project->includedPriv['project'] = array('edit', 'group', 'createGroup', 'managePriv', 'manageMembers', 'manageGroupMember', 'copyGroup', 'editGroup', 'start', 'suspend', 'close', 'activate', 'delete', 'view', 'whitelist', 'addWhitelist', 'unbindWhitelist', 'manageProducts', 'dynamic', 'build', 'bug', 'testcase', 'testtask', 'testreport', 'execution', 'team', 'unlinkMember');
$config->project->includedPriv['execution'] = array('create', 'start', 'delete', 'calendar', 'effortCalendar', 'effort', 'taskEffort', 'computeTaskEffort', 'deleterelation', 'maintainrelation', 'relation', 'gantt');
$config->project->includedPriv['task'] = array('create');
+5
View File
@@ -307,6 +307,11 @@ class project extends control
$programTitle = $this->loadModel('setting')->getItem('owner=' . $this->app->user->account . '&module=project&key=programTitle');
$projectStats = $this->loadModel('program')->getProjectStats($programID, $browseType, $queryID, $orderBy, $pager, $programTitle);
$actionURL = $this->createLink('project', 'browse', "&programID=$programID&browseType=bySearch&queryID=myQueryID");
$this->project->buildSearchFrom($queryID, $actionURL);
$projectQuery = $this->session->projectQuery;
if($browseType == 'bySearch') $projectStats = $this->project->getBySearch($projectQuery);
$this->view->title = $this->lang->project->browse;
$this->view->position[] = $this->lang->project->browse;
+4
View File
@@ -66,6 +66,7 @@ $lang->project->id = '项目编号';
$lang->project->project = '所属项目';
$lang->project->stage = '阶段';
$lang->project->model = '项目管理方式';
$lang->project->manageType = '管理类型';
$lang->project->PM = '负责人';
$lang->project->PO = '项目负责人';
$lang->project->QD = '测试负责人';
@@ -79,6 +80,7 @@ $lang->project->begin = '计划开始';
$lang->project->end = '计划完成';
$lang->project->status = '状态';
$lang->project->subStatus = '子状态';
$lang->project->projectStatus = '项目状态';
$lang->project->type = '项目类型';
$lang->project->lifetime = '项目周期';
$lang->project->attribute = '阶段类型';
@@ -227,6 +229,7 @@ $lang->project->currencySymbol['NZD'] = 'NZ$';
$lang->project->currencySymbol['THB'] = '฿';
$lang->project->currencySymbol['SGD'] = 'S$';
$lang->project->modelList[''] = "";
$lang->project->modelList['scrum'] = "Scrum";
$lang->project->modelList['waterfall'] = "瀑布";
$lang->project->modelList['kanban'] = "看板";
@@ -257,6 +260,7 @@ $lang->project->kanbanSubAclList['program'] = '项目集内公开(所有上级
$lang->project->authList['extend'] = '继承 (取系统权限与项目权限的合集)';
$lang->project->authList['reset'] = '重新定义 (只取项目权限)';
$lang->project->statusList[''] = '';
$lang->project->statusList['wait'] = '未开始';
$lang->project->statusList['doing'] = '进行中';
$lang->project->statusList['suspended'] = '已挂起';
+33
View File
@@ -629,6 +629,39 @@ class projectModel extends model
->fetchGroup('productID', 'branchID');
}
/*
* Get projects by search conditions.
*
* @param string $projectQuery
* @return array
* */
public function getBySearch($projectQuery)
{
$projects = $this->dao->select('*')->from(TABLE_PROJECT)
->where($projectQuery)
->fetchAll();
return $projects;
}
/*
* Build search form
*
* @param int $queryID
* @param string $actionURL
*
* @return 0
* */
public function buildSearchFrom($queryID, $actionURL)
{
$this->config->project->search['queryID'] = $queryID;
$this->config->project->search['actionURL'] = $actionURL;
$programPairs = array(0 => '');
$programPairs += $this->loadModel('program')->getPairs();
$this->config->project->search['params']['parent']['values'] = $programPairs;
$this->loadModel('search')->setSearchParams($this->config->project->search);
}
/**
* Build the query.
*
@@ -40,6 +40,7 @@
<?php echo html::a(inlink('browse', "programID=$programID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php echo html::checkbox('involved', array('1' => $lang->project->mine), '', $this->cookie->involved ? 'checked=checked' : '');?>
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo '搜索';?></a>
</div>
<div class="btn-toolbar pull-right">
<div class="btn-group panel-actions">
@@ -67,6 +68,7 @@
</div>
<?php endif;?>
<div class="main-col">
<div class="cell<?php if($browseType == 'bysearch') echo ' show';?>" id="queryBox" data-module='project'></div>
<?php if(empty($projectStats)):?>
<div class="table-empty-tip">
<p>