Don't use a hardcoded "image" type in media picker value conversion

This commit is contained in:
Kenn Jacobsen
2019-07-31 21:30:41 +02:00
committed by Sebastiaan Janssen
parent bfc87922cb
commit 3457018fb4
@@ -37,14 +37,8 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
public override Type GetPropertyValueType(IPublishedPropertyType propertyType) public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
{ {
var isMultiple = IsMultipleDataType(propertyType.DataType); var isMultiple = IsMultipleDataType(propertyType.DataType);
var isOnlyImages = IsOnlyImagesDataType(propertyType.DataType);
return isMultiple return isMultiple
? isOnlyImages ? typeof(IEnumerable<IPublishedContent>)
? typeof(IEnumerable<>).MakeGenericType(ModelType.For(ImageTypeAlias))
: typeof(IEnumerable<IPublishedContent>)
: isOnlyImages
? ModelType.For(ImageTypeAlias)
: typeof(IPublishedContent); : typeof(IPublishedContent);
} }
@@ -57,12 +51,6 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
return config.Multiple; return config.Multiple;
} }
private bool IsOnlyImagesDataType(PublishedDataType dataType)
{
var config = ConfigurationEditor.ConfigurationAs<MediaPickerConfiguration>(dataType.Configuration);
return config.OnlyImages;
}
public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, public override object ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType,
object source, bool preview) object source, bool preview)
{ {
@@ -79,12 +67,9 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
PropertyCacheLevel cacheLevel, object source, bool preview) PropertyCacheLevel cacheLevel, object source, bool preview)
{ {
var isMultiple = IsMultipleDataType(propertyType.DataType); var isMultiple = IsMultipleDataType(propertyType.DataType);
var isOnlyImages = IsOnlyImagesDataType(propertyType.DataType);
var udis = (Udi[]) source; var udis = (Udi[]) source;
var mediaItems = isOnlyImages var mediaItems = new List<IPublishedContent>();
? _publishedModelFactory.CreateModelList(ImageTypeAlias)
: new List<IPublishedContent>();
if (source == null) return isMultiple ? mediaItems : null; if (source == null) return isMultiple ? mediaItems : null;