From 9eb9b8df92d14d0996cbed135d71732b73f488cf Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 14 Nov 2013 20:32:11 +1100 Subject: [PATCH] Fixes: U4-3501 Error when selecting multiple items with the media picker in v7 - ensures the standard media picker cannot multi-select, hides the add button when multi select is disabled and there's a value. --- .../mediapicker/mediapicker.controller.js | 18 +++++++++++++++++- .../mediapicker/mediapicker.html | 2 +- .../MediaPickerPropertyEditor.cs | 16 ++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) 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 5515532654..238ec7e330 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 @@ -3,6 +3,8 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerController", function($rootScope, $scope, dialogService, mediaResource, imageHelper, $log) { + //check the pre-values for multi-picker + var multiPicker = $scope.model.config.multiPicker !== undefined ? $scope.model.config.multiPicker : true; function setupViewModel() { $scope.images = []; @@ -33,9 +35,14 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl $scope.add = function() { dialogService.mediaPicker({ - multiPicker: true, + multiPicker: multiPicker, callback: function(data) { + //it's only a single selector, so make it into an array + if (!multiPicker) { + data = [data]; + } + _.each(data, function(media, i) { var img = {}; img.id = media.id; @@ -67,6 +74,15 @@ angular.module('umbraco').controller("Umbraco.PropertyEditors.MediaPickerControl $scope.model.value = $scope.ids.join(); }; + $scope.showAdd = function () { + if (!multiPicker) { + if ($scope.model.value && $scope.model.value !== "") { + return false; + } + } + return true; + }; + //here we declare a special method which will be called whenever the value has changed from the server //this is instead of doing a watch on the model.value = faster $scope.model.onValueChanged = function (newVal, oldVal) { diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.html index b23955c511..89da1045e7 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.html @@ -8,7 +8,7 @@ -