diff --git a/UI/Templates/MailerUI/UIxMailViewTemplate.wox b/UI/Templates/MailerUI/UIxMailViewTemplate.wox index 797a9ae27..0f109daee 100644 --- a/UI/Templates/MailerUI/UIxMailViewTemplate.wox +++ b/UI/Templates/MailerUI/UIxMailViewTemplate.wox @@ -21,7 +21,9 @@
- +
@@ -30,7 +32,9 @@
- +
diff --git a/UI/WebServerResources/js/Mailer/Account.service.js b/UI/WebServerResources/js/Mailer/Account.service.js index c3405101f..8fa0b1f68 100644 --- a/UI/WebServerResources/js/Mailer/Account.service.js +++ b/UI/WebServerResources/js/Mailer/Account.service.js @@ -210,13 +210,13 @@ // Query account for draft folder and draft UID return Account.$$resource.fetch(this.id.toString(), 'compose').then(function(data) { - Account.$log.debug('New message: ' + JSON.stringify(data, undefined, 2)); + Account.$log.debug('New message (compose): ' + JSON.stringify(data, undefined, 2)); var message = new Account.$Message(data.accountId, _this.$getMailboxByPath(data.mailboxPath), data); return message; }).then(function(message) { // Fetch draft initial data return Account.$$resource.fetch(message.$absolutePath({asDraft: true}), 'edit').then(function(data) { - Account.$log.debug('New message: ' + JSON.stringify(data, undefined, 2)); + Account.$log.debug('New message (edit): ' + JSON.stringify(data, undefined, 2)); angular.extend(message.editable, data); return message; }); diff --git a/UI/WebServerResources/js/Mailer/MailboxController.js b/UI/WebServerResources/js/Mailer/MailboxController.js index 6c131fb2c..ac23b22c8 100644 --- a/UI/WebServerResources/js/Mailer/MailboxController.js +++ b/UI/WebServerResources/js/Mailer/MailboxController.js @@ -97,6 +97,8 @@ } function newMessage($event) { + var message = vm.account.$newMessage(); + $mdDialog.show({ parent: angular.element(document.body), targetEvent: $event, @@ -107,7 +109,8 @@ controllerAs: 'editor', locals: { stateAccounts: vm.accounts, - stateMessage: vm.account.$newMessage() + stateMessage: message, + stateRecipients: [] } }); } diff --git a/UI/WebServerResources/js/Mailer/MessageController.js b/UI/WebServerResources/js/Mailer/MessageController.js index a1149264f..b24d3b48a 100644 --- a/UI/WebServerResources/js/Mailer/MessageController.js +++ b/UI/WebServerResources/js/Mailer/MessageController.js @@ -21,6 +21,7 @@ vm.replyAll = replyAll; vm.forward = forward; vm.edit = edit; + vm.newMessage = newMessage; vm.viewRawSource = viewRawSource; // Watch the message model "flags" attribute to remove on-the-fly a tag from the IMAP message @@ -46,7 +47,11 @@ }); } - function showMailEditor($event, message) { + function showMailEditor($event, message, recipients) { + + if (!angular.isDefined(recipients)) + recipients = []; + $mdDialog.show({ parent: angular.element(document.body), targetEvent: $event, @@ -57,7 +62,8 @@ controllerAs: 'editor', locals: { stateAccounts: vm.accounts, - stateMessage: message + stateMessage: message, + stateRecipients: recipients } }); } @@ -83,6 +89,12 @@ }); } + function newMessage($event, recipient) { + var message = vm.account.$newMessage(); + showMailEditor($event, message, [recipient]); + } + + function viewRawSource($event) { Message.$$resource.post(vm.message.id, "viewsource").then(function(data) { $mdDialog.show({ diff --git a/UI/WebServerResources/js/Mailer/MessageEditorController.js b/UI/WebServerResources/js/Mailer/MessageEditorController.js index 9435a8623..b9905893b 100644 --- a/UI/WebServerResources/js/Mailer/MessageEditorController.js +++ b/UI/WebServerResources/js/Mailer/MessageEditorController.js @@ -6,8 +6,8 @@ /** * @ngInject */ - MessageEditorController.$inject = ['$stateParams', '$state', '$q', '$mdDialog', 'FileUploader', 'stateAccounts', 'stateMessage', '$timeout', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'AddressBook', 'Preferences']; - function MessageEditorController($stateParams, $state, $q, $mdDialog, FileUploader, stateAccounts, stateMessage, $timeout, encodeUriFilter, focus, Dialog, Account, Mailbox, AddressBook, Preferences) { + MessageEditorController.$inject = ['$stateParams', '$state', '$q', '$mdDialog', 'FileUploader', 'stateAccounts', 'stateMessage', 'stateRecipients', '$timeout', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'AddressBook', 'Preferences']; + function MessageEditorController($stateParams, $state, $q, $mdDialog, FileUploader, stateAccounts, stateMessage, stateRecipients, $timeout, encodeUriFilter, focus, Dialog, Account, Mailbox, AddressBook, Preferences) { var vm = this; vm.autocomplete = {to: {}, cc: {}, bcc: {}}; @@ -66,6 +66,10 @@ vm.message = stateMessage; } + if (angular.isDefined(stateRecipients)) { + vm.message.editable.to = _.union(vm.message.editable.to, _.pluck(stateRecipients, 'full')); + } + function cancel() { // TODO: delete draft? if (vm.autosave)