gets content picker ignore start nodes working, fixes descriptions
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
//used for the media picker dialog
|
||||
angular.module("umbraco")
|
||||
.controller("Umbraco.Editors.MediaPickerController",
|
||||
function($scope, mediaResource, entityResource, userService, mediaHelper, mediaTypeHelper, eventsService, treeService, localStorageService, localizationService, editorService) {
|
||||
function ($scope, mediaResource, entityResource, userService, mediaHelper, mediaTypeHelper, eventsService, treeService, localStorageService, localizationService, editorService) {
|
||||
|
||||
if (!$scope.model.title) {
|
||||
localizationService.localizeMany(["defaultdialogs_selectMedia", "general_includeFromsubFolders"])
|
||||
@@ -47,7 +47,7 @@ angular.module("umbraco")
|
||||
|
||||
$scope.acceptedMediatypes = [];
|
||||
mediaTypeHelper.getAllowedImagetypes($scope.startNodeId)
|
||||
.then(function(types) {
|
||||
.then(function (types) {
|
||||
$scope.acceptedMediatypes = types;
|
||||
});
|
||||
|
||||
@@ -96,7 +96,7 @@ angular.module("umbraco")
|
||||
//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;
|
||||
entityResource.getById(id, "Media")
|
||||
entityResource.getById(id, "Media")
|
||||
.then(function (node) {
|
||||
$scope.target = node;
|
||||
if (ensureWithinStartNode(node)) {
|
||||
@@ -106,28 +106,28 @@ angular.module("umbraco")
|
||||
$scope.openDetailsDialog();
|
||||
}
|
||||
},
|
||||
gotoStartNode);
|
||||
gotoStartNode);
|
||||
}
|
||||
}
|
||||
|
||||
$scope.upload = function(v) {
|
||||
$scope.upload = function (v) {
|
||||
angular.element(".umb-file-dropzone .file-select").trigger("click");
|
||||
};
|
||||
|
||||
$scope.dragLeave = function(el, event) {
|
||||
$scope.dragLeave = function (el, event) {
|
||||
$scope.activeDrag = false;
|
||||
};
|
||||
|
||||
$scope.dragEnter = function(el, event) {
|
||||
$scope.dragEnter = function (el, event) {
|
||||
$scope.activeDrag = true;
|
||||
};
|
||||
|
||||
$scope.submitFolder = function() {
|
||||
$scope.submitFolder = function () {
|
||||
if ($scope.model.newFolderName) {
|
||||
$scope.model.creatingFolder = true;
|
||||
mediaResource
|
||||
.addFolder($scope.model.newFolderName, $scope.currentFolder.id)
|
||||
.then(function(data) {
|
||||
.then(function (data) {
|
||||
//we've added a new folder so lets clear the tree cache for that specific item
|
||||
treeService.clearCache({
|
||||
cacheKey: "__media", //this is the main media tree cache key
|
||||
@@ -143,14 +143,14 @@ angular.module("umbraco")
|
||||
}
|
||||
};
|
||||
|
||||
$scope.enterSubmitFolder = function(event) {
|
||||
$scope.enterSubmitFolder = function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
$scope.submitFolder();
|
||||
event.stopPropagation();
|
||||
}
|
||||
};
|
||||
|
||||
$scope.gotoFolder = function(folder) {
|
||||
$scope.gotoFolder = function (folder) {
|
||||
if (!$scope.multiPicker) {
|
||||
deselectAllImages($scope.model.selection);
|
||||
}
|
||||
@@ -161,15 +161,15 @@ angular.module("umbraco")
|
||||
|
||||
if (folder.id > 0) {
|
||||
entityResource.getAncestors(folder.id, "media", { dataTypeId: $scope.model.dataTypeId })
|
||||
.then(function(anc) {
|
||||
.then(function (anc) {
|
||||
$scope.path = _.filter(anc,
|
||||
function(f) {
|
||||
function (f) {
|
||||
return f.path.indexOf($scope.startNodeId) !== -1;
|
||||
});
|
||||
});
|
||||
|
||||
mediaTypeHelper.getAllowedImagetypes(folder.id)
|
||||
.then(function(types) {
|
||||
.then(function (types) {
|
||||
$scope.acceptedMediatypes = types;
|
||||
});
|
||||
} else {
|
||||
@@ -183,7 +183,7 @@ angular.module("umbraco")
|
||||
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);
|
||||
@@ -211,7 +211,7 @@ angular.module("umbraco")
|
||||
}
|
||||
};
|
||||
|
||||
$scope.clickItemName = function(item) {
|
||||
$scope.clickItemName = function (item) {
|
||||
if (item.isFolder) {
|
||||
$scope.gotoFolder(item);
|
||||
}
|
||||
@@ -243,8 +243,8 @@ angular.module("umbraco")
|
||||
images.length = 0;
|
||||
}
|
||||
|
||||
$scope.onUploadComplete = function(files) {
|
||||
$scope.gotoFolder($scope.currentFolder).then(function() {
|
||||
$scope.onUploadComplete = function (files) {
|
||||
$scope.gotoFolder($scope.currentFolder).then(function () {
|
||||
if (files.length === 1 && $scope.model.selection.length === 0) {
|
||||
var image = $scope.images[$scope.images.length - 1];
|
||||
$scope.target = image;
|
||||
@@ -254,7 +254,7 @@ angular.module("umbraco")
|
||||
});
|
||||
};
|
||||
|
||||
$scope.onFilesQueue = function() {
|
||||
$scope.onFilesQueue = function () {
|
||||
$scope.activeDrag = false;
|
||||
};
|
||||
|
||||
@@ -287,12 +287,12 @@ angular.module("umbraco")
|
||||
$scope.gotoFolder({ id: $scope.startNodeId, name: "Media", icon: "icon-folder" });
|
||||
}
|
||||
|
||||
$scope.openDetailsDialog = function() {
|
||||
$scope.openDetailsDialog = function () {
|
||||
|
||||
$scope.mediaPickerDetailsOverlay = {};
|
||||
$scope.mediaPickerDetailsOverlay.show = true;
|
||||
|
||||
$scope.mediaPickerDetailsOverlay.submit = function(model) {
|
||||
$scope.mediaPickerDetailsOverlay.submit = function (model) {
|
||||
$scope.model.selection.push($scope.target);
|
||||
$scope.model.submit($scope.model);
|
||||
|
||||
@@ -300,42 +300,42 @@ angular.module("umbraco")
|
||||
$scope.mediaPickerDetailsOverlay = null;
|
||||
};
|
||||
|
||||
$scope.mediaPickerDetailsOverlay.close = function(oldModel) {
|
||||
$scope.mediaPickerDetailsOverlay.close = function (oldModel) {
|
||||
$scope.mediaPickerDetailsOverlay.show = false;
|
||||
$scope.mediaPickerDetailsOverlay = null;
|
||||
};
|
||||
};
|
||||
|
||||
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: '',
|
||||
dataTypeId: $scope.model.dataTypeId
|
||||
};
|
||||
getChildren($scope.currentFolder.id);
|
||||
}
|
||||
});
|
||||
}, 500);
|
||||
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: '',
|
||||
dataTypeId: $scope.model.dataTypeId
|
||||
};
|
||||
getChildren($scope.currentFolder.id);
|
||||
}
|
||||
});
|
||||
}, 500);
|
||||
|
||||
$scope.changeSearch = function() {
|
||||
$scope.changeSearch = function () {
|
||||
$scope.loading = true;
|
||||
debounceSearchMedia();
|
||||
};
|
||||
|
||||
$scope.toggle = function() {
|
||||
$scope.toggle = function () {
|
||||
// Make sure to activate the changeSearch function everytime the toggle is clicked
|
||||
$scope.changeSearch();
|
||||
}
|
||||
|
||||
$scope.changePagination = function(pageNumber) {
|
||||
$scope.changePagination = function (pageNumber) {
|
||||
$scope.loading = true;
|
||||
$scope.searchOptions.pageNumber = pageNumber;
|
||||
searchMedia();
|
||||
@@ -344,9 +344,9 @@ angular.module("umbraco")
|
||||
function searchMedia() {
|
||||
$scope.loading = true;
|
||||
entityResource.getPagedDescendants($scope.currentFolder.id, "Media", $scope.searchOptions)
|
||||
.then(function(data) {
|
||||
.then(function (data) {
|
||||
// update image data to work with image grid
|
||||
angular.forEach(data.items, function(mediaItem) {
|
||||
angular.forEach(data.items, function (mediaItem) {
|
||||
setMediaMetaData(mediaItem);
|
||||
});
|
||||
// update images
|
||||
@@ -389,10 +389,9 @@ angular.module("umbraco")
|
||||
function getChildren(id) {
|
||||
$scope.loading = true;
|
||||
return entityResource.getChildren(id, "Media", $scope.searchOptions)
|
||||
.then(function(data) {
|
||||
|
||||
for (i=0;i<data.length;i++){
|
||||
if(data[i].metaData.MediaPath !== null){
|
||||
.then(function (data) {
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i].metaData.MediaPath !== null) {
|
||||
data[i].thumbnail = mediaHelper.resolveFileFromEntity(data[i], true);
|
||||
data[i].image = mediaHelper.resolveFileFromEntity(data[i], false);
|
||||
}
|
||||
@@ -428,15 +427,15 @@ angular.module("umbraco")
|
||||
}
|
||||
}
|
||||
|
||||
$scope.editMediaItem = function(item) {
|
||||
$scope.editMediaItem = function (item) {
|
||||
var mediaEditor = {
|
||||
id: item.id,
|
||||
submit: function(model) {
|
||||
submit: function (model) {
|
||||
editorService.close()
|
||||
// update the media picker item in the picker so it matched the saved media item
|
||||
// the media picker is using media entities so we get the
|
||||
// entity so we easily can format it for use in the media grid
|
||||
if(model && model.mediaNode) {
|
||||
if (model && model.mediaNode) {
|
||||
entityResource.getById(model.mediaNode.id, "media")
|
||||
.then(function (mediaEntity) {
|
||||
angular.extend(item, mediaEntity);
|
||||
@@ -445,7 +444,7 @@ angular.module("umbraco")
|
||||
});
|
||||
}
|
||||
},
|
||||
close: function(model) {
|
||||
close: function (model) {
|
||||
setUpdatedMediaNodes(item);
|
||||
editorService.close();
|
||||
}
|
||||
@@ -455,19 +454,19 @@ angular.module("umbraco")
|
||||
|
||||
function setUpdatedMediaNodes(item) {
|
||||
// add udi to list of updated media items so we easily can update them in other editors
|
||||
if($scope.model.updatedMediaNodes.indexOf(item.udi) === -1) {
|
||||
if ($scope.model.updatedMediaNodes.indexOf(item.udi) === -1) {
|
||||
$scope.model.updatedMediaNodes.push(item.udi);
|
||||
}
|
||||
}
|
||||
|
||||
$scope.submit = function() {
|
||||
if($scope.model.submit) {
|
||||
$scope.submit = function () {
|
||||
if ($scope.model.submit) {
|
||||
$scope.model.submit($scope.model);
|
||||
}
|
||||
};
|
||||
|
||||
$scope.close = function() {
|
||||
if($scope.model.close) {
|
||||
$scope.close = function () {
|
||||
if ($scope.model.close) {
|
||||
$scope.model.close($scope.model);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -28,10 +28,12 @@ angular.module("umbraco").controller("Umbraco.Editors.TreePickerController",
|
||||
vm.treeAlias = $scope.model.treeAlias;
|
||||
vm.multiPicker = $scope.model.multiPicker;
|
||||
vm.hideHeader = (typeof $scope.model.hideHeader) === "boolean" ? $scope.model.hideHeader : true;
|
||||
vm.dataTypeId = $scope.model.dataTypeId;
|
||||
vm.searchInfo = {
|
||||
searchFromId: $scope.model.startNodeId,
|
||||
searchFromName: null,
|
||||
showSearch: false,
|
||||
dataTypeId: vm.dataTypeId,
|
||||
results: [],
|
||||
selectedSearchResults: []
|
||||
}
|
||||
@@ -190,6 +192,10 @@ angular.module("umbraco").controller("Umbraco.Editors.TreePickerController",
|
||||
if (vm.selectedLanguage && vm.selectedLanguage.id) {
|
||||
queryParams["culture"] = vm.selectedLanguage.culture;
|
||||
}
|
||||
if (vm.dataTypeId) {
|
||||
queryParams["dataTypeId"] = vm.dataTypeId;
|
||||
}
|
||||
|
||||
var queryString = $.param(queryParams); //create the query string from the params object
|
||||
|
||||
if (!queryString) {
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
search-from-id="{{vm.searchInfo.searchFromId}}"
|
||||
search-from-name="{{vm.searchInfo.searchFromName}}"
|
||||
show-search="{{vm.searchInfo.showSearch}}"
|
||||
datatype-id="{{searchInfo.dataTypeId}}"
|
||||
section="{{vm.section}}">
|
||||
</umb-tree-search-box>
|
||||
</div>
|
||||
|
||||
@@ -133,7 +133,7 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
multiPicker: $scope.model.config.multiPicker,
|
||||
entityType: entityType,
|
||||
filterCssClass: "not-allowed not-published",
|
||||
startNodeId: null,
|
||||
startNodeId: null,
|
||||
currentNode: editorState ? editorState.current : null,
|
||||
callback: function (data) {
|
||||
if (angular.isArray(data)) {
|
||||
@@ -155,6 +155,8 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
// pre-value config on to the dialog options
|
||||
angular.extend(dialogOptions, $scope.model.config);
|
||||
|
||||
dialogOptions.dataTypeId = $scope.model.dataTypeId;
|
||||
|
||||
// if we can't pick more than one item, explicitly disable multiPicker in the dialog options
|
||||
if ($scope.model.config.maxNumber && parseInt($scope.model.config.maxNumber) === 1) {
|
||||
dialogOptions.multiPicker = false;
|
||||
@@ -211,7 +213,6 @@ function contentPickerController($scope, entityResource, editorState, iconHelper
|
||||
//dialog
|
||||
$scope.openCurrentPicker = function () {
|
||||
$scope.currentPicker = dialogOptions;
|
||||
$scope.contentPickerOverlay.dataTypeId = $scope.model.dataTypeId;
|
||||
|
||||
$scope.currentPicker.submit = function (model) {
|
||||
if (angular.isArray(model.selection)) {
|
||||
|
||||
Reference in New Issue
Block a user