Commit graph

1306 commits

Author SHA1 Message Date
Daniel Calviño Sánchez
4eafae4178 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-08 20:37:43 +02:00
Daniel Calviño Sánchez
463d92c339 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-08 20:01:41 +02:00
Daniel Calviño Sánchez
d8251344c1 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-08 19:15:28 +02:00
Daniel Calviño Sánchez
bb64b6f87c Add callback to clean up after misbehaved drag and drop events
The jQuery Plugin triggers the "dragover" callback when the browser
triggers the "dragover" event and the types in their DataTransfer
include a "Files" item. It also triggers the "drop" callback when the
browser triggers the "drop" event and the list of files in its
DataTransfer is not empty.

Unfortunately some browsers may trigger "dragover" events with a
DataTransfer that includes a "Files" item and then trigger a "drop"
event with an empty list of files. When that happens the actions
performed in the "dragXXX" callbacks could be left hanging if they were
expected to be finished in the "drop" callback (for example, if the drop
zone was highlighted during the drag to be then restored when the file
was finally dropped). This commit adds the "dropnofiles" callback to be
able to handle those situations.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-06-08 19:15:27 +02:00
Daniel Calviño Sánchez
74ab68872f 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-08 11:10:46 +02:00
Daniel Calviño Sánchez
375a55b0ad
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-04-22 20:38:11 +02:00
Jan-Christoph Borchardt
0d675eca56
Ensure proper color contrast according to WCAG AA
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2018-04-18 15:38:30 +02:00
Morris Jobke
9260474ab6
Merge pull request #8452 from sagorika1996/folder
Descend into newly created folder by clicking enter again
2018-04-11 17:58:42 +02:00
Daniel Calviño Sánchez
bcfe8431b4 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-05 11:12:33 +02:00
John Molakvoæ (skjnldsv)
24ecf3f4c9
Fixed files copy/move when in favorites or recent section
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-03-22 18:09:30 +01:00
John Molakvoæ (skjnldsv)
3ef4131533
Fixed event propagation on safari
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-03-07 17:10:46 +01:00
John Molakvoæ (skjnldsv)
446a3a9d5a
Fixed ext share style and use varable for popover height
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-03-07 15:12:06 +01:00
John Molakvoæ (skjnldsv)
4e6043fd6b
Fixed tooltip positionning & error display
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-03-07 13:17:37 +01:00
John Molakvoæ (skjnldsv)
955c2ee1a7
PoC inline icon-confirm with inputs
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-03-07 13:17:37 +01:00
John Molakvoæ (skjnldsv)
3964616a9e
Updated popover rules to allow form inputs and added input submit for new File
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-03-07 13:17:36 +01:00
Roeland Jago Douma
6b931eb64b
Merge pull request #8588 from nextcloud/fix-breadcrumbs-width-calculation
Fix breadcrumbs width calculation
2018-03-01 20:13:26 +01:00
Sagorika Das
5d9d0b00e0 updated js
Signed-off-by: Sagorika Das <sagorika1996@gmail.com>
2018-03-01 18:20:37 +05:30
Sagorika Das
d78e314d51 New folder creation flow
Descend into newly created folder by clicking enter again.
Signed-off-by: Sagorika Das <sagorika1996@gmail.com>
2018-03-01 17:19:07 +05:30
Daniel Calviño Sánchez
292476911f Improve documentation of "getTotalWidth"
"getTotalWidth" is not more accurate; it is simply not clamped.
Moreover, "width/outerWidth" could be used in tests too, and also even
if "getTotalWidth" could be used in tests while others not that would
not be something to be stated in the API documentation, but in a
comment.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
Daniel Calviño Sánchez
d122d054d3 Do not show the crumbs again after hiding them
After the changes in the previous commit "_showCrumb" no longer shows
the menu, only the same crumb that was hidden by the last call to
"_hideCrumb". Therefore, if the crumb was hidden because it did not fit
there is no need to try to show it again, as it will still not fit.

Moreover, the calculated width for a hidden element is not always
accurate; in some cases the calculated width is lower than the actual
width (it happens, for example, when using a background image like the
"Share" icon), which causea the crumb to be shown even if there is not
enough room, which in the end causes the siblings to overflow the
contents.

No unit tests for this one, though; you will have to trust me on this,
sorry ;-)

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
Daniel Calviño Sánchez
10e9eeec45 Fix menu visibility
The crumb for the menu was shown like any other crumb when calling
"_showCrumb", but it was also shown when other crumbs were hidden
without taking into account the available width. This caused several
related problems, like the breadcrumbs taking too much space when the
menu was sometimes shown after the rest of the crumbs were adjusted to
the available width, or the menu being shown instead of the last crumb
even if there was room for it when the available width was increased.

Now the menu is always hidden before starting the resizing of the crumbs
to ensure that whether it was previously shown or not does not affect
the result. In a similar way, the menu will no longer be shown by
"_showCrumb", as it is not a regular crumb that has to be shown simply
if there is enough room. The menu is now shown as soon as any other
crumb is hidden; this ensures that the menu width will be taken into
account in further width checks. As when _updateMenu" is called it no
longer needs to take care of showing the menu this fixes the issue
revealed when fixing the test setup in the previous commit.

Finally, this implicitly fixes the failure in the breadcrumbs tests when
run on Firefox, as it was caused by the menu interfering in the
calculations of the other crumbs when increasing the width.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
Daniel Calviño Sánchez
92345f2c38 Take padding and margins of crumbs into account
When calculating the total width of the crumbs only its padding was
taken into account; now the margin is too. In a similar way, before
showing a crumb only its width was taken into account; now its padding
and margin are taken into account too.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
Daniel Calviño Sánchez
acdf091f84 Compress siblings before calculating the available width for crumbs
When the parent element of the breadcrumbs was resized to a larger width
and the siblings of the breadcrumbs expanded to fill all the available
width some crumbs could be hidden even if there was enough room for
them. The reason was that the width of the siblings being used to
calculate the available width for the breadcrumbs was the expanded width
of the siblings. Now as many crumbs as possible (that is, fitting in the
parent, no matter the siblings) are first shown so the expanding
siblings are compressed before calculating the available width.

Due to the lack of support for flexboxes in PhantomJS the related unit
test is skipped; it has to be run in other browser, like Firefox.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
Daniel Calviño Sánchez
a37007f872 Take all visible siblings into account
Other apps could add elements to the controls outside the creatable
actions div (for example, the button to switch to the gallery), so the
widths of all the visible siblings of the breadcrumbs have to be taken
into account in the size calculations.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
Daniel Calviño Sánchez
e37c4fd7f3 Take padding and margin of the creatable actions div into account
There are some differences in width handling between the browsers used
to run the tests, most likely due to their support (or lack of) of
certain CSS features: PhantomJS requires "width" to be set (probably
because it does not handle flex displays and treats it like a block, so
"min-width" does not matter in this case), while Firefox requires
"min-width" to be set (otherwise the children of "#controls" could be
compressed due to its use of flex display and the elements would end
with a different width than the one needed for the tests). Due to all
that the width of the breadcrumb siblings must be specified in the tests
using both "width" and "min-width".

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
Daniel Calviño Sánchez
a828e7b12a Replace attribute with local variable
The "usedWidth" attribute was not used elsewhere outside the "_resize"
method, so it was replaced with a local variable. Moreover, it was also
renamed to a more suitable name ("availableWidth").

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
Daniel Calviño Sánchez
a9552de089 Set the width of the parent element in breadcrumb tests
Setting the width of the parent element of the breadcrumbs and then
explicitly calling "_resize" is enough to test the resizing behaviour.
This makes possible to remove the "setMaxWidth" method and its related
code, which was used only for testing purposes.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-02-28 15:03:26 +01:00
John Molakvoæ (skjnldsv)
d78026c3b4
Fixed breadcrumb menu flashing
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-02-28 11:04:27 +01:00
Roeland Jago Douma
350b66b73d
Merge pull request #8485 from sagorika1996/rename
Rename dialog closed when not active
2018-02-26 21:36:39 +01:00
Sagorika Das
dca75448d0 rename dialog closed when not active
Signed-off-by: Sagorika Das <sagorika1996@gmail.com>
2018-02-21 23:16:27 +05:30
Roland Tapken
38ba64af77 Split move and copy operations
The new 'Move and copy' operation from #6040 requires UPDATE permissions
on the selected files. However, READ would be sufficient to create a
copy of a file (if not viewed as a public share). For this reason this patch:

- changes the permission of the 'MoveCopy' action to PERMISSION_READ
- changes the label of the action depending on the permissions
- changes the available buttons in the Move/Copy dialog depending on the
  permissions.

The same changes are done to the filelist view for bulk actions.

Signed-off-by: Roland Tapken <roland@bitarbeiter.net>
2018-02-15 18:51:12 +01:00
Roeland Jago Douma
cda811b6b4
Make filelist and sidebar use the fileid preview endpoint
This makes sure the preview is cached even after rename! yay!

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-01-24 11:24:18 +01:00
Daniel Calviño Sánchez
f29c1cf13a Fix empty details view after renaming a file
"FileList._updateDetailsView" expects either a file name (as a string)
or a file model (as an "OCA.File.FileInfoModel"), but when called
through "updateInList" an "OC.Files.FileInfo" object was given instead.
As the given attribute was not a model "_updateDetailsView" treated it
as a file name and tried to get the model for that file, which failed
and caused the details view to be emptied.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-01-11 02:47:11 +01: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
Daniel Calviño Sánchez
3113ee1129 Hide favourite icon in details view if favourite action is not available
When the favourite icon in the details view is clicked the "Favorite"
action is triggered. However, if the action name given to
"triggerAction" is not found then the "Download" action is triggered
instead. As the "Favorite" action is not available in some file lists
(like "Recents") the "Download" action was executed instead in those
cases, which was a strange behaviour. Now the favourite icon is
hidden if its action is not available.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-01-05 19:06:06 +01:00
John Molakvoæ (skjnldsv)
88dd8e46f9
Fixup! removed unwanted line
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-01-03 17:55:53 +01:00
John Molakvoæ (skjnldsv)
ab1985b62b
Fixed quota update on upload and on delete
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-01-03 17:53:48 +01:00
Morris Jobke
0bc6a7d7fd
Merge pull request #7681 from nextcloud/fix-quota-update-2
Update quotas on each upload
2018-01-03 16:30:19 +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)
51eb26e183
Fix unwanted var
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-01-03 14:01:47 +01:00
John Molakvoæ (skjnldsv)
c4490c6ba8
Update quotas on each upload
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-01-03 13:59:36 +01:00
Morris Jobke
31c0efc299
Show warning if slash is entered as filename
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-03 11:42:49 +01:00
Morris Jobke
fa2fe34b7a
Merge pull request #7624 from nextcloud/fix-fileActions-currentFile-not-set-before-using-it
Fix "fileActions.currentFile" not set before using it
2018-01-02 10:28:04 +01:00
Roeland Jago Douma
08cbfb6c6b
Merge pull request #7592 from nextcloud/update-quota-on-files-upload
Update quota on files upload
2017-12-28 10:53:14 +01:00
John Molakvoæ (skjnldsv)
c8db1ed741
Fixed tests
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2017-12-26 16:37:34 +01:00
Daniel Calviño Sánchez
ea40ade8ad Fix "fileActions.currentFile" not set before using it
When an empty area of a file row was clicked and the "Details" action
was executed "fileActions.currentFile" was not guaranteed to be set to
the appropriate object (it depended on the previous actions of the
user), so when it was used by "getCurrentMimeType()" and other
FileActions functions they may not work as expected. Now it is
explicitly set to the appropriate value before its use.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-12-26 04:56:25 +01:00
Morris Jobke
e37fa60784
Merge pull request #7591 from nextcloud/trigger-events-before-and-after-a-file-action-is-executed
Trigger events before and after a file action is executed
2017-12-22 12:31:55 +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
Daniel Calviño Sánchez
c059fbd409 Remove internal unused property
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-12-21 02:08:40 +01:00
Daniel Calviño Sánchez
96ed73343e Trigger the "Details" action when clicking on an empty file row space
Clicking on an empty space in a file row causes the details view to be
shown. As it is a user initiated action on the file list now it is done
by triggering the Details action instead of directly calling
"_updateDetailsView"; the result is the same in both cases, but using
the action is more consistent (clicking on the file name triggers the
default action, and clicking on the inline actions triggers those
actions) and also makes possible to use the "beforeTriggerAction" and
"afterTriggerAction" listeners.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-12-21 00:36:40 +01:00