diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.controller.js index 72c4c79ace..37a25f95f5 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.controller.js @@ -1,56 +1,88 @@ //used for the member picker dialog angular.module("umbraco").controller("Umbraco.Dialogs.MemberPickerController", - function ($scope, eventsService, searchService, $log) { - var dialogOptions = $scope.$parent.dialogOptions; - $scope.dialogTreeEventHandler = $({}); - $scope.results = []; + function($scope, eventsService, searchService, $log) { + var dialogOptions = $scope.$parent.dialogOptions; + $scope.dialogTreeEventHandler = $({}); + $scope.results = []; - $scope.performSearch = function(){ - if($scope.term){ - if($scope.oldTerm !== $scope.term){ - $scope.results = []; - searchService.searchMembers({ term: $scope.term }).then(function(data) { - $scope.results = data; - }); - $scope.showSearch = true; - $scope.oldTerm = $scope.term; - } - }else{ - $scope.oldTerm = ""; - $scope.showSearch = false; - $scope.results = []; - } - }; + /** Method used for selecting a node */ + function select(text, id, entity) { + $scope.showSearch = false; + $scope.results = []; + $scope.term = ""; + $scope.oldTerm = undefined; - $scope.dialogTreeEventHandler.bind("treeNodeSelect", function(ev, args){ - args.event.preventDefault(); - args.event.stopPropagation(); + if (dialogOptions.multiPicker) { + $scope.select(id); + } + else { + //if an entity has been passed in, use it + if (entity) { + $scope.submit(entity); + } + else { + //otherwise we have to get it from the server + entityResource.getById(id, "Member").then(function (ent) { + $scope.submit(ent); + }); + } + } + } - if (args.node.nodeType === "member-folder") { - return; - } - - eventsService.publish("Umbraco.Dialogs.MemberPickerController.Select", args).then(function(args){ - if(dialogOptions && dialogOptions.multipicker){ - - var c = $(args.event.target.parentElement); - if(!args.node.selected){ - args.node.selected = true; - c.find("i.umb-tree-icon").hide() - .after(""); - }else{ - args.node.selected = false; - c.find(".temporary").remove(); - c.find("i.umb-tree-icon").show(); - } - $scope.select(args.node); + $scope.performSearch = function() { + if ($scope.term) { + if ($scope.oldTerm !== $scope.term) { + $scope.results = []; + searchService.searchMembers({ term: $scope.term }).then(function(data) { + $scope.results = data; + }); + $scope.showSearch = true; + $scope.oldTerm = $scope.term; + } + } + else { + $scope.oldTerm = ""; + $scope.showSearch = false; + $scope.results = []; + } + }; - }else{ - $scope.submit(args.node); - } - - }); + /** method to select a search result */ + $scope.selectResult = function(result) { + //since result = an entity, we'll pass it in so we don't have to go back to the server + select(result.name, result.id, result); + }; - }); -}); \ No newline at end of file + $scope.dialogTreeEventHandler.bind("treeNodeSelect", function(ev, args) { + args.event.preventDefault(); + args.event.stopPropagation(); + + if (args.node.nodeType === "member-folder") { + return; + } + + eventsService.publish("Umbraco.Dialogs.MemberPickerController.Select", args).then(function(a) { + + //This is a tree node, so we don't have an entity to pass in, it will need to be looked up + //from the server in this method. + select(a.node.name, a.node.id); + + if (dialogOptions && dialogOptions.multipicker) { + + var c = $(a.event.target.parentElement); + if (!a.node.selected) { + a.node.selected = true; + c.find("i.umb-tree-icon").hide() + .after(""); + } + else { + a.node.selected = false; + c.find(".temporary").remove(); + c.find("i.umb-tree-icon").show(); + } + } + }); + + }); + }); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.html index 073a847e7c..f3b83b5680 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/dialogs/memberpicker.html @@ -19,7 +19,7 @@