* adjust for task #2357 2358
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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)});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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'"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user