]>
git.proxmox.com Git - proxmox-backup.git/blob - www/window/BackupFileDownloader.js
1 Ext
.define('PBS.window.BackupFileDownloader', {
2 extend
: 'Ext.window.Window',
3 alias
: 'widget.pbsBackupFileDownloader',
5 title
: gettext('Download Files'),
18 xclass
: 'Ext.app.ViewController',
20 buildUrl: function(baseurl
, params
) {
21 let url
= new URL(baseurl
, window
.location
.origin
);
22 for (const [key
, value
] of Object
.entries(params
)) {
23 url
.searchParams
.append(key
, value
);
29 downloadFile: function() {
31 let view
= me
.getView();
32 let combo
= me
.lookup('file');
33 let file
= combo
.getValue();
35 let idx
= file
.lastIndexOf('.');
36 let filename
= file
.slice(0, idx
);
37 let atag
= document
.createElement('a');
38 let params
= view
.params
;
39 params
['file-name'] = file
;
40 atag
.download
= filename
;
41 atag
.href
= me
.buildUrl(`${view.baseurl}/download-decoded`, params
);
45 changeFile: function(comob
, value
) {
47 let combo
= me
.lookup('file');
48 let rec
= combo
.getStore().findRecord('filename', value
, 0, false, true, true);
49 let canDownload
= rec
.data
['crypt-mode'] !== 'encrypt';
50 me
.lookup('encryptedHint').setVisible(!canDownload
);
51 me
.lookup('signedHint').setVisible(rec
.data
['crypt-mode'] === 'sign-only');
52 me
.lookup('downloadBtn').setDisabled(!canDownload
);
55 init: function(view
) {
58 throw "no baseurl given";
62 throw "no params given";
66 throw "no files given";
69 me
.lookup('file').getStore().loadData(view
.files
, false);
77 click
: 'downloadFile',
84 xtype
: 'proxmoxComboGrid',
85 valueField
: 'filename',
87 displayField
: 'filename',
89 emptyText
: gettext('No file selected'),
90 fieldLabel
: gettext('File'),
92 fields
: ['filename', 'size', 'crypt-mode'],
93 idProperty
: ['filename'],
96 emptyText
: gettext('No Data'),
99 text
: gettext('Filename'),
100 dataIndex
: 'filename',
101 renderer
: Ext
.String
.htmlEncode
,
105 text
: gettext('Size'),
107 renderer
: val
=> val
=== undefined ? '' : Proxmox
.Utils
.format_size(val
),
110 text
: gettext('Encrypted'),
111 dataIndex
: 'crypt-mode',
112 renderer: function(value
) {
114 if (value
!== undefined) {
115 mode
= PBS
.Utils
.cryptmap
.indexOf(value
);
117 return PBS
.Utils
.cryptText
[mode
] || Proxmox
.Utils
.unknownText
;
124 xtype
: 'displayfield',
126 reference
: 'signedHint',
128 value
: gettext('Note: Signatures of signed files will not be verified on the server. Please use the client to do this.'),
131 xtype
: 'displayfield',
133 reference
: 'encryptedHint',
135 value
: gettext('Encrypted Files cannot be decoded on the server directly. Please use the client where the decryption key is located.'),
141 text
: gettext('Download'),
142 reference
: 'downloadBtn',