]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/node/Subscription.js
fix #5093: ui: acme: expose custom directory option
[pve-manager.git] / www / manager6 / node / Subscription.js
index e4a35874213ed951c42c767d49c5e476ab325ae4..6f3f7dab7f604a026362d1ffe4ec28009dcaf1e3 100644 (file)
@@ -1,21 +1,27 @@
-/*global Blob*/
 Ext.define('PVE.node.SubscriptionKeyEdit', {
     extend: 'Proxmox.window.Edit',
+
     title: gettext('Upload Subscription Key'),
-    width: 300,
+    width: 350,
+
     items: {
        xtype: 'textfield',
        name: 'key',
        value: '',
-       fieldLabel: gettext('Subscription Key')
+       fieldLabel: gettext('Subscription Key'),
+       labelWidth: 120,
+       getSubmitValue: function() {
+           return this.processRawValue(this.getRawValue())?.trim();
+       },
     },
-    initComponent : function() {
+
+    initComponent: function() {
        var me = this;
 
        me.callParent();
 
        me.load();
-    }
+    },
 });
 
 Ext.define('PVE.node.Subscription', {
@@ -26,27 +32,25 @@ Ext.define('PVE.node.Subscription', {
     onlineHelp: 'getting_help',
 
     viewConfig: {
-       enableTextSelection: true
+       enableTextSelection: true,
     },
 
     showReport: function() {
        var me = this;
-       var nodename = me.pveSelNode.data.node;
 
        var getReportFileName = function() {
            var now = Ext.Date.format(new Date(), 'D-d-F-Y-G-i');
-           return me.nodename + '-report-'  + now + '.txt';
+           return `${me.nodename}-pve-report-${now}.txt`;
        };
 
        var view = Ext.createWidget('component', {
            itemId: 'system-report-view',
            scrollable: true,
            style: {
-               'background-color': 'white',
                'white-space': 'pre',
                'font-family': 'monospace',
-               padding: '5px'
-           }
+               padding: '5px',
+           },
        });
 
        var reportWindow = Ext.create('Ext.window.Window', {
@@ -56,30 +60,30 @@ Ext.define('PVE.node.Subscription', {
            layout: 'fit',
            modal: true,
            buttons: [
-                       '->',
-                       {
-                           text: gettext('Download'),
-                           handler: function() {
-                               var fileContent = Ext.String.htmlDecode(reportWindow.getComponent('system-report-view').html);
-                               var fileName = getReportFileName();
-
-                               // Internet Explorer
-                               if (window.navigator.msSaveOrOpenBlob) {
-                                   navigator.msSaveOrOpenBlob(new Blob([fileContent]), fileName);
-                               } else {
-                                   var element = document.createElement('a');
-                                   element.setAttribute('href', 'data:text/plain;charset=utf-8,'
-                                     + encodeURIComponent(fileContent));
-                                   element.setAttribute('download', fileName);
-                                   element.style.display = 'none';
-                                   document.body.appendChild(element);
-                                   element.click();
-                                   document.body.removeChild(element);
-                               }
-                           }
+               '->',
+               {
+                   text: gettext('Download'),
+                   handler: function() {
+                       var fileContent = Ext.String.htmlDecode(reportWindow.getComponent('system-report-view').html);
+                       var fileName = getReportFileName();
+
+                       // Internet Explorer
+                       if (window.navigator.msSaveOrOpenBlob) {
+                           navigator.msSaveOrOpenBlob(new Blob([fileContent]), fileName);
+                       } else {
+                           var element = document.createElement('a');
+                           element.setAttribute('href', 'data:text/plain;charset=utf-8,' +
+                             encodeURIComponent(fileContent));
+                           element.setAttribute('download', fileName);
+                           element.style.display = 'none';
+                           document.body.appendChild(element);
+                           element.click();
+                           document.body.removeChild(element);
                        }
-               ],
-           items: view
+                   },
+               },
+           ],
+           items: view,
        });
 
        Proxmox.Utils.API2Request({
@@ -93,104 +97,101 @@ Ext.define('PVE.node.Subscription', {
                var report = Ext.htmlEncode(response.result.data);
                reportWindow.show();
                view.update(report);
-           }
+           },
        });
     },
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
 
        if (!me.nodename) {
            throw "no node name specified";
        }
 
-       var reload = function() {
-           me.rstore.load();
-       };
-
-       var baseurl = '/nodes/' + me.nodename + '/subscription';
-
-       var render_status = function(value) {
-
-           var message = me.getObjectValue('message');
-
-           if (message) {
-               return value + ": " + message;
-           }
-           return value;
-       };
-
-       var rows = {
+       let rows = {
            productname: {
-               header: gettext('Type')
+               header: gettext('Type'),
            },
            key: {
-               header: gettext('Subscription Key')
+               header: gettext('Subscription Key'),
            },
            status: {
                header: gettext('Status'),
-               renderer: render_status
+               renderer: v => {
+                   let message = me.getObjectValue('message');
+                   return message ? `${v}: ${message}` : v;
+               },
            },
            message: {
-               visible: false
+               visible: false,
            },
            serverid: {
-               header: gettext('Server ID')
+               header: gettext('Server ID'),
            },
            sockets: {
-               header: gettext('Sockets')
+               header: gettext('Sockets'),
            },
            checktime: {
                header: gettext('Last checked'),
-               renderer: Proxmox.Utils.render_timestamp
+               renderer: Proxmox.Utils.render_timestamp,
            },
            nextduedate: {
-               header: gettext('Next due date')
-           }
+               header: gettext('Next due date'),
+           },
+           signature: {
+               header: gettext('Signed/Offline'),
+               renderer: v => v ? gettext('Yes') : gettext('No'),
+           },
        };
 
        Ext.apply(me, {
-           url: '/api2/json' + baseurl,
+           url: `/api2/json/nodes/${me.nodename}/subscription`,
            cwidth1: 170,
-           tbar: [ 
+           tbar: [
                {
                    text: gettext('Upload Subscription Key'),
-                   handler: function() {
-                       var win = Ext.create('PVE.node.SubscriptionKeyEdit', {
-                           url: '/api2/extjs/' + baseurl 
-                       });
-                       win.show();
-                       win.on('destroy', reload);
-                   }
+                   handler: () => Ext.create('PVE.node.SubscriptionKeyEdit', {
+                       autoShow: true,
+                       url: `/api2/extjs/nodes/${me.nodename}/subscription`,
+                       listeners: {
+                           destroy: () => me.rstore.load(),
+                       },
+                   }),
                },
                {
                    text: gettext('Check'),
-                   handler: function() {
-                       Proxmox.Utils.API2Request({
-                           params: { force: 1 },
-                           url: baseurl,
-                           method: 'POST',
-                           waitMsgTarget: me,
-                           failure: function(response, opts) {
-                               Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-                           },
-                           callback: reload
-                       });
-                   }
+                   handler: () => Proxmox.Utils.API2Request({
+                       params: { force: 1 },
+                       url: `/nodes/${me.nodename}/subscription`,
+                       method: 'POST',
+                       waitMsgTarget: me,
+                       failure: response => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
+                       callback: () => me.rstore.load(),
+                   }),
+               },
+               {
+                   text: gettext('Remove Subscription'),
+                   xtype: 'proxmoxStdRemoveButton',
+                   confirmMsg: gettext('Are you sure you want to remove the subscription key?'),
+                   baseurl: `/nodes/${me.nodename}/subscription`,
+                   dangerous: true,
+                   selModel: false,
+                   callback: () => me.rstore.load(),
                },
+               '-',
                {
                    text: gettext('System Report'),
                    handler: function() {
-                       Proxmox.Utils.checked_command(function (){ me.showReport(); });
-                   }
-               }
+                       Proxmox.Utils.checked_command(function() { me.showReport(); });
+                   },
+               },
            ],
            rows: rows,
            listeners: {
-               activate: reload
-           }
+               activate: () => me.rstore.load(),
+           },
        });
 
        me.callParent();
-    }
+    },
 });