diff --git a/CHANGELOG.md b/CHANGELOG.md
index 277bf1e9..f647ab33 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@
* adds markdown support for custom header and footer files
* adds video and audio preview via HTML5 elements (no fallback, works best in Chrome)
* adds filter reset on location change
+* adds option to make download button always visible
* adds Google UA support
* extends selectable icon sizes (adds 128px, 192px, 256px, 384px)
* improves preview GUI
diff --git a/src/_h5ai/client/js/inc/ext/download.js b/src/_h5ai/client/js/inc/ext/download.js
index 8d5b6881..45de0590 100644
--- a/src/_h5ai/client/js/inc/ext/download.js
+++ b/src/_h5ai/client/js/inc/ext/download.js
@@ -4,15 +4,17 @@ modulejs.define('ext/download', ['_', '$', 'core/settings', 'core/resource', 'co
var settings = _.extend({
enabled: false,
type: 'php-tar',
- packageName: 'package'
+ packageName: 'package',
+ alwaysVisible: false
}, allsettings.download),
- downloadBtnTemplate = '
' +
- '' +
- '
' +
- '' +
- '' +
- '',
+ downloadBtnTemplate =
+ '' +
+ '' +
+ '
' +
+ '' +
+ '' +
+ '',
selectedItems = [],
@@ -22,8 +24,8 @@ modulejs.define('ext/download', ['_', '$', 'core/settings', 'core/resource', 'co
selectedItems = items.slice(0);
if (selectedItems.length) {
- $download.appendTo('#navbar').show();
- } else {
+ $download.show();
+ } else if (!settings.alwaysVisible) {
$download.hide();
}
},
@@ -52,6 +54,10 @@ modulejs.define('ext/download', ['_', '$', 'core/settings', 'core/resource', 'co
.find('a').on('click', onClick).end()
.appendTo('#navbar');
+ if (settings.alwaysVisible) {
+ $('#download').show();
+ }
+
event.sub('selection', onSelection);
};
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index 41678d2b..806516e8 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -98,11 +98,13 @@ Options
- type: "php-tar", "shell-tar" or "shell-zip"
- packageName: basename of the download package, null for current foldername
+ - alwaysVisible: always show download button (defaults to download the current folder)
*/
"download": {
"enabled": true,
"type": "php-tar",
- "packageName": null
+ "packageName": null,
+ "alwaysVisible": false
},
/*
diff --git a/src/_h5ai/server/php/inc/class-archive.php b/src/_h5ai/server/php/inc/class-archive.php
index 335241e4..a78a107a 100644
--- a/src/_h5ai/server/php/inc/class-archive.php
+++ b/src/_h5ai/server/php/inc/class-archive.php
@@ -23,7 +23,7 @@ class Archive {
$this->add_hrefs($urls);
if (count($this->dirs) === 0 && count($this->files) === 0) {
- return 500;
+ $this->add_dir(CURRENT_PATH, "/");
}
if ($type === "php-tar") {
@@ -145,6 +145,10 @@ class Archive {
foreach ($urls as $href) {
+ if (trim($href) === "") {
+ continue;
+ }
+
$d = normalize_path(dirname($href), true);
$n = basename($href);