diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-02-17 10:17:36 +0100 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2015-02-17 10:17:36 +0100 |
commit | e8f16db49d3da864bf3d919918b79dcf59e0c10c (patch) | |
tree | 7082fa8e96261388722080c3b60d788af6b4d7a4 /core | |
parent | 30ca14021c176f5a12b7cf357b1e93db0221131e (diff) | |
parent | 9a6da8e6e2739c42c0f2e458ab8738e8b018187f (diff) | |
download | nextcloud-server-e8f16db49d3da864bf3d919918b79dcf59e0c10c.tar.gz nextcloud-server-e8f16db49d3da864bf3d919918b79dcf59e0c10c.zip |
Merge pull request #13866 from rullzer/avatar_share_dialog
Avatars in share dialog
Diffstat (limited to 'core')
-rw-r--r-- | core/css/share.css | 6 | ||||
-rw-r--r-- | core/js/config.php | 1 | ||||
-rw-r--r-- | core/js/core.json | 3 | ||||
-rw-r--r-- | core/js/share.js | 28 | ||||
-rw-r--r-- | core/js/tests/specs/shareSpec.js | 82 |
5 files changed, 117 insertions, 3 deletions
diff --git a/core/css/share.css b/core/css/share.css index 3ebf3a4b220..72a88328867 100644 --- a/core/css/share.css +++ b/core/css/share.css @@ -68,6 +68,12 @@ overflow: hidden; vertical-align: middle; } +#shareWithList .avatar { + margin-right: 2px; + display: inline-block; + overflow: hidden; + vertical-align: middle; +} #shareWithList li label{ margin-right: 8px; } diff --git a/core/js/config.php b/core/js/config.php index 52405725f23..b7224253461 100644 --- a/core/js/config.php +++ b/core/js/config.php @@ -74,6 +74,7 @@ $array = array( 'session_keepalive' => \OCP\Config::getSystemValue('session_keepalive', true), 'version' => implode('.', OC_Util::getVersion()), 'versionstring' => OC_Util::getVersionString(), + 'enable_avatars' => \OC::$server->getConfig()->getSystemValue('enable_avatars', true), ) ), "oc_appconfig" => json_encode( diff --git a/core/js/core.json b/core/js/core.json index 2fb7842624c..7f3b313e898 100644 --- a/core/js/core.json +++ b/core/js/core.json @@ -9,7 +9,8 @@ ], "libraries": [ "jquery-showpassword.js", - "jquery-tipsy.js" + "jquery-tipsy.js", + "jquery.avatar.js" ], "modules": [ "compatibility.js", diff --git a/core/js/share.js b/core/js/share.js index b3533af4824..692ce0b0ba0 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -358,9 +358,17 @@ OC.Share={ var html = '<div id="dropdown" class="drop shareDropDown" data-item-type="'+itemType+'" data-item-source="'+itemSource+'">'; if (data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) { if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) { - html += '<span class="reshare">'+t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.displayname_owner})+'</span>'; + html += '<span class="reshare">'+t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.displayname_owner}); + if (oc_config.enable_avatars === true) { + html += ' <div id="avatar-share-owner" style="display: inline-block"></div>'; + } + html += '</span>'; } else { - html += '<span class="reshare">'+t('core', 'Shared with you by {owner}', {owner: data.reshare.displayname_owner})+'</span>'; + html += '<span class="reshare">'+t('core', 'Shared with you by {owner}', {owner: data.reshare.displayname_owner}); + if (oc_config.enable_avatars === true) { + html += ' <div id="avatar-share-owner" style="display: inline-block"></div>'; + } + html += '</span>'; } html += '<br />'; // reduce possible permissions to what the original share allowed @@ -437,6 +445,12 @@ OC.Share={ html += '</div>'; dropDownEl = $(html); dropDownEl = dropDownEl.appendTo(appendTo); + + //Get owner avatars + if (oc_config.enable_avatars === true && data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) { + $('#avatar-share-owner').avatar(data.reshare.uid_owner, 32); + } + // Reset item shares OC.Share.itemShares = []; OC.Share.currentShares = {}; @@ -650,6 +664,13 @@ OC.Share={ var html = '<li style="clear: both;" data-share-type="'+escapeHTML(shareType)+'" data-share-with="'+escapeHTML(shareWith)+'" title="' + escapeHTML(shareWith) + '">'; var showCrudsButton; html += '<a href="#" class="unshare"><img class="svg" alt="'+t('core', 'Unshare')+'" title="'+t('core', 'Unshare')+'" src="'+OC.imagePath('core', 'actions/delete')+'"/></a>'; + if (oc_config.enable_avatars === true) { + if (shareType === OC.Share.SHARE_TYPE_USER) { + html += '<div id="avatar-' + escapeHTML(shareWith) + '" class="avatar"></div>'; + } else { + html += '<div class="avatar" style="padding-right: 32px"></div>'; + } + } html += '<span class="username">' + escapeHTML(shareWithDisplayName) + '</span>'; var mailNotificationEnabled = $('input:hidden[name=mailNotificationEnabled]').val(); if (mailNotificationEnabled === 'yes' && shareType !== OC.Share.SHARE_TYPE_REMOTE) { @@ -681,6 +702,9 @@ OC.Share={ html += '</div>'; html += '</li>'; html = $(html).appendTo('#shareWithList'); + if (oc_config.enable_avatars === true && shareType === OC.Share.SHARE_TYPE_USER) { + $('#avatar-' + escapeHTML(shareWith)).avatar(escapeHTML(shareWith), 32); + } // insert cruds button into last label element var lastLabel = html.find('>label:last'); if (lastLabel.exists()){ diff --git a/core/js/tests/specs/shareSpec.js b/core/js/tests/specs/shareSpec.js index 7eb22261e10..1856fc27bc6 100644 --- a/core/js/tests/specs/shareSpec.js +++ b/core/js/tests/specs/shareSpec.js @@ -26,6 +26,8 @@ describe('OC.Share tests', function() { var oldAppConfig; var loadItemStub; var autocompleteStub; + var oldEnableAvatars; + var avatarStub; beforeEach(function() { $('#testArea').append($('<div id="shareContainer"></div>')); @@ -54,6 +56,10 @@ describe('OC.Share tests', function() { var $el = $('<div></div>').data('ui-autocomplete', {}); return $el; }); + + oldEnableAvatars = oc_config.enable_avatars; + oc_config.enable_avatars = false; + avatarStub = sinon.stub($.fn, 'avatar'); }); afterEach(function() { /* jshint camelcase:false */ @@ -61,6 +67,8 @@ describe('OC.Share tests', function() { loadItemStub.restore(); autocompleteStub.restore(); + avatarStub.restore(); + oc_config.enable_avatars = oldEnableAvatars; $('#dropdown').remove(); }); it('calls loadItem with the correct arguments', function() { @@ -405,6 +413,80 @@ describe('OC.Share tests', function() { }); }); }); + describe('check for avatar', function() { + beforeEach(function() { + loadItemStub.returns({ + reshare: [], + shares: [{ + id: 100, + item_source: 123, + permissions: 31, + share_type: OC.Share.SHARE_TYPE_USER, + share_with: 'user1', + share_with_displayname: 'User One' + },{ + id: 101, + item_source: 123, + permissions: 31, + share_type: OC.Share.SHARE_TYPE_GROUP, + share_with: 'group', + share_with_displayname: 'group' + }] + }); + }); + + describe('avatars enabled', function() { + beforeEach(function() { + oc_config.enable_avatars = true; + OC.Share.showDropDown( + 'file', + 123, + $container, + true, + 31, + 'shared_file_name.txt' + ); + }); + + afterEach(function() { + oc_config.enable_avatars = false; + }); + + it('test correct function call', function() { + expect(avatarStub.calledOnce).toEqual(true); + var args = avatarStub.getCall(0).args; + + + expect($('#shareWithList').children().length).toEqual(2); + + expect($('#avatar-user1').length).toEqual(1); + expect(args.length).toEqual(2); + expect(args[0]).toEqual('user1'); + }); + + it('test no avatar for groups', function() { + expect($('#shareWithList').children().length).toEqual(2); + expect($('#shareWithList li:nth-child(2) .avatar').attr('id')).not.toBeDefined(); + }); + }); + + describe('avatars disabled', function() { + beforeEach(function() { + OC.Share.showDropDown( + 'file', + 123, + $container, + true, + 31, + 'shared_file_name.txt' + ); + }); + + it('no avatar classes', function() { + expect($('.avatar').length).toEqual(0); + }); + }); + }); describe('"sharesChanged" event', function() { var autocompleteOptions; var handler; |