Skip to content

Commit e207185

Browse files
Merge branch '7.1.0' of https://github.com/umbraco/Umbraco-CMS into 7.1.0
2 parents 5efc45a + 426b02b commit e207185

File tree

9 files changed

+74
-58
lines changed

9 files changed

+74
-58
lines changed

src/Umbraco.Web.UI.Client/src/common/directives/html/umbphotofolder.directive.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ angular.module("umbraco.directives.html")
2424

2525
scope.clickHandler = scope.$eval(element.attr('on-click'));
2626

27-
//todo: this doesn't do anything
28-
var imagesOnly = element.attr('imagesOnly');
29-
27+
28+
var imagesOnly = element.attr('images-only') === "true";
3029
var margin = element.attr('border') ? parseInt(element.attr('border'), 10) : 5;
3130
var startingIndex = element.attr('baseline') ? parseInt(element.attr('baseline'), 10) : 0;
3231
var minWidth = element.attr('min-width') ? parseInt(element.attr('min-width'), 10) : 420;
@@ -36,7 +35,7 @@ angular.module("umbraco.directives.html")
3635
var fixedRowWidth = Math.max(element.width(), minWidth);
3736

3837
scope.containerStyle = { width: fixedRowWidth + "px" };
39-
scope.rows = umbPhotoFolderHelper.buildGrid(photos, fixedRowWidth, maxHeight, startingIndex, minHeight, idealImgPerRow, margin);
38+
scope.rows = umbPhotoFolderHelper.buildGrid(photos, fixedRowWidth, maxHeight, startingIndex, minHeight, idealImgPerRow, margin, imagesOnly);
4039

4140
if (attrs.filterBy) {
4241

@@ -51,7 +50,7 @@ angular.module("umbraco.directives.html")
5150
if (newVal && newVal !== oldVal) {
5251
var p = $filter('filter')(photos, newVal, false);
5352
scope.baseline = 0;
54-
var m = umbPhotoFolderHelper.buildGrid(p, fixedRowWidth, maxHeight, startingIndex, minHeight, idealImgPerRow, margin);
53+
var m = umbPhotoFolderHelper.buildGrid(p, fixedRowWidth, maxHeight, startingIndex, minHeight, idealImgPerRow, margin, imagesOnly);
5554
scope.rows = m;
5655
}
5756
});

src/Umbraco.Web.UI.Client/src/common/directives/imaging/umbimagecrop.directive.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ angular.module("umbraco.directives")
106106

107107
//when loading an image without any crop info, we center and fit it
108108
var resizeImageToEditor = function(){
109-
110109
//returns size fitting the cropper
111110
var size = cropperHelper.calculateAspectRatioFit(
112111
scope.dimensions.image.width,
@@ -254,7 +253,7 @@ angular.module("umbraco.directives")
254253
var throttledResizing = _.throttle(function(){
255254
resizeImageToScale(scope.dimensions.scale.current);
256255
calculateCropBox();
257-
}, 300);
256+
}, 100);
258257

259258

260259
//happens when we change the scale

src/Umbraco.Web.UI.Client/src/common/services/mediahelper.service.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,36 @@ function mediaHelper(umbRequestHelper) {
162162
return result;
163163
},
164164

165+
/*jshint loopfunc: true */
166+
hasFilePropertyType : function(mediaItem){
167+
function _iterateProps(props){
168+
var result = false;
169+
for(var resolver in _mediaFileResolvers) {
170+
var property = _.find(props, function(property){ return property.editor === resolver; });
171+
if(property){
172+
result = true;
173+
break;
174+
}
175+
}
176+
return result;
177+
}
178+
179+
//we either have properties raw on the object, or spread out on tabs
180+
var result = false;
181+
if(mediaItem.properties){
182+
result = _iterateProps(mediaItem.properties);
183+
}else if(mediaItem.tabs){
184+
for(var tab in mediaItem.tabs) {
185+
if(mediaItem.tabs[tab].properties){
186+
result = _iterateProps(mediaItem.tabs[tab].properties);
187+
if(result){
188+
break;
189+
}
190+
}
191+
}
192+
}
193+
return result;
194+
},
165195

166196
/**
167197
* @ngdoc function

src/Umbraco.Web.UI.Client/src/common/services/util.service.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ angular.module('umbraco.services').factory('packageHelper', packageHelper);
2323

2424
function umbPhotoFolderHelper($compile, $log, $timeout, $filter, imageHelper, mediaHelper, umbRequestHelper) {
2525
return {
26-
/** sets the image's url - will check if it is a folder or a real image */
27-
setImageUrl: function(img) {
28-
//get the image property (if one exists)
29-
img.thumbnail = mediaHelper.resolveFile(img, true);
30-
img.image = mediaHelper.resolveFile(img, false);
31-
32-
// if (!img.thumbnail){
33-
// img.thumbnail = "none";
34-
// }
26+
/** sets the image's url, thumbnail and if its a folder */
27+
setImageData: function(img) {
28+
29+
img.isFolder = !mediaHelper.hasFilePropertyType(img);
30+
31+
if(!img.isFolder){
32+
img.thumbnail = mediaHelper.resolveFile(img, true);
33+
img.image = mediaHelper.resolveFile(img, false);
34+
}
3535
},
3636

3737
/** 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
252252
},
253253

254254
/** Creates the image grid with calculated widths/heights for images to fill the grid nicely */
255-
buildGrid: function(images, maxRowWidth, maxRowHeight, startingIndex, minDisplayHeight, idealImgPerRow, margin) {
255+
buildGrid: function(images, maxRowWidth, maxRowHeight, startingIndex, minDisplayHeight, idealImgPerRow, margin,imagesOnly) {
256256

257257
var rows = [];
258258
var imagesProcessed = 0;
259259

260260
//first fill in all of the original image sizes and URLs
261261
for (var i = startingIndex; i < images.length; i++) {
262-
this.setImageUrl(images[i]);
262+
var item = images[0];
263+
264+
this.setImageData(images[i]);
263265
this.setOriginalSize(images[i], maxRowHeight);
266+
267+
if(imagesOnly && !item.isFolder && !item.thumbnail){
268+
images.splice(i, 1);
269+
i--;
270+
}
264271
}
265272

266273
while ((imagesProcessed + startingIndex) < images.length) {

src/Umbraco.Web.UI.Client/src/less/property-editors.less

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,10 @@ ul.color-picker li a {
304304
line-height: 120px
305305
}
306306

307+
.umb-folderbrowser .selector-overlay{
308+
display: none !important;
309+
}
310+
307311
.umb-upload-drop-zone .info, .umb-upload-button-big{
308312
display: block;
309313
padding: 20px;
@@ -343,6 +347,8 @@ ul.color-picker li a {
343347
position: relative;
344348
}
345349

350+
351+
346352
.umb-photo-folder .picrow div, .umb-photo-preview{
347353
margin: 0px;
348354
padding: 0px;
@@ -396,7 +402,7 @@ ul.color-picker li a {
396402
line-height: 80px;
397403
display: block;
398404
margin: auto;
399-
padding-top: 25%;
405+
padding-top: 20px;
400406
}
401407

402408
.umb-photo-folder .selected{

src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.controller.js

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,8 @@ angular.module("umbraco")
6767
//mediaResource.rootMedia()
6868
mediaResource.getChildren(folder.id)
6969
.then(function(data) {
70-
71-
$scope.images = [];
72-
7370
$scope.searchTerm = "";
74-
if(data.items){
75-
$scope.images = data.items;
76-
}
77-
78-
if($scope.onlyImages){
79-
$scope.images = _.reject($scope.images, function(item) {
80-
return item.contentTypeAlias.toLowerCase() !== "folder" && item.thumbnail === "";
81-
});
82-
}
71+
$scope.images = data.items ? data.items : [];
8372
});
8473

8574
$scope.options.formData.currentFolder = folder.id;
@@ -93,7 +82,7 @@ angular.module("umbraco")
9382
$scope.clickHandler = function(image, ev, select) {
9483
ev.preventDefault();
9584

96-
if (image.contentTypeAlias.toLowerCase() == 'folder' && !select) {
85+
if (image.isFolder && !select) {
9786
$scope.gotoFolder(image);
9887
}else{
9988
eventsService.emit("dialogs.mediaPicker.select", image);
@@ -119,30 +108,7 @@ angular.module("umbraco")
119108
$scope.target = undefined;
120109
};
121110

122-
/*
123-
$scope.selectFolder= function(folder) {
124-
if ($scope.multiPicker) {
125-
$scope.select(folder);
126-
}
127-
else {
128-
$scope.submit(folder);
129-
}
130-
};
131-
132-
$scope.selectMediaItem = function(image) {
133-
if (image.contentTypeAlias.toLowerCase() == 'folder') {
134-
$scope.gotoFolder(image);
135-
}else{
136-
eventsService.emit("dialogs.mediaPicker.select", image);
137-
138-
if ($scope.multiPicker) {
139-
$scope.select(image);
140-
}
141-
else {
142-
$scope.submit(image);
143-
}
144-
}
145-
};*/
111+
146112

147113
//default root item
148114
if(!$scope.target){

src/Umbraco.Web.UI.Client/src/views/common/dialogs/mediapicker.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
ideal-items-per-row="3"
109109
on-click="clickHandler"
110110
ng-model="images"
111+
images-only="true"
111112
filter-by="searchTerm"/>
112113
</div>
113114

src/Umbraco.Web.UI.Client/src/views/directives/html/umb-photo-folder.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
<div ng-if="img.thumbnail" class="umb-photo" ng-style="img.thumbStyle" alt="{{img.name}}"></div>
1818
</a>
1919

20-
<a href ng-click="clickHandler(img, $event, true)" ng-show="img.contentTypeAlias === 'Folder'" class="selector-overlay">
20+
<a href ng-click="clickHandler(img, $event, true)"
21+
ng-if="img.isFolder" class="selector-overlay">
2122
<localize key="buttons_select">Select</localize>
2223
</a>
23-
2424
</div>
2525
</div>
2626
</div>

src/Umbraco.Web.UI.Client/src/views/propertyeditors/imagecropper/imagecropper.controller.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ angular.module('umbraco')
8787
reader.readAsDataURL(args.files[0]);
8888
}
8989
});
90+
91+
var unsubscribe = $scope.$on("formSubmitting", function () {
92+
$scope.done();
93+
});
94+
95+
$scope.$on('$destroy', function () {
96+
unsubscribe();
97+
});
9098
})
9199
.run(function (mediaHelper, umbRequestHelper) {
92100
if (mediaHelper && mediaHelper.registerFileResolver) {

0 commit comments

Comments
 (0)