diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2019-09-06 12:18:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-06 12:18:08 +0200 |
commit | 803c8ddf7f1b47aa99937455ba2c023c9d88c9db (patch) | |
tree | 79324eacb7b071bc8256df5eaa0742df8ea491c6 | |
parent | 1a7310f4b34a6665ced59b6e1d2a0598243462d9 (diff) | |
parent | f12a99e5e2434110a9f9ce5d84dfd4956f1a9411 (diff) | |
download | nextcloud-server-803c8ddf7f1b47aa99937455ba2c023c9d88c9db.tar.gz nextcloud-server-803c8ddf7f1b47aa99937455ba2c023c9d88c9db.zip |
Merge pull request #16984 from nextcloud/bugfix/noid/warn-during-upload-drop
Warn user before closing when uploading a file on a upload only link
-rw-r--r-- | apps/files_sharing/js/files_drop.js | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js index 340f941a718..26bb04a001a 100644 --- a/apps/files_sharing/js/files_drop.js +++ b/apps/files_sharing/js/files_drop.js @@ -13,11 +13,14 @@ var Drop = { /** @type {Function} **/ _template: undefined, - + + /** @type {bool} */ + _uploading: false, + addFileToUpload: function(e, data) { var errors = []; var output = this.template(); - + var filesClient = new OC.Files.Client({ host: OC.getHost(), port: OC.getPort(), @@ -27,7 +30,7 @@ root: OC.getRootPath() + '/public.php/webdav', useHTTPS: OC.getProtocol() === 'https' }); - + // We only process one file at a time 🤷♀️ var name = data.files[0].name; // removing unwanted characters @@ -43,13 +46,13 @@ } var base = OC.getProtocol() + '://' + OC.getHost(); data.url = base + OC.getRootPath() + '/public.php/webdav/' + encodeURI(name); - + data.multipart = false; - + if (!data.headers) { data.headers = {}; } - + var userName = filesClient.getUserName(); var password = filesClient.getPassword(); if (userName) { @@ -57,32 +60,39 @@ data.headers['Authorization'] = 'Basic ' + btoa(userName + ':' + (password || '')); } - + $('#drop-upload-done-indicator').addClass('hidden'); $('#drop-upload-progress-indicator').removeClass('hidden'); $('#drop-uploaded-files').append(output({isUploading: true, name: data.files[0].name})); $('[data-toggle="tooltip"]').tooltip(); data.submit(); - + return true; }, - + updateFileItem: function (fileName, fileItem) { $('#drop-uploaded-files li[data-name="' + fileName + '"]').replaceWith(fileItem); $('[data-toggle="tooltip"]').tooltip(); }, - + initialize: function () { $(document).bind('drop dragover', function (e) { // Prevent the default browser drop action: e.preventDefault(); }); var output = this.template(); + var self = this; $('#public-upload').fileupload({ type: 'PUT', dropZone: $('#public-upload'), sequentialUploads: true, + start: function(e) { + self._uploading = true; + }, + stop: function(e) { + self._uploading = false; + }, add: function(e, data) { Drop.addFileToUpload(e, data); //we return true to keep trying to upload next file even @@ -120,6 +130,9 @@ e.preventDefault(); $('#public-upload #emptycontent input').focus().trigger('click'); }); + window.onbeforeunload = function() { + return self.confirmBeforeUnload(); + } }, /** @@ -128,7 +141,13 @@ */ template: function () { return OCA.Sharing.Templates['files_drop']; - } + }, + + confirmBeforeUnload: function() { + if (this._uploading) { + return t('files', 'This will stop your current uploads.') + } + }, }; OCA.FilesSharingDrop = Drop; |