diff --git a/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs b/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs index 94cb89defa..3b37460741 100644 --- a/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs +++ b/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs @@ -14,13 +14,13 @@ namespace Umbraco.Core.PropertyEditors /// /// /// This resolver will contain any parameter editors defined in manifests as well as any property editors defined in manifests - /// that have the IsParameterEditorFlag = true and any PropertyEditors found in c# that have this flag as well. + /// that have the IsParameterEditorFlag = true and any PropertyEditors found in c# that have this flag as well. /// internal class ParameterEditorResolver : LazyManyObjectsResolverBase { private readonly ManifestBuilder _builder; private readonly IContentSection _contentSection; - + public ParameterEditorResolver(IServiceProvider serviceProvider, ILogger logger, Func> typeListProducerList, ManifestBuilder builder) : base(serviceProvider, logger, typeListProducerList, ObjectLifetimeScope.Application) { @@ -33,47 +33,51 @@ namespace Umbraco.Core.PropertyEditors /// public IEnumerable ParameterEditors { - get + get { return GetParameterEditors(); } + } + + public IEnumerable GetParameterEditors(bool includeDeprecated = false) + { + // all property editors and parameter editors + // except property editors where !IsParameterEditor + var values = Values + .Where(x => x is PropertyEditor == false || ((PropertyEditor) x).IsParameterEditor); + + // union all manifest parameter editors + values = values + .Union(_builder.ParameterEditors); + + // union all manifest property editors where IsParameterEditor + values = values + .Union(_builder.PropertyEditors.Where(x => x.IsParameterEditor)); + + if (includeDeprecated == false && _contentSection.ShowDeprecatedPropertyEditors == false) { - // all property editors and parameter editors - // except property editors where !IsParameterEditor - var values = Values - .Where(x => x is PropertyEditor == false || ((PropertyEditor) x).IsParameterEditor); - - // union all manifest parameter editors + // except deprecated property editors values = values - .Union(_builder.ParameterEditors); - - // union all manifest property editors where IsParameterEditor - values = values - .Union(_builder.PropertyEditors.Where(x => x.IsParameterEditor)); - - if (_contentSection.ShowDeprecatedPropertyEditors == false) - { - // except deprecated property editors - values = values - .Where(x => x is PropertyEditor == false || ((PropertyEditor) x).IsDeprecated == false); - } - - return values; + .Where(x => x is PropertyEditor == false || ((PropertyEditor) x).IsDeprecated == false); } + + return values; } /// /// Returns a property editor by alias /// /// + /// /// - public IParameterEditor GetByAlias(string alias) + public IParameterEditor GetByAlias(string alias, bool includeDeprecated = false) { - var found = ParameterEditors.SingleOrDefault(x => x.Alias == alias); + var paramEditors = GetParameterEditors(includeDeprecated).ToArray(); + var found = paramEditors.SingleOrDefault(x => x.Alias == alias); if (found != null) return found; - + //couldn't find one, so try the map var mapped = LegacyParameterEditorAliasConverter.GetNewAliasFromLegacyAlias(alias); - return mapped == null - ? null - : ParameterEditors.SingleOrDefault(x => x.Alias == mapped); + return mapped == null + ? null + : paramEditors.SingleOrDefault(x => x.Alias == mapped); } } } \ No newline at end of file diff --git a/src/Umbraco.Web.UI/config/umbracoSettings.config b/src/Umbraco.Web.UI/config/umbracoSettings.config index d95e32a312..78d13ab600 100644 --- a/src/Umbraco.Web.UI/config/umbracoSettings.config +++ b/src/Umbraco.Web.UI/config/umbracoSettings.config @@ -105,7 +105,7 @@ Textstring - true + false true diff --git a/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs index 3dc86e61c9..8ef4432cab 100644 --- a/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs @@ -37,8 +37,8 @@ namespace Umbraco.Web.Models.Mapping .AfterMap((property, parameter) => { //map the view and the config - - var paramEditor = ParameterEditorResolver.Current.GetByAlias(property.EditorAlias); + // we need to show the depracated ones for backwards compatibility + var paramEditor = ParameterEditorResolver.Current.GetByAlias(property.EditorAlias, true); if (paramEditor == null) { //we'll just map this to a text box diff --git a/src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs index 7da647e707..2d9ee68b3b 100644 --- a/src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs +++ b/src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs @@ -7,7 +7,7 @@ namespace Umbraco.Web.PropertyEditors /// /// Media picker property editors that stores UDI /// - [PropertyEditor(Constants.PropertyEditors.MediaPicker2Alias, "Media Picker", PropertyEditorValueTypes.Text, "mediapicker", Group = "media", Icon = "icon-picture")] + [PropertyEditor(Constants.PropertyEditors.MediaPicker2Alias, "Media Picker", PropertyEditorValueTypes.Text, "mediapicker", IsParameterEditor = true, Group = "media", Icon = "icon-picture")] public class MediaPicker2PropertyEditor : PropertyEditor { public MediaPicker2PropertyEditor() diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs index d3c5b11330..b40515578b 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs @@ -209,8 +209,9 @@ namespace umbraco.cms.presentation.developer } protected IEnumerable GetMacroParameterEditors() - { - return ParameterEditorResolver.Current.ParameterEditors; + { + // we need to show the depracated ones for backwards compatibility + return ParameterEditorResolver.Current.GetParameterEditors(true); } public void macroPropertyCreate(object sender, EventArgs e) diff --git a/src/umbraco.cms/businesslogic/macro/MacroProperty.cs b/src/umbraco.cms/businesslogic/macro/MacroProperty.cs index 0944324275..8d440857e8 100644 --- a/src/umbraco.cms/businesslogic/macro/MacroProperty.cs +++ b/src/umbraco.cms/businesslogic/macro/MacroProperty.cs @@ -100,8 +100,9 @@ namespace umbraco.cms.businesslogic.macro { if (_type == null) { - //we'll try to create one based on the resolved new parameter editors - var found = ParameterEditorResolver.Current.GetByAlias(ParameterEditorAlias); + //we'll try to create one based on the resolved new parameter editors + // we need to show the depracated ones for backwards compatibility + var found = ParameterEditorResolver.Current.GetByAlias(ParameterEditorAlias, true); if (found == null) { return null;