]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/DownloadUrlToStorage.js
1 Ext
.define('PVE.window.DownloadUrlToStorage', {
2 extend
: 'Proxmox.window.Edit',
3 alias
: 'widget.pveStorageDownloadUrl',
4 mixins
: ['Proxmox.Mixin.CBind'],
12 title
: gettext('Download from URL'),
13 submitText
: gettext('Download'),
15 cbindData: function(initialConfig
) {
18 nodename
: me
.nodename
,
25 url
: '/nodes/{nodename}/storage/{storage}/download-url',
38 xclass
: 'Ext.app.ViewController',
40 urlChange: function(field
) {
42 this.setQueryEnabled();
44 setQueryEnabled: function() {
45 this.getViewModel().set('enableQuery', true);
47 resetMetaInfo: function() {
48 let vm
= this.getViewModel();
50 vm
.set('mimetype', '-');
53 urlCheck: function(field
) {
55 let view
= me
.getView();
57 const queryParam
= view
.getValues();
59 me
.getViewModel().set('enableQuery', false);
61 let urlField
= view
.down('[name=url]');
63 Proxmox
.Utils
.API2Request({
64 url
: `/nodes/${view.nodename}/query-url-metadata`,
68 'verify-certificates': queryParam
['verify-certificates'],
72 urlField
.setValidation(res
.result
.message
);
74 Ext
.MessageBox
.alert(gettext('Error'), res
.htmlStatus
);
75 // re-enable so one can directly requery, e.g., if it was just a network hiccup
78 success: function(res
, opt
) {
79 urlField
.setValidation();
82 let data
= res
.result
.data
;
84 let filename
= data
.filename
|| "";
85 let compression
= '__default__';
86 if (view
.content
=== 'iso') {
87 const matches
= filename
.match(/^(.+)\.(gz|lzo|zst)$/i);
89 filename
= matches
[1];
90 compression
= matches
[2].toLowerCase();
97 size
: (data
.size
&& Proxmox
.Utils
.format_size(data
.size
)) || gettext("Unknown"),
98 mimetype
: data
.mimetype
|| gettext("Unknown"),
104 hashChange: function(field
) {
105 let checksum
= Ext
.getCmp('downloadUrlChecksum');
106 if (field
.getValue() === '__default__') {
107 checksum
.setDisabled(true);
108 checksum
.setValue("");
109 checksum
.allowBlank
= true;
111 checksum
.setDisabled(false);
112 checksum
.allowBlank
= false;
121 onGetValues: function(values
) {
122 if (typeof values
.checksum
=== 'string') {
123 values
.checksum
= values
.checksum
.trim();
129 xtype
: 'fieldcontainer',
131 fieldLabel
: gettext('URL'),
136 emptyText
: gettext("Enter URL to download"),
146 text
: gettext('Query URL'),
149 disabled
: '{!enableQuery}',
161 fieldLabel
: gettext('File name'),
162 emptyText
: gettext("Please (re-)query URL to get meta information"),
167 xtype
: 'displayfield',
169 fieldLabel
: gettext('File size'),
177 xtype
: 'displayfield',
179 fieldLabel
: gettext('MIME type'),
187 xtype
: 'pveHashAlgorithmSelector',
188 name
: 'checksum-algorithm',
189 fieldLabel
: gettext('Hash algorithm'),
192 value
: '__default__',
194 change
: 'hashChange',
200 fieldLabel
: gettext('Checksum'),
203 emptyText
: gettext('none'),
204 id
: 'downloadUrlChecksum',
209 xtype
: 'proxmoxcheckbox',
210 name
: 'verify-certificates',
211 fieldLabel
: gettext('Verify certificates'),
215 change
: 'setQueryEnabled',
219 xtype
: 'proxmoxKVComboBox',
221 fieldLabel
: gettext('Decompression algorithm'),
225 value
: '__default__',
227 ['__default__', Proxmox
.Utils
.NoneText
],
233 hidden
: get => get('content') !== 'iso',
239 xtype
: 'hiddenfield',
247 initComponent: function() {
251 throw "no node name specified";
254 throw "no storage ID specified";