]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/window/SafeDestroy.js
drop jslint lines
[pve-manager.git] / www / manager6 / window / SafeDestroy.js
index 8dd1f8922bbaa7fee4c6fd870a97b5b8f6677d7f..cc32f6e0767e8cf5661ef4b7cedd5d3e160c0827 100644 (file)
@@ -1,5 +1,5 @@
 /* Popup a message window
- * where the user has to manually enter the ressource ID
+ * where the user has to manually enter the resource ID
  * to enable the destroy button
  */
 Ext.define('PVE.window.SafeDestroy', {
@@ -11,15 +11,29 @@ Ext.define('PVE.window.SafeDestroy', {
     buttonAlign: 'center',
     bodyPadding: 10,
     width: 450,
-    layout: 'hbox',
+    layout: { type:'hbox' },
     defaultFocus: 'confirmField',
+    showProgress: false,
 
     config: {
        item: {
            id: undefined,
            type: undefined
        },
-       url: undefined
+       url: undefined,
+       params: {}
+    },
+
+    getParams: function() {
+       var me = this;
+       var purgeCheckbox = me.lookupReference('purgeCheckbox');
+       if (purgeCheckbox.checked) {
+           me.params.purge = 1;
+       }
+       if (Ext.Object.isEmpty(me.params)) {
+           return '';
+       }
+       return '?' + Ext.Object.toQueryString(me.params);
     },
 
     controller: {
@@ -31,7 +45,7 @@ Ext.define('PVE.window.SafeDestroy', {
                change: function(f, value) {
                    var view = this.getView();
                    var removeButton = this.lookupReference('removeButton');
-                   if (value === view.getItem().id) {
+                   if (value === view.getItem().id.toString()) {
                        removeButton.enable();
                    } else {
                        removeButton.disable();
@@ -47,15 +61,36 @@ Ext.define('PVE.window.SafeDestroy', {
            'button[reference=removeButton]': {
                click: function() {
                    var view = this.getView();
-                   PVE.Utils.API2Request({
-                       url: view.getUrl(),
+                   Proxmox.Utils.API2Request({
+                       url: view.getUrl() + view.getParams(),
                        method: 'DELETE',
                        waitMsgTarget: view,
                        failure: function(response, opts) {
+                           view.close();
                            Ext.Msg.alert('Error', response.htmlStatus);
                        },
-                       callback: function() {
-                           view.close();
+                       success: function(response, options) {
+                           var hasProgressBar = view.showProgress &&
+                               response.result.data ? true : false;
+
+                           if (hasProgressBar) {
+                               // stay around so we can trigger our close events
+                               // when background action is completed
+                               view.hide();
+
+                               var upid = response.result.data;
+                               var win = Ext.create('Proxmox.window.TaskProgress', {
+                                   upid: upid,
+                                   listeners: {
+                                       destroy: function () {
+                                           view.close();
+                                       }
+                                   }
+                               });
+                               win.show();
+                           } else {
+                               view.close();
+                           }
                        }
                    });
                }
@@ -68,7 +103,7 @@ Ext.define('PVE.window.SafeDestroy', {
            xtype: 'component',
            cls: [ Ext.baseCSSPrefix + 'message-box-icon',
                   Ext.baseCSSPrefix + 'message-box-warning',
-                  Ext.baseCSSPrefix + 'dlg-icon'],
+                  Ext.baseCSSPrefix + 'dlg-icon']
        },
        {
            xtype: 'container',
@@ -85,13 +120,24 @@ Ext.define('PVE.window.SafeDestroy', {
                {
                    itemId: 'confirmField',
                    reference: 'confirmField',
-                   xtype: 'numberfield',
+                   xtype: 'textfield',
                    name: 'confirm',
                    labelWidth: 300,
                    hideTrigger: true,
                    allowBlank: false
+               },
+               {
+                   xtype: 'proxmoxcheckbox',
+                   name: 'purge',
+                   reference: 'purgeCheckbox',
+                   boxLabel: gettext('Purge'),
+                   checked: false,
+                   autoEl: {
+                       tag: 'div',
+                       'data-qtip': gettext('Remove from replication and backup jobs')
+                   }
                }
-           ],
+           ]
        }
     ],
     buttons: [
@@ -121,15 +167,25 @@ Ext.define('PVE.window.SafeDestroy', {
        var msg;
 
        if (item.type === 'VM') {
-           msg = PVE.Utils.format_task_description('qmdestroy', item.id);
+           msg = Proxmox.Utils.format_task_description('qmdestroy', item.id);
        } else if (item.type === 'CT') {
-           msg = PVE.Utils.format_task_description('vzdestroy', item.id);
+           msg = Proxmox.Utils.format_task_description('vzdestroy', item.id);
+       } else if (item.type === 'CephPool') {
+           msg = Proxmox.Utils.format_task_description('cephdestroypool', item.id);
+       } else if (item.type === 'Image') {
+           msg = Proxmox.Utils.format_task_description('unknownimgdel', item.id);
        } else {
-           throw "unknown VM type specified";
+           throw "unknown item type specified";
        }
 
        messageCmp.setHtml(msg);
 
+       if (!(item.type === 'VM' || item.type === 'CT')) {
+           let purgeCheckbox = me.lookupReference('purgeCheckbox');
+           purgeCheckbox.setDisabled(true);
+           purgeCheckbox.setHidden(true);
+       }
+
        var confirmField = me.lookupReference('confirmField');
        msg = gettext('Please enter the ID to confirm') +
            ' (' + item.id + ')';