From 015d5882184b0ae43d9745cc42dc54c614941b3e Mon Sep 17 00:00:00 2001 From: Carole Rennie Logan Date: Tue, 19 Nov 2019 22:37:14 +0000 Subject: [PATCH 1/5] First comimt changing IUmbracoVersion --- .../CompositionExtensions/Services.cs | 2 +- .../Packaging/PackagesRepository.cs | 13 +++++---- .../CreatedPackagesRepositoryTests.cs | 1 + src/Umbraco.Tests/TestHelpers/TestObjects.cs | 5 ++-- src/Umbraco.Web.UI.Client/package-lock.json | 28 ++++++++++++++----- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs b/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs index 4ed2fb5b2e..c9fa8d1304 100644 --- a/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs +++ b/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs @@ -85,7 +85,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions /// private static PackagesRepository CreatePackageRepository(IFactory factory, string packageRepoFileName) => new PackagesRepository( - factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), + factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), packageRepoFileName); private static LocalizedTextServiceFileSources SourcesFactory(IFactory container) diff --git a/src/Umbraco.Core/Packaging/PackagesRepository.cs b/src/Umbraco.Core/Packaging/PackagesRepository.cs index 26f68c6262..50a8ba6769 100644 --- a/src/Umbraco.Core/Packaging/PackagesRepository.cs +++ b/src/Umbraco.Core/Packaging/PackagesRepository.cs @@ -35,6 +35,7 @@ namespace Umbraco.Core.Packaging private readonly string _packagesFolderPath; private readonly string _tempFolderPath; private readonly PackageDefinitionXmlParser _parser; + private readonly IUmbracoVersion _umbracoVersion; /// /// Constructor @@ -59,6 +60,7 @@ namespace Umbraco.Core.Packaging ILocalizationService languageService, IIOHelper ioHelper, IEntityXmlSerializer serializer, ILogger logger, + IUmbracoVersion umbracoVersion, string packageRepositoryFileName, string tempFolderPath = null, string packagesFolderPath = null, string mediaFolderPath = null) { @@ -79,6 +81,7 @@ namespace Umbraco.Core.Packaging _mediaFolderPath = mediaFolderPath ?? Current.Configs.Global().UmbracoMediaPath + "/created-packages"; _parser = new PackageDefinitionXmlParser(logger); + _umbracoVersion = umbracoVersion; } private string CreatedPackagesFile => _packagesFolderPath.EnsureEndsWith('/') + _packageRepositoryFileName; @@ -169,7 +172,7 @@ namespace Umbraco.Core.Packaging var compiledPackageXml = CreateCompiledPackageXml(out var root, out var filesXml); //Info section - root.Add(GetPackageInfoXml(definition)); + root.Add(GetPackageInfoXml(definition, _umbracoVersion)); PackageDocumentsAndTags(definition, root); PackageDocumentTypes(definition, root); @@ -550,7 +553,7 @@ namespace Umbraco.Core.Packaging dtl.Add(dt); } - private static XElement GetPackageInfoXml(PackageDefinition definition) + private static XElement GetPackageInfoXml(PackageDefinition definition, IUmbracoVersion umbracoVersion) { var info = new XElement("info"); @@ -569,9 +572,9 @@ namespace Umbraco.Core.Packaging var requirements = new XElement("requirements"); - requirements.Add(new XElement("major", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Major.ToInvariantString() : definition.UmbracoVersion.Major.ToInvariantString())); - requirements.Add(new XElement("minor", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Minor.ToInvariantString() : definition.UmbracoVersion.Minor.ToInvariantString())); - requirements.Add(new XElement("patch", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Patch.ToInvariantString() : definition.UmbracoVersion.Build.ToInvariantString())); + requirements.Add(new XElement("major", definition.UmbracoVersion == null ? umbracoVersion.SemanticVersion.Major.ToInvariantString() : definition.UmbracoVersion.Major.ToInvariantString())); + requirements.Add(new XElement("minor", definition.UmbracoVersion == null ? umbracoVersion.SemanticVersion.Minor.ToInvariantString() : definition.UmbracoVersion.Minor.ToInvariantString())); + requirements.Add(new XElement("patch", definition.UmbracoVersion == null ? umbracoVersion.SemanticVersion.Patch.ToInvariantString() : definition.UmbracoVersion.Build.ToInvariantString())); if (definition.UmbracoVersion != null) requirements.Add(new XAttribute("type", RequirementsType.Strict.ToString())); diff --git a/src/Umbraco.Tests/Packaging/CreatedPackagesRepositoryTests.cs b/src/Umbraco.Tests/Packaging/CreatedPackagesRepositoryTests.cs index f2b97b521e..b101f9f7fe 100644 --- a/src/Umbraco.Tests/Packaging/CreatedPackagesRepositoryTests.cs +++ b/src/Umbraco.Tests/Packaging/CreatedPackagesRepositoryTests.cs @@ -42,6 +42,7 @@ namespace Umbraco.Tests.Packaging ServiceContext.FileService, ServiceContext.MacroService, ServiceContext.LocalizationService, IOHelper, Factory.GetInstance(), Logger, + UmbracoVersion, "createdPackages.config", //temp paths tempFolderPath: "~/" + _testBaseFolder + "/temp", diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects.cs b/src/Umbraco.Tests/TestHelpers/TestObjects.cs index d06951d3be..5b7ab0504d 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects.cs @@ -99,6 +99,7 @@ namespace Umbraco.Tests.TestHelpers IEventMessagesFactory eventMessagesFactory, UrlSegmentProviderCollection urlSegmentProviders, TypeLoader typeLoader, + IUmbracoVersion umbracoVersion, IFactory factory = null) { if (scopeProvider == null) throw new ArgumentNullException(nameof(scopeProvider)); @@ -176,9 +177,9 @@ namespace Umbraco.Tests.TestHelpers return new PackagingService( auditService.Value, new PackagesRepository(contentService.Value, contentTypeService.Value, dataTypeService.Value, fileService.Value, macroService.Value, localizationService.Value, ioHelper, - new EntityXmlSerializer(contentService.Value, mediaService.Value, dataTypeService.Value, userService.Value, localizationService.Value, contentTypeService.Value, urlSegmentProviders), logger, "createdPackages.config"), + new EntityXmlSerializer(contentService.Value, mediaService.Value, dataTypeService.Value, userService.Value, localizationService.Value, contentTypeService.Value, urlSegmentProviders), logger, umbracoVersion, "createdPackages.config"), new PackagesRepository(contentService.Value, contentTypeService.Value, dataTypeService.Value, fileService.Value, macroService.Value, localizationService.Value, ioHelper, - new EntityXmlSerializer(contentService.Value, mediaService.Value, dataTypeService.Value, userService.Value, localizationService.Value, contentTypeService.Value, urlSegmentProviders), logger, "installedPackages.config"), + new EntityXmlSerializer(contentService.Value, mediaService.Value, dataTypeService.Value, userService.Value, localizationService.Value, contentTypeService.Value, urlSegmentProviders), logger, umbracoVersion, "installedPackages.config"), new PackageInstallation( new PackageDataInstallation(logger, fileService.Value, macroService.Value, localizationService.Value, dataTypeService.Value, entityService.Value, contentTypeService.Value, contentService.Value, propertyEditorCollection, scopeProvider), new PackageFileInstallation(compiledPackageXmlParser, ioHelper, new ProfilingLogger(logger, new TestProfiler())), diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 2652368819..072e2277b7 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -5309,12 +5309,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5329,17 +5331,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -5456,7 +5461,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -5468,6 +5474,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -5482,6 +5489,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5489,12 +5497,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -5513,6 +5523,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -5593,7 +5604,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -5605,6 +5617,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -5726,6 +5739,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", From b69d14da5e330f0695519746556d9c05f7593328 Mon Sep 17 00:00:00 2001 From: Carole Rennie Logan Date: Tue, 19 Nov 2019 23:15:11 +0000 Subject: [PATCH 2/5] IUmbracoVersion updates --- src/Umbraco.Web/Editors/BackOfficeController.cs | 5 ++--- .../Editors/BackOfficeServerVariables.cs | 11 +++++------ src/Umbraco.Web/Editors/DashboardController.cs | 6 ++++-- .../Editors/PackageInstallController.cs | 14 +++++++++----- src/Umbraco.Web/Editors/UpdateCheckController.cs | 15 +++++++++++---- src/Umbraco.Web/HtmlHelperBackOfficeExtensions.cs | 4 ++-- .../Install/Controllers/InstallController.cs | 8 ++++---- .../Install/InstallSteps/UpgradeStep.cs | 10 ++++++++-- 8 files changed, 45 insertions(+), 28 deletions(-) diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs index 1276cc41d5..08cb8fa4d5 100644 --- a/src/Umbraco.Web/Editors/BackOfficeController.cs +++ b/src/Umbraco.Web/Editors/BackOfficeController.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Globalization; -using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -15,7 +14,6 @@ using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; -using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Manifest; using Umbraco.Core.Models.Identity; @@ -44,6 +42,7 @@ namespace Umbraco.Web.Editors private readonly IRuntimeState _runtimeState; private BackOfficeUserManager _userManager; private BackOfficeSignInManager _signInManager; + private IUmbracoVersion _umbracoVersion; public BackOfficeController(IManifestParser manifestParser, UmbracoFeatures features, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, umbracoHelper) @@ -258,7 +257,7 @@ namespace Umbraco.Web.Editors [MinifyJavaScriptResult(Order = 1)] public JavaScriptResult ServerVariables() { - var serverVars = new BackOfficeServerVariables(Url, _runtimeState, _features, GlobalSettings); + var serverVars = new BackOfficeServerVariables(Url, _runtimeState, _features, GlobalSettings, _umbracoVersion); //cache the result if debugging is disabled var result = HttpContext.IsDebuggingEnabled diff --git a/src/Umbraco.Web/Editors/BackOfficeServerVariables.cs b/src/Umbraco.Web/Editors/BackOfficeServerVariables.cs index 1b963f1a62..a15b5bf63b 100644 --- a/src/Umbraco.Web/Editors/BackOfficeServerVariables.cs +++ b/src/Umbraco.Web/Editors/BackOfficeServerVariables.cs @@ -13,9 +13,6 @@ using Microsoft.Owin.Security; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; -using Umbraco.Core.Configuration.UmbracoSettings; -using Umbraco.Core.IO; -using Umbraco.Web.Controllers; using Umbraco.Web.Features; using Umbraco.Web.HealthCheck; using Umbraco.Web.Models.ContentEditing; @@ -38,8 +35,9 @@ namespace Umbraco.Web.Editors private readonly IGlobalSettings _globalSettings; private readonly HttpContextBase _httpContext; private readonly IOwinContext _owinContext; + private readonly IUmbracoVersion _umbracoVersion; - internal BackOfficeServerVariables(UrlHelper urlHelper, IRuntimeState runtimeState, UmbracoFeatures features, IGlobalSettings globalSettings) + internal BackOfficeServerVariables(UrlHelper urlHelper, IRuntimeState runtimeState, UmbracoFeatures features, IGlobalSettings globalSettings, IUmbracoVersion umbracoVersion) { _urlHelper = urlHelper; _runtimeState = runtimeState; @@ -47,6 +45,7 @@ namespace Umbraco.Web.Editors _globalSettings = globalSettings; _httpContext = _urlHelper.RequestContext.HttpContext; _owinContext = _httpContext.GetOwinContext(); + _umbracoVersion = umbracoVersion; } /// @@ -442,10 +441,10 @@ namespace Umbraco.Web.Editors // add versions - see UmbracoVersion for details & differences // the complete application version (eg "8.1.2-alpha.25") - { "version", Current.UmbracoVersion.SemanticVersion.ToSemanticString() }, + { "version", _umbracoVersion.SemanticVersion.ToSemanticString() }, // the assembly version (eg "8.0.0") - { "assemblyVersion", Current.UmbracoVersion.AssemblyVersion.ToString() } + { "assemblyVersion", _umbracoVersion.AssemblyVersion.ToString() } }; var version = _runtimeState.SemanticVersion.ToSemanticString(); diff --git a/src/Umbraco.Web/Editors/DashboardController.cs b/src/Umbraco.Web/Editors/DashboardController.cs index cfa92003bd..70b21e4a97 100644 --- a/src/Umbraco.Web/Editors/DashboardController.cs +++ b/src/Umbraco.Web/Editors/DashboardController.cs @@ -32,14 +32,16 @@ namespace Umbraco.Web.Editors public class DashboardController : UmbracoApiController { private readonly IDashboardService _dashboardService; + private readonly IUmbracoVersion _umbracoVersion; /// /// Initializes a new instance of the with all its dependencies. /// - public DashboardController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, IDashboardService dashboardService, UmbracoHelper umbracoHelper) + public DashboardController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, IDashboardService dashboardService, UmbracoHelper umbracoHelper, IUmbracoVersion umbracoVersion) : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { _dashboardService = dashboardService; + _umbracoVersion = umbracoVersion; } //we have just one instance of HttpClient shared for the entire application @@ -52,7 +54,7 @@ namespace Umbraco.Web.Editors var user = Security.CurrentUser; var allowedSections = string.Join(",", user.AllowedSections); var language = user.Language; - var version = Current.UmbracoVersion.SemanticVersion.ToSemanticString(); + var version = _umbracoVersion.SemanticVersion.ToSemanticString(); var url = string.Format(baseUrl + "{0}?section={0}&allowed={1}&lang={2}&version={3}", section, allowedSections, language, version); var key = "umbraco-dynamic-dashboard-" + language + allowedSections.Replace(",", "-") + section; diff --git a/src/Umbraco.Web/Editors/PackageInstallController.cs b/src/Umbraco.Web/Editors/PackageInstallController.cs index 932a86c082..a6e9034739 100644 --- a/src/Umbraco.Web/Editors/PackageInstallController.cs +++ b/src/Umbraco.Web/Editors/PackageInstallController.cs @@ -35,11 +35,15 @@ namespace Umbraco.Web.Editors [UmbracoApplicationAuthorize(Core.Constants.Applications.Packages)] public class PackageInstallController : UmbracoAuthorizedJsonController { + + private readonly IUmbracoVersion _umbracoVersion; public PackageInstallController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, - IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) + IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper, IUmbracoVersion umbracoVersion) : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { + _umbracoVersion = umbracoVersion; + } /// @@ -118,7 +122,7 @@ namespace Umbraco.Web.Editors if (ins.UmbracoVersionRequirementsType == RequirementsType.Strict) { var packageMinVersion = ins.UmbracoVersion; - if (Current.UmbracoVersion.Current < packageMinVersion) + if (_umbracoVersion.Current < packageMinVersion) { model.IsCompatible = false; } @@ -215,7 +219,7 @@ namespace Umbraco.Web.Editors { var packageFile = await Services.PackagingService.FetchPackageFileAsync( Guid.Parse(packageGuid), - Current.UmbracoVersion.Current, + _umbracoVersion.Current, Security.GetUserId().ResultOr(0)); fileName = packageFile.Name; @@ -259,7 +263,7 @@ namespace Umbraco.Web.Editors if (packageInfo.UmbracoVersionRequirementsType == RequirementsType.Strict) { var packageMinVersion = packageInfo.UmbracoVersion; - if (Current.UmbracoVersion.Current < packageMinVersion) + if (_umbracoVersion.Current < packageMinVersion) throw new HttpResponseException(Request.CreateNotificationValidationErrorResponse( Services.TextService.Localize("packager/targetVersionMismatch", new[] {packageMinVersion.ToString()}))); } @@ -366,7 +370,7 @@ namespace Umbraco.Web.Editors //bump cdf to be safe var clientDependencyConfig = new ClientDependencyConfiguration(Logger); var clientDependencyUpdated = clientDependencyConfig.UpdateVersionNumber( - Current.UmbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd"); + _umbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd"); var redirectUrl = ""; if (!packageInfo.PackageView.IsNullOrWhiteSpace()) diff --git a/src/Umbraco.Web/Editors/UpdateCheckController.cs b/src/Umbraco.Web/Editors/UpdateCheckController.cs index b3f8676821..2b05008adf 100644 --- a/src/Umbraco.Web/Editors/UpdateCheckController.cs +++ b/src/Umbraco.Web/Editors/UpdateCheckController.cs @@ -15,6 +15,13 @@ namespace Umbraco.Web.Editors [PluginController("UmbracoApi")] public class UpdateCheckController : UmbracoAuthorizedJsonController { + private readonly IUmbracoVersion _umbracoVersion; + + public UpdateCheckController (IUmbracoVersion umbracoVersion) + { + _umbracoVersion = umbracoVersion; + } + [UpdateCheckResponseFilter] public UpgradeCheckResponse GetCheck() { @@ -26,10 +33,10 @@ namespace Umbraco.Web.Editors { var check = new org.umbraco.update.CheckForUpgrade { Timeout = 2000 }; - var result = check.CheckUpgrade(Current.UmbracoVersion.Current.Major, - Current.UmbracoVersion.Current.Minor, - Current.UmbracoVersion.Current.Build, - Current.UmbracoVersion.Comment); + var result = check.CheckUpgrade(_umbracoVersion.Current.Major, + _umbracoVersion.Current.Minor, + _umbracoVersion.Current.Build, + _umbracoVersion.Comment); return new UpgradeCheckResponse(result.UpgradeType.ToString(), result.Comment, result.UpgradeUrl); } diff --git a/src/Umbraco.Web/HtmlHelperBackOfficeExtensions.cs b/src/Umbraco.Web/HtmlHelperBackOfficeExtensions.cs index 1d518fa1d3..d9c2e2b881 100644 --- a/src/Umbraco.Web/HtmlHelperBackOfficeExtensions.cs +++ b/src/Umbraco.Web/HtmlHelperBackOfficeExtensions.cs @@ -36,9 +36,9 @@ namespace Umbraco.Web /// These are the bare minimal server variables that are required for the application to start without being authenticated, /// we will load the rest of the server vars after the user is authenticated. /// - public static IHtmlString BareMinimumServerVariablesScript(this HtmlHelper html, UrlHelper uri, string externalLoginsUrl, UmbracoFeatures features, IGlobalSettings globalSettings) + public static IHtmlString BareMinimumServerVariablesScript(this HtmlHelper html, UrlHelper uri, string externalLoginsUrl, UmbracoFeatures features, IGlobalSettings globalSettings, IUmbracoVersion umbracoVersion) { - var serverVars = new BackOfficeServerVariables(uri, Current.RuntimeState, features, globalSettings); + var serverVars = new BackOfficeServerVariables(uri, Current.RuntimeState, features, globalSettings, umbracoVersion); var minVars = serverVars.BareMinimumServerVariables(); var str = @"