diff --git a/module/bug/control.php b/module/bug/control.php index 498efd42d6..a11d47db41 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -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; diff --git a/module/bug/js/common.js b/module/bug/js/common.js index 1fb51070c7..1e0d0930e1 100644 --- a/module/bug/js/common.js +++ b/module/bug/js/common.js @@ -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 = ''; // 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); + } +} diff --git a/module/bug/view/create.html.php b/module/bug/view/create.html.php index a5b99f7719..37b08e6c88 100644 --- a/module/bug/view/create.html.php +++ b/module/bug/view/create.html.php @@ -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)); ?>
@@ -26,7 +29,7 @@ js::set('page', 'create'); bug->lblProductAndModule;?> - + bug->openedBuild;?> - createLink('build', 'create', "projectID=$projectID"), $lang->build->create, '_blank'); - echo html::a("javascript:loadProjectsBuilds($projectID)", $lang->refresh); - } - ?> + diff --git a/module/build/control.php b/module/build/control.php index a658687809..22fcb512f9 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -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) { diff --git a/module/build/model.php b/module/build/model.php index 225d71712c..5dd7e87928 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -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; }