feat(mail): Add 'View raw message' mail contextual option. This option open message in a popup without HTML mail CSS content modification.

This commit is contained in:
smizrahi
2024-05-22 10:15:58 +02:00
parent 9eb8039698
commit 6ac8525bfe
11 changed files with 107 additions and 3 deletions
@@ -68,6 +68,19 @@
stateMessage: stateMessage
}
})
.state('mail.account.mailbox.messageRaw', {
url: '/:messageId/viewRaw',
views: {
'message@': {
templateUrl: 'UIxMailViewTemplate', // UI/Templates/MailerUI/UIxMailViewTemplate.wox
controller: 'MessageController',
controllerAs: 'viewer'
}
},
resolve: {
stateMessage: stateMessageRaw
}
})
.state('mail.account.mailbox.message.edit', {
url: '/edit',
views: {
@@ -254,6 +267,18 @@
}
}
/**
* @ngInject
*/
stateMessageRaw.$inject = ['encodeUriFilter', '$stateParams', 'stateMailbox', 'Message'];
function stateMessageRaw(encodeUriFilter, $stateParams, stateMailbox, Message) {
var data, message;
data = { uid: $stateParams.messageId.toString() };
message = new Message(stateMailbox.$account.id, stateMailbox, data);
return message.$reload({ useCache: false, raw: true });
}
/**
* @ngInject
*/
@@ -792,7 +792,7 @@
* @function $reload
* @memberof Message.prototype
* @desc Fetch the viewable message body along with other metadata such as the list of attachments.
* @param {object} [options] - set {useCache: true} to use already fetched data
* @param {object} [options] - set {useCache: true} to use already fetched data, {raw: true} to remove web mail alteration
* @returns a promise of the HTTP operation
*/
Message.prototype.$reload = function (options) {
@@ -813,7 +813,10 @@
return this;
}
futureMessageData = Message.$$resource.fetch(this.$absolutePath(options), 'view');
if (options && options.raw)
futureMessageData = Message.$$resource.fetch(this.$absolutePath(options), 'viewRaw');
else
futureMessageData = Message.$$resource.fetch(this.$absolutePath(options), 'view');
return this.$unwrap(futureMessageData);
};
@@ -544,6 +544,10 @@
}
};
this.activateRawContent = function ($event) {
this.openInPopup('viewRaw');
};
this.print = function($event) {
$window.print();
};