Ext.namespace('Zarafa.plugins.origrcv'); /** * @class Zarafa.plugins.origrcv.OrigRcvPlugin * @extends Zarafa.core.Plugin */ Zarafa.plugins.origrcv.OrigRcvPlugin = Ext.extend(Zarafa.core.Plugin, { /* * Called after constructor. * Registers insertion points. * @protected */ initPlugin: function() { Zarafa.plugins.origrcv.OrigRcvPlugin.superclass.initPlugin.apply(this, arguments); // Insertion point which shows the original to header this.registerInsertionPoint('previewpanel.toolbar.detaillinks', this.showOriginalReceiver, this); }, /** * Displays Original To: header information in the previewpanel * * @return {Object} a box which on record update displays to header */ showOriginalReceiver: function() { return { xtype: 'container', autoEl: 'div', style: 'margin-top: 6px;', cls: 'preview-header-recipientbox', plugins: ['zarafa.recordcomponentupdaterplugin'], scope: this, update: this.onMailDataOpen, }; }, /** * Function which displays information in the previewpanel. * * @param {Zarafa.core.data.IPMRecord} record record which is displayed * @param {Boolean} contentReset force the component to perform a full update of the data. */ onMailDataOpen: function(record, resetContent) { var label = this.getEl(); // Set label to empty value by default, to override previous S/MIME message text label.update(""); // empty div label.hide(); if (record.opened) { var toRegex = /^To\s*:\s*(.*)$/igm; // parse "to" header var headers = record.get('transport_message_headers'); var toMatches = toRegex.exec(headers); if (toMatches.length == 2 && toMatches[1] != "") { var addrListRegex = /\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/ig; // split email address list var emailAddresses = []; var emailAddress; while ((emailAddress = addrListRegex.exec(toMatches[1])) != null) { if (emailAddresses.indexOf(emailAddress[0]) == -1) { emailAddresses.push(emailAddress[0]); } } // only display if receiver addresses differ if (emailAddresses.length == 1 && !(emailAddresses[0] == record.get('display_to') || emailAddresses[0] == record.get('received_by_email_address'))) { label.update("Original To: " + emailAddresses[0]); label.show(); } else if (emailAddresses.length > 1) { var addressList = ""; for (var i = 0; i < emailAddresses.length; i++) { if (i != 0) addressList += ", "; addressList += emailAddresses[i]; } label.update("Original To: " + addressList); label.show(); } } } }, }); // PLUGIN ENTRY POINT Zarafa.onReady(function() { container.registerPlugin(new Zarafa.core.PluginMetaData({ name: 'origrcv', displayName: _('Original Receiver Plugin'), pluginConstructor: Zarafa.plugins.origrcv.OrigRcvPlugin })); });