From: Thomas Lamprecht Date: Fri, 2 Jul 2021 22:44:01 +0000 (+0200) Subject: ui: move download URL to storage window into own file X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=01366f9e8c129b7248562577d04f768b12e1a894;hp=af3c0a9287030c26b8bbf99fd5031c0e69ea4e31;p=pve-manager.git ui: move download URL to storage window into own file As 200 lines is a bit much for the content view, i.e., basically growing it by 50% in size for a very specific feature is not ideal. Signed-off-by: Thomas Lamprecht --- diff --git a/www/manager6/Makefile b/www/manager6/Makefile index ecd6657e..75d355a5 100644 --- a/www/manager6/Makefile +++ b/www/manager6/Makefile @@ -105,6 +105,7 @@ JSSRC= \ window/Settings.js \ window/Snapshot.js \ window/StartupEdit.js \ + window/DownloadUrlToStorage.js \ window/Wizard.js \ ha/Fencing.js \ ha/GroupEdit.js \ diff --git a/www/manager6/storage/ContentView.js b/www/manager6/storage/ContentView.js index 4dc394a0..3f5b686b 100644 --- a/www/manager6/storage/ContentView.js +++ b/www/manager6/storage/ContentView.js @@ -191,206 +191,6 @@ Ext.define('PVE.storage.Upload', { }, }); -Ext.define('PVE.storage.DownloadUrl', { - extend: 'Proxmox.window.Edit', - alias: 'widget.pveStorageDownloadUrl', - mixins: ['Proxmox.Mixin.CBind'], - - isCreate: true, - - method: 'POST', - - showTaskViewer: true, - - title: gettext('Download from URL'), - submitText: gettext('Download'), - - cbindData: function(initialConfig) { - var me = this; - return { - nodename: me.nodename, - storage: me.storage, - content: me.content, - }; - }, - - cbind: { - url: '/nodes/{nodename}/storage/{storage}/download-url', - }, - - controller: { - xclass: 'Ext.app.ViewController', - - urlChange: function(field) { - let me = this; - let view = me.getView(); - field = view.down('[name=url]'); - field.setValidation(gettext("Please check URL")); - field.validate(); - view.setValues({ - size: gettext("unknown"), - mimetype: gettext("unknown"), - }); - }, - - urlCheck: function(field) { - let me = this; - let view = me.getView(); - field = view.down('[name=url]'); - view.setValues({ - size: gettext("unknown"), - mimetype: gettext("unknown"), - }); - Proxmox.Utils.API2Request({ - url: `/nodes/${view.nodename}/query-url-metadata`, - method: 'GET', - params: { - url: field.getValue(), - 'verify-certificates': view.getValues()['verify-certificates'], - }, - waitMsgTarget: view, - failure: function(res, opt) { - field.setValidation(res.result.message); - field.validate(); - }, - success: function(res, opt) { - field.setValidation(); - field.validate(); - - let data = res.result.data; - view.setValues({ - filename: data.filename || "", - size: (data.size && Proxmox.Utils.format_size(data.size)) || gettext("unknown"), - mimetype: data.mimetype || gettext("unknown"), - }); - }, - }); - }, - - hashChange: function(field) { - let checksum = Ext.getCmp('downloadUrlChecksum'); - if (field.getValue() === '__default__') { - checksum.setDisabled(true); - checksum.setValue(""); - checksum.allowBlank = true; - } else { - checksum.setDisabled(false); - checksum.allowBlank = false; - } - }, - }, - - items: [ - { - xtype: 'inputpanel', - border: false, - columnT: [ - { - xtype: 'fieldcontainer', - layout: 'hbox', - fieldLabel: gettext('URL'), - items: [ - { - xtype: 'textfield', - name: 'url', - allowBlank: false, - flex: 1, - listeners: { - change: 'urlChange', - }, - }, - { - xtype: 'button', - name: 'check', - text: gettext('Check'), - margin: '0 0 0 5', - listeners: { - click: 'urlCheck', - }, - }, - ], - }, - { - xtype: 'textfield', - name: 'filename', - allowBlank: false, - fieldLabel: gettext('File name'), - }, - ], - column1: [ - { - xtype: 'displayfield', - name: 'size', - fieldLabel: gettext('File size'), - value: gettext('unknown'), - }, - ], - column2: [ - { - xtype: 'displayfield', - name: 'mimetype', - fieldLabel: gettext('MIME type'), - value: gettext('unknown'), - }, - ], - advancedColumn1: [ - { - xtype: 'pveHashAlgorithmSelector', - name: 'checksum-algorithm', - fieldLabel: gettext('Hash algorithm'), - allowBlank: true, - hasNoneOption: true, - value: '__default__', - listeners: { - change: 'hashChange', - }, - }, - { - xtype: 'textfield', - name: 'checksum', - fieldLabel: gettext('Checksum'), - allowBlank: true, - disabled: true, - emptyText: gettext('none'), - id: 'downloadUrlChecksum', - }, - ], - advancedColumn2: [ - { - xtype: 'proxmoxcheckbox', - name: 'verify-certificates', - fieldLabel: gettext('Verify certificates'), - uncheckedValue: 0, - checked: true, - listeners: { - change: 'urlChange', - }, - }, - ], - }, - { - xtype: 'hiddenfield', - name: 'content', - cbind: { - value: '{content}', - }, - }, - ], - - initComponent: function() { - var me = this; - - if (!me.nodename) { - throw "no node name specified"; - } - if (!me.storage) { - throw "no storage ID specified"; - } - - me.callParent(); - }, -}); - Ext.define('PVE.storage.ContentView', { extend: 'Ext.grid.GridPanel', @@ -473,7 +273,7 @@ Ext.define('PVE.storage.ContentView', { text: gettext('Download from URL'), disabled: !me.enableDownloadUrlButton, handler: function() { - Ext.create('PVE.storage.DownloadUrl', { + Ext.create('PVE.window.DownloadUrlToStorage', { nodename: nodename, storage: storage, content: content, diff --git a/www/manager6/window/DownloadUrlToStorage.js b/www/manager6/window/DownloadUrlToStorage.js new file mode 100644 index 00000000..69788b6c --- /dev/null +++ b/www/manager6/window/DownloadUrlToStorage.js @@ -0,0 +1,200 @@ +Ext.define('PVE.window.DownloadUrlToStorage', { + extend: 'Proxmox.window.Edit', + alias: 'widget.pveStorageDownloadUrl', + mixins: ['Proxmox.Mixin.CBind'], + + isCreate: true, + + method: 'POST', + + showTaskViewer: true, + + title: gettext('Download from URL'), + submitText: gettext('Download'), + + cbindData: function(initialConfig) { + var me = this; + return { + nodename: me.nodename, + storage: me.storage, + content: me.content, + }; + }, + + cbind: { + url: '/nodes/{nodename}/storage/{storage}/download-url', + }, + + controller: { + xclass: 'Ext.app.ViewController', + + urlChange: function(field) { + let me = this; + let view = me.getView(); + field = view.down('[name=url]'); + field.setValidation(gettext("Please check URL")); + field.validate(); + view.setValues({ + size: gettext("unknown"), + mimetype: gettext("unknown"), + }); + }, + + urlCheck: function(field) { + let me = this; + let view = me.getView(); + field = view.down('[name=url]'); + view.setValues({ + size: gettext("unknown"), + mimetype: gettext("unknown"), + }); + Proxmox.Utils.API2Request({ + url: `/nodes/${view.nodename}/query-url-metadata`, + method: 'GET', + params: { + url: field.getValue(), + 'verify-certificates': view.getValues()['verify-certificates'], + }, + waitMsgTarget: view, + failure: function(res, opt) { + field.setValidation(res.result.message); + field.validate(); + }, + success: function(res, opt) { + field.setValidation(); + field.validate(); + + let data = res.result.data; + view.setValues({ + filename: data.filename || "", + size: (data.size && Proxmox.Utils.format_size(data.size)) || gettext("unknown"), + mimetype: data.mimetype || gettext("unknown"), + }); + }, + }); + }, + + hashChange: function(field) { + let checksum = Ext.getCmp('downloadUrlChecksum'); + if (field.getValue() === '__default__') { + checksum.setDisabled(true); + checksum.setValue(""); + checksum.allowBlank = true; + } else { + checksum.setDisabled(false); + checksum.allowBlank = false; + } + }, + }, + + items: [ + { + xtype: 'inputpanel', + border: false, + columnT: [ + { + xtype: 'fieldcontainer', + layout: 'hbox', + fieldLabel: gettext('URL'), + items: [ + { + xtype: 'textfield', + name: 'url', + allowBlank: false, + flex: 1, + listeners: { + change: 'urlChange', + }, + }, + { + xtype: 'button', + name: 'check', + text: gettext('Check'), + margin: '0 0 0 5', + listeners: { + click: 'urlCheck', + }, + }, + ], + }, + { + xtype: 'textfield', + name: 'filename', + allowBlank: false, + fieldLabel: gettext('File name'), + }, + ], + column1: [ + { + xtype: 'displayfield', + name: 'size', + fieldLabel: gettext('File size'), + value: gettext('unknown'), + }, + ], + column2: [ + { + xtype: 'displayfield', + name: 'mimetype', + fieldLabel: gettext('MIME type'), + value: gettext('unknown'), + }, + ], + advancedColumn1: [ + { + xtype: 'pveHashAlgorithmSelector', + name: 'checksum-algorithm', + fieldLabel: gettext('Hash algorithm'), + allowBlank: true, + hasNoneOption: true, + value: '__default__', + listeners: { + change: 'hashChange', + }, + }, + { + xtype: 'textfield', + name: 'checksum', + fieldLabel: gettext('Checksum'), + allowBlank: true, + disabled: true, + emptyText: gettext('none'), + id: 'downloadUrlChecksum', + }, + ], + advancedColumn2: [ + { + xtype: 'proxmoxcheckbox', + name: 'verify-certificates', + fieldLabel: gettext('Verify certificates'), + uncheckedValue: 0, + checked: true, + listeners: { + change: 'urlChange', + }, + }, + ], + }, + { + xtype: 'hiddenfield', + name: 'content', + cbind: { + value: '{content}', + }, + }, + ], + + initComponent: function() { + var me = this; + + if (!me.nodename) { + throw "no node name specified"; + } + if (!me.storage) { + throw "no storage ID specified"; + } + + me.callParent(); + }, +}); +