]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/SpamQuarantine.js
quarantine: display how many mails are selected
[pmg-gui.git] / js / SpamQuarantine.js
index ec0182d68e9ee399ce90c147605919777f7253e2..3416ac0bbef76ab547723070043b47a123d0924c 100644 (file)
@@ -48,6 +48,15 @@ Ext.define('PMG.SpamQuarantine', {
     // 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',
@@ -65,27 +74,33 @@ Ext.define('PMG.SpamQuarantine', {
            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);
        },
@@ -139,13 +154,17 @@ Ext.define('PMG.SpamQuarantine', {
            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) {
@@ -218,6 +237,7 @@ Ext.define('PMG.SpamQuarantine', {
        {
            title: gettext('Spam Quarantine'),
            xtype: 'pmgQuarantineList',
+           selModel: 'checkboxmodel',
            emailSelection: true,
            reference: 'list',
            region: 'west',
@@ -294,6 +314,20 @@ Ext.define('PMG.SpamQuarantine', {
                            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'),
@@ -324,7 +358,12 @@ Ext.define('PMG.SpamQuarantine', {
                    xtype: 'pmgSpamInfoGrid',
                    border: false,
                    reference: 'spaminfo'
-               }
+               },
+               {
+                   xtype: 'pmgMailInfo',
+                   hidden: true,
+                   reference: 'mailinfo',
+               },
            ]
        }
     ]