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}}
+
@@ -166,7 +175,10 @@
- {{$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() {