From 4ac099088eafc11588907d466bbd6c6f36370883 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 2 Dec 2021 11:01:06 +0800 Subject: [PATCH 1/4] * Fix bug #16927. --- module/bug/control.php | 5 +++++ module/bug/js/common.js | 39 +++++++++++++++++++++++++++++++++++ module/build/control.php | 44 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) diff --git a/module/bug/control.php b/module/bug/control.php index 2f4ea11a6e..fe5611d58d 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -883,6 +883,7 @@ class bug extends control $bug = $this->bug->getById($bugID); $productID = $bug->product; $executionID = $bug->execution; + $projectID = $bug->project; $currentModuleID = $bug->module; $this->bug->checkBugExecutionPriv($bug); @@ -928,6 +929,10 @@ class bug extends control { $openedBuilds = $this->build->getExecutionBuildPairs($executionID, $productID, $bug->branch, 'noempty,noterminate,nodone'); } + elseif($projectID) + { + $openedBuilds = $this->build->getProjectBuildPairs($projectID, $productID, $bug->branch, 'noempty,noterminate,nodone'); + } else { $openedBuilds = $this->build->getProductBuildPairs($productID, $bug->branch, 'noempty,noterminate,nodone'); diff --git a/module/bug/js/common.js b/module/bug/js/common.js index 5f82fb6680..4164926f78 100644 --- a/module/bug/js/common.js +++ b/module/bug/js/common.js @@ -278,6 +278,7 @@ function loadProductExecutions(productID, projectID = 0) if(typeof(bugExecution) == 'string' && systemMode != 'classic') $('#executionIdBox').prepend("" + bugExecution + ""); if(required) $(this).addClass('required'); }); + loadProjectBuilds(projectID); } /** @@ -393,6 +394,44 @@ function loadExecutionStories(executionID) $('#storyIdBox').load(link, function(){$('#story').chosen();}); } +/** + * Load builds of a project. + * + * @param int $projectID + * @access public + * @return void + */ +function loadProjectBuilds(projectID) +{ + branch = $('#branch').val(); + if(typeof(branch) == 'undefined') branch = 0; + productID = $('#product').val(); + oldOpenedBuild = $('#openedBuild').val() ? $('#openedBuild').val() : 0; + + if(page == 'create') + { + link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + "&branch=" + branch); + $.get(link, function(data) + { + if(!data) data = ''; + $('#openedBuild').replaceWith(data); + $('#openedBuild').val(oldOpenedBuild); + $('#openedBuild_chosen').remove(); + $('#openedBuild').next('.picker').remove(); + $("#openedBuild").chosen(); + }) + } + else + { + link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch); + $('#openedBuildBox').load(link, function(){$(this).find('select').val(oldOpenedBuild).chosen()}); + + oldResolvedBuild = $('#resolvedBuild').val() ? $('#resolvedBuild').val() : 0; + link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch); + $('#resolvedBuildBox').load(link, function(){$(this).find('select').val(oldResolvedBuild).chosen()}); + } +} + /** * Load builds of a execution. * diff --git a/module/build/control.php b/module/build/control.php index b21ca4419d..85838fd0a0 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -380,6 +380,50 @@ class build extends control } } + /** + * AJAX: get builds of a project in html select. + * + * @param int $projectID + * @param string $varName the name of the select object to create + * @param string $build build to selected + * @param string|int $branch + * @param int $index the index of batch create bug. + * @param bool $needCreate if need to append the link of create build + * @param string $type get all builds or some builds belong to normal releases and executions are not done. + * @access public + * @return string + */ + public function ajaxGetProjectBuilds($projectID, $productID, $varName, $build = '', $branch = 'all', $index = 0, $needCreate = false, $type = 'normal') + { + $isJsonView = $this->app->getViewType() == 'json'; + if($varName == 'openedBuild') + { + if(empty($projectID)) $this->ajaxGetProductBuilds($productID, $varName, $build, $branch, $index, $type); + + $params = ($type == 'all') ? 'noempty' : 'noempty, noterminate, nodone'; + $builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, $params, $build); + if($isJsonView) die(json_encode($builds)); + else die(html::select($varName . '[]', $builds , '', 'size=4 class=form-control multiple')); + } + if($varName == 'openedBuilds') + { + if(empty($executionID)) $this->ajaxGetProductBuilds($productID, $varName, $build, $branch, $index, $type); + + $builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, 'noempty'); + if($isJsonView) die(json_encode($builds)); + else die(html::select($varName . "[$index][]", $builds , $build, 'size=4 class=form-control multiple')); + } + if($varName == 'resolvedBuild') + { + if(empty($projectID)) $this->ajaxGetProductBuilds($productID, $varName, $build, $branch, $index, $type); + + $params = ($type == 'all') ? '' : 'noterminate, nodone'; + $builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, $params, $build); + if($isJsonView) die(json_encode($builds)); + else die(html::select($varName, $builds, $build, "class='form-control'")); + } + } + /** * AJAX: get builds of an execution in html select. * From 2f962aafcf0b1a6a01cd6c22fe4cf6bd67975aa0 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 2 Dec 2021 11:05:38 +0800 Subject: [PATCH 2/4] * Remove useless code. --- module/build/control.php | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/module/build/control.php b/module/build/control.php index 85838fd0a0..617a8d3e02 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -402,16 +402,8 @@ class build extends control $params = ($type == 'all') ? 'noempty' : 'noempty, noterminate, nodone'; $builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, $params, $build); - if($isJsonView) die(json_encode($builds)); - else die(html::select($varName . '[]', $builds , '', 'size=4 class=form-control multiple')); - } - if($varName == 'openedBuilds') - { - if(empty($executionID)) $this->ajaxGetProductBuilds($productID, $varName, $build, $branch, $index, $type); - - $builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, 'noempty'); - if($isJsonView) die(json_encode($builds)); - else die(html::select($varName . "[$index][]", $builds , $build, 'size=4 class=form-control multiple')); + if($isJsonView) die(json_encode($builds)); + if(!$isJsonView) die(html::select($varName . '[]', $builds , '', 'size=4 class=form-control multiple')); } if($varName == 'resolvedBuild') { @@ -419,8 +411,8 @@ class build extends control $params = ($type == 'all') ? '' : 'noterminate, nodone'; $builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, $params, $build); - if($isJsonView) die(json_encode($builds)); - else die(html::select($varName, $builds, $build, "class='form-control'")); + if($isJsonView) die(json_encode($builds)); + if(!$isJsonView) die(html::select($varName, $builds, $build, "class='form-control'")); } } From 565ef0adbb524f5483729ab760cd5dec5ea241d8 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 2 Dec 2021 11:27:24 +0800 Subject: [PATCH 3/4] * Fix bug #16927. --- module/bug/js/common.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/module/bug/js/common.js b/module/bug/js/common.js index 4164926f78..b3db94683d 100644 --- a/module/bug/js/common.js +++ b/module/bug/js/common.js @@ -403,14 +403,14 @@ function loadExecutionStories(executionID) */ function loadProjectBuilds(projectID) { - branch = $('#branch').val(); + var branch = $('#branch').val(); if(typeof(branch) == 'undefined') branch = 0; - productID = $('#product').val(); - oldOpenedBuild = $('#openedBuild').val() ? $('#openedBuild').val() : 0; + var productID = $('#product').val(); + var oldOpenedBuild = $('#openedBuild').val() ? $('#openedBuild').val() : 0; if(page == 'create') { - link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + "&branch=" + branch); + var link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + "&branch=" + branch); $.get(link, function(data) { if(!data) data = ''; @@ -423,11 +423,11 @@ function loadProjectBuilds(projectID) } else { - link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch); + var link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch); $('#openedBuildBox').load(link, function(){$(this).find('select').val(oldOpenedBuild).chosen()}); - oldResolvedBuild = $('#resolvedBuild').val() ? $('#resolvedBuild').val() : 0; - link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch); + var oldResolvedBuild = $('#resolvedBuild').val() ? $('#resolvedBuild').val() : 0; + var link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch); $('#resolvedBuildBox').load(link, function(){$(this).find('select').val(oldResolvedBuild).chosen()}); } } From 895db10fc4076f9b4bb74cf5e73054527ef1105c Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 2 Dec 2021 15:23:45 +0800 Subject: [PATCH 4/4] * Delete redundant judgments. --- module/build/control.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/build/control.php b/module/build/control.php index 617a8d3e02..b245e805f7 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -403,7 +403,7 @@ class build extends control $params = ($type == 'all') ? 'noempty' : 'noempty, noterminate, nodone'; $builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, $params, $build); if($isJsonView) die(json_encode($builds)); - if(!$isJsonView) die(html::select($varName . '[]', $builds , '', 'size=4 class=form-control multiple')); + die(html::select($varName . '[]', $builds , '', 'size=4 class=form-control multiple')); } if($varName == 'resolvedBuild') { @@ -412,7 +412,7 @@ class build extends control $params = ($type == 'all') ? '' : 'noterminate, nodone'; $builds = $this->build->getProjectBuildPairs($projectID, $productID, $branch, $params, $build); if($isJsonView) die(json_encode($builds)); - if(!$isJsonView) die(html::select($varName, $builds, $build, "class='form-control'")); + die(html::select($varName, $builds, $build, "class='form-control'")); } }