mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-04 12:58:50 +00:00
(feat) new mailbox sharing capabilities and mailbox menu
This commit is contained in:
@@ -33,11 +33,10 @@
|
||||
|
||||
- (BOOL) conformsToRFC4314
|
||||
{
|
||||
SOGoMailAccount *mailAccount;
|
||||
if ([[self clientObject] respondsToSelector: @selector(mailAccountFolder)])
|
||||
return ([[[self clientObject] mailAccountFolder] imapAclStyle] == rfc4314);
|
||||
|
||||
mailAccount = [[self clientObject] mailAccountFolder];
|
||||
|
||||
return ([mailAccount imapAclStyle] == rfc4314);
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void) setUserCanReadMails: (BOOL) userCanReadMails
|
||||
@@ -186,58 +185,54 @@
|
||||
nil];
|
||||
}
|
||||
|
||||
- (void) updateRights
|
||||
- (void) updateRights: (NSDictionary *) newRights
|
||||
{
|
||||
WORequest *request;
|
||||
|
||||
request = [context request];
|
||||
|
||||
if ([[request formValueForKey: SOGoRole_ObjectViewer] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanReadMails"] boolValue])
|
||||
[self appendRight: SOGoRole_ObjectViewer];
|
||||
else
|
||||
[self removeRight: SOGoRole_ObjectViewer];
|
||||
|
||||
if ([[request formValueForKey: SOGoMailRole_SeenKeeper] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanMarkMailsRead"] boolValue])
|
||||
[self appendRight: SOGoMailRole_SeenKeeper];
|
||||
else
|
||||
[self removeRight: SOGoMailRole_SeenKeeper];
|
||||
|
||||
if ([[request formValueForKey: SOGoMailRole_Writer] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanWriteMails"] boolValue])
|
||||
[self appendRight: SOGoMailRole_Writer];
|
||||
else
|
||||
[self removeRight: SOGoMailRole_Writer];
|
||||
|
||||
if ([[request formValueForKey: SOGoRole_ObjectCreator] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanInsertMails"] boolValue])
|
||||
[self appendRight: SOGoRole_ObjectCreator];
|
||||
else
|
||||
[self removeRight: SOGoRole_ObjectCreator];
|
||||
|
||||
if ([[request formValueForKey: SOGoMailRole_Poster] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanPostMails"] boolValue])
|
||||
[self appendRight: SOGoMailRole_Poster];
|
||||
else
|
||||
[self removeRight: SOGoMailRole_Poster];
|
||||
|
||||
if ([[request formValueForKey: SOGoRole_FolderCreator] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanCreateSubfolders"] boolValue])
|
||||
[self appendRight: SOGoRole_FolderCreator];
|
||||
else
|
||||
[self removeRight: SOGoRole_FolderCreator];
|
||||
|
||||
if ([[request formValueForKey: SOGoRole_FolderEraser] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanRemoveFolder"] boolValue])
|
||||
[self appendRight: SOGoRole_FolderEraser];
|
||||
else
|
||||
[self removeRight: SOGoRole_FolderEraser];
|
||||
|
||||
if ([[request formValueForKey: SOGoRole_ObjectEraser] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanEraseMails"] boolValue])
|
||||
[self appendRight: SOGoRole_ObjectEraser];
|
||||
else
|
||||
[self removeRight: SOGoRole_ObjectEraser];
|
||||
|
||||
if ([[request formValueForKey: SOGoMailRole_Expunger] length] > 0)
|
||||
if ([[newRights objectForKey: @"userCanExpungeFolder"] boolValue])
|
||||
[self appendRight: SOGoMailRole_Expunger];
|
||||
else
|
||||
[self removeRight: SOGoMailRole_Expunger];
|
||||
|
||||
if ([[request formValueForKey: SOGoMailRole_Administrator] length] > 0)
|
||||
if ([[newRights objectForKey: @"userIsAdministrator"] boolValue])
|
||||
[self appendRight: SOGoMailRole_Administrator];
|
||||
else
|
||||
[self removeRight: SOGoMailRole_Administrator];
|
||||
|
||||
@@ -167,15 +167,20 @@
|
||||
actionClass = "UIxMailFolderActions";
|
||||
actionName = "setAsTrashFolder";
|
||||
};
|
||||
userRights = {
|
||||
protectedBy = "ReadAcls";
|
||||
pageName = "UIxMailUserRightsEditor";
|
||||
};
|
||||
unseenCount = {
|
||||
protectedBy = "View";
|
||||
actionClass = "UIxMailFolderActions";
|
||||
actionName = "unseenCount";
|
||||
};
|
||||
UIxMailUserRightsEditor = {
|
||||
protectedBy = "ReadAcls";
|
||||
pageName = "UIxMailUserRightsEditor";
|
||||
};
|
||||
userRights = {
|
||||
protectedBy = "ReadAcls";
|
||||
pageName = "UIxMailUserRightsEditor";
|
||||
actionName = "userRights";
|
||||
};
|
||||
saveUserRights = {
|
||||
protectedBy = "Change Permissions";
|
||||
pageName = "UIxMailUserRightsEditor";
|
||||
|
||||
@@ -231,38 +231,8 @@
|
||||
|
||||
<!-- TEMPLATE SCRIPT WRAPPER -->
|
||||
<script type="text/ng-template" id="UIxMailMainFrame">
|
||||
<!-- dropdown menu for mailbox options button -->
|
||||
<div id="folderProperties" class ="f-dropdown icons-dropdown" dropdown-content="dropdown-content" ng-hide="true">
|
||||
<ul class="button-group">
|
||||
<li ng-show="currentFolder.isEditable">
|
||||
<span class="button" ng-click="editFolder(currentFolder)">
|
||||
<i class="icon-pencil"><!-- rename --></i>
|
||||
</span>
|
||||
</li>
|
||||
<li ng-show="currentFolder.isEditable">
|
||||
<span class="button" ng-click="newFolder(currentFolder)">
|
||||
<i class="icon-plus"><!-- new mailbox --></i>
|
||||
</span>
|
||||
</li>
|
||||
<li ng-show="currentFolder.isEditable">
|
||||
<span class="button" ng-click="share()">
|
||||
<i class="icon-earth"><!-- share --></i>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="button" ng-click="exportMails()">
|
||||
<i class="icon-ion-ios7-upload-outline"><!-- export --></i>
|
||||
</span>
|
||||
</li>
|
||||
<li ng-show="currentFolder.isEditable">
|
||||
<span class="button" ng-click="confirmDelete()">
|
||||
<i class="icon-trash"><!-- delete --></i>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Sidenav -->
|
||||
<!-- Sidenav -->
|
||||
<md-sidenav id="left-sidenav" class="md-sidenav-left md-whiteframe-z1 md-layout-fill" md-component-id="left" md-is-locked-open="isGtMedium" layout="column">
|
||||
<var:component className="UIxSidenavToolbarTemplate" />
|
||||
<md-content md-scroll-y="md-scroll-y" class="md-flex">
|
||||
@@ -296,11 +266,52 @@
|
||||
sg-enter="saveFolder(folder)"
|
||||
sg-escape="revertEditing(folder)"/>
|
||||
</md-input-container>
|
||||
<md-button class="iconButton md-secondary" label:aria-label="Options"
|
||||
ng-show="currentFolder.path == folder.path"
|
||||
ng-click="confirmDelete(folder)">
|
||||
<i class="md-icon-more-vert"><!-- options --></i>
|
||||
</md-button>
|
||||
<md-menu class="md-secondary" ng-show="currentFolder.path == folder.path">
|
||||
<md-button class="iconButton"
|
||||
label:aria-label="Options"
|
||||
ng-click="$mdOpenMenu()">
|
||||
<i class="md-icon-more-vert" md-menu-origin="md-menu-origin"><!-- options --></i>
|
||||
</md-button>
|
||||
|
||||
<md-menu-content width="2">
|
||||
<!-- <md-menu-item>
|
||||
<md-button type="button" ng-click="TODO">
|
||||
<var:string label:value="Mark Folder Read"/>
|
||||
</md-button>
|
||||
</md-menu-item> -->
|
||||
<md-menu-item>
|
||||
<md-button type="button" ng-click="newFolder(folder)">
|
||||
<var:string label:value="New Subfolder..."/>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
<!-- <md-menu-item>
|
||||
<md-button type="button" ng-click="TODO">
|
||||
<var:string label:value="Compact"/>
|
||||
</md-button>
|
||||
</md-menu-item> -->
|
||||
<md-menu-item>
|
||||
<md-button type="button" ng-click="confirmDelete(folder)">
|
||||
<var:string label:value="Delete"/>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
<md-menu-item>
|
||||
<md-button type="button" ng-click="exportMails()">
|
||||
<var:string label:value="Export"/>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
<md-menu-divider><!-- divider --></md-menu-divider>
|
||||
<!-- <md-menu-item>
|
||||
<md-button type="button" ng-click="TODO">
|
||||
<var:string label:value="Use This Folder For"/>
|
||||
</md-button>
|
||||
</md-menu-item> -->
|
||||
<md-menu-item>
|
||||
<md-button type="button" ng-click="share(folder)">
|
||||
<var:string label:value="Sharing..."/>
|
||||
</md-button>
|
||||
</md-menu-item>
|
||||
</md-menu-content>
|
||||
</md-menu>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
</section>
|
||||
@@ -357,6 +368,11 @@
|
||||
</section>
|
||||
</script>
|
||||
|
||||
<!-- modal for mailbox sharing options -->
|
||||
<script type="text/ng-template" id="UIxUserRightsEditor">
|
||||
<var:component className="UIxMailUserRightsEditor" />
|
||||
</script>
|
||||
|
||||
<script type="text/ng-template" id="UIxMailFolderTemplate">
|
||||
<var:component className="UIxMailFolderTemplate" />
|
||||
</script>
|
||||
|
||||
@@ -6,100 +6,91 @@
|
||||
xmlns:rsrc="OGo:url"
|
||||
xmlns:label="OGo:label"
|
||||
xmlns:uix="OGo:uix">
|
||||
<div>
|
||||
<ul>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox"
|
||||
ng-checked="selectedUser.rights.userCanReadMails"
|
||||
ng-model="selectedUser.rights.userCanReadMails"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
<var:string label:value="Read mails from this folder" />
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userCanMarkMailsRead"
|
||||
ng-checked="selectedUser.rights.userCanMarkMailsRead"
|
||||
ng-model="selectedUser.rights.userCanMarkMailsRead"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
<var:string label:value="Mark mails read and unread" />
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userCanWriteMails"
|
||||
ng-checked="selectedUser.rights.userCanWriteMails"
|
||||
ng-model="selectedUser.rights.userCanWriteMails"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
<var:string label:value="Modify the flags of the mails in this folder" />
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userCanInsertMails"
|
||||
ng-checked="selectedUser.rights.userCanInsertMails"
|
||||
ng-model="selectedUser.rights.userCanInsertMails"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
|
||||
<div class="mailUserRights" layout="column">
|
||||
|
||||
<md-checkbox name="userCanReadMails"
|
||||
ng-model="acl.selectedUser.rights.userCanReadMails"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Read mails from this folder" />
|
||||
</md-checkbox>
|
||||
|
||||
<md-checkbox name="userCanMarkMailsRead"
|
||||
ng-model="acl.selectedUser.rights.userCanMarkMailsRead"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Mark mails read and unread" />
|
||||
</md-checkbox>
|
||||
|
||||
<md-checkbox name="userCanWriteMails"
|
||||
ng-model="acl.selectedUser.rights.userCanWriteMails"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Modify the flags of the mails in this folder" />
|
||||
</md-checkbox>
|
||||
|
||||
<md-checkbox name="userCanInsertMails"
|
||||
ng-model="acl.selectedUser.rights.userCanInsertMails"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Insert, copy and move mails into this folder" />
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userCanPostMails"
|
||||
ng-checked="selectedUser.rights.userCanPostMails"
|
||||
ng-model="selectedUser.rights.userCanPostMails"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
</md-checkbox>
|
||||
|
||||
<md-checkbox name="userCanPostMails"
|
||||
ng-model="acl.selectedUser.rights.userCanPostMails"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Post mails" />
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userCanCreateSubfolders"
|
||||
ng-checked="selectedUser.rights.userCanCreateSubfolders"
|
||||
ng-model="selectedUser.rights.userCanCreateSubfolders"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
</md-checkbox>
|
||||
|
||||
<md-checkbox name="userCanCreateSubfolders"
|
||||
ng-model="acl.selectedUser.rights.userCanCreateSubfolders"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Add subfolders to this folder" />
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userCanEraseMails"
|
||||
ng-checked="selectedUser.rights.userCanEraseMails"
|
||||
ng-model="selectedUser.rights.userCanEraseMails"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
</md-checkbox>
|
||||
|
||||
<md-checkbox name="userCanEraseMails"
|
||||
ng-model="acl.selectedUser.rights.userCanEraseMails"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Erase mails from this folder" />
|
||||
</label>
|
||||
</li>
|
||||
<var:if condition="conformsToRFC4314">
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userCanRemoveFolder"
|
||||
ng-checked="selectedUser.rights.userCanRemoveFolder"
|
||||
ng-model="selectedUser.rights.userCanRemoveFolder"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
</md-checkbox>
|
||||
|
||||
<var:if condition="conformsToRFC4314">
|
||||
<md-checkbox name="userCanRemoveFolder"
|
||||
ng-model="acl.selectedUser.rights.userCanRemoveFolder"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Remove this folder" />
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userCanExpungeFolder"
|
||||
ng-checked="selectedUser.rights.userCanExpungeFolder"
|
||||
ng-model="selectedUser.rights.userCanExpungeFolder"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
</md-checkbox>
|
||||
|
||||
<md-checkbox name="userCanExpungeFolder"
|
||||
ng-model="acl.selectedUser.rights.userCanExpungeFolder"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Expunge this folder" />
|
||||
</label>
|
||||
</li>
|
||||
</var:if>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="userIsAdministrator"
|
||||
ng-checked="selectedUser.rights.userIsAdministrator"
|
||||
ng-model="selectedUser.rights.userIsAdministrator"
|
||||
ng-change="confirmChange(selectedUser)" />
|
||||
<var:string label:value="Modify the acl of this folder" />
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</md-checkbox>
|
||||
</var:if>
|
||||
|
||||
<md-checkbox name="userIsAdministrator"
|
||||
ng-model="acl.selectedUser.rights.userIsAdministrator"
|
||||
ng-change="acl.confirmChange(acl.selectedUser)"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0">
|
||||
<var:string label:value="Modify the acl of this folder" />
|
||||
</md-checkbox>
|
||||
|
||||
</div>
|
||||
|
||||
</container>
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
this.isEditable = this.$isEditable();
|
||||
// Make a copy of the data for an eventual reset
|
||||
this.$shadowData = this.$omit();
|
||||
this.$acl = new Mailbox.$$Acl('Mail/' + this.id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -38,13 +39,14 @@
|
||||
* @desc The factory we'll use to register with Angular
|
||||
* @returns the Mailbox constructor
|
||||
*/
|
||||
Mailbox.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Message', 'sgMailbox_PRELOAD', function($q, $timeout, $log, Settings, Resource, Message, PRELOAD) {
|
||||
Mailbox.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'Message', 'Acl', 'sgMailbox_PRELOAD', function($q, $timeout, $log, Settings, Resource, Message, Acl, PRELOAD) {
|
||||
angular.extend(Mailbox, {
|
||||
$q: $q,
|
||||
$timeout: $timeout,
|
||||
$log: $log,
|
||||
$$resource: new Resource(Settings.activeUser.folderURL + 'Mail', Settings.activeUser),
|
||||
$Message: Message,
|
||||
$$Acl: Acl,
|
||||
PRELOAD: PRELOAD
|
||||
});
|
||||
|
||||
@@ -489,6 +491,9 @@
|
||||
_.extend(_this.$messages[i], msg);
|
||||
});
|
||||
}
|
||||
// Instanciate Acl object
|
||||
_this.$acl = new Mailbox.$$Acl('Mail/' + _this.id);
|
||||
|
||||
Mailbox.$log.debug('mailbox ' + _this.id + ' ready');
|
||||
_this.$isLoading = false;
|
||||
deferred.resolve(_this.$messages);
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
/**
|
||||
* @ngInject
|
||||
*/
|
||||
MailboxesController.$inject = ['$scope', '$rootScope', '$stateParams', '$state', '$timeout', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Account', 'Mailbox', 'stateAccounts'];
|
||||
function MailboxesController($scope, $rootScope, $stateParams, $state, $timeout, focus, encodeUriFilter, Dialog, Settings, Account, Mailbox, stateAccounts) {
|
||||
MailboxesController.$inject = ['$scope', '$rootScope', '$stateParams', '$state', '$timeout', '$q', '$mdDialog', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Account', 'Mailbox', 'User', 'stateAccounts'];
|
||||
function MailboxesController($scope, $rootScope, $stateParams, $state, $timeout, $q, $mdDialog, focus, encodeUriFilter, Dialog, Settings, Account, Mailbox, User, stateAccounts) {
|
||||
$scope.activeUser = Settings.activeUser;
|
||||
$scope.accounts = stateAccounts;
|
||||
|
||||
@@ -58,7 +58,106 @@
|
||||
});
|
||||
});
|
||||
};
|
||||
$scope.share = function(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,
|
||||
controllerAs: 'acl',
|
||||
clickOutsideToClose: true,
|
||||
escapeToClose: true,
|
||||
locals: {
|
||||
usersWithACL: folder.$acl.users,
|
||||
User: User,
|
||||
folder: folder,
|
||||
$q: $q
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* @ngInject
|
||||
*/
|
||||
MailboxACLController.$inject = ['$scope', '$mdDialog', 'usersWithACL', 'User', 'folder', '$q'];
|
||||
function MailboxACLController($scope, $mdDialog, usersWithACL, User, folder, $q) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
$scope.unselectMessages = function() {
|
||||
_.each($rootScope.mailbox.$messages, function(message) { message.selected = false; });
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user