Use a member group picker for member group assignment (#3888)

This commit is contained in:
Kenn Jacobsen
2018-12-19 16:21:14 +01:00
committed by Sebastiaan Janssen
parent bb53c020e9
commit 12586df562
3 changed files with 40 additions and 53 deletions

View File

@@ -772,20 +772,6 @@
line-height: 1;
}
//
// Member group picker
// --------------------------------------------------
.umb-member-group-box {
width: 45%;
}
.umb-member-group-box:nth-child(1){
float:left;
}
.umb-member-group-box:nth-child(2){
float:right;
}
//
// Related links
// --------------------------------------------------

View File

@@ -1,15 +1,4 @@
function memberGroupController($scope) {
//set the available to the keys of the dictionary who's value is true
$scope.getAvailable = function () {
var available = [];
for (var n in $scope.model.value) {
if ($scope.model.value[n] === false) {
available.push(n);
}
}
return available;
};
function memberGroupController($scope, editorService, memberGroupResource) {
//set the selected to the keys of the dictionary who's value is true
$scope.getSelected = function () {
var selected = [];
@@ -21,16 +10,35 @@
return selected;
};
$scope.addItem = function(item) {
//keep the model up to date
$scope.model.value[item] = true;
};
$scope.removeItem = function (item) {
//keep the model up to date
$scope.model.value[item] = false;
};
$scope.pickGroup = function() {
editorService.memberGroupPicker({
multiPicker: true,
submit: function (model) {
var selectedGroupIds = _.map(model.selectedMemberGroups
? model.selectedMemberGroups
: [model.selectedMemberGroup],
function(id) { return parseInt(id) }
);
// TODO: replace with memberGroupResource.getByIds(selectedGroupIds) if it's merged in (see #3845) - or rewrite it for this
memberGroupResource.getGroups().then(function (selectedGroups) {
// TODO: this filter can be removed once we have memberGroupResource.getByIds(selectedGroupIds)
selectedGroups = _.filter(selectedGroups, function(group) {
return selectedGroupIds.indexOf(group.id) >= 0;
});
_.each(selectedGroups, function(group) {
$scope.model.value[group.name] = true;
});
});
editorService.close();
},
close: function () {
editorService.close();
}
});
}
$scope.removeGroup = function (group) {
$scope.model.value[group] = false;
}
}
angular.module('umbraco').controller("Umbraco.PropertyEditors.MemberGroupController", memberGroupController);
angular.module('umbraco').controller("Umbraco.PropertyEditors.MemberGroupController", memberGroupController);

View File

@@ -1,18 +1,11 @@
<div ng-controller="Umbraco.PropertyEditors.MemberGroupController">
<div class="umb-member-group-box">
<h5><localize key="content_notmemberof">Not a member of group(s)</localize></h5>
<ul>
<li ng-repeat="item in getAvailable()">
<a href="" ng-click="addItem(item)">{{item}}</a>
</li>
</ul>
</div>
<div class="umb-member-group-box">
<h5><localize key="content_memberof">Member of group(s)</localize></h5>
<ul>
<li ng-repeat="item in getSelected()">
<a href="" ng-click="removeItem(item)">{{item}}</a>
</li>
</ul>
</div>
<umb-node-preview ng-repeat="group in getSelected() | orderBy"
icon="'icon-users'"
name="group"
allow-remove="true"
on-remove="removeGroup(group)">
</umb-node-preview>
<a href ng-click="pickGroup()" class="umb-node-preview-add" prevent-default>
<localize key="general_add">Add</localize>
</a>
</div>