From d0c6c4aafa8f01db066a9b2520e95eb4bcc2808a Mon Sep 17 00:00:00 2001 From: perploug Date: Thu, 3 Apr 2014 00:37:59 +0200 Subject: [PATCH] Fixes: U4-4332 MediaPicker - Typealias is hardcode several places --- .../common/services/mediahelper.service.js | 30 ++++++++++++++ .../src/common/services/util.service.js | 27 ++++++++----- .../src/less/property-editors.less | 8 +++- .../common/dialogs/mediapicker.controller.js | 40 ++----------------- .../directives/html/umb-photo-folder.html | 4 +- 5 files changed, 59 insertions(+), 50 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js index cd07a7c7cf..2e06bc1656 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js @@ -162,6 +162,36 @@ function mediaHelper(umbRequestHelper) { return result; }, + /*jshint loopfunc: true */ + hasFilePropertyType : function(mediaItem){ + function _iterateProps(props){ + var result = false; + for(var resolver in _mediaFileResolvers) { + var property = _.find(props, function(property){ return property.editor === resolver; }); + if(property){ + result = true; + break; + } + } + return result; + } + + //we either have properties raw on the object, or spread out on tabs + var result = false; + if(mediaItem.properties){ + result = _iterateProps(mediaItem.properties); + }else if(mediaItem.tabs){ + for(var tab in mediaItem.tabs) { + if(mediaItem.tabs[tab].properties){ + result = _iterateProps(mediaItem.tabs[tab].properties); + if(result){ + break; + } + } + } + } + return result; + }, /** * @ngdoc function diff --git a/src/Umbraco.Web.UI.Client/src/common/services/util.service.js b/src/Umbraco.Web.UI.Client/src/common/services/util.service.js index de56dc7c77..5f37cbe73d 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/util.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/util.service.js @@ -23,15 +23,15 @@ angular.module('umbraco.services').factory('packageHelper', packageHelper); function umbPhotoFolderHelper($compile, $log, $timeout, $filter, imageHelper, mediaHelper, umbRequestHelper) { return { - /** sets the image's url - will check if it is a folder or a real image */ - setImageUrl: function(img) { - //get the image property (if one exists) - img.thumbnail = mediaHelper.resolveFile(img, true); - img.image = mediaHelper.resolveFile(img, false); + /** sets the image's url, thumbnail and if its a folder */ + setImageData: function(img) { + + img.isFolder = !mediaHelper.hasFilePropertyType(img); - // if (!img.thumbnail){ - // img.thumbnail = "none"; - // } + if(!img.isFolder){ + img.thumbnail = mediaHelper.resolveFile(img, true); + img.image = mediaHelper.resolveFile(img, false); + } }, /** sets the images original size properties - will check if it is a folder and if so will just make it square */ @@ -252,15 +252,22 @@ function umbPhotoFolderHelper($compile, $log, $timeout, $filter, imageHelper, me }, /** Creates the image grid with calculated widths/heights for images to fill the grid nicely */ - buildGrid: function(images, maxRowWidth, maxRowHeight, startingIndex, minDisplayHeight, idealImgPerRow, margin) { + buildGrid: function(images, maxRowWidth, maxRowHeight, startingIndex, minDisplayHeight, idealImgPerRow, margin,imagesOnly) { var rows = []; var imagesProcessed = 0; //first fill in all of the original image sizes and URLs for (var i = startingIndex; i < images.length; i++) { - this.setImageUrl(images[i]); + var item = images[0]; + + this.setImageData(images[i]); this.setOriginalSize(images[i], maxRowHeight); + + if(imagesOnly && !item.isFolder && !item.thumbnail){ + images.splice(i, 1); + i--; + } } while ((imagesProcessed + startingIndex) < images.length) { diff --git a/src/Umbraco.Web.UI.Client/src/less/property-editors.less b/src/Umbraco.Web.UI.Client/src/less/property-editors.less index d5dcca7ed5..a9a2b783fe 100644 --- a/src/Umbraco.Web.UI.Client/src/less/property-editors.less +++ b/src/Umbraco.Web.UI.Client/src/less/property-editors.less @@ -304,6 +304,10 @@ ul.color-picker li a { line-height: 120px } +.umb-folderbrowser .selector-overlay{ + display: none !important; +} + .umb-upload-drop-zone .info, .umb-upload-button-big{ display: block; padding: 20px; @@ -343,6 +347,8 @@ ul.color-picker li a { position: relative; } + + .umb-photo-folder .picrow div, .umb-photo-preview{ margin: 0px; padding: 0px; @@ -396,7 +402,7 @@ ul.color-picker li a { line-height: 80px; display: block; margin: auto; - padding-top: 25%; + padding-top: 20px; } .umb-photo-folder .selected{ diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js index 0a438d80af..1d5a508e0b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js @@ -67,19 +67,8 @@ angular.module("umbraco") //mediaResource.rootMedia() mediaResource.getChildren(folder.id) .then(function(data) { - - $scope.images = []; - $scope.searchTerm = ""; - if(data.items){ - $scope.images = data.items; - } - - if($scope.onlyImages){ - $scope.images = _.reject($scope.images, function(item) { - return item.contentTypeAlias.toLowerCase() !== "folder" && item.thumbnail === ""; - }); - } + $scope.images = data.items ? data.items : []; }); $scope.options.formData.currentFolder = folder.id; @@ -93,7 +82,7 @@ angular.module("umbraco") $scope.clickHandler = function(image, ev, select) { ev.preventDefault(); - if (image.contentTypeAlias.toLowerCase() == 'folder' && !select) { + if (image.isFolder && !select) { $scope.gotoFolder(image); }else{ eventsService.emit("dialogs.mediaPicker.select", image); @@ -119,30 +108,7 @@ angular.module("umbraco") $scope.target = undefined; }; - /* - $scope.selectFolder= function(folder) { - if ($scope.multiPicker) { - $scope.select(folder); - } - else { - $scope.submit(folder); - } - }; - - $scope.selectMediaItem = function(image) { - if (image.contentTypeAlias.toLowerCase() == 'folder') { - $scope.gotoFolder(image); - }else{ - eventsService.emit("dialogs.mediaPicker.select", image); - - if ($scope.multiPicker) { - $scope.select(image); - } - else { - $scope.submit(image); - } - } - };*/ + //default root item if(!$scope.target){ diff --git a/src/Umbraco.Web.UI.Client/src/views/directives/html/umb-photo-folder.html b/src/Umbraco.Web.UI.Client/src/views/directives/html/umb-photo-folder.html index 1fe2923f25..8b0ced6ebe 100644 --- a/src/Umbraco.Web.UI.Client/src/views/directives/html/umb-photo-folder.html +++ b/src/Umbraco.Web.UI.Client/src/views/directives/html/umb-photo-folder.html @@ -17,10 +17,10 @@
- + Select -