mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-18 09:55:25 +00:00
(js) DnD of messages in the Mail module
Fixes #3497, #3586, #3734, #3788
This commit is contained in:
@@ -244,14 +244,26 @@
|
||||
/**
|
||||
* @function isSelectedMessage
|
||||
* @memberof Mailbox.prototype
|
||||
* @desc Check if the specified message is selected.
|
||||
* @desc Check if the specified message is displayed in the detailed view.
|
||||
* @param {string} messageId
|
||||
* @returns true if the specified message is selected
|
||||
* @returns true if the specified message is displayed
|
||||
*/
|
||||
Mailbox.prototype.isSelectedMessage = function(messageId) {
|
||||
return this.selectedMessage == messageId;
|
||||
};
|
||||
|
||||
/**
|
||||
* @function $selectedMessage
|
||||
* @memberof Mailbox.prototype
|
||||
* @desc Return the currently visible message.
|
||||
* @returns a Message instance or undefined if no message is displayed
|
||||
*/
|
||||
Mailbox.prototype.$selectedMessage = function() {
|
||||
var _this = this;
|
||||
|
||||
return _.find(this.$messages, function(message) { return message.uid == _this.selectedMessage; });
|
||||
};
|
||||
|
||||
/**
|
||||
* @function hasSelectedMessage
|
||||
* @memberof Mailbox.prototype
|
||||
@@ -410,6 +422,16 @@
|
||||
return this.flags.indexOf('noinferiors') >= 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* @function isNoSelect
|
||||
* @memberof Mailbox.prototype
|
||||
* @desc Checks if the mailbox can be selected
|
||||
* @returns true if the mailbox can not be selected
|
||||
*/
|
||||
Mailbox.prototype.isNoSelect = function() {
|
||||
return this.flags.indexOf('noselect') >= 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* @function $rename
|
||||
* @memberof AddressBook.prototype
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
vm.metadataForFolder = metadataForFolder;
|
||||
vm.setFolderAs = setFolderAs;
|
||||
vm.refreshUnseenCount = refreshUnseenCount;
|
||||
vm.isDroppableFolder = isDroppableFolder;
|
||||
vm.dragSelectedMessages = dragSelectedMessages;
|
||||
|
||||
// Advanced search options
|
||||
vm.showingAdvancedSearch = false;
|
||||
@@ -52,6 +54,8 @@
|
||||
params: []
|
||||
};
|
||||
|
||||
vm.refreshUnseenCount();
|
||||
|
||||
function showAdvancedSearch(path) {
|
||||
vm.showingAdvancedSearch = true;
|
||||
vm.search.mailbox = path;
|
||||
@@ -354,11 +358,44 @@
|
||||
});
|
||||
}
|
||||
|
||||
vm.refreshUnseenCount();
|
||||
function isDroppableFolder(srcFolder, dstFolder) {
|
||||
return (dstFolder.id != srcFolder.id) && !dstFolder.isNoSelect();
|
||||
}
|
||||
|
||||
function dragSelectedMessages(srcFolder, dstFolder, mode) {
|
||||
var dstId, messages, uids, clearMessageView, promise, success;
|
||||
|
||||
dstId = '/' + dstFolder.id;
|
||||
messages = srcFolder.$selectedMessages();
|
||||
if (messages.length === 0)
|
||||
messages = [srcFolder.$selectedMessage()];
|
||||
uids = _.map(messages, 'uid');
|
||||
clearMessageView = (srcFolder.selectedMessage && uids.indexOf(srcFolder.selectedMessage) >= 0);
|
||||
|
||||
if (mode == 'copy') {
|
||||
promise = srcFolder.$copyMessages(messages, dstId);
|
||||
success = l('%{0} message(s) copied', messages.length);
|
||||
}
|
||||
else {
|
||||
promise = srcFolder.$moveMessages(messages, dstId);
|
||||
success = l('%{0} message(s) moved', messages.length);
|
||||
}
|
||||
|
||||
promise.then(function() {
|
||||
if (clearMessageView)
|
||||
$state.go('mail.account.mailbox');
|
||||
$mdToast.show(
|
||||
$mdToast.simple()
|
||||
.content(success)
|
||||
.position('top right')
|
||||
.hideDelay(2000));
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
angular
|
||||
.module('SOGo.MailerUI')
|
||||
.controller('MailboxesController', MailboxesController);
|
||||
.module('SOGo.MailerUI')
|
||||
.controller('MailboxesController', MailboxesController);
|
||||
})();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user