From 3da9fddd64ab9dafb9e779d10b7eb29e2fec9443 Mon Sep 17 00:00:00 2001 From: Niels Hartvig Date: Sat, 24 Feb 2018 21:31:10 +1000 Subject: [PATCH 1/3] U4-10688 Obsolete property editors showing Please be aware that if you do have obsolete property editors in use and set the setting "showDeprecatedPropertyEditors" to false you'll get an exception. --- src/Umbraco.Core/CoreBootManager.cs | 2 +- .../PropertyEditors/PropertyEditorResolver.cs | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/CoreBootManager.cs b/src/Umbraco.Core/CoreBootManager.cs index a0455d820a..27118cc52a 100644 --- a/src/Umbraco.Core/CoreBootManager.cs +++ b/src/Umbraco.Core/CoreBootManager.cs @@ -461,7 +461,7 @@ namespace Umbraco.Core ApplicationCache.RuntimeCache, new ManifestParser(new DirectoryInfo(IOHelper.MapPath("~/App_Plugins")), ApplicationCache.RuntimeCache)); - PropertyEditorResolver.Current = new PropertyEditorResolver(ServiceProvider, ProfilingLogger.Logger, () => PluginManager.ResolvePropertyEditors(), builder); + PropertyEditorResolver.Current = new PropertyEditorResolver(ServiceProvider, ProfilingLogger.Logger, () => PluginManager.ResolvePropertyEditors(), builder, UmbracoConfig.For.UmbracoSettings().Content); ParameterEditorResolver.Current = new ParameterEditorResolver(ServiceProvider, ProfilingLogger.Logger, () => PluginManager.ResolveParameterEditors(), builder); //setup the validators resolver with our predefined validators diff --git a/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs b/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs index ba1df58879..4cd966301a 100644 --- a/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs +++ b/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using Umbraco.Core.Cache; +using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; using Umbraco.Core.IO; using Umbraco.Core.Manifest; @@ -39,10 +40,11 @@ namespace Umbraco.Core.PropertyEditors _unioned = new Lazy>(() => Values.Union(builder.PropertyEditors).ToList()); } - internal PropertyEditorResolver(IServiceProvider serviceProvider, ILogger logger, Func> typeListProducerList, ManifestBuilder builder) + internal PropertyEditorResolver(IServiceProvider serviceProvider, ILogger logger, Func> typeListProducerList, ManifestBuilder builder, IContentSection contentSection) : base(serviceProvider, logger, typeListProducerList, ObjectLifetimeScope.Application) { - _unioned = new Lazy>(() => SanitizeNames(Values.Union(builder.PropertyEditors).ToList())); + _unioned = new Lazy>(() => SanitizeNames(Values.Union(builder.PropertyEditors) + .Where(x=>x.IsDeprecated == false || contentSection != null && contentSection.ShowDeprecatedPropertyEditors).ToList())); } private static List SanitizeNames(List editors) @@ -74,4 +76,4 @@ namespace Umbraco.Core.PropertyEditors return PropertyEditors.SingleOrDefault(x => x.Alias == alias); } } -} \ No newline at end of file +} From fa85ce39c7015f19630a9e205029a67a41e196e8 Mon Sep 17 00:00:00 2001 From: Niels Hartvig Date: Mon, 26 Feb 2018 09:22:54 +0100 Subject: [PATCH 2/3] Changes filter of deprecated property editors to be on controller level instead of resolver --- src/Umbraco.Core/CoreBootManager.cs | 2 +- .../PropertyEditors/PropertyEditorResolver.cs | 6 ++---- src/Umbraco.Web/Editors/DataTypeController.cs | 9 ++++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Core/CoreBootManager.cs b/src/Umbraco.Core/CoreBootManager.cs index 27118cc52a..a0455d820a 100644 --- a/src/Umbraco.Core/CoreBootManager.cs +++ b/src/Umbraco.Core/CoreBootManager.cs @@ -461,7 +461,7 @@ namespace Umbraco.Core ApplicationCache.RuntimeCache, new ManifestParser(new DirectoryInfo(IOHelper.MapPath("~/App_Plugins")), ApplicationCache.RuntimeCache)); - PropertyEditorResolver.Current = new PropertyEditorResolver(ServiceProvider, ProfilingLogger.Logger, () => PluginManager.ResolvePropertyEditors(), builder, UmbracoConfig.For.UmbracoSettings().Content); + PropertyEditorResolver.Current = new PropertyEditorResolver(ServiceProvider, ProfilingLogger.Logger, () => PluginManager.ResolvePropertyEditors(), builder); ParameterEditorResolver.Current = new ParameterEditorResolver(ServiceProvider, ProfilingLogger.Logger, () => PluginManager.ResolveParameterEditors(), builder); //setup the validators resolver with our predefined validators diff --git a/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs b/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs index 4cd966301a..9175155eea 100644 --- a/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs +++ b/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; using Umbraco.Core.Cache; -using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; using Umbraco.Core.IO; using Umbraco.Core.Manifest; @@ -40,11 +39,10 @@ namespace Umbraco.Core.PropertyEditors _unioned = new Lazy>(() => Values.Union(builder.PropertyEditors).ToList()); } - internal PropertyEditorResolver(IServiceProvider serviceProvider, ILogger logger, Func> typeListProducerList, ManifestBuilder builder, IContentSection contentSection) + internal PropertyEditorResolver(IServiceProvider serviceProvider, ILogger logger, Func> typeListProducerList, ManifestBuilder builder) : base(serviceProvider, logger, typeListProducerList, ObjectLifetimeScope.Application) { - _unioned = new Lazy>(() => SanitizeNames(Values.Union(builder.PropertyEditors) - .Where(x=>x.IsDeprecated == false || contentSection != null && contentSection.ShowDeprecatedPropertyEditors).ToList())); + _unioned = new Lazy>(() => SanitizeNames(Values.Union(builder.PropertyEditors).ToList())); } private static List SanitizeNames(List editors) diff --git a/src/Umbraco.Web/Editors/DataTypeController.cs b/src/Umbraco.Web/Editors/DataTypeController.cs index d42b158cfb..8b070b8e1f 100644 --- a/src/Umbraco.Web/Editors/DataTypeController.cs +++ b/src/Umbraco.Web/Editors/DataTypeController.cs @@ -20,6 +20,7 @@ using umbraco; using Constants = Umbraco.Core.Constants; using System.Net.Http; using System.Text; +using Umbraco.Core.Configuration; namespace Umbraco.Web.Editors { @@ -340,9 +341,11 @@ namespace Umbraco.Web.Editors Constants.Applications.Settings, Constants.Applications.Developer)] public IDictionary> GetGroupedPropertyEditors() { - var datatypes = new List(); + var datatypes = new List(); + var showDeprecatedPropertyEditors = UmbracoConfig.For.UmbracoSettings().Content + .ShowDeprecatedPropertyEditors; - var propertyEditors = PropertyEditorResolver.Current.PropertyEditors; + var propertyEditors = PropertyEditorResolver.Current.PropertyEditors.Where(x=>x.IsDeprecated == false || showDeprecatedPropertyEditors); foreach (var propertyEditor in propertyEditors) { var hasPrevalues = propertyEditor.PreValueEditor.Fields.Any(); @@ -377,4 +380,4 @@ namespace Umbraco.Web.Editors } #endregion } -} \ No newline at end of file +} From ae864a3b19531be1affa5f8127adf36b764b88dc Mon Sep 17 00:00:00 2001 From: Niels Hartvig Date: Mon, 26 Feb 2018 11:32:58 +0100 Subject: [PATCH 3/3] Mark old package installed Nested Content obsolete so it doesn't come up in the list --- src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs b/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs index 9175155eea..7a4ca5654c 100644 --- a/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs +++ b/src/Umbraco.Core/PropertyEditors/PropertyEditorResolver.cs @@ -48,8 +48,10 @@ namespace Umbraco.Core.PropertyEditors private static List SanitizeNames(List editors) { var nestedContentEditorFromPackage = editors.FirstOrDefault(x => x.Alias == "Our.Umbraco.NestedContent"); - if (nestedContentEditorFromPackage != null) + if (nestedContentEditorFromPackage != null) { nestedContentEditorFromPackage.Name = "(Obsolete) " + nestedContentEditorFromPackage.Name; + nestedContentEditorFromPackage.IsDeprecated = true; + } return editors; }