// from mail link
cselect: undefined,
+ viewModel: {
+ parent: null,
+ data: {
+ mailid: '',
+ },
+ formulas: {
+ downloadMailURL: get => '/api2/json/quarantine/download?mailid=' + encodeURIComponent(get('mailid')),
+ },
+ },
controller: {
xclass: 'Ext.app.ViewController',
preview.setDisabled(false);
this.lookupReference('raw').setDisabled(false);
this.lookupReference('spam').setDisabled(false);
+ this.lookupReference('download').setDisabled(false);
preview.update("<iframe frameborder=0 width=100% height=100% sandbox='allow-same-origin' src='" + url +"'></iframe>");
},
- multiSelect: function() {
+ multiSelect: function(selection) {
var preview = this.lookupReference('preview');
var raw = this.lookupReference('raw');
var spam = this.lookupReference('spam');
var spaminfo = this.lookupReference('spaminfo');
+ var mailinfo = this.lookupReference('mailinfo');
+ var download = this.lookupReference('download');
preview.setDisabled(false);
- preview.update('<h3>' + gettext('Multiple E-Mails selected') + '</h3>');
+ preview.update(`<h3 style="padding-left:5px;">${gettext('Multiple E-Mails selected')} (${selection.length})</h3>`);
raw.setDisabled(true);
spam.setDisabled(true);
spam.setPressed(false);
spaminfo.setVisible(false);
+ mailinfo.setVisible(false);
+ download.setDisabled(true);
},
toggleRaw: function(button) {
var me = this;
- var list = this.lookupReference('list');
+ var list = me.lookupReference('list');
var rec = list.selModel.getSelection()[0];
+ me.lookupReference('mailinfo').setVisible(me.raw);
me.raw = !me.raw;
me.updatePreview(me.raw, rec);
},
var list = this.lookupReference('list');
var selection = list.selModel.getSelection();
if (selection.length > 1) {
- me.multiSelect();
+ me.multiSelect(selection);
return;
}
- var rec = list.selModel.getSelection()[0];
+ var rec = selection[0] || {};
+
+ me.getViewModel().set('mailid', rec.data ? rec.data.id : '');
me.updatePreview(me.raw || false, rec);
me.lookupReference('spaminfo').setID(rec);
+ me.lookupReference('mailinfo').setVisible(!!rec.data && !me.raw);
+ me.lookupReference('mailinfo').update(rec.data);
},
toggleSpamInfo: function(btn) {
iconCls: 'fa fa-bullhorn'
},
'->',
+ {
+ xtype: 'button',
+ reference: 'download',
+ text: gettext('Download'),
+ setDownload: function(id) {
+ this.el.dom.download = id + ".eml";
+ },
+ bind: {
+ href: '{downloadMailURL}',
+ download: '{mailid}',
+ },
+ iconCls: 'fa fa-download'
+ },
+ '-',
{
reference: 'whitelist',
text: gettext('Whitelist'),
xtype: 'pmgSpamInfoGrid',
border: false,
reference: 'spaminfo'
- }
+ },
+ {
+ xtype: 'pmgMailInfo',
+ hidden: true,
+ reference: 'mailinfo',
+ },
]
}
]