]> git.proxmox.com Git - pve-manager.git/commitdiff
fix #4849: ui: allow decompressing ISO files when downloading
authorPhilipp Hufnagl <p.hufnagl@proxmox.com>
Thu, 21 Sep 2023 13:09:17 +0000 (15:09 +0200)
committerFabian Grünbichler <f.gruenbichler@proxmox.com>
Tue, 26 Sep 2023 07:35:31 +0000 (09:35 +0200)
The compression algorithm will be automatically detected when querying the
download URL. It can be overriden by the user using the "compression algorithm"
drop down under advanced.

Signed-off-by: Philipp Hufnagl <p.hufnagl@proxmox.com>
Reworded title and message, updated d/control for libpve-storage-perl version
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
debian/control
www/manager6/Makefile
www/manager6/form/DecompressionSelector.js [new file with mode: 0644]
www/manager6/window/DownloadUrlToStorage.js

index 34875c6cf5bc2faa00741e92e046e8282bfc3bcf..259376d3666033902475cab3abd4e6742a847883 100644 (file)
@@ -64,7 +64,7 @@ Depends: apt (>= 1.5~),
          libpve-http-server-perl (>= 4.1-1),
          libpve-notify-perl,
          libpve-rs-perl (>= 0.7.1),
-         libpve-storage-perl (>= 7.2-12),
+         libpve-storage-perl (>= 8.0.3),
          librados2-perl (>= 1.3-1),
          libtemplate-perl,
          libterm-readline-gnu-perl,
index 59a5d8a7f4e72e875a8b0d80d14b3216bd717ec0..87e66ece785e32cad3fe27cd978504097589fef3 100644 (file)
@@ -34,6 +34,7 @@ JSSRC=                                                        \
        form/ContentTypeSelector.js                     \
        form/ControllerSelector.js                      \
        form/DayOfWeekSelector.js                       \
+       form/DecompressionSelector.js                   \
        form/DiskFormatSelector.js                      \
        form/DiskStorageSelector.js                     \
        form/FileSelector.js                            \
diff --git a/www/manager6/form/DecompressionSelector.js b/www/manager6/form/DecompressionSelector.js
new file mode 100644 (file)
index 0000000..abd1931
--- /dev/null
@@ -0,0 +1,13 @@
+Ext.define('PVE.form.DecompressionSelector', {
+    extend: 'Proxmox.form.KVComboBox',
+    alias: ['widget.pveDecompressionSelector'],
+    config: {
+       deleteEmpty: false,
+    },
+    comboItems: [
+               ['__default__', Proxmox.Utils.NoneText],
+               ['lzo', 'LZO'],
+               ['gz', 'GZIP'],
+               ['zst', 'ZSTD'],
+    ],
+});
index 90320da4cb65b855ce7e058f5da5fff9edfecaff..36ad13fa44adba9e5631a8f11c4fdd49b915baf1 100644 (file)
@@ -66,6 +66,7 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                params: {
                    url: queryParam.url,
                    'verify-certificates': queryParam['verify-certificates'],
+                   'detect-compression': view.content === 'iso' ? 1 : 0,
                },
                waitMsgTarget: view,
                failure: res => {
@@ -84,6 +85,7 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                        filename: data.filename || "",
                        size: (data.size && Proxmox.Utils.format_size(data.size)) || gettext("Unknown"),
                        mimetype: data.mimetype || gettext("Unknown"),
+                       compression: data.compression || '__default__',
                    });
                },
            });
@@ -203,6 +205,17 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
                        change: 'setQueryEnabled',
                    },
                },
+               {
+                   xtype: 'pveDecompressionSelector',
+                   name: 'compression',
+                   fieldLabel: gettext('Decompression algorithm'),
+                   allowBlank: true,
+                   hasNoneOption: true,
+                   value: '__default__',
+                   cbind: {
+                       hidden: get => get('content') !== 'iso',
+                   },
+               },
            ],
        },
        {
@@ -223,7 +236,6 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
        if (!me.storage) {
            throw "no storage ID specified";
        }
-
        me.callParent();
     },
 });