From eb52dafb33f32a74545a9b00bc90b3a913833e2b Mon Sep 17 00:00:00 2001 From: Claus Date: Thu, 22 Jun 2017 13:01:29 +0200 Subject: [PATCH] U4-9839 Media Picker: If I only upload one photo then select it as a part of the upload process --- .../mediaPicker/mediapicker.controller.js | 132 +++++++++--------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/mediaPicker/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/mediaPicker/mediapicker.controller.js index 1992bed068..fb38581eac 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/mediaPicker/mediapicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/mediaPicker/mediapicker.controller.js @@ -1,7 +1,7 @@ //used for the media picker dialog angular.module("umbraco") .controller("Umbraco.Overlays.MediaPickerController", - function ($scope, mediaResource, umbRequestHelper, entityResource, $log, mediaHelper, mediaTypeHelper, eventsService, treeService, $element, $timeout, $cookies, localStorageService, localizationService) { + function($scope, mediaResource, umbRequestHelper, entityResource, $log, mediaHelper, mediaTypeHelper, eventsService, treeService, $element, $timeout, $cookies, localStorageService, localizationService) { if (!$scope.model.title) { $scope.model.title = localizationService.localize("defaultdialogs_selectMedia"); @@ -96,7 +96,6 @@ angular.module("umbraco") }; $scope.gotoFolder = function(folder) { - if (!$scope.multiPicker) { deselectAllImages($scope.model.selectedImages); } @@ -108,7 +107,6 @@ angular.module("umbraco") if (folder.id > 0) { entityResource.getAncestors(folder.id, "media") .then(function(anc) { - // anc.splice(0,1); $scope.path = _.filter(anc, function(f) { return f.path.indexOf($scope.startNodeId) !== -1; @@ -123,12 +121,12 @@ angular.module("umbraco") $scope.path = []; } - getChildren(folder.id); $scope.currentFolder = folder; localStorageService.set("umbLastOpenedMediaNodeId", folder.id); + return getChildren(folder.id); }; - $scope.clickHandler = function (image, event, index) { + $scope.clickHandler = function(image, event, index) { if (image.isFolder) { if ($scope.disableFolderSelect) { $scope.gotoFolder(image); @@ -143,7 +141,7 @@ angular.module("umbraco") $scope.target = image; // handle both entity and full media object - if(image.image) { + if (image.image) { $scope.target.url = image.image; } else { $scope.target.url = mediaHelper.resolveFile(image); @@ -188,8 +186,12 @@ angular.module("umbraco") images.length = 0; } - $scope.onUploadComplete = function() { - $scope.gotoFolder($scope.currentFolder); + $scope.onUploadComplete = function(files) { + $scope.gotoFolder($scope.currentFolder).then(function() { + if (files.length === 1 && $scope.model.selectedImages.length === 0) { + selectImage($scope.images[$scope.images.length - 1]); + } + }); }; $scope.onFilesQueue = function() { @@ -203,8 +205,7 @@ angular.module("umbraco") if (nodePath.indexOf($scope.startNodeId.toString()) !== -1) { $scope.gotoFolder({ id: $scope.lastOpenedNode, name: "Media", icon: "icon-folder" }); return true; - } - else { + } else { $scope.gotoFolder({ id: $scope.startNodeId, name: "Media", icon: "icon-folder" }); return false; } @@ -219,26 +220,25 @@ angular.module("umbraco") if ($scope.lastOpenedNode && $scope.lastOpenedNode !== -1) { entityResource.getById($scope.lastOpenedNode, "media") .then(ensureWithinStartNode, gotoStartNode); - } - else { + } else { gotoStartNode(); } - } - else { + } else { //if a target is specified, go look it up - generally this target will just contain ids not the actual full //media object so we need to look it up var id = $scope.target.udi ? $scope.target.udi : $scope.target.id var altText = $scope.target.altText; mediaResource.getById(id) - .then(function (node) { - $scope.target = node; - if (ensureWithinStartNode(node)) { - selectImage(node); - $scope.target.url = mediaHelper.resolveFile(node); - $scope.target.altText = altText; - $scope.openDetailsDialog(); - } - }, gotoStartNode); + .then(function(node) { + $scope.target = node; + if (ensureWithinStartNode(node)) { + selectImage(node); + $scope.target.url = mediaHelper.resolveFile(node); + $scope.target.altText = altText; + $scope.openDetailsDialog(); + } + }, + gotoStartNode); } $scope.openDetailsDialog = function() { @@ -260,6 +260,24 @@ angular.module("umbraco") }; }; + var debounceSearchMedia = _.debounce(function() { + $scope.$apply(function() { + if ($scope.searchOptions.filter) { + searchMedia(); + } else { + // reset pagination + $scope.searchOptions = { + pageNumber: 1, + pageSize: 100, + totalItems: 0, + totalPages: 0, + filter: '' + }; + getChildren($scope.currentFolder.id); + } + }); + }, 500); + $scope.changeSearch = function() { $scope.loading = true; debounceSearchMedia(); @@ -271,50 +289,33 @@ angular.module("umbraco") searchMedia(); }; - var debounceSearchMedia = _.debounce(function () { - $scope.$apply(function () { - if ($scope.searchOptions.filter) { - searchMedia(); - } else { - // reset pagination - $scope.searchOptions = { - pageNumber: 1, - pageSize: 100, - totalItems: 0, - totalPages: 0, - filter: '' - }; - getChildren($scope.currentFolder.id); - } - }); - }, 500); - function searchMedia() { $scope.loading = true; entityResource.getPagedDescendants($scope.startNodeId, "Media", $scope.searchOptions) - .then(function (data) { + .then(function(data) { // update image data to work with image grid - angular.forEach(data.items, function(mediaItem){ - // set thumbnail and src - mediaItem.thumbnail = mediaHelper.resolveFileFromEntity(mediaItem, true); - mediaItem.image = mediaHelper.resolveFileFromEntity(mediaItem, false); - // set properties to match a media object - if (mediaItem.metaData && - mediaItem.metaData.umbracoWidth && - mediaItem.metaData.umbracoHeight) { - - mediaItem.properties = [ - { - alias: "umbracoWidth", - value: mediaItem.metaData.umbracoWidth.Value - }, - { - alias: "umbracoHeight", - value: mediaItem.metaData.umbracoHeight.Value - } - ]; - } - }); + angular.forEach(data.items, + function(mediaItem) { + // set thumbnail and src + mediaItem.thumbnail = mediaHelper.resolveFileFromEntity(mediaItem, true); + mediaItem.image = mediaHelper.resolveFileFromEntity(mediaItem, false); + // set properties to match a media object + if (mediaItem.metaData && + mediaItem.metaData.umbracoWidth && + mediaItem.metaData.umbracoHeight) { + + mediaItem.properties = [ + { + alias: "umbracoWidth", + value: mediaItem.metaData.umbracoWidth.Value + }, + { + alias: "umbracoHeight", + value: mediaItem.metaData.umbracoHeight.Value + } + ]; + } + }); // update images $scope.images = data.items ? data.items : []; // update pagination @@ -332,7 +333,7 @@ angular.module("umbraco") function getChildren(id) { $scope.loading = true; - mediaResource.getChildren(id) + return mediaResource.getChildren(id) .then(function(data) { $scope.searchOptions.filter = ""; $scope.images = data.items ? data.items : []; @@ -358,11 +359,10 @@ angular.module("umbraco") } } } - if (imageIsSelected) { folderImage.selected = true; } } } - }); + }); \ No newline at end of file