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:40:46 +0000 (19:40 +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>
modules/luci-base/htdocs/luci-static/resources/ui.js

index 08edaa1475a48915e29fa85f1d2842756323471b..7cf4f4102ffeda89d2145929bbee1007e5ccd055 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();