sogo/UI/WebServerResources/js/Administration/AdministrationAclController.js

113 lines
3.1 KiB
JavaScript

/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* JavaScript for SOGoAdministration */
(function() {
'use strict';
/**
* @ngInject
*/
AdministrationAclController.$inject = ['$timeout', '$state', '$mdMedia', '$mdToast', 'stateUser', 'stateFolder', 'User'];
function AdministrationAclController($timeout, $state, $mdMedia, $mdToast, stateUser, stateFolder, User) {
var vm = this;
vm.user = stateUser;
vm.folder = stateFolder;
vm.folderType = angular.isDefined(stateFolder.$cards)? 'AddressBook' : 'Calendar';
vm.selectedUser = null;
vm.selectedUid = null;
vm.selectUser = selectUser;
vm.selectAllRights = selectAllRights;
vm.showRights = showRights;
vm.removeUser = removeUser;
vm.getTemplate = getTemplate;
vm.close = close;
vm.save = save;
vm.userToAdd = '';
vm.searchText = '';
vm.userFilter = userFilter;
vm.addUser = addUser;
stateFolder.$acl.$users(stateFolder.owner).then(function(data) {
vm.users = data;
});
function getTemplate() {
if (angular.isDefined(stateFolder.$cards))
return '../' + stateFolder.owner + '/Contacts/' + stateFolder.id + '/UIxContactsUserRightsEditor';
return '../' + stateFolder.owner + '/Calendar/' + stateFolder.id + '/UIxCalUserRightsEditor';
}
function selectAllRights(user) {
stateFolder.$acl.$selectAllRights(user);
}
function selectUser(user, $event) {
if ($event && $event.target.parentNode.classList.contains('md-secondary'))
return false;
if (vm.selectedUid == user.uid) {
vm.selectedUid = null;
}
else {
vm.selectedUid = user.uid;
vm.selectedUser = user;
vm.selectedUser.$rights();
}
}
function showRights(user) {
return vm.selectedUid == user.uid && user.rights;
}
function userFilter($query) {
return User.$filter($query, stateFolder.$acl.users, { dry: true, uid: vm.user.uid });
}
function removeUser(user) {
$timeout(function() {
stateFolder.$acl.$removeUser(user.uid, stateFolder.owner);
}, 500); // wait for CSS transition to complete (see card.scss)
}
function addUser(data) {
if (data) {
stateFolder.$acl.$addUser(data, stateFolder.owner).then(function(user) {
vm.userToAdd = '';
vm.searchText = '';
vm.selectedUid = null;
if (user)
selectUser(user);
});
}
}
function close() {
$state.go('administration.rights').then(function() {
delete vm.user.selectedFolder;
vm.user = null;
});
}
function save() {
stateFolder.$acl.$saveUsersRights(stateFolder.owner).then(function() {
$mdToast.show(
$mdToast.simple()
.content(l('ACLs saved'))
.position('bottom right')
.hideDelay(3000)
);
// Close acls on small devices
if ($mdMedia('xs'))
close();
});
}
}
angular
.module('SOGo.AdministrationUI')
.controller('AdministrationAclController', AdministrationAclController);
})();