diff --git a/NEWS b/NEWS index 350d12a30..a199b9683 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ Enhancements - [web] collapsable mail accounts (#3493) - [web] show progress indicator when loading messages and cards - [web] display messages sizes in list of Mail module + - [web] link event's attendees email addresses to mail composer Bug fixes - [web] fixed creation of chip on blur (sgTransformOnBlur directive) diff --git a/UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox b/UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox index 7ae62c4bd..10a912e9a 100644 --- a/UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox +++ b/UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox @@ -18,7 +18,7 @@ star - + more_vert @@ -65,6 +65,11 @@ + + mail + close @@ -150,7 +155,11 @@
-
{{$chip.name}}
+
+ {{$chip.name}} +
@@ -166,7 +175,10 @@
-
{{$chip.name}}
+
+ {{$chip.name}} +
diff --git a/UI/WebServerResources/js/Scheduler/Calendar.service.js b/UI/WebServerResources/js/Scheduler/Calendar.service.js index de517b841..a6ff5c0f9 100644 --- a/UI/WebServerResources/js/Scheduler/Calendar.service.js +++ b/UI/WebServerResources/js/Scheduler/Calendar.service.js @@ -432,8 +432,8 @@ /** * @function $reset - * @memberof Mailbox.prototype - * @desc Reset the original state the mailbox's data. + * @memberof Calendar.prototype + * @desc Reset the original state the calendar's data. */ Calendar.prototype.$reset = function() { var _this = this; diff --git a/UI/WebServerResources/js/Scheduler/ComponentController.js b/UI/WebServerResources/js/Scheduler/ComponentController.js index 280c9e04e..6f28c18d8 100644 --- a/UI/WebServerResources/js/Scheduler/ComponentController.js +++ b/UI/WebServerResources/js/Scheduler/ComponentController.js @@ -6,8 +6,8 @@ /** * @ngInject */ - ComponentController.$inject = ['$rootScope', '$mdDialog', 'Calendar', 'Component', 'AddressBook', 'Alarm', 'stateComponent']; - function ComponentController($rootScope, $mdDialog, Calendar, Component, AddressBook, Alarm, stateComponent) { + ComponentController.$inject = ['$rootScope', '$mdDialog', 'Calendar', 'Component', 'AddressBook', 'Alarm', 'Account', 'stateComponent']; + function ComponentController($rootScope, $mdDialog, Calendar, Component, AddressBook, Alarm, Account, stateComponent) { var vm = this, component; vm.calendarService = Calendar; @@ -15,6 +15,8 @@ vm.component = stateComponent; vm.close = close; vm.cardFilter = cardFilter; + vm.newMessageWithAllRecipients = newMessageWithAllRecipients; + vm.newMessageWithRecipient = newMessageWithRecipient; vm.edit = edit; vm.editAllOccurrences = editAllOccurrences; vm.reply = reply; @@ -44,6 +46,50 @@ return AddressBook.$cards; } + function newMessageWithAllRecipients($event) { + var recipients = _.map(vm.component.attendees, function(attendee) { + return attendee.name + " <" + attendee.email + ">"; + }); + _newMessage($event, recipients); + } + + function newMessageWithRecipient($event, name, email) { + _newMessage($event, [name + " <" + email + ">"]); + } + + function _newMessage($event, recipients) { + Account.$findAll().then(function(accounts) { + var account = _.find(accounts, function(o) { + if (o.id === 0) + return o; + }); + + // We must initialize the Account with its mailbox + // list before proceeding with message's creation + account.$getMailboxes().then(function(mailboxes) { + account.$newMessage().then(function(message) { + angular.extend(message.editable, { to: recipients, subject: vm.component.summary }); + $mdDialog.show({ + parent: angular.element(document.body), + targetEvent: $event, + clickOutsideToClose: false, + escapeToClose: false, + templateUrl: '../Mail/UIxMailEditor', + controller: 'MessageEditorController', + controllerAs: 'editor', + locals: { + stateAccount: account, + stateMessage: message + } + }); + }); + }); + }); + + $event.preventDefault(); + $event.stopPropagation(); + } + function edit() { var type = (vm.component.component == 'vevent')? 'Appointment':'Task'; $mdDialog.hide().then(function() {