diff --git a/src/Skybrud.ImagePicker/PropertyEditors/ImagePickerConfiguration.cs b/src/Skybrud.ImagePicker/PropertyEditors/ImagePickerConfiguration.cs index 10822bf..7549218 100644 --- a/src/Skybrud.ImagePicker/PropertyEditors/ImagePickerConfiguration.cs +++ b/src/Skybrud.ImagePicker/PropertyEditors/ImagePickerConfiguration.cs @@ -11,12 +11,9 @@ public class ImagePickerConfiguration : MediaPickerConfiguration { [ConfigurationField("model", "Model", "textstring", Description = "Specify the .NET type to be used as model. Default is ImagePickerImage.")] public string Model { get; set; } - public Type ModelType - { + public Type ModelType { - - get - { + get { if (_type == null && string.IsNullOrWhiteSpace(Model) == false) { _type = Type.GetType(Model); diff --git a/src/Skybrud.ImagePicker/PropertyEditors/ImagePickerConfigurationEditor.cs b/src/Skybrud.ImagePicker/PropertyEditors/ImagePickerConfigurationEditor.cs index 1244e3d..27be7d5 100644 --- a/src/Skybrud.ImagePicker/PropertyEditors/ImagePickerConfigurationEditor.cs +++ b/src/Skybrud.ImagePicker/PropertyEditors/ImagePickerConfigurationEditor.cs @@ -5,14 +5,16 @@ namespace Skybrud.ImagePicker.PropertyEditors { public class ImagePickerConfigurationEditor : ConfigurationEditor { - public ImagePickerConfigurationEditor() { - Field("StartNodeId").Config = new Dictionary { - { "multiPicker", false }, - { "onlyImages", true }, - { "disableFolderSelect", true }, - { "idType", "udi" } - }; + public override IDictionary ToValueEditor(object configuration) { + + var d = base.ToValueEditor(configuration); + + d["idType"] = "udi"; + + return d; + } } + } \ No newline at end of file diff --git a/src/Skybrud.ImagePicker/PropertyEditors/ValueConverters/ImageValueConverter.cs b/src/Skybrud.ImagePicker/PropertyEditors/ValueConverters/ImageValueConverter.cs index 745a8b7..3497b73 100644 --- a/src/Skybrud.ImagePicker/PropertyEditors/ValueConverters/ImageValueConverter.cs +++ b/src/Skybrud.ImagePicker/PropertyEditors/ValueConverters/ImageValueConverter.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; +using Skybrud.Essentials.Collections.Extensions; using Skybrud.ImagePicker.Models; using Umbraco.Core; using Umbraco.Core.Composing; @@ -39,7 +40,7 @@ public override object ConvertIntermediateToObject(IPublishedElement owner, IPub var isMultiple = IsMultipleDataType(propertyType.DataType); var udis = inter as Udi[] ?? new Udi[0]; - var mediaItems = new List(); + var mediaItems = new List(); if (inter == null) return isMultiple ? mediaItems : null; @@ -49,12 +50,12 @@ public override object ConvertIntermediateToObject(IPublishedElement owner, IPub if (udi is GuidUdi guidUdi) { IPublishedContent media = _publishedSnapshotAccessor.PublishedSnapshot.Media.GetById(guidUdi.Guid); if (media != null) { - return type == null ? new ImagePickerImage(media) : Current.Factory.CreateInstance(type, media); + mediaItems.Add(type == null ? new ImagePickerImage(media) : Current.Factory.CreateInstance(type, media)); } } } - return isMultiple ? mediaItems : (object) mediaItems.FirstOrDefault(); + return isMultiple ? mediaItems.Cast(type) : mediaItems.FirstOrDefault(); } @@ -72,13 +73,12 @@ public override Type GetPropertyValueType(IPublishedPropertyType propertyType) { Type type = propertyType.DataType.ConfigurationAs()?.ModelType ?? typeof(ImagePickerImage); - return isMultiple ? typeof(IEnumerable).MakeGenericType(type) : type; + return isMultiple ? typeof(IEnumerable<>).MakeGenericType(type) : type; } private bool IsMultipleDataType(PublishedDataType dataType) { - if (!(dataType.Configuration is Dictionary config)) return false; - return config.TryGetValue("multiPicker", out object isMultiPicker) && isMultiPicker?.ToString() == "True"; + return dataType.ConfigurationAs()?.Multiple ?? false; } } diff --git a/src/Skybrud.ImagePicker/Skybrud.ImagePicker.csproj b/src/Skybrud.ImagePicker/Skybrud.ImagePicker.csproj index 8762904..e65089c 100644 --- a/src/Skybrud.ImagePicker/Skybrud.ImagePicker.csproj +++ b/src/Skybrud.ImagePicker/Skybrud.ImagePicker.csproj @@ -23,6 +23,7 @@ + contentFiles