summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-09-28 17:52:53 +0200
committerVincent Petry <pvince81@owncloud.com>2015-09-28 17:52:53 +0200
commit851390a69a61ddce785ac4736ab9727cb3c23063 (patch)
treeaf7d1e55af357a5440c1106ef47da13618782210
parentd68079f93210f8fe0b5327e686497db97fde6a3e (diff)
parentd47d240a357e3f7861b432b971a0ba96b31f20ca (diff)
downloadnextcloud-server-851390a69a61ddce785ac4736ab9727cb3c23063.tar.gz
nextcloud-server-851390a69a61ddce785ac4736ab9727cb3c23063.zip
Merge pull request #19413 from owncloud/share-nopermission-link
Still show share link when recipient but no share permission
-rw-r--r--apps/files_sharing/js/share.js30
-rw-r--r--apps/files_sharing/tests/js/shareSpec.js13
2 files changed, 13 insertions, 30 deletions
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index 66e4f9dc273..30a803f3207 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -103,11 +103,20 @@
name: 'Share',
displayName: '',
mime: 'all',
- permissions: OC.PERMISSION_SHARE,
+ permissions: OC.PERMISSION_ALL,
icon: OC.imagePath('core', 'actions/share'),
type: OCA.Files.FileActions.TYPE_INLINE,
actionHandler: function(fileName) {
fileList.showDetailsView(fileName, 'shareTabView');
+ },
+ render: function(actionSpec, isDefault, context) {
+ var permissions = parseInt(context.$file.attr('data-permissions'), 10);
+ // if no share permissions but share owner exists, still show the link
+ if ((permissions & OC.PERMISSION_SHARE) !== 0 || context.$file.attr('data-share-owner')) {
+ return fileActions._defaultRenderAction.call(fileActions, actionSpec, isDefault, context);
+ }
+ // don't render anything
+ return null;
}
});
@@ -157,26 +166,7 @@
// if the statuses are loaded already, use them for the icon
// (needed when scrolling to the next page)
if (hasUserShares || hasLinkShare || $tr.attr('data-share-recipients') || $tr.attr('data-share-owner')) {
- var permissions = $tr.data('permissions');
OC.Share.markFileAsShared($tr, true, hasLinkShare);
- if ((permissions & OC.PERMISSION_SHARE) === 0 && $tr.attr('data-share-owner')) {
- // if no share action exists because the admin disabled sharing for this user
- // we create a share notification action to inform the user about files
- // shared with him otherwise we just update the existing share action.
- // TODO: make this work like/with OC.Share.markFileAsShared()
- $tr.find('.fileactions .action-share-notification').remove();
- var shareNotification = '<a class="action action-share-notification permanent"' +
- ' data-action="Share-Notification" href="#" original-title="">' +
- ' <img class="svg" src="' + OC.imagePath('core', 'actions/share') + '"></img>';
- $tr.find('.fileactions').append(function() {
- var shareBy = escapeHTML($tr.attr('data-share-owner'));
- var $result = $(shareNotification + '<span> ' + shareBy + '</span></span>');
- $result.on('click', function() {
- return false;
- });
- return $result;
- });
- }
return true;
}
return false;
diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js
index 96a96f1b814..fd8e36d71ad 100644
--- a/apps/files_sharing/tests/js/shareSpec.js
+++ b/apps/files_sharing/tests/js/shareSpec.js
@@ -179,7 +179,7 @@ describe('OCA.Sharing.Util tests', function() {
expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder-shared.svg');
expect($action.find('img').length).toEqual(1);
});
- it('shows static share text when file shared with user that has no share permission', function() {
+ it('shows share action when shared with user who has no share permission', function() {
var $action, $tr;
fileList.setFiles([{
id: 1,
@@ -193,14 +193,9 @@ describe('OCA.Sharing.Util tests', function() {
shareOwner: 'User One'
}]);
$tr = fileList.$el.find('tbody tr:first');
- expect($tr.find('.action-share').length).toEqual(0);
- $action = $tr.find('.action-share-notification');
- expect($action.find('>span').text().trim()).toEqual('User One');
- expect(OC.basename($action.find('img').attr('src'))).toEqual('share.svg');
- expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder-shared.svg');
- expect($action.find('img').length).toEqual(1);
+ expect($tr.find('.action-share').length).toEqual(1);
});
- it('do not show static share text when share exists but neither permission nor owner is available', function() {
+ it('do not show share action when share exists but neither permission nor owner is available', function() {
var $action, $tr;
fileList.setFiles([{
id: 1,
@@ -214,8 +209,6 @@ describe('OCA.Sharing.Util tests', function() {
}]);
$tr = fileList.$el.find('tbody tr:first');
expect($tr.find('.action-share').length).toEqual(0);
- $action = $tr.find('.action-share-notification');
- expect($action.length).toEqual(0);
});
});
describe('Share action', function() {