Fixes (and massively simplifies) the member group picker to use the correct way of using checks in tree nodes

This commit is contained in:
Shannon
2014-10-09 12:51:07 +11:00
parent 0ff1c9915d
commit f8503b4c68
3 changed files with 18 additions and 52 deletions

View File

@@ -3,65 +3,31 @@ angular.module("umbraco").controller("Umbraco.Dialogs.MemberGroupPickerControlle
function($scope, eventsService, entityResource, searchService, $log) {
var dialogOptions = $scope.dialogOptions;
$scope.dialogTreeEventHandler = $({});
$scope.results = [];
$scope.dialogData = [];
$scope.multiPicker = dialogOptions.multiPicker;
/** Method used for selecting a node */
function select(text, id) {
$scope.showSearch = false;
$scope.results = [];
$scope.term = "";
$scope.oldTerm = undefined;
if (dialogOptions.multiPicker) {
if ($scope.dialogData.indexOf(id) == -1) {
$scope.dialogData.push(id);
}
$scope.select(id);
}
else {
$scope.submit(id);
$scope.submit(id);
}
}
function remove(text, id) {
var index = $scope.dialogData.indexOf(id);
if (index > -1) {
$scope.dialogData.splice(index, 1);
}
}
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);
if (dialogOptions.multiPicker) {
var c = $(args.event.target.parentElement);
if (!args.node.selected) {
args.node.selected = true;
c.find("i.umb-tree-icon").hide()
.after("<i class='icon umb-tree-icon sprTree icon-check blue temporary'></i>");
}
else {
remove(args.node.name, args.node.id);
args.node.selected = false;
c.find(".temporary").remove();
c.find("i.umb-tree-icon").show();
}
}
//toggle checked state
args.node.selected = args.node.selected === true ? false : true;
}
$scope.dialogTreeEventHandler.bind("treeNodeSelect", nodeSelectHandler);

View File

@@ -1,15 +1,15 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.MemberGroupPickerController">
<div class="umb-panel-body with-footer no-header">
<div ng-hide="showSearch">
<div>
<umb-tree section="member"
treealias="memberGroup"
hideheader="true"
hideoptions="true"
isdialog="true"
eventhandler="dialogTreeEventHandler">
eventhandler="dialogTreeEventHandler"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
</div>
@@ -22,12 +22,11 @@
<localize key="general_cancel">Cancel</localize>
</a>
<button
class="btn btn-primary"
ng-show="dialogOptions.multiPicker"
ng-click="submit(dialogData)">
<localize key="buttons_select">Select</localize>
</button>
<button class="btn btn-primary"
ng-click="submit(dialogData.selection)">
<localize key="buttons_select">Select</localize>
({{dialogData.selection.length}})
</button>
</div>
</div>

View File

@@ -131,7 +131,8 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController",
};
$scope.submit(node);
}
} else {
}
else {
if ($scope.multiPicker) {
$scope.select(id);