This commit is contained in:
hufangzhou
2020-12-04 10:21:43 +08:00
4 changed files with 100 additions and 25 deletions

View File

@@ -834,7 +834,7 @@ class projectModel extends model
* Get execution pairs.
*
* @param int $projectID
* @param string $type all|execution|sprint|stage|kanban
* @param string $type all|sprint|stage|kanban
* @param string $mode all|noclosed or empty
* @access public
* @return array
@@ -850,8 +850,7 @@ class projectModel extends model
$executions = $this->dao->select('*, IF(INSTR(" done,closed", status) < 2, 0, 1) AS isDone')->from(TABLE_EXECUTION)
->where('deleted')->eq(0)
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
->beginIF(!$projectID and $type == 'execution')->andWhere('project')->gt(0)->fi()
->beginIF($type != 'all' and $type != 'execution')->andWhere('type')->eq($type)->fi()
->beginIF($type != 'all')->andWhere('type')->eq($type)->fi()
->beginIF(strpos($mode, 'withdelete') === false)->andWhere('deleted')->eq(0)->fi()
->beginIF(!$this->app->user->admin and strpos($mode, 'all') === false)->andWhere('id')->in($this->app->user->view->sprints)->fi()
->orderBy($orderBy)

View File

@@ -369,15 +369,21 @@ class todo extends control
$this->lang->set('menugroup.todo', $from);
}
$this->view->title = $this->app->user->account == $todo->account ? "{$this->lang->todo->common} #$todo->id $todo->name" : $this->lang->todo->common ;
$this->view->position[] = $this->lang->todo->view;
$this->view->todo = $todo;
$this->view->times = date::buildTimeList($this->config->todo->times->begin, $this->config->todo->times->end, $this->config->todo->times->delta);
$this->view->users = $this->user->getPairs('noletter');
$this->view->actions = $this->loadModel('action')->getList('todo', $todoID);
$this->view->from = $from;
$this->view->projects = $this->loadModel('project')->getExecutionPairs(0, 'execution');
$this->view->products = $this->loadModel('product')->getPairs();
$projects = $this->loadModel('program')->getPRJPairs();
//$projectID = isset($this->session->PRJ) ? $this->session->PRJ : key($projects);
if(!isset($this->session->PRJ)) $this->session->set('PRJ', key($projects));
$this->view->title = $this->app->user->account == $todo->account ? "{$this->lang->todo->common} #$todo->id $todo->name" : $this->lang->todo->common ;
$this->view->position[] = $this->lang->todo->view;
$this->view->todo = $todo;
$this->view->times = date::buildTimeList($this->config->todo->times->begin, $this->config->todo->times->end, $this->config->todo->times->delta);
$this->view->users = $this->user->getPairs('noletter');
$this->view->actions = $this->loadModel('action')->getList('todo', $todoID);
$this->view->from = $from;
$this->view->projects = $projects;
$this->view->executions = $this->loadModel('project')->getExecutionPairs($this->session->PRJ);
$this->view->products = $this->loadModel('product')->getPairs();
$this->view->projectProducts = $this->loadModel('product')->getProductPairsByProject($this->session->PRJ);
$this->display();
}
@@ -594,6 +600,36 @@ class todo extends control
die($this->dao->select($field)->from($table)->where('id')->eq($objectID)->fetch($field));
}
/**
* AJAX: get execution pairs.
*
* @param int $projectID
* @access public
* @return void
*/
public function ajaxGetExecutionPairs($projectID)
{
$this->session->set('PRJ', $projectID);
$executions = $this->loadModel('project')->getExecutionPairs($projectID);
die(html::select('execution', $executions, '', "class='form-control chosen'"));
}
/**
* AJAX: get product pairs.
*
* @param int $projectID
* @access public
* @return void
*/
public function ajaxGetProductPairs($projectID)
{
$this->session->set('PRJ', $projectID);
$products = $this->loadModel('product')->getProductPairsByProject($projectID);
die(html::select('product', $products, '', "class='form-control chosen'"));
}
/**
* Create cycle.
*

View File

@@ -15,10 +15,10 @@ $(function()
$('#toTaskButton').click(function()
{
var onlybody = config.onlybody;
var programID = $('#projectProgram').val();
var projectID = $('#project').val();
var projectID = $(this).closest('.input-group').find('#project').val();
var link = createLink('task', 'create', 'projectID=' + projectID + '&storyID=0&moduleID=0&taskID=0&todoID=' + todoID, config.defaultView, 'no', programID);
var executionID = $(this).closest('.input-group').find('#execution').val();
var link = createLink('task', 'create', 'projectID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=' + todoID, config.defaultView, 'no', projectID);
parent.location.href = link;
})
@@ -37,7 +37,7 @@ $(function()
$('#toBugButton').click(function()
{
var onlybody = config.onlybody;
var programID = $('#productProgram').val();
var programID = $('#project').val();
var productID = $(this).closest('.input-group').find('#product').val();
var link = createLink('bug', 'create', 'productID=' + productID + '&branch=0&extras=todoID=' + todoID, config.defaultView, 'no', programID);
@@ -70,12 +70,19 @@ function createProject()
parent.location.href = link;
}
function getProgramByProject(projectID)
function getExecutionByProject(projectID)
{
link = createLink('todo', 'ajaxGetProgramID', "projectID=" + projectID + '&type=project');
$.post(link, function(data)
{
$('#projectProgram').val(data);
link = createLink('todo', 'ajaxGetExecutionPairs', "projectID=" + projectID);
$('#executionIdBox').load(link, function(){
$(this).find('select').chosen();
})
}
function getProductByProject(projectID)
{
link = createLink('todo', 'ajaxGetProductPairs', "projectID=" + projectID);
$('#productIdBox').load(link, function(){
$(this).find('select').chosen();
})
}

View File

@@ -78,7 +78,7 @@
echo "<ul class='dropdown-menu pull-right' role='menu'>";
if($createStoryPriv) echo '<li>' . html::a('###', $lang->todo->reasonList['story'], '', "data-toggle='modal' data-target='#productModal' data-backdrop='false' data-moveable='true' data-position='center' id='toStoryLink'") . '</li>';
if($createTaskPriv) echo '<li>' . html::a('###', $lang->todo->reasonList['task'], '', "data-toggle='modal' data-target='#projectModal' data-backdrop='false' data-moveable='true' data-position='center' id='toTaskLink'") . '</li>';
if($createBugPriv) echo '<li>' . html::a('###', $lang->todo->reasonList['bug'], '', "data-toggle='modal' data-target='#productModal' data-backdrop='false' data-moveable='true' data-position='center' id='toBugLink'") . '</li>';
if($createBugPriv) echo '<li>' . html::a('###', $lang->todo->reasonList['bug'], '', "data-toggle='modal' data-target='#projectProductModal' data-backdrop='false' data-moveable='true' data-position='center' id='toBugLink'") . '</li>';
echo "</ul>";
if($isonlybody) $_GET['onlybody'] = 'yes';
}
@@ -199,9 +199,13 @@
</div>
<?php else:?>
<div class='input-group'>
<?php echo html::select('project', $projects, '', "class='form-control chosen' onchange=getProgramByProject(this.value);");?>
<span>
<?php echo html::select('project', $projects, '', "class='form-control chosen' onchange=getExecutionByProject(this.value);");?>
</span>
<span id='executionIdBox'>
<?php echo html::select('execution', $executions, '', "class='form-control chosen'");?>
</span>
<span class='input-group-btn'><?php echo html::commonButton($lang->todo->reasonList['task'], "id='toTaskButton'", 'btn btn-primary');?></span>
<?php echo html::hidden('projectProgram', 0);?>
</div>
<?php endif;?>
</div>
@@ -227,7 +231,6 @@
<div class='input-group'>
<?php echo html::select('product', $products, '', "class='form-control chosen' onchange=getProgramByProduct(this.value);");?>
<span class='input-group-btn'><?php echo html::commonButton($lang->todo->reasonList['story'], "id='toStoryButton'", 'btn btn-primary');?></span>
<span class='input-group-btn'><?php echo html::commonButton($lang->todo->reasonList['bug'], "id='toBugButton'", 'btn btn-primary');?></span>
<?php echo html::hidden('productProgram', 0);?>
</div>
<?php endif;?>
@@ -235,6 +238,36 @@
</div>
</div>
</div>
<div class="modal fade" id="projectProductModal">
<div class="modal-dialog mw-500px">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="icon icon-close"></i></button>
<h4 class="modal-title"><?php echo $lang->product->select;?></h4>
</div>
<div class="modal-body">
<?php if(empty($projects)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->project->noProject;?></span>
<?php echo html::a("javascript:createProject()", "<i class='icon icon-plus'></i> " . $lang->project->create, '', "class='btn btn-info'");?>
</p>
</div>
<?php else:?>
<div class='input-group'>
<span>
<?php echo html::select('project', $projects, '', "class='form-control chosen' onchange=getProductByProject(this.value);");?>
</span>
<span id='productIdBox'>
<?php echo html::select('product', $projectProducts, '', "class='form-control chosen'");?>
</span>
<span class='input-group-btn'><?php echo html::commonButton($lang->todo->reasonList['bug'], "id='toBugButton'", 'btn btn-primary');?></span>
</div>
<?php endif;?>
</div>
</div>
</div>
</div>
<?php js::set('todoID', $todo->id);?>
<?php else:?>
<?php echo $lang->todo->thisIsPrivate;?>