Skip to content

Commit 1664c51

Browse files
author
Ivan Gavryshko
committed
MAGETWO-52914: Setup UI Modifications
- added show unstable checkbox to controll select version dropdown - by default we show only stable versions
1 parent a54767e commit 1664c51

File tree

3 files changed

+82
-17
lines changed

3 files changed

+82
-17
lines changed

setup/pub/magento/setup/select-version.js

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ angular.module('select-version', ['ngStorage'])
1717
$scope.componentsReadyForNext = true;
1818
$scope.componentsProcessed = false;
1919
$scope.componentsProcessError = false;
20+
$scope.showUnstable = false;
2021

2122
$scope.tryAgainEnabled = function() {
2223
return ($scope.upgradeProcessed || $scope.upgradeProcessError)
@@ -28,31 +29,23 @@ angular.module('select-version', ['ngStorage'])
2829
$http.get('index.php/select-version/systemPackage', {'responseType' : 'json'})
2930
.success(function (data) {
3031
if (data.responseType != 'error') {
31-
if (data.packages.length == 1 && data.packages[0].versions.length <=1) {
32+
if (data.packages.length == 1) {
3233
$scope.upgradeProcessError = true;
3334
$scope.upgradeProcessErrorMessage = "You're already using the latest version, there's nothing for us to do.";
3435
} else {
3536
$scope.selectedOption = [];
3637
$scope.versions = [];
37-
for (var i = 0; i < data.packages.length; i++) {
38-
angular.forEach(data.packages[i].versions, function (value, key) {
38+
$scope.data = data;
39+
angular.forEach(data.packages, function (value, key) {
40+
if (value.stable) {
3941
$scope.versions.push({
4042
'versionInfo': angular.toJson({
41-
'package': data.packages[i].package,
42-
'version': value
43-
}), 'version': value
43+
'package': value.package,
44+
'version': value.id
45+
}),
46+
'version': value
4447
});
45-
});
46-
}
47-
48-
$scope.versions = $scope.versions.sort(function (a, b) {
49-
if (a.version.id < b.version.id) {
50-
return 1;
51-
}
52-
if (a.version.id > b.version.id) {
53-
return -1;
5448
}
55-
return 0;
5649
});
5750
$scope.selectedOption = $scope.versions[0].versionInfo;
5851
$scope.upgradeReadyForNext = true;
@@ -160,10 +153,29 @@ angular.module('select-version', ['ngStorage'])
160153
return false;
161154
};
162155

156+
$scope.showUnstableClick = function() {
157+
$scope.upgradeReadyForNext = false;
158+
$scope.selectedOption = [];
159+
$scope.versions = [];
160+
angular.forEach($scope.data.packages, function (value, key) {
161+
if (value.stable || $scope.showUnstable) {
162+
$scope.versions.push({
163+
'versionInfo': angular.toJson({
164+
'package': value.package,
165+
'version': value.id
166+
}),
167+
'version': value
168+
});
169+
}
170+
});
171+
$scope.selectedOption = $scope.versions[0].versionInfo;
172+
$scope.upgradeReadyForNext = true;
173+
}
174+
163175
$scope.update = function() {
164176
var selectedVersionInfo = angular.fromJson($scope.selectedOption);
165177
$scope.packages[0]['name'] = selectedVersionInfo.package;
166-
$scope.packages[0].version = selectedVersionInfo.version.id;
178+
$scope.packages[0].version = selectedVersionInfo.version;
167179
if (angular.equals($scope.updateComponents.no, true)) {
168180
if ($scope.totalForGrid > 0) {
169181
$scope.packages.splice(1, $scope.totalForGrid);

setup/src/Magento/Setup/Model/SystemPackage.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ public function getPackageVersions()
8787
if (!in_array('magento/product-enterprise-edition', $systemPackages)) {
8888
$result = array_merge($this->getAllowedEnterpriseVersions($currentCE), $result);
8989
}
90+
91+
$result = $this->formatPackages($result);
9092

9193
return $result;
9294
}
@@ -194,6 +196,42 @@ public function sortVersions($enterpriseVersions)
194196
return $enterpriseVersions;
195197
}
196198

199+
/**
200+
* @param array $packages
201+
* @return array
202+
*/
203+
private function formatPackages($packages) {
204+
205+
$versions = [];
206+
207+
foreach ($packages as $package) {
208+
foreach ($package['versions'] as $version) {
209+
$version['package'] = $package['package'];
210+
211+
if (preg_match('/^[0-9].[0-9].[0-9]$/', $version['id']) || strpos($version['name'], 'current')) {
212+
$version['stable'] = true;
213+
} else {
214+
$version['name'] = $version['name'] . ' (unstable version)';
215+
$version['stable'] = false;
216+
}
217+
218+
$versions[] = $version;
219+
}
220+
}
221+
222+
usort($versions, function ($versionOne, $versionTwo) {
223+
if (version_compare($versionOne['id'], $versionTwo['id'], '==')) {
224+
if ($versionOne['package'] === 'magento/product-community-edition') {
225+
return 1;
226+
}
227+
return 0;
228+
}
229+
return (version_compare($versionOne['id'], $versionTwo['id'], '<')) ? 1 : -1;
230+
});
231+
232+
return $versions;
233+
}
234+
197235
/**
198236
* @param string $currentCE
199237
* @param array $enterpriseVersions

setup/view/magento/setup/select-version.phtml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,21 @@
5656
</select>
5757
</div>
5858
</div>
59+
<div class="row" ng-show="upgradeProcessed && !upgradeProcessError">
60+
<div class="col-m-3">
61+
<label class="form-label" for="showUnstable">
62+
Show Unstable
63+
</label>
64+
</div>
65+
<div class="col-m-4">
66+
<input
67+
id="showUnstable"
68+
type="checkbox"
69+
ng-model="showUnstable"
70+
ng-change="showUnstableClick()"
71+
>
72+
</div>
73+
</div>
5974
</div>
6075

6176
<div class="row form-row" ng-show="!upgradeProcessError">

0 commit comments

Comments
 (0)