From 0078a5d8cc80e778dfbb21691c5543907d7c6c4d Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 30 Jan 2017 16:54:01 +1100 Subject: [PATCH] Getting the media picker wired up for udi --- src/Umbraco.Core/Constants-PropertyEditors.cs | 4 +- .../mediapicker/mediapicker.controller.js | 17 ++++-- .../Models/ContentEditing/EntityBasic.cs | 3 + .../MediaPickerPropertyEditor.cs | 58 ++++++++++++------- .../MultipleMediaPickerPropertyEditor.cs | 32 +--------- 5 files changed, 58 insertions(+), 56 deletions(-) diff --git a/src/Umbraco.Core/Constants-PropertyEditors.cs b/src/Umbraco.Core/Constants-PropertyEditors.cs index 2712fffdfa..832c87bbb4 100644 --- a/src/Umbraco.Core/Constants-PropertyEditors.cs +++ b/src/Umbraco.Core/Constants-PropertyEditors.cs @@ -204,11 +204,9 @@ namespace Umbraco.Core /// public const string MediaPicker2Alias = "Umbraco.MediaPicker2"; - [Obsolete("This is an obsoleted picker, use MultipleMediaPicker2Alias instead")] + [Obsolete("This is an obsoleted picker, use MemberPicker2Alias instead")] public const string MultipleMediaPickerAlias = "Umbraco.MultipleMediaPicker"; - public const string MultipleMediaPicker2Alias = "Umbraco.MultipleMediaPicker2"; - /// /// Guid for the Member Picker datatype. /// diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js index 6945d995cd..dafe6cc3c7 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js @@ -40,7 +40,13 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl } $scope.images.push(media); - $scope.ids.push(media.id); + + if ($scope.model.config.idType === "udi") { + $scope.ids.push(media.udi); + } + else { + $scope.ids.push(media.id); + } } }); @@ -81,9 +87,12 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl $scope.images.push(media); - //TODO: Determine if we are storing UDI vs INT - - $scope.ids.push(media.id); + if ($scope.model.config.idType === "udi") { + $scope.ids.push(media.udi); + } + else { + $scope.ids.push(media.id); + } }); $scope.sync(); diff --git a/src/Umbraco.Web/Models/ContentEditing/EntityBasic.cs b/src/Umbraco.Web/Models/ContentEditing/EntityBasic.cs index b17b876e76..9f6e5b28da 100644 --- a/src/Umbraco.Web/Models/ContentEditing/EntityBasic.cs +++ b/src/Umbraco.Web/Models/ContentEditing/EntityBasic.cs @@ -6,8 +6,10 @@ using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; +using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Models.Validation; +using Umbraco.Core.Serialization; namespace Umbraco.Web.Models.ContentEditing { @@ -29,6 +31,7 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "udi")] [ReadOnly(true)] + [JsonConverter(typeof(UdiJsonConverter))] public Udi Udi { get; set; } [DataMember(Name = "icon")] diff --git a/src/Umbraco.Web/PropertyEditors/MediaPickerPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/MediaPickerPropertyEditor.cs index f776d74829..169d0d4639 100644 --- a/src/Umbraco.Web/PropertyEditors/MediaPickerPropertyEditor.cs +++ b/src/Umbraco.Web/PropertyEditors/MediaPickerPropertyEditor.cs @@ -16,6 +16,26 @@ namespace Umbraco.Web.PropertyEditors [PropertyEditor(Constants.PropertyEditors.MediaPickerAlias, "(Obsolete) Media Picker", PropertyEditorValueTypes.Integer, "mediapicker", Group = "media", Icon = "icon-picture", IsDeprecated = true)] public class MediaPickerPropertyEditor : MediaPickerPropertyEditor2 { + public MediaPickerPropertyEditor() + { + InternalPreValues = new Dictionary + { + {"multiPicker", "0"}, + {"onlyImages", "0"}, + {"idType", "id"} + }; + } + + protected override PreValueEditor CreatePreValueEditor() + { + return new SingleMediaPickerPreValueEditor(); + } + + internal class SingleMediaPickerPreValueEditor : PreValueEditor + { + [PreValueField("startNodeId", "Start node", "mediapicker")] + public int StartNodeId { get; set; } + } } /// @@ -28,38 +48,36 @@ namespace Umbraco.Web.PropertyEditors { InternalPreValues = new Dictionary { - {"multiPicker", "0"}, - {"onlyImages", "0"} + {"idType", "udi"} }; } protected IDictionary InternalPreValues; - - protected override PropertyValueEditor CreateValueEditor() - { - return new SingleMediaPickerValueEditor(); - } - + public override IDictionary DefaultPreValues { get { return InternalPreValues; } set { InternalPreValues = value; } } - protected override PreValueEditor CreatePreValueEditor() - { - return new SingleMediaPickerPreValueEditor(); - } + protected override PreValueEditor CreatePreValueEditor() + { + return new MediaPickerPreValueEditor(); + } + + internal class MediaPickerPreValueEditor : PreValueEditor + { + [PreValueField("multiPicker", "Pick multiple items", "boolean")] + public bool MultiPicker { get; set; } + + [PreValueField("onlyImages", "Pick only images", "boolean", Description = "Only let the editor choose images from media.")] + public bool OnlyImages { get; set; } - internal class SingleMediaPickerValueEditor : PropertyValueEditor - { - override - } - - internal class SingleMediaPickerPreValueEditor : PreValueEditor - { + [PreValueField("disableFolderSelect", "Disable folder select", "boolean", Description = "Do not allow folders to be picked.")] + public bool DisableFolderSelect { get; set; } + [PreValueField("startNodeId", "Start node", "mediapicker")] - public int StartNodeId { get; set; } + public int StartNodeId { get; set; } } } } diff --git a/src/Umbraco.Web/PropertyEditors/MultipleMediaPickerPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/MultipleMediaPickerPropertyEditor.cs index cd002a103b..716e71711f 100644 --- a/src/Umbraco.Web/PropertyEditors/MultipleMediaPickerPropertyEditor.cs +++ b/src/Umbraco.Web/PropertyEditors/MultipleMediaPickerPropertyEditor.cs @@ -7,37 +7,11 @@ namespace Umbraco.Web.PropertyEditors [Obsolete("This editor is obsolete, use MultipleMediaPickerPropertyEditor2 instead which stores UDI")] [PropertyEditor(Constants.PropertyEditors.MultipleMediaPickerAlias, "(Obsolete) Media Picker", "mediapicker", Group = "media", Icon = "icon-pictures-alt-2", IsDeprecated = true)] public class MultipleMediaPickerPropertyEditor : MediaPickerPropertyEditor - { - - } - - [PropertyEditor(Constants.PropertyEditors.MultipleMediaPicker2Alias, "Media Picker", PropertyEditorValueTypes.Text, "mediapicker", Group = "media", Icon = "icon-pictures-alt-2", IsDeprecated = true)] - public class MultipleMediaPickerPropertyEditor2 : MediaPickerPropertyEditor2 - { - public MultipleMediaPickerPropertyEditor2() + { + public MultipleMediaPickerPropertyEditor() { //clear the pre-values so it defaults to a multiple picker. InternalPreValues.Clear(); } - - protected override PreValueEditor CreatePreValueEditor() - { - return new MediaPickerPreValueEditor(); - } - - internal class MediaPickerPreValueEditor : PreValueEditor - { - [PreValueField("multiPicker", "Pick multiple items", "boolean")] - public bool MultiPicker { get; set; } - - [PreValueField("onlyImages", "Pick only images", "boolean", Description = "Only let the editor choose images from media.")] - public bool OnlyImages { get; set; } - - [PreValueField("disableFolderSelect", "Disable folder select", "boolean", Description = "Do not allow folders to be picked.")] - public bool DisableFolderSelect { get; set; } - - [PreValueField("startNodeId", "Start node", "mediapicker")] - public int StartNodeId { get; set; } - } - } + } } \ No newline at end of file