Commit Graph

181 Commits

Author SHA1 Message Date
Daniel Calviño Sánchez 1ee3c31f85 Do not hide the progress bar while the chunked upload is being assembled
Large files are not uploaded in a single operation, but uploaded in
several chunks; once all the chunks are uploaded then the server needs
to assemble them to get the final file.

Before, once the chunks were uploaded the progress bar was hidden.
However, this was confusing for the users, as the file could still need
some time to appear in the file list due to the assembling. Now once all
the chunks are uploaded the text in the progress bar changes to inform
the user that there are still some pending operations, and only when the
file is finally assembled the progress bar is hidden.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-09-26 17:46:43 +02:00
Daniel Calviño Sánchez 85d9264a14 Do not show an error message when draging and dropping text
When the browser reports a drag of items other than files (for example,
text) and then triggers a drop event with no files no error message
should be shown to the user, as in that case there would be no highlight
of the drop zone and no indication that the drop would be valid (except
for the mouse cursor); the error message should be shown only when
the drop event with no files follows a file drag.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-06-12 15:25:50 +02:00
Daniel Calviño Sánchez d4143af5ed Remove no longer needed special handling for Firefox
The highlighting was removed in Firefox when the cursor was no longer
moving to handle the behaviour of reporting a file drag and then
providing no files in the drop event. That behaviour (which was only
present in Firefox 48 and 49) is already handled with the "dropnofiles"
callback, so that special handling is no longer needed.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-06-12 15:25:50 +02:00
Daniel Calviño Sánchez d462ae8507 Use "dropnofiles" callback to disable the drop state in the UI
When a file is dragged from the desktop to the file list the file list
is highlighted, and when the file is finally dropped or the drag
operation is cancelled the highlighting is removed. In some cases, due
to a wrong implementation, a browser may end a file drag with a drop
with no files (for example, when a folder or text is dragged), which
would cause the highlight to not be removed. Now those cases are handled
with the "dropnofiles" callback, which restores the UI and also shows a
message to the user.

The error message is just a generic one, as in some cases it is not even
possible to know whether the problem came from a text drag or a folder
drag, and whether the problem appears or not depends on the browser,
version and even operating system.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-06-12 15:25:50 +02:00
Daniel Calviño Sánchez 981b757099 Remove duplicated code
"disableDropState" was set as the event handler in 8d4e5747f3, but
the duplicated code was accidentally added back in 786e858d23.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-06-12 15:25:50 +02:00
Daniel Calviño Sánchez d74b5231b8 Fix race condition when preparing upload folder
Before any upload is submitted the upload is registered in a list of
known uploads; this is needed to retrieve the upload object at several
points of the upload process. When a chunked upload is submitted first a
directory to upload all the chunks is created and, once that is done,
the chunks are sent; in order to send a chunk the upload object needs to
be retrieved from the list of known uploads.

When all the active uploads were finished the list of known uploads was
cleared. However, an upload is not active until it actually starts
sending the data, so while waiting for the upload directory to be
created the upload is already in the list of known uploads yet not
active. Due to all this, if the active uploads finished while another
pending upload was waiting for the upload directory to be created that
pending upload would be removed from the list of known uploads too, and
once the directory was created and thus the chunks were sent a field of
a null upload object would be accessed thus causing a failure.

Instead of removing all the known uploads at once when the active
uploads finish now each upload is explicitly removed when it finishes.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-05-10 16:58:43 +02:00
Daniel Calviño Sánchez 9e9e053b73 Fix progress bar hidden before the upload ends
The jQuery File Upload plugin triggers the "stop" event once there are
no more files being uploaded (even if some of them were added when
another upload was already in progress). Therefore, the progress bar
should be hidden in the "fileuploadstop" callback.

In some cases the "stop" event is not triggered and thus the progress
bar is not hidden once no more files are being uploaded. This is caused
by a race condition and it will be fixed in another commit; except in
buggy cases like that one (that need to be fixed anyway) it is safe to
hide the progress bar in the "fileuploadstop" callback.

In any case, note that the callbacks in "fileuploaddone" may be called
after the "stop" event was triggered and handled when using chunked
uploads. In that case once all the chunks are uploaded the assembled
file is moved to its final destination, so its promise could be resolved
after the "stop" event was triggered. Therefore a different approach
would be needed to keep the progress bar visible until the chunked
upload is truly finished, but for the time being the current one is good
enough.

Before this commit the progress bar was being hidden when the first
upload finished, either successfully or with an error, no matter if
there were other files being uploaded too.

The progress bar was being explicitly hidden also when the upload was
cancelled. When an upload is cancelled all the single uploads are
aborted, which triggers a "fail" event for each of them. However, the
"stop" event is always triggered when no more files are being uploaded,
so it is triggered too once all the single uploads were aborted. As all
the single uploads are immediately aborted in a loop when the general
upload is cancelled it makes no difference to hide the progress bar when
the first single upload is aborted or when all the single uploads were
aborted, so the progress bar is no longer explicitly hidden in the
former case.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-04-09 11:20:18 +02:00
Roeland Jago Douma d4f163b230
Don't encode paths passed to the OC.Files.Client
This is handled already in the client. So double encoding breaks things
in some situations.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-01-10 08:35:40 +01:00
Morris Jobke 876238ce8b
Merge pull request #7533 from nextcloud/oc-28545-handle-oc-total-length-in-new-chunking
[oc] Handle OC-Total-Length in new chunking
2018-01-03 16:18:24 +01:00
John Molakvoæ (skjnldsv) 0cb45f681f
Update quota on file upload and deletion
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2017-12-21 10:48:43 +01:00
Vincent Petry ec8bf53356 Only set X-OC-Mtime when browser provided lastModified on upload
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-12-15 14:46:53 +01:00
Thomas Müller f39de4ab37 Transmit OC-Total-Length in browser as well
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-12-15 14:46:48 +01:00
Vincent Petry dfc91a253c Parse Sabre Exception in OC.Files.Client and file-upload
In case of error, instead of a generic error message, an upload will
display whichever message is returned in the Sabre Exception, if
applicable.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-11-13 12:19:14 +01:00
Vincent Petry cd8d13b9e6 Enable chunking for bigger files in authenticated web upload
This commit adds chunked uploads in the Web UI (for authenticated users,
but not for public uploads). To do that the server endpoint used by the
uploader is changed from WebDAV v1 to WebDAV v2. The chunking itself is
done automatically by the jQuery-File-Upload plugin when the
"maxChunkSize" parameter is set; in "fileuploadchunksend" the request is
adjusted to adapt the behaviour of the plugin to the one expected by
"uploads/" in WebDAV v2.

The chunk size to be used by the Web UI can be set in the
"max_chunk_size" parameter of the Files app configuration. By default it
is set to 10MiB.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-11-03 17:19:23 +01:00
Morris Jobke 7d71b54715
Add space between ellipsis and word
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-10-25 00:12:41 +02:00
rakekniven 830310ad1d Update file-upload.js
Fixed tiny translation issues. Removed space before ellipsis.
2017-10-07 10:38:03 +02:00
Roeland Jago Douma 69d2d0178a
Don't try the actual file upload if the checks already error out
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2017-08-26 11:30:04 +02:00
Morris Jobke 57fd256b9a
Replace ... with …
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-08-23 16:22:11 +02:00
Morris Jobke 591dda2fed
Show "Uploading..." in web UI for long uploads
If the estimated upload time is bigger than 4 hours it shows the text
"Uploading..." because the time then doesn't give any good hint to the
user anyways.

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-08-23 15:59:05 +02:00
Bekcpear 8267e5e007 Fix uploadrate value of 'original-title' attribute
The unit of `data.bitrate` is bit, but the argument unit of
`humanFileSize` function is byte, so it should be divided by 8.

Signed-off-by: Yaojin Qian <i@ume.ink>
2017-06-16 15:35:51 +08:00
Bekcpear 82e263ed04 Fix upload remaining time
The upload remaining time is always 'a few second' whatever a big or a
small file uploading.
This commit fixes it. The `new Date().getMilliseconds()` only return a
three digits number. When time arrived the next second, the millisecond
start from ZERO again. So `new Date().getTime()` is the righe choice.
And remaining time variables shoule be initialized when the file starts
uploading, otherwise the remaining time of a new upload will always be
'Infinity years' until you refresh the page.

Signed-off-by: Yaojin Qian <i@ume.ink>
2017-06-16 15:33:10 +08:00
Morris Jobke 242934c016
Remove dependency on jquery-migrate.js for browser detection
* ref #4628

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-05-01 17:53:48 -03:00
Joas Schilling 287bae8c5f Merge pull request #4153 from nextcloud/fix-upload
Fix upload of folders in Chrome
2017-04-06 09:56:41 +02:00
Morris Jobke 6e72fd5f9f
Fix upload of folders in Chrome
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-04-06 00:50:58 -05:00
Joas Schilling b6c1f3fc6d
Some more hardening
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-04-04 08:51:21 +02:00
SarthikaDhawan 62fb3bb3ef
file-upload.js modified : Remaining upload time corrected
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-04-04 08:51:20 +02:00
noveens 40228c0c2b
added quit option in commentstabview.js
added quit option in notif in app.js

added quit option in notif in file-upload.js

added quit option in notif in fileinfomodel.js

added quit option in notif in filelist.js

added quit option in notif in filelist.js

added quit option in notif in tagsplugin.js

added quit option in notif in statusmanager.js

added quit option in notif in external.js

added quit option in notif in versionstabview.js

added quit option in notif in notification.js

changes according to the latest review.

timeout removed since there is a button to close it

translation capability added

typo fixed

test files updated

small errors fixed

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-03-23 13:12:29 -06:00
Robin Appelman ad4b5c82da
dont preserve mtime when uploading trough the web interface
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-13 13:33:18 +01:00
Stefan Schneider f6ef024159 Correct incorrectly typed X-OC-Mtime header
Signed-off-by: Stefan Schneider <stefan.schneider@squareweave.com.au>
2017-03-10 18:16:27 +11:00
Morris Jobke 86149508d0
fix typo
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-02-28 00:14:34 -06:00
Christoph Wurst 3e7e49884e Replace deprecated $.tipsy(...) by $.tooltip(...)
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2017-02-27 22:25:05 +01:00
Lukas Reschke 56c016946d Merge pull request #2763 from nextcloud/fix_maindetailsview_favorite_star-patch
[downstream] Fix maindetailsview favorite star patch
2016-12-23 16:36:53 +01:00
Christoph Wurst cfada468e6
OC.Uploader does not have a 'state' method, therefore the
dead code can be removed

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2016-12-23 15:38:48 +01:00
Thomas Müller 2bf4661e40
Just use moment to comupte the time left for the upload - translations are delivered as part of moment.js - fixes #26804
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-22 10:01:58 +01:00
pflug c7fc010215 Fix showConflict
use getFullFileName to show conflicting file
add original.directory to make fileExists happy

Signed-off-by: Andreas Pflug <dev@admin4.org>
2016-12-19 08:11:04 +01:00
Arthur Schiwon 7e2b866fd7
fix type in jsdoc
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2016-12-06 18:08:13 +01:00
Vincent Petry 6a4ea2c15a
Upload autorename on client side
Removes the need for POST to collection which would hit against upload
limits.

The client tries to auto rename the file by adding a suffix "(2)".
It tries to use the file list on the client side to guess a
suitable name. In case a file still cannot be uploaded and creates a
conflict, which can happen when the file was concurrently uploaded, the
logic will continue increasing the suffix.
2016-11-02 22:15:03 +01:00
Vincent Petry 7e701504be
Remove upload_limit in files app as it is not needed with PUT upload (#26069)
The web UI now uses for PUT uploads which aren't restricted by PHP's
upload_max_filesize and post_max_size

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-11-02 20:43:35 +01:00
Vincent Petry 50b8221255
Highlight files and update storage stats at end of upload (#26164)
Properly trigger the "stop" even from the uploader.
Also update storage stats at the end of all uploads instead of for each
upload.
2016-10-25 14:51:44 +02:00
Vincent Petry f374eb5f1d
More fixes to file upload
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-10-24 21:45:00 +02:00
Vincent Petry f72ffa2f11
Fix js unit tests for webdav put upload changes
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-10-24 21:45:00 +02:00
Vincent Petry 786e858d23
Add support for chunked upload
Hacked around Blueimp's jquery.fileupload to make it work with our new
chunking API.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-10-24 21:45:00 +02:00
Vincent Petry 59c5be1cc5
Use Webdav PUT for uploads in the web browser
- uses PUT method with jquery.fileupload for regular and public file
  lists
- for IE and browsers that don't support it, use POST with iframe
  transport
- implemented Sabre plugin to handle iframe transport and redirect the
  embedded PUT request to the proper handler
- added RFC5995 POST to file collection with "add-member" property to
  make it possible to auto-rename conflicting file names
- remove obsolete ajax/upload.php and obsolete ajax routes

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-10-24 21:45:00 +02:00
Morris Jobke 6b2920a6bc Merge pull request #1520 from nextcloud/upload-allow-zero
Allow uploading empty files (#26113)
2016-09-26 17:40:53 +02:00
Vincent Petry e8836bfd30
Allow uploading empty files (#26113)
Downstreaming of https://github.com/owncloud/core/pull/26113

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-09-26 11:28:05 +02:00
Morris Jobke 8d4e5747f3
Fix folder drag glitch in Firefox
issue:
* drag'n'drop a folder into the files app in Firefox
* the highlight stays there because Firefox doesn't trigger the drop event for folders

solution:
* behave like the drop event if the dragover event isn't fired for 100ms (only applied in Firefox)
2016-09-14 13:44:34 +02:00
Joas Schilling 45c99c226b
Fix the HTML encoding when uploading a folder in FF when using french l10n 2016-07-20 13:03:27 +02:00
Vincent Chan 0552933770 changes emptycontent icon to drag-accept on file-drag 2016-06-23 11:25:03 +02:00
Vincent Chan 10f8d643dc store icons in class 2016-06-15 14:42:39 +02:00
Vincent Chan aecdcf737f dragging over folder will highlight folder only 2016-06-15 11:28:53 +02:00