From e2746604a16e9c0b08a1756ca6be1673ef8a9ccf Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Sun, 19 May 2019 08:37:33 +0200 Subject: [PATCH] If MNTP is configured to pick max 1 item, convert the value into IPublishedContent instead of IEnumerable --- .../MultiNodeTreePickerValueConverter.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerValueConverter.cs b/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerValueConverter.cs index a210aa62c6..4bb33fd2da 100644 --- a/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerValueConverter.cs +++ b/src/Umbraco.Web/PropertyEditors/ValueConverters/MultiNodeTreePickerValueConverter.cs @@ -43,7 +43,9 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters => PropertyCacheLevel.Snapshot; public override Type GetPropertyValueType(PublishedPropertyType propertyType) - => typeof (IEnumerable); + => IsSingleNodePicker(propertyType) + ? typeof(IPublishedContent) + : typeof(IEnumerable); public override object ConvertSourceToIntermediate(IPublishedElement owner, PublishedPropertyType propertyType, object source, bool preview) { @@ -73,6 +75,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters if (propertyType.EditorAlias.Equals(Constants.PropertyEditors.Aliases.MultiNodeTreePicker)) { var udis = (Udi[])source; + var isSingleNodePicker = IsSingleNodePicker(propertyType); if ((propertyType.Alias != null && PropertiesToExclude.InvariantContains(propertyType.Alias)) == false) { @@ -102,9 +105,17 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters if (multiNodeTreePickerItem != null && multiNodeTreePickerItem.ItemType != PublishedItemType.Element) { multiNodeTreePicker.Add(multiNodeTreePickerItem); + if (isSingleNodePicker) + { + break; + } } } + if (isSingleNodePicker) + { + return multiNodeTreePicker.FirstOrDefault(); + } return multiNodeTreePicker; } @@ -141,5 +152,10 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters } return content; } + + private static bool IsSingleNodePicker(PublishedPropertyType propertyType) + { + return propertyType.DataType.ConfigurationAs().MaxNumber == 1; + } } }