luci-base: ui.js: UIFileUpload fixes
authorJo-Philipp Wich <jo@mein.io>
Mon, 20 Jan 2020 18:38:17 +0000 (19:38 +0100)
committerJo-Philipp Wich <jo@mein.io>
Mon, 20 Jan 2020 18:41:49 +0000 (19:41 +0100)
 - Introduce a new option `initial_directory` which describes the initial
   directory to display when nothing is selected, default to the root
   directory

 - Prevent stray legacy cbi reloads when deselecting files

 - Fix within-root-directory-check for initial rendering

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 136b965b255c3d37a21e8cf2fc835f83c2f0d3be)

modules/luci-base/htdocs/luci-static/resources/ui.js

index 927bda36f26b2c3f420c8afbbc83ac28bc147b27..a12cbdb30d646b60fa0d36b11cec376ac901c566 100644 (file)
@@ -1919,6 +1919,8 @@ var UIFileUpload = UIElement.extend({
                button.style.display = '';
 
                this.node.dispatchEvent(new CustomEvent('cbi-fileupload-cancel', {}));
+
+               ev.preventDefault();
        },
 
        handleReset: function(ev) {
@@ -1962,9 +1964,9 @@ var UIFileUpload = UIElement.extend({
        handleFileBrowser: function(ev) {
                var button = ev.target,
                    browser = button.nextElementSibling,
-                   path = this.stat ? this.stat.path.replace(/\/[^\/]+$/, '') : this.options.root_directory;
+                   path = this.stat ? this.stat.path.replace(/\/[^\/]+$/, '') : (this.options.initial_directory || this.options.root_directory);
 
-               if (this.options.root_directory.indexOf(path) != 0)
+               if (path.indexOf(this.options.root_directory) != 0)
                        path = this.options.root_directory;
 
                ev.preventDefault();