diff --git a/apps/filemanager/handlers/index.php b/apps/filemanager/handlers/index.php index 808b200a0..47d694a2a 100644 --- a/apps/filemanager/handlers/index.php +++ b/apps/filemanager/handlers/index.php @@ -44,7 +44,9 @@ $page->window_title = __ ('Files'); } -$page->add_style ('/apps/filemanager/css/filemanager.css?v=4'); +$cache_version = '6'; + +$page->add_style ('/apps/filemanager/css/filemanager.css?v=' . $cache_version); $page->add_script ( sprintf ( '', @@ -53,9 +55,9 @@ ); $page->add_script ('/js/jquery-ui/jquery-ui.min.js'); $page->add_script ('/js/urlify.js'); -$page->add_script ('/apps/filemanager/js/jquery.filedrop.js'); +$page->add_script ('/apps/filemanager/js/jquery.filedrop.js?v=' . $cache_version); $page->add_script ('/apps/filemanager/js/jquery.tmpl.beta1.min.js'); -$page->add_script ('/apps/filemanager/js/jquery.filemanager.js?v=5'); +$page->add_script ('/apps/filemanager/js/jquery.filemanager.js?v=' . $cache_version); $page->add_script ('https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js', 'head', '', 'sha384-5tfO0soa+FisnuBhaHP2VmPXQG/JZ8dLcRL43IkJFzbsXTXT6zIX8q8sIT0VSe2G', 'anonymous'); $page->add_script (I18n::export ( 'New folder name:', diff --git a/apps/filemanager/js/jquery.filedrop.js b/apps/filemanager/js/jquery.filedrop.js index 1e2a26afe..fcfa0494a 100644 --- a/apps/filemanager/js/jquery.filedrop.js +++ b/apps/filemanager/js/jquery.filedrop.js @@ -571,10 +571,7 @@ // to sending ArrayBufferView. Sadly, no proper way to detect this // functionality has been discovered. Happily, Chrome 22 also introduced // the base ArrayBufferView class, not present in Chrome 21. - if ('ArrayBufferView' in window) - this.send(ui8a); - else - this.send(ui8a.buffer); + this.send(ui8a); }; } catch (e) {} diff --git a/apps/filemanager/js/jquery.filemanager.js b/apps/filemanager/js/jquery.filemanager.js index 77c43ec13..96b32df6f 100644 --- a/apps/filemanager/js/jquery.filemanager.js +++ b/apps/filemanager/js/jquery.filemanager.js @@ -14,7 +14,9 @@ token: '', strings: { - } + }, + dirs: [], + files: [] }; $.extend ({ @@ -101,6 +103,8 @@ res.data.dirs[i]._path = res.data.dirs[i].path.replace (/'/g, '\\\''); $.tmpl ('tpl_dir', res.data.dirs[i]).appendTo (tbody); } + + dirs = res.data.dirs } if (res.data.files) { for (var i = 0; i < res.data.files.length; i++) { @@ -115,6 +119,8 @@ res.data.files[i].conf_root = conf_root + '/'; $.tmpl ('tpl_file', res.data.files[i]).appendTo (tbody); } + + files = res.data.files } $.localize_dates (); @@ -284,8 +290,29 @@ dropLeave: function () { $('#filemanager-dropzone').removeClass ('filemanager-over'); }, - drop: function () { + drop: function (e) { $('#filemanager-dropzone').removeClass ('filemanager-over'); + + // Confirm if overwriting + if (!e.originalEvent.dataTransfer) { + return false; + } + + var uploads = e.originalEvent.dataTransfer.files; + + if (uploads === null || uploads === undefined || uploads.length === 0) { + return false; + } + + for (i = 0; i < uploads.length; i++) { + for (j = 0; j < files.length; j++) { + if (files[j].name == uploads[i].name) { + if (! confirm ($.i18n ('Overwrite existing file? ' + uploads[i].name))) { + return false; + } + } + } + } }, uploadStarted: function (i, file, len) { // Save the total so we only notify at the end