From 0ebb376ff907103dd806e11371411b18ef600e9a Mon Sep 17 00:00:00 2001 From: Damiaan Date: Thu, 30 Nov 2017 17:28:46 +0100 Subject: [PATCH] Add propertyvalueconverter --- StringListPropertyValueConverter.cs | 61 +++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 StringListPropertyValueConverter.cs diff --git a/StringListPropertyValueConverter.cs b/StringListPropertyValueConverter.cs new file mode 100644 index 0000000..033ff45 --- /dev/null +++ b/StringListPropertyValueConverter.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.PropertyEditors; + + public class StringListPropertyValueConverter : IPropertyValueConverter, IPropertyValueConverterMeta + { + public bool IsConverter(PublishedPropertyType propertyType) + { + return propertyType.PropertyEditorAlias.Equals("Epiphany.SortableStringList"); + } + + public object ConvertDataToSource(PublishedPropertyType propertyType, object source, bool preview) + { + if (source == null) { return null; } + + return DeserializeFromJson(source.ToString()); + } + + public object ConvertSourceToObject(PublishedPropertyType propertyType, object source, bool preview) + { + return source; + } + + public object ConvertSourceToXPath(PublishedPropertyType propertyType, object source, bool preview) + { + return source.ToString(); + } + + public Type GetPropertyValueType(PublishedPropertyType propertyType) + { + return typeof(IList); + } + + public PropertyCacheLevel GetPropertyCacheLevel(PublishedPropertyType propertyType, PropertyCacheValue cacheValue) + { + PropertyCacheLevel returnLevel; + switch (cacheValue) + { + case PropertyCacheValue.Object: + returnLevel = PropertyCacheLevel.ContentCache; + break; + case PropertyCacheValue.Source: + returnLevel = PropertyCacheLevel.Content; + break; + case PropertyCacheValue.XPath: + returnLevel = PropertyCacheLevel.Content; + break; + default: + returnLevel = PropertyCacheLevel.None; + break; + } + return returnLevel; + } + + private static IList DeserializeFromJson(string json) + { + var jsonObject = Newtonsoft.Json.JsonConvert.DeserializeObject>(json); + return jsonObject; + } + } \ No newline at end of file