diff --git a/Our.Umbraco.PropertyConverters/MultiNodeTreePickerPropertyConverter.cs b/Our.Umbraco.PropertyConverters/MultiNodeTreePickerPropertyConverter.cs index 07f01f8..4037aac 100644 --- a/Our.Umbraco.PropertyConverters/MultiNodeTreePickerPropertyConverter.cs +++ b/Our.Umbraco.PropertyConverters/MultiNodeTreePickerPropertyConverter.cs @@ -7,6 +7,8 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System.Globalization; + namespace Our.Umbraco.PropertyConverters { using System; @@ -29,6 +31,15 @@ namespace Our.Umbraco.PropertyConverters /// public class MultiNodeTreePickerPropertyConverter : PropertyValueConverterBase, IPropertyValueConverterMeta { + /// + /// The properties to exclude. + /// + private static readonly List PropertiesToExclude = new List() + { + Constants.Conventions.Content.InternalRedirectId.ToLower(CultureInfo.InvariantCulture), + Constants.Conventions.Content.Redirect.ToLower(CultureInfo.InvariantCulture) + }; + /// /// Checks if this converter can convert the property editor and registers if it can. /// @@ -102,38 +113,46 @@ public override object ConvertSourceToObject(PublishedPropertyType propertyType, return null; } - var nodeIds = (int[])source; - - var multiNodeTreePicker = new List(); - - var dynamicInvocation = ConverterHelper.DynamicInvocation(); if (UmbracoContext.Current != null) { - var umbHelper = new UmbracoHelper(UmbracoContext.Current); + var nodeIds = (int[])source; - if (nodeIds.Length > 0) + if (!(propertyType.PropertyTypeAlias != null && PropertiesToExclude.Contains(propertyType.PropertyTypeAlias.ToLower(CultureInfo.InvariantCulture)))) { - var objectType = UmbracoObjectTypes.Unknown; + var multiNodeTreePicker = new List(); + + var dynamicInvocation = ConverterHelper.DynamicInvocation(); + + var umbHelper = new UmbracoHelper(UmbracoContext.Current); - foreach (var nodeId in nodeIds) + if (nodeIds.Length > 0) { - var multiNodeTreePickerItem = GetPublishedContent(nodeId, ref objectType, UmbracoObjectTypes.Document, umbHelper.TypedContent) - ?? GetPublishedContent(nodeId, ref objectType, UmbracoObjectTypes.Media, umbHelper.TypedMedia) - ?? GetPublishedContent(nodeId, ref objectType, UmbracoObjectTypes.Member, umbHelper.TypedMember); - if (multiNodeTreePickerItem != null) + var objectType = UmbracoObjectTypes.Unknown; + + foreach (var nodeId in nodeIds) { - multiNodeTreePicker.Add(dynamicInvocation ? multiNodeTreePickerItem.AsDynamic() : multiNodeTreePickerItem); + var multiNodeTreePickerItem = GetPublishedContent(nodeId, ref objectType, UmbracoObjectTypes.Document, umbHelper.TypedContent) + ?? GetPublishedContent(nodeId, ref objectType, UmbracoObjectTypes.Media, umbHelper.TypedMedia) + ?? GetPublishedContent(nodeId, ref objectType, UmbracoObjectTypes.Member, umbHelper.TypedMember); + + if (multiNodeTreePickerItem != null) + { + multiNodeTreePicker.Add(dynamicInvocation ? multiNodeTreePickerItem.AsDynamic() : multiNodeTreePickerItem); + } } + } + return dynamicInvocation + ? new DynamicPublishedContentList(multiNodeTreePicker.Where(x => x != null)) + : multiNodeTreePicker.Yield().Where(x => x != null); } - - return dynamicInvocation - ? new DynamicPublishedContentList(multiNodeTreePicker.Where(x => x != null)) - : multiNodeTreePicker.Yield().Where(x => x != null); + + // return the first nodeId + return nodeIds.FirstOrDefault(); } else {