diff --git a/module/release/control.php b/module/release/control.php index e7944e80b2..aebe58248a 100644 --- a/module/release/control.php +++ b/module/release/control.php @@ -126,10 +126,10 @@ class release extends control if(!empty($changes)) $this->action->logHistory($actionID, $changes); } - $message = $this->executeHooks($releaseID); - if($message) $this->lang->saveSuccess = $message; + $result = $this->executeHooks($releaseID); + $message = $result ? $result : $this->lang->saveSuccess; - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('view', "releaseID=$releaseID"))); + return $this->send(array('result' => 'success', 'message' => $message, 'locate' => inlink('view', "releaseID=$releaseID"))); } $this->loadModel('story'); $this->loadModel('bug'); @@ -137,10 +137,10 @@ class release extends control /* Get release and build. */ $release = $this->release->getById((int)$releaseID); - $this->commonAction($release->product, $release->branch); + $this->commonAction($release->product); - $builds = $this->loadModel('build')->getBuildPairs($release->product, $release->branch, 'notrunk|withbranch', $release->project, 'project', $release->build, false); - $releasedBuilds = $this->release->getReleasedBuilds($release->product, $release->branch); + $builds = $this->loadModel('build')->getBuildPairs($release->product, $release->branch, 'notrunk|withbranch', 0, 'project', $release->build, false); + $releasedBuilds = $this->release->getReleasedBuilds($release->product); foreach($releasedBuilds as $releasedBuild) { if(strpos(',' . trim($release->build, ',') . ',', ",{$releasedBuild},") === false) unset($builds[$releasedBuild]); diff --git a/module/release/js/create.js b/module/release/js/create.js index 77bfc50522..1b64abc7c2 100644 --- a/module/release/js/create.js +++ b/module/release/js/create.js @@ -1,10 +1,21 @@ $('#submit').click(function() { - var dateFormat = new RegExp(/^\d{4}\-\d{2}\-\d{2}$/); - var name = $('#name').val(); - var date = $('#date').val(); - var build = $('#build').val(); - if(name && build && typeof(notEmptyBuilds[build]) != 'undefined' && dateFormat.test(date)) + var dateFormat = new RegExp(/^\d{4}\-\d{2}\-\d{2}$/); + var name = $('#name').val(); + var date = $('#date').val(); + var build = $('#build').val(); + var notEmptyBuild = false; + + $.each(build, function(index, value) + { + if(typeof(notEmptyBuilds[value]) != 'undefined') + { + notEmptyBuild = true; + return false; + } + }) + + if(name && build && notEmptyBuild && dateFormat.test(date)) { var result = confirm(confirmLink) ? true : false; $('#sync').val(result); diff --git a/module/release/model.php b/module/release/model.php index a374d22fbe..5703ed7a47 100644 --- a/module/release/model.php +++ b/module/release/model.php @@ -279,11 +279,9 @@ class releaseModel extends model /* Init vars. */ $releaseID = (int)$releaseID; $oldRelease = $this->getById($releaseID); - $branch = $this->dao->select('branch')->from(TABLE_BUILD)->where('id')->eq((int)$this->post->build)->fetch('branch'); $release = fixer::input('post')->stripTags($this->config->release->editor->edit['id'], $this->config->allowedTags) ->add('id', $releaseID) - ->add('branch', (int)$branch) ->setDefault('mailto', '') ->setDefault('deleteFiles', array()) ->join('build', ',') @@ -298,9 +296,14 @@ class releaseModel extends model /* update release project and branch */ if($release->build) { - $buildInfo = $this->dao->select('project, branch')->from(TABLE_BUILD)->where('id')->eq($release->build)->fetch(); - $release->branch = $buildInfo->branch; - $release->project = $buildInfo->project; + $builds = $this->dao->select('project, branch')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll(); + foreach($builds as $build) + { + $branches[$build->branch] = $build->branch; + $projects[$build->project] = $build->project; + } + $release->branch = implode(',', $branches); + $release->project = implode(',', $projects); } $this->dao->update(TABLE_RELEASE)->data($release, 'deleteFiles')