From 1664c512d20d2430fbf552145f93685a811eea57 Mon Sep 17 00:00:00 2001 From: Ivan Gavryshko <igavryshko@ebay.com> Date: Wed, 18 May 2016 13:40:40 -0500 Subject: [PATCH] MAGETWO-52914: Setup UI Modifications - added show unstable checkbox to controll select version dropdown - by default we show only stable versions --- setup/pub/magento/setup/select-version.js | 46 ++++++++++++------- .../src/Magento/Setup/Model/SystemPackage.php | 38 +++++++++++++++ setup/view/magento/setup/select-version.phtml | 15 ++++++ 3 files changed, 82 insertions(+), 17 deletions(-) diff --git a/setup/pub/magento/setup/select-version.js b/setup/pub/magento/setup/select-version.js index 8e9eba9c5c4..89bf9b63c1b 100644 --- a/setup/pub/magento/setup/select-version.js +++ b/setup/pub/magento/setup/select-version.js @@ -17,6 +17,7 @@ angular.module('select-version', ['ngStorage']) $scope.componentsReadyForNext = true; $scope.componentsProcessed = false; $scope.componentsProcessError = false; + $scope.showUnstable = false; $scope.tryAgainEnabled = function() { return ($scope.upgradeProcessed || $scope.upgradeProcessError) @@ -28,31 +29,23 @@ angular.module('select-version', ['ngStorage']) $http.get('index.php/select-version/systemPackage', {'responseType' : 'json'}) .success(function (data) { if (data.responseType != 'error') { - if (data.packages.length == 1 && data.packages[0].versions.length <=1) { + if (data.packages.length == 1) { $scope.upgradeProcessError = true; $scope.upgradeProcessErrorMessage = "You're already using the latest version, there's nothing for us to do."; } else { $scope.selectedOption = []; $scope.versions = []; - for (var i = 0; i < data.packages.length; i++) { - angular.forEach(data.packages[i].versions, function (value, key) { + $scope.data = data; + angular.forEach(data.packages, function (value, key) { + if (value.stable) { $scope.versions.push({ 'versionInfo': angular.toJson({ - 'package': data.packages[i].package, - 'version': value - }), 'version': value + 'package': value.package, + 'version': value.id + }), + 'version': value }); - }); - } - - $scope.versions = $scope.versions.sort(function (a, b) { - if (a.version.id < b.version.id) { - return 1; - } - if (a.version.id > b.version.id) { - return -1; } - return 0; }); $scope.selectedOption = $scope.versions[0].versionInfo; $scope.upgradeReadyForNext = true; @@ -160,10 +153,29 @@ angular.module('select-version', ['ngStorage']) return false; }; + $scope.showUnstableClick = function() { + $scope.upgradeReadyForNext = false; + $scope.selectedOption = []; + $scope.versions = []; + angular.forEach($scope.data.packages, function (value, key) { + if (value.stable || $scope.showUnstable) { + $scope.versions.push({ + 'versionInfo': angular.toJson({ + 'package': value.package, + 'version': value.id + }), + 'version': value + }); + } + }); + $scope.selectedOption = $scope.versions[0].versionInfo; + $scope.upgradeReadyForNext = true; + } + $scope.update = function() { var selectedVersionInfo = angular.fromJson($scope.selectedOption); $scope.packages[0]['name'] = selectedVersionInfo.package; - $scope.packages[0].version = selectedVersionInfo.version.id; + $scope.packages[0].version = selectedVersionInfo.version; if (angular.equals($scope.updateComponents.no, true)) { if ($scope.totalForGrid > 0) { $scope.packages.splice(1, $scope.totalForGrid); diff --git a/setup/src/Magento/Setup/Model/SystemPackage.php b/setup/src/Magento/Setup/Model/SystemPackage.php index 6ac9b9d3a60..5b920d298d7 100755 --- a/setup/src/Magento/Setup/Model/SystemPackage.php +++ b/setup/src/Magento/Setup/Model/SystemPackage.php @@ -87,6 +87,8 @@ class SystemPackage if (!in_array('magento/product-enterprise-edition', $systemPackages)) { $result = array_merge($this->getAllowedEnterpriseVersions($currentCE), $result); } + + $result = $this->formatPackages($result); return $result; } @@ -194,6 +196,42 @@ class SystemPackage return $enterpriseVersions; } + /** + * @param array $packages + * @return array + */ + private function formatPackages($packages) { + + $versions = []; + + foreach ($packages as $package) { + foreach ($package['versions'] as $version) { + $version['package'] = $package['package']; + + if (preg_match('/^[0-9].[0-9].[0-9]$/', $version['id']) || strpos($version['name'], 'current')) { + $version['stable'] = true; + } else { + $version['name'] = $version['name'] . ' (unstable version)'; + $version['stable'] = false; + } + + $versions[] = $version; + } + } + + usort($versions, function ($versionOne, $versionTwo) { + if (version_compare($versionOne['id'], $versionTwo['id'], '==')) { + if ($versionOne['package'] === 'magento/product-community-edition') { + return 1; + } + return 0; + } + return (version_compare($versionOne['id'], $versionTwo['id'], '<')) ? 1 : -1; + }); + + return $versions; + } + /** * @param string $currentCE * @param array $enterpriseVersions diff --git a/setup/view/magento/setup/select-version.phtml b/setup/view/magento/setup/select-version.phtml index 17ed7061b1d..4f71e0885db 100644 --- a/setup/view/magento/setup/select-version.phtml +++ b/setup/view/magento/setup/select-version.phtml @@ -56,6 +56,21 @@ </select> </div> </div> + <div class="row" ng-show="upgradeProcessed && !upgradeProcessError"> + <div class="col-m-3"> + <label class="form-label" for="showUnstable"> + Show Unstable + </label> + </div> + <div class="col-m-4"> + <input + id="showUnstable" + type="checkbox" + ng-model="showUnstable" + ng-change="showUnstableClick()" + > + </div> + </div> </div> <div class="row form-row" ng-show="!upgradeProcessError"> -- GitLab