* Finish task #43169.
This commit is contained in:
@@ -9,3 +9,4 @@ $config->group->acl = new stdclass();
|
||||
$config->group->acl->objectTypes['programs'] = 'program';
|
||||
$config->group->acl->objectTypes['projects'] = 'project';
|
||||
$config->group->acl->objectTypes['products'] = 'product';
|
||||
$config->group->acl->objectTypes['sprints'] = 'sprint';
|
||||
|
||||
@@ -138,22 +138,13 @@ class group extends control
|
||||
|
||||
/* Get the group data by id. */
|
||||
$group = $this->group->getByID($groupID);
|
||||
$this->view->title = $this->lang->company->common . $this->lang->colon . $group->name . $this->lang->colon . $this->lang->group->manageView;
|
||||
|
||||
$projects = $this->dao->select('*')->from(TABLE_PROJECT)
|
||||
->where('deleted')->eq('0')
|
||||
->beginIF($this->config->systemMode == 'classic')->andWhere('type')->in('sprint,stage')->fi()
|
||||
->beginIF($this->config->systemMode == 'new')->andWhere('type')->eq('project')->fi()
|
||||
->orderBy('order_desc')
|
||||
->fetchPairs('id', 'name');
|
||||
|
||||
$this->view->title = $this->lang->company->common . $this->lang->colon . $group->name . $this->lang->colon . $this->lang->group->manageView;
|
||||
$this->view->position[] = $group->name;
|
||||
$this->view->position[] = $this->lang->group->manageView;
|
||||
|
||||
$this->view->group = $group;
|
||||
$this->view->programs = $this->dao->select('*')->from(TABLE_PROGRAM)->where('deleted')->eq('0')->andWhere('type')->eq('program')->orderBy('order_desc')->fetchPairs('id', 'name');
|
||||
$this->view->projects = $projects;
|
||||
$this->view->products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('deleted')->eq('0')->orderBy('order_desc')->fetchPairs('id', 'name');
|
||||
$this->view->group = $group;
|
||||
$this->view->programs = $this->loadModel('program')->getPairs(true, 'order_desc');
|
||||
$this->view->projects = $this->loadModel('project')->getPairsByProgram(0, 'all', true, 'order_desc');
|
||||
$this->view->executions = $this->loadModel('execution')->getPairs(0, 'all', 'all');
|
||||
$this->view->products = $this->loadModel('product')->getPairs();
|
||||
|
||||
$navGroup = array();
|
||||
foreach($this->lang->navGroup as $moduleName => $groupName)
|
||||
|
||||
@@ -1,18 +1,54 @@
|
||||
/**
|
||||
* Toggle program.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function toggleProgram()
|
||||
{
|
||||
$('#programBox').toggle($('#program').prop("checked"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle product.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function toggleProduct()
|
||||
{
|
||||
$('#productBox').toggle($('#product').prop("checked"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle project.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function toggleProject()
|
||||
{
|
||||
$('#projectBox').toggle($('#project').prop("checked"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle execution.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function toggleExecution()
|
||||
{
|
||||
$('#executionBox').toggle($('#execution').prop("checked"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Select all.
|
||||
*
|
||||
* @param obj $obj
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function selectAll(obj)
|
||||
{
|
||||
$(obj).closest('tr').find(':checkbox').prop('checked', $(obj).prop('checked'));
|
||||
@@ -35,9 +71,10 @@ $(function()
|
||||
$('.group-item input:checkbox[name^="allchecker"]').prop('checked', allChecked);
|
||||
|
||||
var id = $(this).attr('id');
|
||||
if(id == 'program') toggleProgram();
|
||||
if(id == 'product') toggleProduct();
|
||||
if(id == 'project') toggleProject();
|
||||
if(id == 'program') toggleProgram();
|
||||
if(id == 'product') toggleProduct();
|
||||
if(id == 'project') toggleProject();
|
||||
if(id == 'execution') toggleExecution();
|
||||
if($('#' + id + 'ActionBox').length == 1) $('#' + id + 'ActionBox').toggle($(this).prop("checked"));
|
||||
})
|
||||
$('.group-item :checkbox[name^="actions"]').change();
|
||||
|
||||
@@ -30,10 +30,12 @@ $lang->group->manageProject = 'Manage Project';
|
||||
$lang->group->programList = 'Access Program';
|
||||
$lang->group->productList = 'Access Product';
|
||||
$lang->group->projectList = 'Access Project';
|
||||
$lang->group->executionList = "Access {$lang->execution->common}";
|
||||
$lang->group->dynamic = 'Access Dynamics';
|
||||
$lang->group->noticeVisit = 'Blank means no access limit.';
|
||||
$lang->group->noneProgram = "No Program";
|
||||
$lang->group->noneProduct = "No {$lang->productCommon}";
|
||||
$lang->group->noneExecution = "No {$lang->execution->common}";
|
||||
$lang->group->project = 'Project';
|
||||
$lang->group->group = 'Group';
|
||||
|
||||
|
||||
@@ -30,10 +30,12 @@ $lang->group->manageProject = '可管理项目';
|
||||
$lang->group->programList = '可访问项目集';
|
||||
$lang->group->productList = '可访问' . $lang->productCommon;
|
||||
$lang->group->projectList = '可访问项目';
|
||||
$lang->group->executionList = "可访问{$lang->execution->common}";
|
||||
$lang->group->dynamic = '可查看动态';
|
||||
$lang->group->noticeVisit = '空代表没有访问限制';
|
||||
$lang->group->noneProgram = "暂时没有项目集";
|
||||
$lang->group->noneProduct = "暂时没有{$lang->productCommon}";
|
||||
$lang->group->noneExecution = "暂时没有{$lang->execution->common}";
|
||||
$lang->group->project = '项目';
|
||||
$lang->group->group = '分组';
|
||||
|
||||
|
||||
@@ -86,7 +86,20 @@
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr id='executionBox' style='display:none'>
|
||||
<th class='text-right'><?php echo $lang->group->executionList;?></th>
|
||||
<td>
|
||||
<?php if($executions):?>
|
||||
<div class='input-group'>
|
||||
<?php echo html::select("actions[sprints][]", $executions, isset($group->acl['sprints']) ? join(',', $group->acl['sprints']) : '', "class='form-control chosen' drop_direction='down' multiple")?>
|
||||
<span class='input-group-addon strong'><?php echo $lang->group->noticeVisit?></span>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<?php echo $lang->group->noneExecution;?>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='text-right text-top'><?php echo $lang->group->dynamic?></th>
|
||||
<td class='pl-0px pt-0px'>
|
||||
<table class='table table-form'>
|
||||
|
||||
+11
-26
@@ -265,37 +265,22 @@ class productModel extends model
|
||||
*
|
||||
* @param string $mode
|
||||
* @param string $programID
|
||||
* @param string $orderBy program_asc
|
||||
* @return array
|
||||
*/
|
||||
public function getPairs($mode = '', $programID = 0, $orderBy = '')
|
||||
public function getPairs($mode = '', $programID = 0)
|
||||
{
|
||||
if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getProductPairs();
|
||||
|
||||
if($orderBy == 'program_asc')
|
||||
{
|
||||
$products = $this->dao->select('t1.id as id, t1.name as name, t1.*, IF(INSTR(" closed", t1.status) < 2, 0, 1) AS isClosed')->from(TABLE_PRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id')
|
||||
->where('t1.deleted')->eq(0)
|
||||
->beginIF($programID)->andWhere('t1.program')->eq($programID)->fi()
|
||||
->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('t1.status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->products)->fi()
|
||||
->orderBy('t2.order_asc, t1.line_desc, t1.order_desc')
|
||||
->fetchPairs('id', 'name');
|
||||
}
|
||||
else
|
||||
{
|
||||
$orderBy = !empty($this->config->product->orderBy) ? $this->config->product->orderBy : 'isClosed';
|
||||
$products = $this->dao->select('*, IF(INSTR(" closed", status) < 2, 0, 1) AS isClosed')
|
||||
->from(TABLE_PRODUCT)
|
||||
->where(1)
|
||||
->beginIF(strpos($mode, 'all') === false)->andWhere('deleted')->eq(0)->fi()
|
||||
->beginIF($programID)->andWhere('program')->eq($programID)->fi()
|
||||
->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->products)->fi()
|
||||
->orderBy($orderBy)
|
||||
->fetchPairs('id', 'name');
|
||||
}
|
||||
$orderBy = !empty($this->config->product->orderBy) ? $this->config->product->orderBy : 'isClosed';
|
||||
$products = $this->dao->select('*, IF(INSTR(" closed", status) < 2, 0, 1) AS isClosed')
|
||||
->from(TABLE_PRODUCT)
|
||||
->where(1)
|
||||
->beginIF(strpos($mode, 'all') === false)->andWhere('deleted')->eq(0)->fi()
|
||||
->beginIF($programID)->andWhere('program')->eq($programID)->fi()
|
||||
->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->products)->fi()
|
||||
->orderBy($orderBy)
|
||||
->fetchPairs('id', 'name');
|
||||
return $products;
|
||||
}
|
||||
|
||||
|
||||
@@ -45,15 +45,17 @@ class programModel extends model
|
||||
* Get program pairs.
|
||||
*
|
||||
* @param bool $isQueryAll
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getPairs($isQueryAll = false)
|
||||
public function getPairs($isQueryAll = false, $orderBy = 'id_desc')
|
||||
{
|
||||
return $this->dao->select('id, name')->from(TABLE_PROGRAM)
|
||||
->where('type')->eq('program')
|
||||
->andWhere('deleted')->eq(0)
|
||||
->beginIF(!$this->app->user->admin and !$isQueryAll)->andWhere('id')->in($this->app->user->view->programs)->fi()
|
||||
->orderBy($orderBy)
|
||||
->fetchPairs();
|
||||
}
|
||||
|
||||
|
||||
@@ -471,10 +471,12 @@ class projectModel extends model
|
||||
*
|
||||
* @param int $programID
|
||||
* @param status $status all|wait|doing|suspended|closed|noclosed
|
||||
* @param bool $isQueryAll
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getPairsByProgram($programID = 0, $status = 'all')
|
||||
public function getPairsByProgram($programID = 0, $status = 'all', $isQueryAll = false, $orderBy = 'id_desc')
|
||||
{
|
||||
return $this->dao->select('id, name')->from(TABLE_PROJECT)
|
||||
->where('type')->eq('project')
|
||||
@@ -482,7 +484,8 @@ class projectModel extends model
|
||||
->beginIF($programID)->andWhere('parent')->eq($programID)->fi()
|
||||
->beginIF($status != 'all' && $status != 'noclosed')->andWhere('status')->eq($status)->fi()
|
||||
->beginIF($status == 'noclosed')->andWhere('status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF(!$this->app->user->admin and !$isQueryAll)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->orderBy($orderBy)
|
||||
->fetchPairs();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user