diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/membergrouppicker/membergrouppicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/membergrouppicker/membergrouppicker.controller.js new file mode 100644 index 0000000000..4457ac8f90 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/membergrouppicker/membergrouppicker.controller.js @@ -0,0 +1,60 @@ +//used for the member picker dialog +angular.module("umbraco").controller("Umbraco.Overlays.MemberGroupPickerController", + function($scope, eventsService, entityResource, searchService, $log) { + + $scope.dialogTreeEventHandler = $({}); + $scope.multiPicker = $scope.model.multiPicker; + + function activate() { + + if($scope.multiPicker) { + $scope.model.selectedMemberGroups = []; + } else { + $scope.model.selectedMemberGroup = ""; + } + + } + + function selectMemberGroup(id) { + $scope.model.selectedMemberGroup = id; + } + + function selectMemberGroups(id) { + $scope.model.selectedMemberGroups.push(id); + } + + /** Method used for selecting a node */ + function select(text, id) { + + if ($scope.model.multiPicker) { + selectMemberGroups(id); + } + else { + selectMemberGroup(id); + $scope.model.submit($scope.model); + } + } + + function nodeSelectHandler(ev, args) { + args.event.preventDefault(); + args.event.stopPropagation(); + + eventsService.emit("dialogs.memberGroupPicker.select", args); + + //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(args.node.name, args.node.id); + + //toggle checked state + args.node.selected = args.node.selected === true ? false : true; + } + + $scope.dialogTreeEventHandler.bind("treeNodeSelect", nodeSelectHandler); + + $scope.$on('$destroy', function () { + $scope.dialogTreeEventHandler.unbind("treeNodeSelect", nodeSelectHandler); + }); + + activate(); + + }); diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/membergrouppicker/membergrouppicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/membergrouppicker/membergrouppicker.html new file mode 100644 index 0000000000..6d6a96bd3e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/membergrouppicker/membergrouppicker.html @@ -0,0 +1,12 @@ +
+ + + + +
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/overlays/umb-overlay.html b/src/Umbraco.Web.UI.Client/src/views/components/overlays/umb-overlay.html index fba9243c78..445ff6d1c8 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/overlays/umb-overlay.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/overlays/umb-overlay.html @@ -1,7 +1,7 @@
-
+

{{model.title}} @@ -10,8 +10,14 @@

-
+ +
+
+
+
+
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/membergrouppicker/membergrouppicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/membergrouppicker/membergrouppicker.controller.js index 1c801cddb3..5ebbd37217 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/membergrouppicker/membergrouppicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/membergrouppicker/membergrouppicker.controller.js @@ -15,38 +15,38 @@ function memberGroupPicker($scope, dialogService){ $scope.renderModel.push({ name: item, id: item, icon: 'icon-users' }); }); } - - var dialogOptions = { - multiPicker: true, - entityType: "MemberGroup", - section: "membergroup", - treeAlias: "memberGroup", - filter: "", - filterCssClass: "not-allowed", - callback: function (data) { - if (angular.isArray(data)) { - _.each(data, function (item, i) { - $scope.add(item); - }); - } else { - $scope.clear(); - $scope.add(data); - } - } + $scope.openMemberGroupPicker = function() { + + $scope.memberGroupPicker = {}; + $scope.memberGroupPicker.multiPicker = true; + $scope.memberGroupPicker.view = "memberGroupPicker"; + $scope.memberGroupPicker.show = true; + + $scope.memberGroupPicker.submit = function(model) { + + if(model.selectedMemberGroups) { + _.each(model.selectedMemberGroups, function (item, i) { + $scope.add(item); + }); + } + + if(model.selectedMemberGroup) { + $scope.clear(); + $scope.add(model.selectedMemberGroup); + } + + $scope.memberGroupPicker.show = false; + $scope.memberGroupPicker = null; + }; + + $scope.memberGroupPicker.close = function(oldModel) { + $scope.memberGroupPicker.show = false; + $scope.memberGroupPicker = null; + }; + }; - //since most of the pre-value config's are used in the dialog options (i.e. maxNumber, minNumber, etc...) we'll merge the - // pre-value config on to the dialog options - if($scope.model.config){ - angular.extend(dialogOptions, $scope.model.config); - } - - $scope.openMemberGroupPicker =function() { - var d = dialogService.memberGroupPicker(dialogOptions); - }; - - $scope.remove =function(index){ $scope.renderModel.splice(index, 1); }; @@ -79,4 +79,4 @@ function memberGroupPicker($scope, dialogService){ } -angular.module('umbraco').controller("Umbraco.PropertyEditors.MemberGroupPickerController", memberGroupPicker); \ No newline at end of file +angular.module('umbraco').controller("Umbraco.PropertyEditors.MemberGroupPickerController", memberGroupPicker); diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/membergrouppicker/membergrouppicker.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/membergrouppicker/membergrouppicker.html index 316ad168f3..5258968c00 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/membergrouppicker/membergrouppicker.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/membergrouppicker/membergrouppicker.html @@ -1,25 +1,33 @@ \ No newline at end of file + + + + +