[pmg-devel] [PATCH pmg-gui] ui: queue: refactor deletion/delivery

Stoiko Ivanov s.ivanov at proxmox.com
Mon Sep 29 09:34:00 CEST 2025


both actions have almost the same structure and calls, so unify this
in the doAction field, and use it for both deliver and delete.

the messages for the info-modal were kept as a whole string for both
assuming that this will provide a bit more context to translators.

Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
---
 js/PostfixMailQueue.js | 50 +++++++++++++-----------------------------
 1 file changed, 15 insertions(+), 35 deletions(-)

diff --git a/js/PostfixMailQueue.js b/js/PostfixMailQueue.js
index ec39df9..2b908d9 100644
--- a/js/PostfixMailQueue.js
+++ b/js/PostfixMailQueue.js
@@ -58,16 +58,16 @@ Ext.define('PMG.Postfix.MailQueue', {
             view.delayFilterTask.delay(500);
         },
 
-        onFlush: function (button, event, rec) {
+        doAction: function(action, message) {
             var view = this.getView();
             let sel = view.getSelectionModel().getSelection();
             let ids = sel.map((r) => r.get('queue_id'));
 
-            let do_deliver = function () {
+            let do_action = function(){
                 Proxmox.Utils.API2Request({
                     url: `/api2/extjs/nodes/${view.nodename}/postfix/queue/${view.queuename}`,
                     method: 'POST',
-                    params: { action: 'deliver', ids: ids.join(';') },
+                    params: { action: action, ids: ids.join(';') },
                     waitMsgTarget: view,
                     success: () => {
                         view.selModel.deselectAll();
@@ -77,49 +77,29 @@ Ext.define('PMG.Postfix.MailQueue', {
                 });
             }
 
-            if (sel.length === 1) {
-                do_deliver();
-            } else if (sel.length > 1) {
+            if (sel.length === 1 && action === 'deliver') {
+                do_action(action, ids);
+            } else {
                 Ext.Msg.show({
                     title: gettext('Confirm'),
-                    message: Ext.String.format(gettext("Deliver {0} selected mails now?"), ids.length),
+                    message: Ext.String.format(message, ids.length),
                     buttons: Ext.Msg.YESNO,
                     icon: Ext.Msg.INFO,
                     fn: function (btn) {
-                        if (btn === 'yes') { do_deliver(); }
+                        if (btn === 'yes') { do_action(action, ids); }
                     },
                 });
             }
         },
 
-        onRemove: function (button, event, rec) {
-            var view = this.getView();
-            let sel = view.getSelectionModel().getSelection();
-            let ids = sel.map((r) => r.get('queue_id'));
-
-            let do_delete = function () {
-                Proxmox.Utils.API2Request({
-                    url: `/api2/extjs/nodes/${view.nodename}/postfix/queue/${view.queuename}`,
-                    method: 'POST',
-                    params: { action: 'delete', ids: ids.join(';') },
-                    waitMsgTarget: view,
-                    success: () => {
-                        view.selModel.deselectAll();
-                        view.store.load();
-                    },
-                    failure: (response) => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
-                });
-            }
+        onFlush: function (button, event, rec) {
+            let message = gettext("Deliver {0} selected mails?");
+            this.doAction('deliver', message);
+        },
 
-            Ext.Msg.show({
-                title: gettext('Confirm'),
-                message: Ext.String.format(gettext("Delete {0} selected mails?"), ids.length),
-                buttons: Ext.Msg.YESNO,
-                icon: Ext.Msg.INFO,
-                fn: function (btn) {
-                    if (btn === 'yes') { do_delete(); }
-                },
-            });
+        onRemove: function (button, event, rec) {
+            let message = gettext("Delete {0} selected mails?");
+            this.doAction('delete', message);
         },
 
         onHeaders: function (button, event, rec) {
-- 
2.47.3





More information about the pmg-devel mailing list