* code for task#1678.
This commit is contained in:
@@ -221,6 +221,7 @@ class bug extends control
|
||||
{
|
||||
$this->view->users = $this->user->getPairs('nodeleted,devfirst');
|
||||
if(empty($this->products)) $this->locate($this->createLink('product', 'create'));
|
||||
$this->app->loadLang('release');
|
||||
|
||||
if(!empty($_POST))
|
||||
{
|
||||
@@ -305,9 +306,10 @@ class bug extends control
|
||||
}
|
||||
else
|
||||
{
|
||||
$builds = $this->loadModel('build')->getProductBuildPairs($productID, 'noempty');
|
||||
$builds = $this->loadModel('build')->getProductBuildPairs($productID, 'noempty,release');
|
||||
$stories = $this->story->getProductStoryPairs($productID);
|
||||
}
|
||||
|
||||
$this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->create;
|
||||
$this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]);
|
||||
$this->view->position[] = $this->lang->bug->create;
|
||||
|
||||
+26
-18
@@ -5,12 +5,13 @@ $(function()
|
||||
if(typeof page == 'undefined') page = '';
|
||||
if(page == 'create')
|
||||
{
|
||||
productID = $('#product').val();
|
||||
changeProductConfirmed = true;
|
||||
oldStoryID = 0;
|
||||
oldProjectID = 0;
|
||||
oldOpenedBuild = '';
|
||||
oldTaskID = 0;
|
||||
setAssignedTo();
|
||||
setAssignedTo(0,productID);
|
||||
}
|
||||
|
||||
if(page == 'create' || page == 'edit' || page == 'assignedto' || page == 'confirmbug')
|
||||
@@ -42,10 +43,9 @@ function loadAll(productID)
|
||||
$('#taskIdBox').innerHTML = '<select id="task"></select>'; // Reset the task.
|
||||
$('#task').chosen({no_results_text: noResultsMatch});
|
||||
loadProductModules(productID);
|
||||
loadProductStories(productID);
|
||||
loadProductProjects(productID);
|
||||
loadProductBuilds(productID);
|
||||
loadProductPlans(productID);
|
||||
loadProductStories(productID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ function loadProductBuilds(productID)
|
||||
|
||||
if(page == 'create')
|
||||
{
|
||||
$('#buildBox').load(link);
|
||||
$('#buildBox').load(link, function(){ createBuild(); });
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -161,20 +161,6 @@ function loadProjectStories(projectID)
|
||||
$('#storyIdBox').load(link, function(){$('#story').chosen({no_results_text:noResultsMatch});});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load product plans.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductPlans(productID)
|
||||
{
|
||||
if(typeof(planID) == 'undefined') planID = 0;
|
||||
link = createLink('product', 'ajaxGetPlans', 'productID=' + $('#product').val() + '&planID=' + planID);
|
||||
$('#planIdBox').load(link, function(){$('#story').chosen({no_results_text:noResultsMatch});});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load builds of a project.
|
||||
*
|
||||
@@ -221,3 +207,25 @@ function setStories(moduleID, productID)
|
||||
$("#story").chosen({no_results_text: ''});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Create builds.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function createBuild()
|
||||
{
|
||||
if($('#openedBuild').find('option').length <= 1)
|
||||
{
|
||||
if($('#project').val() == '')
|
||||
{
|
||||
$('#buildBox').append(createRelease);
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#buildBox').append(createBuild);
|
||||
}
|
||||
$('#buildBox').append(refresh);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,9 @@ include '../../common/view/alert.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
js::set('holders', $lang->bug->placeholder);
|
||||
js::set('page', 'create');
|
||||
js::set('createRelease', html::a($this->createLink('release', 'create', "productID=$productID"), $lang->release->create, '_blank'));
|
||||
js::set('createBuild', html::a($this->createLink('build', 'create', "projectID=$projectID"), $lang->build->create, '_blank'));
|
||||
js::set('refresh', html::a("javascript:loadProjectsBuilds($projectID)", $lang->refresh));
|
||||
?>
|
||||
|
||||
<form method='post' enctype='multipart/form-data' id='dataform' class='ajaxForm'>
|
||||
@@ -26,7 +29,7 @@ js::set('page', 'create');
|
||||
<tr>
|
||||
<th class='rowhead'><?php echo $lang->bug->lblProductAndModule;?></th>
|
||||
<td>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value) class='select-3'");?>
|
||||
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value) class='select-3' autocomplete='off'");?>
|
||||
<span id='moduleIdBox'>
|
||||
<?php
|
||||
echo html::select('module', $moduleOptionMenu, $moduleID, "onchange='loadModuleRelated()'");
|
||||
@@ -47,14 +50,7 @@ js::set('page', 'create');
|
||||
<th class='rowhead'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<td>
|
||||
<span id='buildBox'>
|
||||
<?php
|
||||
echo html::select('openedBuild[]', $builds, $buildID, 'size=3 multiple=multiple class=select-3');
|
||||
if(count($builds) == 1 and $projectID)
|
||||
{
|
||||
echo html::a($this->createLink('build', 'create', "projectID=$projectID"), $lang->build->create, '_blank');
|
||||
echo html::a("javascript:loadProjectsBuilds($projectID)", $lang->refresh);
|
||||
}
|
||||
?>
|
||||
<?php echo html::select('openedBuild[]', $builds, $buildID, 'size=3 multiple=multiple class=select-3');?>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -193,9 +193,9 @@ class build extends control
|
||||
*/
|
||||
public function ajaxGetProductBuilds($productID, $varName, $build = '', $index = 0)
|
||||
{
|
||||
if($varName == 'openedBuild' ) die(html::select($varName . '[]', $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'openedBuilds' ) die(html::select($varName . "[$index][]", $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProductBuildPairs($productID, 'noempty'), $build, 'class=select-3'));
|
||||
if($varName == 'openedBuild' ) die(html::select($varName . '[]', $this->build->getProductBuildPairs($productID, 'noempty,release'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'openedBuilds' ) die(html::select($varName . "[$index][]", $this->build->getProductBuildPairs($productID, 'noempty,release'), $build, 'size=4 class=select-3 multiple'));
|
||||
if($varName == 'resolvedBuild') die(html::select($varName, $this->build->getProductBuildPairs($productID, 'noempty,release'), $build, 'class=select-3'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -213,7 +213,7 @@ class build extends control
|
||||
{
|
||||
if($varName == 'openedBuild')
|
||||
{
|
||||
$builds = $this->build->getProjectBuildPairs($projectID, $productID, 'noempty');
|
||||
$builds = $this->build->getProjectBuildPairs($projectID, $productID, 'noempty,release');
|
||||
$output = html::select($varName . '[]', $builds , $build, 'size=4 class=select-3 multiple');
|
||||
if(count($builds) == 1 and $needCreate)
|
||||
{
|
||||
|
||||
@@ -100,6 +100,19 @@ class buildModel extends model
|
||||
->where('product')->in($products)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy('date desc, id desc')->fetchPairs();
|
||||
|
||||
if(strpos($params, 'release') !== false)
|
||||
{
|
||||
$releases = $this->dao->select('build,name')->from(TABLE_RELEASE)
|
||||
->where('product')->in($products)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetchPairs('build');
|
||||
foreach($builds as $key => $build)
|
||||
{
|
||||
if($key and isset($releases[$key])) $builds[$key] = $releases[$key];
|
||||
}
|
||||
}
|
||||
|
||||
if(!$builds) return $sysBuilds;
|
||||
return $sysBuilds + $builds;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user