From c503a16daeb76b219f9832f8471484c952584a9d Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 18 Jun 2021 11:28:21 -0600 Subject: [PATCH] Updates back office to run pending migrations --- .../Packaging/InstalledPackage.cs | 9 ++ .../Controllers/PackageController.cs | 6 +- .../src/common/resources/package.resource.js | 3 +- .../packages/views/installed.controller.js | 27 ++-- .../src/views/packages/views/installed.html | 132 +++++++----------- .../umbraco/config/lang/en_us.xml | 2 + 6 files changed, 84 insertions(+), 95 deletions(-) diff --git a/src/Umbraco.Core/Packaging/InstalledPackage.cs b/src/Umbraco.Core/Packaging/InstalledPackage.cs index 170d2c0156..5d9d5b2cde 100644 --- a/src/Umbraco.Core/Packaging/InstalledPackage.cs +++ b/src/Umbraco.Core/Packaging/InstalledPackage.cs @@ -20,6 +20,15 @@ namespace Umbraco.Cms.Core.Packaging [DataMember(Name = "plans")] public IEnumerable PackageMigrationPlans { get; set; } = Enumerable.Empty(); + /// + /// It the package contains any migrations at all + /// + [DataMember(Name = "hasMigrations")] + public bool HasMigrations => PackageMigrationPlans.Any(); + + /// + /// If the package has any pending migrations to run + /// [DataMember(Name = "hasPendingMigrations")] public bool HasPendingMigrations => PackageMigrationPlans.Any(x => x.HasPendingMigrations); } diff --git a/src/Umbraco.Web.BackOffice/Controllers/PackageController.cs b/src/Umbraco.Web.BackOffice/Controllers/PackageController.cs index 591b678080..95a4640139 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/PackageController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/PackageController.cs @@ -118,7 +118,7 @@ namespace Umbraco.Cms.Web.BackOffice.Controllers } [HttpPost] - public ActionResult> RunMigrations(string packageName) + public ActionResult> RunMigrations([FromQuery]string packageName) { IReadOnlyDictionary keyValues = _keyValueService.FindByKeyPrefix(Constants.Conventions.Migrations.KeyValuePrefix); IReadOnlyList pendingMigrations = _pendingPackageMigrations.GetPendingPackageMigrations(keyValues); @@ -134,10 +134,10 @@ namespace Umbraco.Cms.Web.BackOffice.Controllers } catch (Exception ex) { - _logger.LogError(ex, "Package migration failed on package {Package} for {Plan}", packageName, plan.Name); + _logger.LogError(ex, "Package migration failed on package {Package} for plan {Plan}", packageName, plan.Name); return ValidationErrorResult.CreateNotificationValidationErrorResult( - $"Package migration failed on package {packageName} for {plan.Name} with error: {ex.Message}. Check log for full details."); + $"Package migration failed on package {packageName} for plan {plan.Name} with error: {ex.Message}. Check log for full details."); } } } diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/package.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/package.resource.js index 669662bee3..8430f77e20 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/package.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/package.resource.js @@ -29,7 +29,8 @@ function packageResource($q, $http, umbDataFormatter, umbRequestHelper) { $http.post( umbRequestHelper.getApiUrl( "packageApiBaseUrl", - "RunMigrations"), { packageName: packageName }), + "RunMigrations", + { packageName: packageName })), 'Failed to run migrations for package'); }, diff --git a/src/Umbraco.Web.UI.Client/src/views/packages/views/installed.controller.js b/src/Umbraco.Web.UI.Client/src/views/packages/views/installed.controller.js index 1fa06e91af..61f71255be 100644 --- a/src/Umbraco.Web.UI.Client/src/views/packages/views/installed.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/packages/views/installed.controller.js @@ -5,11 +5,13 @@ var vm = this; + vm.confirmMigrations = confirmMigrations; vm.packageOptions = packageOptions; vm.runMigrations = runMigrations; vm.state = "list"; vm.installState = { - status: "" + status: "", + state: "" }; vm.package = {}; @@ -20,17 +22,13 @@ .then(function (packs) { vm.installedPackages = packs; }); - vm.installState.status = ""; - vm.state = "list"; - + var labelKeys = [ - "packager_installStateUninstalling", - "packager_installStateComplete" + "packager_packageMigrationsComplete" ]; localizationService.localizeMany(labelKeys).then(function (values) { - labels.installStateUninstalling = values[0]; - labels.installStateComplete = values[1]; + labels.packageMigrationsComplete = values[0]; }); } @@ -39,10 +37,23 @@ .search("packageId", null); //ensure the installId flag is gone, it's only available on first install } + function confirmMigrations(pck) { + vm.state = "runMigration"; + vm.package = pck; + vm.installState.state = ""; + vm.installState.status = ""; + } + function runMigrations(pck) { + vm.installState.state = "running"; packageResource.runMigrations(pck.name) .then(function (packs) { + vm.installState.state = "success"; + vm.installState.status = labels.packageMigrationsComplete; vm.installedPackages = packs; + }, function (err) { + vm.installState.state = "error"; + vm.installState.status = err.data.message; }); } diff --git a/src/Umbraco.Web.UI.Client/src/views/packages/views/installed.html b/src/Umbraco.Web.UI.Client/src/views/packages/views/installed.html index f6f0f12036..7eff0789ec 100644 --- a/src/Umbraco.Web.UI.Client/src/views/packages/views/installed.html +++ b/src/Umbraco.Web.UI.Client/src/views/packages/views/installed.html @@ -11,13 +11,18 @@ -
+
-
{{ installedPackage.name }}
+
{{ installedPackage.name }}
+
+ No pending migrations +
+ + action="vm.confirmMigrations(installedPackage)"> - - @@ -57,88 +57,54 @@
- -
+
- - - - - + + + + + -
+
-
- -
-
- - -
- - -
-

{{ vm.package.name }}

- - - -
- Version - {{ vm.package.version }} -
- -
- License - {{ vm.package.license }} -
- -
- Read me -
- -
- -
- - - - - - -
- -
- - -
- -
-

{{vm.installState.status}}

-
- -
-
+
+
+
+ +
+
+

{{ vm.package.name }}

+ +
+ + + +
+ +
+

{{vm.installState.status}}

+
+ +
+

{{vm.installState.status}}

+
+ +
+
+
+ +
+
diff --git a/src/Umbraco.Web.UI.NetCore/umbraco/config/lang/en_us.xml b/src/Umbraco.Web.UI.NetCore/umbraco/config/lang/en_us.xml index d1a3ca634c..28bb708199 100644 --- a/src/Umbraco.Web.UI.NetCore/umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI.NetCore/umbraco/config/lang/en_us.xml @@ -1277,6 +1277,8 @@ To manage your website, simply open the Umbraco backoffice and start adding cont You can safely remove this from the system by clicking "uninstall package" below.]]> Package options Run pending package migrations + Package migrations have successfully completed. + All package migrations have successfully completed. Package readme Package repository Confirm package uninstall