diff --git a/src/Umbraco.Web.UI.Client/src/common/services/dialog.service.js b/src/Umbraco.Web.UI.Client/src/common/services/dialog.service.js index 0bd27ec0b0..21dea1da17 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/dialog.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/dialog.service.js @@ -356,6 +356,26 @@ angular.module('umbraco.services') return openDialog(options); }, + /** + * @ngdoc method + * @name umbraco.services.dialogService#treePicker + * @methodOf umbraco.services.dialogService + * + * @description + * Opens a tree picker in a modal, the callback returns a object representing the selected tree item + * @param {Object} options iconpicker dialog options object + * @param {$scope} options.scope dialog scope + * @param {$scope} options.section tree section to display + * @param {$scope} options.multiPicker should the tree pick one or multiple items before returning + * @param {Function} options.callback callback function + * @returns {Object} modal object + */ + treePicker: function (options) { + options.template = 'views/common/dialogs/treePicker.html'; + options.show = true; + return openDialog(options); + }, + /** * @ngdoc method * @name umbraco.services.dialogService#propertyDialog diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js new file mode 100644 index 0000000000..df2160e848 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.controller.js @@ -0,0 +1,26 @@ +//used for the media picker dialog +angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController", + function ($scope, eventsService, $log) { + var dialogOptions = $scope.$parent.dialogOptions; + $scope.dialogTreeEventHandler = $({}); + $scope.section = dialogOptions.section | "content"; + + $scope.dialogTreeEventHandler.bind("treeNodeSelect", function(ev, args){ + args.event.preventDefault(); + args.event.stopPropagation(); + + eventsService.publish("Umbraco.Dialogs.TreePickerController.Select", args).then(function(args){ + if(dialogOptions && dialogOptions.multipicker){ + $(args.event.target.parentElement) + .find("i.umb-tree-icon") + .attr("class", "icon umb-tree-icon sprTree icon-check blue"); + + $scope.select(args.node); + }else{ + $scope.submit(args.node); + } + + }); + + }); +}); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.html b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.html new file mode 100644 index 0000000000..c6d25c7090 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/treepicker.html @@ -0,0 +1,23 @@ +
+
+
+
+ +
+
+
+ +
+
+
+ + +
+
+
+
\ No newline at end of file