public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview) { var baseSource = base.ConvertIntermediateToObject(owner, propertyType, cacheLevel, source, preview); if (!IsOnlyImagesDataType(propertyType.DataType)) { return(baseSource); } var imageType = _publishedModelFactory.MapModelType(ModelType.For(ImageTypeAlias)); if (!(baseSource is IEnumerable <IPublishedContent> mediaItems)) { return(baseSource != null && baseSource.GetType().Inherits(imageType) ? baseSource : null); } var images = _publishedModelFactory.CreateModelList(ImageTypeAlias); foreach (var mediaItem in mediaItems.Where(mi => mi.GetType().Inherits(imageType))) { images.Add(mediaItem); } return(images); }
public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview) { var isMultiple = IsMultipleDataType(propertyType.DataType); var isOnlyImages = IsOnlyImagesDataType(propertyType.DataType); var udis = (Udi[])source; var mediaItems = isOnlyImages ? _publishedModelFactory.CreateModelList(ImageTypeAlias) : new List <IPublishedContent>(); if (source == null) { return(isMultiple ? mediaItems : null); } if (udis.Any()) { foreach (var udi in udis) { var guidUdi = udi as GuidUdi; if (guidUdi == null) { continue; } var item = _publishedSnapshotAccessor.PublishedSnapshot.Media.GetById(guidUdi.Guid); if (item != null) { mediaItems.Add(item); } } return(isMultiple ? mediaItems : FirstOrDefault(mediaItems)); } return(source); }