diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/html/umbphotofolder.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbphotofolder.directive.js index 83d30e7c3c..9422bba925 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/html/umbphotofolder.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbphotofolder.directive.js @@ -139,6 +139,7 @@ angular.module("umbraco.directives.html") $timeout(function () { var photos = ngModel.$modelValue; + scope.imagesOnly = element.attr('imagesOnly'); scope.baseline = element.attr('baseline') ? parseInt(element.attr('baseline'), 10) : 0; scope.minWidth = element.attr('min-width') ? parseInt(element.attr('min-width'), 10) : 420; scope.minHeight = element.attr('min-height') ? parseInt(element.attr('min-height'), 10) : 200; diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/util.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/util.directive.js index 572f22e297..1005ecd903 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/util.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/util.directive.js @@ -36,17 +36,21 @@ angular.module('umbraco.directives') }) .directive('onRightClick',function(){ + document.oncontextmenu = function (e) { if(e.target.hasAttribute('on-right-click')) { + e.preventDefault(); + e.stopPropagation(); return false; } }; + return function(scope,el,attrs){ el.bind('contextmenu',function(e){ e.preventDefault(); e.stopPropagation(); - scope.$apply(attrs.onRightClick); - }) ; + return false; + }); }; }); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js b/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js index c41bd45f14..af3f9e9dfd 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js @@ -86,6 +86,7 @@ function tinyMceService(dialogService, $log, imageHelper, $http, $timeout, macro tooltip: 'Media Picker', onclick: function () { dialogService.mediaPicker({ + onlyImages: true, scope: $scope, callback: function (img) { if (img) { 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 4a732cfee9..e32f881628 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 @@ -177,8 +177,20 @@ function imageHelper() { }); } + var mediaRoot = Umbraco.Sys.ServerVariables.umbracoSettings.mediaPath; var imageProp = _.find(props, function (item) { - return item.alias === 'umbracoFile'; + if(item.alias === "umbracoFile") + { + return true; + } + + //this performs a simple check to see if we have a media file as value + //it doesnt catch everything, but better then nothing + if(item.value.indexOf(mediaRoot) === 0){ + return true; + } + + return false; }); if (!imageProp) { 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 de019d3f79..02622baefd 100644 --- a/src/Umbraco.Web.UI.Client/src/less/property-editors.less +++ b/src/Umbraco.Web.UI.Client/src/less/property-editors.less @@ -148,7 +148,6 @@ ul.color-picker li a { margin: 0; padding: 0; display: block; - width: 520px; } @@ -159,6 +158,7 @@ ul.color-picker li a { background: white; margin: 5px; position: relative; + text-align: center } .umb-sortable-thumbnails li:hover a{ @@ -167,10 +167,20 @@ ul.color-picker li a { .umb-sortable-thumbnails li img { -max-width:100%; -max-height:100%; -margin:auto; -display:block; + max-width:100%; + max-height:100%; + margin:auto; + display:block; +} + +.umb-sortable-thumbnails .icon-holder .icon{ + font-size: 60px; + line-height: 70px; +} +.umb-sortable-thumbnails .icon-holder * +{ + color: @grayLight; + display: block } 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 6b3acfce69..486da8deca 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 @@ -4,6 +4,8 @@ angular.module("umbraco") function($scope, mediaResource, umbRequestHelper, entityResource, $log, imageHelper, eventsService, treeService) { var dialogOptions = $scope.$parent.dialogOptions; + $scope.onlyImages = dialogOptions.onlyImages; + $scope.options = { url: umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostAddFile"), autoUpload: true, @@ -27,15 +29,15 @@ angular.module("umbraco") childrenOf: data.parentId //clear the children of the parent }); - $scope.gotoFolder(data.id); + $scope.gotoFolder(data); }); } }; - $scope.gotoFolder = function(folderId) { + $scope.gotoFolder = function(folder) { - if (folderId > 0) { - entityResource.getAncestors(folderId, "media") + if (folder.id > 0) { + entityResource.getAncestors(folder.id, "media") .then(function(anc) { // anc.splice(0,1); $scope.path = anc; @@ -44,26 +46,33 @@ angular.module("umbraco") else { $scope.path = []; } + //mediaResource.rootMedia() - mediaResource.getChildren(folderId) + mediaResource.getChildren(folder.id) .then(function(data) { $scope.images = []; $scope.searchTerm = ""; $scope.images = data.items; + //update the thumbnail property _.each($scope.images, function(img) { img.thumbnail = imageHelper.getThumbnail({ imageModel: img, scope: $scope }); }); - + //reject all images that have an empty thumbnail - this can occur if there's an image item // that doesn't have an uploaded image. - $scope.images = _.reject($scope.images, function(item) { - return item.contentTypeAlias.toLowerCase() !== "folder" && item.thumbnail === ""; - }); + + if($scope.onlyImages){ + $scope.images = _.reject($scope.images, function(item) { + return item.contentTypeAlias.toLowerCase() !== "folder" && item.thumbnail === ""; + }); + } }); - $scope.options.formData.currentFolder = folderId; + $scope.options.formData.currentFolder = folder.id; + $scope.currentFolder = folder; + }; @@ -74,8 +83,7 @@ angular.module("umbraco") $scope.clickHandler = function(image, ev) { if (image.contentTypeAlias.toLowerCase() == 'folder') { - $scope.options.formData.currentFolder = image.id; - $scope.gotoFolder(image.id); + $scope.gotoFolder(image); }else{ eventsService.publish("Umbraco.Dialogs.MediaPickerController.Select", image); @@ -91,13 +99,21 @@ angular.module("umbraco") ev.preventDefault(); }; + $scope.selectFolder= function(folder) { + if (dialogOptions && dialogOptions.multiPicker) { + $scope.select(folder); + } + else { + $scope.submit(folder); + } + }; + $scope.selectMediaItem = function(image) { if (image.contentTypeAlias.toLowerCase() == 'folder') { - $scope.options.formData.currentFolder = image.id; - $scope.gotoFolder(image.id); + $scope.gotoFolder(image); }else{ - eventsService.publish("Umbraco.Dialogs.MediaPickerController.Select", image); + if (dialogOptions && dialogOptions.multiPicker) { $scope.select(image); } @@ -107,5 +123,6 @@ angular.module("umbraco") } }; - $scope.gotoFolder(-1); + //default root item + $scope.gotoFolder({id: -1, name: "Media", icon: "icon-folder"}); }); \ No newline at end of file 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 49dd40d820..6d28bd4ac4 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 @@ -10,7 +10,7 @@ title="{{img.name}}">