diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox index fa54640ea..d98ae4992 100644 --- a/UI/Templates/MailerUI/UIxMailMainFrame.wox +++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox @@ -472,12 +472,12 @@ - + - + diff --git a/UI/WebServerResources/js/Mailer/Mailbox.service.js b/UI/WebServerResources/js/Mailer/Mailbox.service.js index 5fa3d3818..9573e9e58 100644 --- a/UI/WebServerResources/js/Mailer/Mailbox.service.js +++ b/UI/WebServerResources/js/Mailer/Mailbox.service.js @@ -426,6 +426,20 @@ return Mailbox.$$resource.post(this.id, 'markRead'); }; + /** + * @function $flagMessages + * @memberof Mailbox.prototype + * @desc Add or remove a flag on a message set + * @returns a promise of the HTTP operation + */ + Mailbox.prototype.$flagMessages = function(uids, flags, operation) { + var data = {msgUIDs: uids, + flags: flags, + operation: operation}; + + return Mailbox.$$resource.post(this.id, 'addOrRemoveLabel', data); + }; + /** * @function $delete * @memberof Mailbox.prototype diff --git a/UI/WebServerResources/js/Mailer/MailboxController.js b/UI/WebServerResources/js/Mailer/MailboxController.js index ac23b22c8..b448ec794 100644 --- a/UI/WebServerResources/js/Mailer/MailboxController.js +++ b/UI/WebServerResources/js/Mailer/MailboxController.js @@ -22,6 +22,8 @@ vm.copySelectedMessages = copySelectedMessages; // vm.moveSelectedMessages = moveSelectedMessages; vm.saveSelectedMessages = saveSelectedMessages; + vm.markSelectedMessagesAsFlagged = markSelectedMessagesAsFlagged; + vm.markSelectedMessagesAsUnread = markSelectedMessagesAsUnread; vm.selectAll = selectAll; vm.sort = sort; vm.sortedBy = sortedBy; @@ -83,6 +85,31 @@ }); } + function markSelectedMessagesAsFlagged() { + var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; }); + var selectedUIDs = _.pluck(selectedMessages, 'uid'); + + vm.selectedFolder.$flagMessages(selectedUIDs, '\\Flagged', 'add').then(function(d) { + // Success + _.forEach(selectedMessages, function(message) { + message.isflagged = true; + }); + }); + } + + function markSelectedMessagesAsUnread() { + var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; }); + var selectedUIDs = _.pluck(selectedMessages, 'uid'); + + vm.selectedFolder.$flagMessages(selectedUIDs, 'seen', 'remove').then(function(d) { + // Success + _.forEach(selectedMessages, function(message) { + message.isread = false; + vm.selectedFolder.unseenCount++; + }); + }); + } + function sort(field) { vm.selectedFolder.$filter({ sort: field }); }