* adjust for task #2357 2358

This commit is contained in:
chenfeiCF
2015-10-29 12:18:53 +08:00
parent 7960c73e1b
commit 6a5f590ce9
7 changed files with 100 additions and 47 deletions

View File

@@ -319,12 +319,12 @@ class bug extends control
/* If projectID is setted, get builds and stories of this project. */
if($projectID)
{
$builds = $this->loadModel('build')->getProjectBuildPairs($projectID, $productID, 'noempty,noterminate,nodone');
$builds = $this->loadModel('build')->getProjectBuildPairs($projectID, $productID, $branch, 'noempty,noterminate,nodone');
$stories = $this->story->getProjectStoryPairs($projectID);
}
else
{
$builds = $this->loadModel('build')->getProductBuildPairs($productID, 'noempty,release,noterminate,nodone');
$builds = $this->loadModel('build')->getProductBuildPairs($productID, $branch, 'noempty,noterminate,nodone');
$stories = $this->story->getProductStoryPairs($productID, $branch);
}
@@ -553,21 +553,29 @@ class bug extends control
if($projectID)
{
$openedBuilds = $this->loadModel('build')->getProjectBuildPairs($projectID, $productID, $bug->branch, 'noempty,noterminate,nodone');
$allBuilds = $this->loadModel('build')->getProjectBuildPairs($projectID, $productID, $bug->branch, 'noempty');
$allBuilds = $this->loadModel('build')->getProjectBuildPairs($projectID, $productID, 0, 'noempty');
}
else
{
$openedBuilds = $this->loadModel('build')->getProductBuildPairs($productID, $bug->branch, 'noempty,noterminate,nodone');
$allBuilds = $this->loadModel('build')->getProductBuildPairs($productID, $bug->branch, 'noempty');
$allBuilds = $this->loadModel('build')->getProductBuildPairs($productID, 0, 'noempty');
}
/* Set the openedBuilds list*/
$bugOpenedBuilds = array();
foreach($allBuilds as $buildID => $build)
/* Set the openedBuilds list. */
$oldOpenedBuilds = array();
$bugOpenedBuilds = explode(',', $bug->openedBuild);
foreach($bugOpenedBuilds as $buildID)
{
if(strpos($bug->openedBuild, "$buildID") !== false) $bugOpenedBuilds[$buildID] = $build;
if(isset($allBuilds[$buildID])) $oldOpenedBuilds[$buildID] = $allBuilds[$buildID];
}
$openedBuilds = $openedBuilds + $oldOpenedBuilds;
/* Set the resolvedBuilds list. */
$oldResolvedBuild = array();
if($bug->resolvedBuild)
{
if(isset($allBuilds[$bug->resolvedBuild])) $oldResolvedBuild[$bug->resolvedBuild] = $allBuilds[$bug->resolvedBuild];
}
$openedBuilds = $openedBuilds + $bugOpenedBuilds;
$this->view->bug = $bug;
$this->view->productID = $productID;
@@ -581,7 +589,7 @@ class bug extends control
$this->view->tasks = $this->task->getProjectTaskPairs($bug->project);
$this->view->users = $this->user->getPairs('nodeleted', "$bug->assignedTo,$bug->resolvedBy,$bug->closedBy,$bug->openedBy");
$this->view->openedBuilds = $openedBuilds;
$this->view->resolvedBuilds = array('' => '') + $openedBuilds;
$this->view->resolvedBuilds = array('' => '') + $openedBuilds + $oldResolvedBuild ;
$this->view->actions = $this->action->getList('bug', $bugID);
$this->view->templates = $this->bug->getUserBugTemplates($this->app->user->account);
@@ -831,7 +839,7 @@ class bug extends control
$this->view->bug = $bug;
$this->view->users = $users;
$this->view->assignedTo = $assignedTo;
$this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID);
$this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID, 0, 'noterminate, nodone');
$this->view->actions = $this->action->getList('bug', $bugID);
$this->display();
}

View File

@@ -1,3 +1,4 @@
.col-side .chosen-container .chosen-drop {width: 216px!important}
.col-side .chosen-container {width: 218px!important}
.col-side .chosen-container[id^="openedBuild"] {width: 172px!important}
.col-side .chosen-container[id^="resolvedBuild"] {width: 172px!important}

View File

@@ -70,17 +70,27 @@ function loadBranch()
* @access public
* @return void
*/
function loadAllBuilds()
function loadAllBuilds(that)
{
productID = $('#product').val();
projectID = $('#project').val();
if(projectID)
if(page == 'resolve')
{
loadAllProjectBuilds(projectID, productID);
link = createLink('build', 'ajaxGetAllProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build');
$('#resolvedBuildBox').load(link, function(){$(this).find('select').chosen(defaultChosenOptions)});
}
else
{
loadAllProductBuilds(productID);
productID = $('#product').val();
projectID = $('#project').val();
if(page == 'edit') buildBox = $(that).parent().prev().filter('span').attr('id');
if(projectID)
{
loadAllProjectBuilds(projectID, productID);
}
else
{
loadAllProductBuilds(productID);
}
}
}
@@ -88,6 +98,7 @@ function loadAllBuilds()
* Load all builds of the project.
*
* @param int $projectID
* @param int $productID
* @access public
* @return void
*/
@@ -95,19 +106,24 @@ function loadAllProjectBuilds(projectID, productID)
{
branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
if(page == 'create') oldOpenedBuild = $('#openedBuild').val() ? $('#openedBuild').val() : 0;
link = createLink('build', 'ajaxGetAllProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
if(page == 'create')
{
oldOpenedBuild = $('#openedBuild').val() ? $('#openedBuild').val() : 0;
link = createLink('build', 'ajaxGetAllProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
$('#buildBox').load(link, function(){ notice(); $('#openedBuild').chosen(defaultChosenOptions);});
}
else
if(page == 'edit')
{
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen(defaultChosenOptions)});
buildLink = createLink('build', 'ajaxGetAllProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch);
$('#resolvedBuildBox').load(buildLink, function(){$(this).find('select').chosen(defaultChosenOptions)});
if(buildBox == 'openedBuildBox')
{
link = createLink('build', 'ajaxGetAllProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen(defaultChosenOptions)});
}
if(buildBox == 'resolvedBuildBox')
{
buildLink = createLink('build', 'ajaxGetAllProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild);
$('#resolvedBuildBox').load(buildLink, function(){$(this).find('select').chosen(defaultChosenOptions)});
}
}
}
@@ -122,17 +138,23 @@ function loadAllProductBuilds(productID)
{
branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
link = createLink('build', 'ajaxGetAllProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
if(page == 'create')
{
link = createLink('build', 'ajaxGetAllProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
$('#buildBox').load(link, function(){ notice(); $('#openedBuild').chosen(defaultChosenOptions);});
}
else
if(page == 'edit')
{
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen(defaultChosenOptions)});
buildLink = createLink('build', 'ajaxGetAllProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch);
$('#resolvedBuildBox').load(buildLink, function(){$(this).find('select').chosen(defaultChosenOptions)});
if(buildBox == 'openedBuildBox')
{
link = createLink('build', 'ajaxGetAllProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen(defaultChosenOptions)});
}
if(buildBox == 'resolvedBuildBox')
{
buildLink = createLink('build', 'ajaxGetAllProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild);
$('#resolvedBuildBox').load(buildLink, function(){$(this).find('select').chosen(defaultChosenOptions)});
}
}
}

View File

@@ -175,7 +175,7 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
<td>
<div class='input-group'>
<span id='openedBuildBox'><?php echo html::select('openedBuild[]', $openedBuilds, $bug->openedBuild, 'size=4 multiple=multiple class="chosen form-control"');?></span>
<span class='input-group-btn'><?php echo html::commonButton($lang->bug->allBuilds, "class='btn btn-default' onclick='loadAllBuilds()'")?></span>
<span class='input-group-btn'><?php echo html::commonButton($lang->bug->allBuilds, "class='btn btn-default' onclick='loadAllBuilds(this)'")?></span>
</div>
</td>
</tr>
@@ -189,7 +189,12 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
</tr>
<tr>
<th><?php echo $lang->bug->resolvedBuild;?></th>
<td><span id='resolvedBuildBox'><?php echo html::select('resolvedBuild', $resolvedBuilds, $bug->resolvedBuild, "class='form-control chosen'");?></span></td>
<td>
<div class='input-group'>
<span id='resolvedBuildBox'><?php echo html::select('resolvedBuild', $resolvedBuilds, $bug->resolvedBuild, "class='form-control chosen'");?></span>
<span class='input-group-btn'><?php echo html::commonButton($lang->bug->allBuilds, "class='btn btn-default' onclick='loadAllBuilds(this)'")?></span>
</div>
</td>
</tr>
<tr>
<th><?php echo $lang->bug->resolution;?></th>

View File

@@ -13,6 +13,10 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/kindeditor.html.php';?>
<?php include '../../common/view/datepicker.html.php';?>
<?php
js::set('page' , 'resolve');
js::set('productID' , $bug->product);
?>
<div id='titlebar'>
<div class='heading'>
<span class='prefix'><?php echo html::icon($lang->icons['bug']);?> <strong><?php echo $bug->id;?></strong></span>
@@ -33,7 +37,12 @@
</tr>
<tr>
<th><?php echo $lang->bug->resolvedBuild;?></th>
<td><?php echo html::select('resolvedBuild', $builds, '', "class='form-control chosen'");?></td>
<td>
<div class='input-group'>
<span id='resolvedBuildBox'><?php echo html::select('resolvedBuild', $builds, '', "class='form-control chosen'");?></span>
<span class='input-group-btn'><?php echo html::commonButton($lang->bug->allBuilds, "class='btn btn-default' onclick=loadAllBuilds()");?></span>
</div>
</td>
</tr>
<tr>
<th><?php echo $lang->bug->resolvedDate;?></th>

View File

@@ -248,8 +248,8 @@ class build extends control
*/
public function ajaxGetAllProductBuilds($productID, $varName, $build = '', $branch = 0)
{
if($varName == 'openedBuild' ) die(html::select($varName . '[]', $this->build->getProductBuildPairs($productID, $branch, 'noempty,release'), $build, 'size=4 class=form-control multiple'));
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProductBuildPairs($productID, $branch, 'noempty,release'), $build, "class='form-control'"));
if($varName == 'openedBuild' ) die(html::select($varName . '[]', $this->build->getProductBuildPairs($productID, $branch, 'noempty'), $build, 'size=4 class=form-control multiple'));
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProductBuildPairs($productID, $branch, ''), $build, "class='form-control'"));
}
/**
@@ -266,11 +266,11 @@ class build extends control
{
if($varName == 'openedBuild')
{
$builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, 'noempty,release');
$builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, 'noempty');
$output = html::select($varName . '[]', $builds , $build, 'size=4 class=form-control multiple');
die($output);
}
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProjectBuildPairs($projectID, $productID, $branch, 'noempty'), $build, "class='form-control'"));
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProjectBuildPairs($projectID, $productID, $branch, ''), $build, "class='form-control'"));
}
/**

View File

@@ -66,22 +66,29 @@ class buildModel extends model
*/
public function getProjectBuildPairs($projectID, $productID, $branch = 0, $params = '')
{
$builds = array();
$sysBuilds = array();
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
$builds = $this->dao->select('t1.id, t1.name')->from(TABLE_BUILD)->alias('t1')
$projectBuilds = $this->dao->select('t1.id, t1.name, t3.status as releaseStatus')->from(TABLE_BUILD)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
->leftJoin(TABLE_RELEASE)->alias('t3')->on('t1.id = t3.build')
->where('t1.project')->eq((int)$projectID)
->beginIF($productID)->andWhere('t1.product')->eq((int)$productID)->fi()
->beginIF($branch)->andWhere('t1.branch')->in($branch)->fi()
->beginIF(strpos($params, 'nodone') !== false)->andWhere('t2.status')->ne('done')->fi()
->andWhere('t1.deleted')->eq(0)
->orderBy('t1.date desc, t1.id desc')->fetchPairs();
->orderBy('t1.date desc, t1.id desc')->fetchAll('id');
foreach($projectBuilds as $buildID => $build)
{
if((strpos($params, 'noterminate') !== false) and ($build->releaseStatus === 'terminate')) continue;
$builds[$buildID] = $build->name;
}
if(!$builds) return $sysBuilds;
$releases = $this->dao->select('build,name')->from(TABLE_RELEASE)
->where('build')->in(array_keys($builds))
->beginIF(strpos($params, 'noterminate') !== false)->andWhere('status')->ne('terminate')->fi()
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->andWhere('deleted')->eq(0)
->fetchPairs();
@@ -103,22 +110,23 @@ class buildModel extends model
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => 'Trunk');
$productBuilds = $this->dao->select('t1.id, t1.name, t1.project')->from(TABLE_BUILD)->alias('t1')
$productBuilds = $this->dao->select('t1.id, t1.name, t1.project, t2.status as projectStatus, t3.status as releaseStatus')->from(TABLE_BUILD)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
->leftJoin(TABLE_RELEASE)->alias('t3')->on('t1.id = t3.build')
->where('t1.product')->in($products)
->beginIF($branch)->andWhere('t1.branch')->in($branch)->fi()
->beginIF(strpos($params, 'nodone') !== false)->andWhere('t2.status')->ne('done')->fi()
->andWhere('t1.deleted')->eq(0)
->orderBy('t1.date desc, t1.id desc')->fetchAll('id');
$releases = $this->dao->select('build,name,deleted')->from(TABLE_RELEASE)
->where('product')->in($products)
->beginIF(strpos($params, 'noterminate') !== false)->andWhere('status')->ne('terminate')->fi()
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->fetchAll('build');
->where('product')->in($products)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->fetchAll('build');
$builds = array();
foreach($productBuilds as $key => $build)
{
if((strpos($params, 'noterminate') !== false) and ($build->releaseStatus === 'terminate')) continue;
if((strpos($params, 'nodone') !== false) and ($build->projectStatus === 'done')) continue;
if($build->project)
{
$builds[$key] = $build->name;