diff --git a/UI/Templates/UIxAclEditor.wox b/UI/Templates/UIxAclEditor.wox index 9b27a3444..9b0b3761d 100644 --- a/UI/Templates/UIxAclEditor.wox +++ b/UI/Templates/UIxAclEditor.wox @@ -61,16 +61,20 @@ md-selected-item="acl.userToAdd" md-selected-item-change="acl.addUser(user)" md-items="user in acl.userFilter(acl.searchText)" + md-item-text="user.empty" md-min-length="3" md-no-cache="true" label:md-floating-label="Add User"> - - {{user.cn}} {{user.c_email}} - + + + {{user.cn}} + {{user.c_email}} + + diff --git a/UI/WebServerResources/js/Common/AclController.js b/UI/WebServerResources/js/Common/AclController.js new file mode 100644 index 000000000..bb6af295e --- /dev/null +++ b/UI/WebServerResources/js/Common/AclController.js @@ -0,0 +1,85 @@ +/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ + +(function() { + 'use strict'; + + /** + * @ngInject + */ + AclController.$inject = ['$mdDialog', 'Dialog', 'usersWithACL', 'User', 'folder']; + function AclController($mdDialog, Dialog, usersWithACL, User, folder) { + var vm = this; + + vm.users = usersWithACL; // ACL users + vm.folder = folder; + vm.selectedUser = null; + vm.userToAdd = ''; + vm.searchText = ''; + vm.userFilter = userFilter; + vm.closeModal = closeModal; + vm.saveModal = saveModal; + vm.confirmChange = confirmChange; + vm.removeUser = removeUser; + vm.addUser = addUser; + vm.selectUser = selectUser; + + function userFilter($query) { + return User.$filter($query, folder.$acl.users); + } + + function closeModal() { + folder.$acl.$resetUsersRights(); // cancel changes + $mdDialog.hide(); + } + + function saveModal() { + folder.$acl.$saveUsersRights().then(function() { + $mdDialog.hide(); + }, function(data, status) { + Dialog.alert(l('Warning'), l('An error occured please try again.')); + }); + } + + function confirmChange(user) { + var confirmation = user.$confirmRights(); + if (confirmation) { + Dialog.confirm(l('Warning'), confirmation).catch(function() { + user.$resetRights(true); + }); + } + } + + function removeUser(user) { + folder.$acl.$removeUser(user.uid).then(function() { + if (user.uid == vm.selectedUser.uid) { + vm.selectedUser = null; + } + }, function(data, status) { + Dialog.alert(l('Warning'), l('An error occured please try again.')); + }); + } + + function addUser(data) { + if (data) { + folder.$acl.$addUser(data).then(function() { + vm.userToAdd = ''; + vm.searchText = ''; + }, function(error) { + Dialog.alert(l('Warning'), error); + }); + } + } + + function selectUser(user) { + // Check if it is a different user + if (vm.selectedUser != user) { + vm.selectedUser = user; + vm.selectedUser.$rights(); + } + } + } + + angular + .module('SOGo.Common') + .controller('AclController', AclController); +})(); diff --git a/UI/WebServerResources/js/Common/User.service.js b/UI/WebServerResources/js/Common/User.service.js index 79972c402..16b59302b 100644 --- a/UI/WebServerResources/js/Common/User.service.js +++ b/UI/WebServerResources/js/Common/User.service.js @@ -108,6 +108,9 @@ this.$$shortFormat = this.$shortFormat(); if (!this.$$image) this.$$image = this.image || User.$gravatar(this.c_email); + + // An empty attribute to trick md-autocomplete when adding users from the ACLs editor + this.empty = ' '; }; /** diff --git a/UI/WebServerResources/js/Contacts/AddressBooksController.js b/UI/WebServerResources/js/Contacts/AddressBooksController.js index 976a1b31f..ab3d36617 100644 --- a/UI/WebServerResources/js/Contacts/AddressBooksController.js +++ b/UI/WebServerResources/js/Contacts/AddressBooksController.js @@ -132,17 +132,12 @@ } function share(addressbook) { - if (addressbook.id != vm.service.selectedFolder.id) { - // Counter the possibility to click on the "hidden" secondary button - select(addressbook); - return; - } // Fetch list of ACL users addressbook.$acl.$users().then(function() { // Show ACL editor $mdDialog.show({ templateUrl: addressbook.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox - controller: AddressBookACLController, + controller: 'AclController', // from the ng module SOGo.Common controllerAs: 'acl', clickOutsideToClose: true, escapeToClose: true, @@ -153,82 +148,6 @@ } }); }); - - /** - * @ngInject - */ - AddressBookACLController.$inject = ['$scope', '$mdDialog', 'usersWithACL', 'User', 'folder']; - function AddressBookACLController($scope, $mdDialog, usersWithACL, User, folder) { - var vm = this; - - vm.users = usersWithACL; // ACL users - vm.folder = folder; - vm.selectedUser = null; - vm.userToAdd = ''; - vm.searchText = ''; - vm.userFilter = userFilter; - vm.closeModal = closeModal; - vm.saveModal = saveModal; - vm.confirmChange = confirmChange; - vm.removeUser = removeUser; - vm.addUser = addUser; - vm.selectUser = selectUser; - - function userFilter($query) { - return User.$filter($query, folder.$acl.users); - } - - function closeModal() { - folder.$acl.$resetUsersRights(); // cancel changes - $mdDialog.hide(); - } - - function saveModal() { - folder.$acl.$saveUsersRights().then(function() { - $mdDialog.hide(); - }, function(data, status) { - Dialog.alert(l('Warning'), l('An error occured please try again.')); - }); - } - - function confirmChange(user) { - var confirmation = user.$confirmRights(); - if (confirmation) { - Dialog.confirm(l('Warning'), confirmation).catch(function() { - user.$resetRights(true); - }); - } - } - - function removeUser(user) { - folder.$acl.$removeUser(user.uid).then(function() { - if (user.uid == vm.selectedUser.uid) { - vm.selectedUser = null; - } - }, function(data, status) { - Dialog.alert(l('Warning'), l('An error occured please try again.')); - }); - } - - function addUser(data) { - if (data) { - folder.$acl.$addUser(data).then(function() { - vm.userToAdd = ''; - vm.searchText = ''; - }, function(error) { - Dialog.alert(l('Warning'), error); - }); - } - } - - function selectUser(user) { - // Check if it is a different user - if (vm.selectedUser != user) { - vm.selectedUser = user; - vm.selectedUser.$rights(); - } - } - } } /** diff --git a/UI/WebServerResources/js/Mailer/MailboxesController.js b/UI/WebServerResources/js/Mailer/MailboxesController.js index 6f7e4aebf..9f1beb0c6 100644 --- a/UI/WebServerResources/js/Mailer/MailboxesController.js +++ b/UI/WebServerResources/js/Mailer/MailboxesController.js @@ -178,17 +178,12 @@ } function share(folder) { - //if (addressbook.id != vm.service.selectedFolder.id) { - // Counter the possibility to click on the "hidden" secondary button - //select(addressbook); - // return; - //} // Fetch list of ACL users folder.$acl.$users().then(function() { // Show ACL editor $mdDialog.show({ templateUrl: folder.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox - controller: MailboxACLController, + controller: 'AclController', // from the ng module SOGo.Common controllerAs: 'acl', clickOutsideToClose: true, escapeToClose: true, @@ -199,82 +194,6 @@ } }); }); - - /** - * @ngInject - */ - MailboxACLController.$inject = ['$mdDialog', 'usersWithACL', 'User', 'folder']; - function MailboxACLController($mdDialog, usersWithACL, User, folder) { - var vm = this; - - vm.users = usersWithACL; // ACL users - vm.folder = folder; - vm.selectedUser = null; - vm.userToAdd = ''; - vm.searchText = ''; - vm.userFilter = userFilter; - vm.closeModal = closeModal; - vm.saveModal = saveModal; - vm.confirmChange = confirmChange; - vm.removeUser = removeUser; - vm.addUser = addUser; - vm.selectUser = selectUser; - - function userFilter($query) { - return User.$filter($query, folder.$acl.users); - } - - function closeModal() { - folder.$acl.$resetUsersRights(); // cancel changes - $mdDialog.hide(); - } - - function saveModal() { - folder.$acl.$saveUsersRights().then(function() { - $mdDialog.hide(); - }, function(data, status) { - Dialog.alert(l('Warning'), l('An error occured please try again.')); - }); - } - - function confirmChange(user) { - var confirmation = user.$confirmRights(); - if (confirmation) { - Dialog.confirm(l('Warning'), confirmation).catch(function() { - user.$resetRights(true); - }); - } - } - - function removeUser(user) { - folder.$acl.$removeUser(user.uid).then(function() { - if (user.uid == vm.selectedUser.uid) { - vm.selectedUser = null; - } - }, function(data, status) { - Dialog.alert(l('Warning'), l('An error occured please try again.')); - }); - } - - function addUser(data) { - if (data) { - folder.$acl.$addUser(data).then(function() { - vm.userToAdd = ''; - vm.searchText = ''; - }, function(error) { - Dialog.alert(l('Warning'), error); - }); - } - } - - function selectUser(user) { - // Check if it is a different user - if (vm.selectedUser != user) { - vm.selectedUser = user; - vm.selectedUser.$rights(); - } - } - } } // share function metadataForFolder(folder) { diff --git a/UI/WebServerResources/js/Scheduler/CalendarsController.js b/UI/WebServerResources/js/Scheduler/CalendarsController.js index 29ecfa3bd..67f6ec6f7 100644 --- a/UI/WebServerResources/js/Scheduler/CalendarsController.js +++ b/UI/WebServerResources/js/Scheduler/CalendarsController.js @@ -150,7 +150,7 @@ calendar.$acl.$users().then(function() { $mdDialog.show({ templateUrl: calendar.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox - controller: CalendarACLController, + controller: 'AclController', // from the ng module SOGo.Common controllerAs: 'acl', clickOutsideToClose: true, escapeToClose: true, @@ -161,81 +161,6 @@ } }); }); - - /** - * @ngInject - */ - CalendarACLController.$inject = ['$mdDialog', 'usersWithACL', 'User', 'folder']; - function CalendarACLController($mdDialog, usersWithACL, User, folder) { - var vm = this; - - vm.users = usersWithACL; // ACL users - vm.folder = folder; - vm.selectedUser = null; - vm.userToAdd = ''; - vm.searchText = ''; - vm.userFilter = userFilter; - vm.closeModal = closeModal; - vm.saveModal = saveModal; - vm.confirmChange = confirmChange; - vm.removeUser = removeUser; - vm.addUser = addUser; - vm.selectUser = selectUser; - - function userFilter($query) { - return User.$filter($query, folder.$acl.users); - } - - function closeModal() { - folder.$acl.$resetUsersRights(); // cancel changes - $mdDialog.hide(); - } - - function saveModal() { - folder.$acl.$saveUsersRights().then(function() { - $mdDialog.hide(); - }, function(data, status) { - Dialog.alert(l('Warning'), l('An error occured please try again.')); - }); - } - - function confirmChange(user) { - var confirmation = user.$confirmRights(); - if (confirmation) { - Dialog.confirm(l('Warning'), confirmation).catch(function() { - user.$resetRights(true); - }); - } - } - - function removeUser(user) { - folder.$acl.$removeUser(user.uid).then(function() { - if (user.uid == vm.selectedUser.uid) - vm.selectedUser = null; - }, function(data, status) { - Dialog.alert(l('Warning'), l('An error occured please try again.')); - }); - } - - function addUser(data) { - if (data) { - folder.$acl.$addUser(data).then(function() { - vm.userToAdd = ''; - vm.searchText = ''; - }, function(error) { - Dialog.alert(l('Warning'), error); - }); - } - } - - function selectUser(user) { - // Check if it is a different user - if (vm.selectedUser != user) { - vm.selectedUser = user; - vm.selectedUser.$rights(); - } - } - } } // Callback of sgSubscribe directive