From e6903bffcd43e296ebb39abbad834691b7e86893 Mon Sep 17 00:00:00 2001 From: Callum Whyte Date: Wed, 31 May 2023 15:58:42 +0100 Subject: [PATCH] Convert collections for XPath in PropertyValueConverterBase (#14275) --- .../PropertyValueConverterBase.cs | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs b/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs index 2e26894d23..3066086e7b 100644 --- a/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs +++ b/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs @@ -1,4 +1,6 @@ -using Umbraco.Cms.Core.Models.PublishedContent; +using System.Collections.Generic; +using System.Xml; +using Umbraco.Cms.Core.Models.PublishedContent; namespace Umbraco.Cms.Core.PropertyEditors; @@ -48,7 +50,29 @@ public abstract class PropertyValueConverterBase : IPropertyValueConverter /// public virtual object? ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object? inter, bool preview) - => inter?.ToString() ?? string.Empty; + { + var d = new XmlDocument(); + XmlElement e = d.CreateElement("values"); + d.AppendChild(e); + + if (inter is IEnumerable collection) + { + foreach (var value in collection) + { + XmlElement ee = d.CreateElement("value"); + ee.InnerText = value; + e.AppendChild(ee); + } + } + else + { + XmlElement ee = d.CreateElement("value"); + ee.InnerText = inter?.ToString() ?? string.Empty; + e.AppendChild(ee); + } + + return d.CreateNavigator(); + } [Obsolete( "This method is not part of the IPropertyValueConverter contract, therefore not used and will be removed in future versions; use IsValue instead.")]