diff options
author | Morris Jobke <hey@morrisjobke.de> | 2017-02-21 17:07:07 -0600 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2017-02-21 17:07:07 -0600 |
commit | 3284efd1996854df0252d3e40574759e698b812d (patch) | |
tree | 74fae0ecd3340c1d3fa09bc53763ae427a0455ff /core | |
parent | 869ea38ffe77e92b9a5651fe07020b4035d1f1d3 (diff) | |
download | nextcloud-server-3284efd1996854df0252d3e40574759e698b812d.tar.gz nextcloud-server-3284efd1996854df0252d3e40574759e698b812d.zip |
Improve the UX for sharing settings
* shows a info when list is potentially truncated
* shows a warning when characters length is not enough
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'core')
-rw-r--r-- | core/css/share.scss | 5 | ||||
-rw-r--r-- | core/js/sharedialogview.js | 52 |
2 files changed, 49 insertions, 8 deletions
diff --git a/core/css/share.scss b/core/css/share.scss index 8852ad2748e..6d98dc74945 100644 --- a/core/css/share.scss +++ b/core/css/share.scss @@ -78,6 +78,11 @@ } } +.ui-autocomplete .autocomplete-note { + padding: 5px 10px; + color: rgba(0, 0, 0, .3); +} + #shareWithList { list-style-type: none; padding: 8px; diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js index 60cd97fb572..bbc40c9c8d4 100644 --- a/core/js/sharedialogview.js +++ b/core/js/sharedialogview.js @@ -130,18 +130,46 @@ }, autocompleteHandler: function (search, response) { - var view = this; - var $loading = this.$el.find('.shareWithLoading'); + var $shareWithField = $('.shareWithField'), + view = this, + $loading = this.$el.find('.shareWithLoading'), + $remoteShareInfo = this.$el.find('.shareWithRemoteInfo'); + + var count = oc_config['sharing.minSearchStringLength']; + if (search.term.trim().length < count) { + var title = n('core', + 'At least {count} character are needed for autocompletion', + 'At least {count} characters are needed for autocompletion', + count, + { count: count } + ); + $shareWithField.addClass('error') + .attr('data-original-title', title) + .tooltip('hide') + .tooltip({ + placement: 'bottom', + trigger: 'manual' + }) + .tooltip('fixTitle') + .tooltip('show'); + response(); + return; + } + $loading.removeClass('hidden'); $loading.addClass('inlineblock'); - var $remoteShareInfo = this.$el.find('.shareWithRemoteInfo'); $remoteShareInfo.addClass('hidden'); + + $shareWithField.removeClass('error') + .tooltip('hide'); + + var perPage = 200; $.get( OC.linkToOCS('apps/files_sharing/api/v1') + 'sharees', { format: 'json', search: search.term.trim(), - perPage: 200, + perPage: perPage, itemType: view.model.get('itemType') }, function (result) { @@ -232,16 +260,24 @@ var suggestions = users.concat(groups).concat(remotes).concat(emails).concat(lookup); if (suggestions.length > 0) { - $('.shareWithField').removeClass('error') - .tooltip('hide') + $shareWithField .autocomplete("option", "autoFocus", true); + response(suggestions); + + // show a notice that the list is truncated + // this is the case if one of the search results is at least as long as the max result config option + if(Math.min(perPage, oc_config['sharing.maxAutocompleteResults']) <= Math.max(users.length, groups.length, remotes.length, emails.length, lookup.length)) { + var message = t('core', 'This list is maybe truncated - please refine your search term to see more results.'); + $('.ui-autocomplete').append('<li class="autocomplete-note">' + message + '</li>'); + } + } else { - var title = t('core', 'No users or groups found for {search}', {search: $('.shareWithField').val()}); + var title = t('core', 'No users or groups found for {search}', {search: $shareWithField.val()}); if (!view.configModel.get('allowGroupSharing')) { title = t('core', 'No users found for {search}', {search: $('.shareWithField').val()}); } - $('.shareWithField').addClass('error') + $shareWithField.addClass('error') .attr('data-original-title', title) .tooltip('hide') .tooltip({ |