diff --git a/core/css/share.css b/core/css/share.css index 72a8832886..bf38ce83a0 100644 --- a/core/css/share.css +++ b/core/css/share.css @@ -37,6 +37,15 @@ display: none !important; } +#dropdown .avatar { + margin-right: 2px; + display: inline-block; + overflow: hidden; + vertical-align: middle; + width: 32px; + height: 32px; +} + #shareWithList { list-style-type:none; padding:8px; @@ -68,12 +77,6 @@ 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/core.json b/core/js/core.json index 7f3b313e89..44dea37027 100644 --- a/core/js/core.json +++ b/core/js/core.json @@ -5,12 +5,14 @@ "jquery-ui/ui/jquery-ui.custom.js", "underscore/underscore.js", "moment/min/moment-with-locales.js", - "handlebars/handlebars.js" + "handlebars/handlebars.js", + "blueimp-md5/js/md5.js" ], "libraries": [ "jquery-showpassword.js", "jquery-tipsy.js", - "jquery.avatar.js" + "jquery.avatar.js", + "placeholder.js" ], "modules": [ "compatibility.js", diff --git a/core/js/share.js b/core/js/share.js index 2370916e8b..8804db12a0 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -357,20 +357,17 @@ OC.Share={ var dropDownEl; var html = ''; html += ''; html = $(html).appendTo('#shareWithList'); - if (oc_config.enable_avatars === true && shareType === OC.Share.SHARE_TYPE_USER) { - $('.avatar[data-user="' + escapeHTML(shareWith) + '"]').avatar(escapeHTML(shareWith), 32); + if (oc_config.enable_avatars === true) { + if (shareType === OC.Share.SHARE_TYPE_USER) { + html.find('.avatar').avatar(escapeHTML(shareWith), 32); + } else { + //Add sharetype to generate different seed if there is a group and use with the same name + html.find('.avatar').imageplaceholder(escapeHTML(shareWith) + ' ' + shareType); + } } // insert cruds button into last label element var lastLabel = html.find('>label:last'); diff --git a/core/js/tests/specs/shareSpec.js b/core/js/tests/specs/shareSpec.js index bcdc1df3d3..4a2da64502 100644 --- a/core/js/tests/specs/shareSpec.js +++ b/core/js/tests/specs/shareSpec.js @@ -28,6 +28,7 @@ describe('OC.Share tests', function() { var autocompleteStub; var oldEnableAvatars; var avatarStub; + var placeholderStub; beforeEach(function() { $('#testArea').append($('
')); @@ -60,6 +61,7 @@ describe('OC.Share tests', function() { oldEnableAvatars = oc_config.enable_avatars; oc_config.enable_avatars = false; avatarStub = sinon.stub($.fn, 'avatar'); + placeholderStub = sinon.stub($.fn, 'imageplaceholder'); }); afterEach(function() { /* jshint camelcase:false */ @@ -68,6 +70,7 @@ describe('OC.Share tests', function() { autocompleteStub.restore(); avatarStub.restore(); + placeholderStub.restore(); oc_config.enable_avatars = oldEnableAvatars; $('#dropdown').remove(); }); @@ -416,7 +419,12 @@ describe('OC.Share tests', function() { describe('check for avatar', function() { beforeEach(function() { loadItemStub.returns({ - reshare: [], + reshare: { + share_type: OC.Share.SHARE_TYPE_USER, + uid_owner: 'owner', + displayname_owner: 'Owner', + permissions: 31 + }, shares: [{ id: 100, item_source: 123, @@ -431,6 +439,14 @@ describe('OC.Share tests', function() { share_type: OC.Share.SHARE_TYPE_GROUP, share_with: 'group', share_with_displayname: 'group' + },{ + id: 102, + item_source: 123, + permissions: 31, + share_type: OC.Share.SHARE_TYPE_REMOTE, + share_with: 'foo@bar.com/baz', + share_with_displayname: 'foo@bar.com/baz' + }] }); }); @@ -452,21 +468,35 @@ describe('OC.Share tests', function() { oc_config.enable_avatars = false; }); - it('test correct function call', function() { - expect(avatarStub.calledOnce).toEqual(true); + it('test correct function calls', function() { + expect(avatarStub.calledTwice).toEqual(true); + expect(placeholderStub.calledTwice).toEqual(true); + expect($('#shareWithList').children().length).toEqual(3); + expect($('.avatar').length).toEqual(4); + }); + + it('test avatar owner', function() { var args = avatarStub.getCall(0).args; + expect(args.length).toEqual(2); + expect(args[0]).toEqual('owner'); + }); - - expect($('#shareWithList').children().length).toEqual(2); - - expect($('.avatar[data-user="user1"]').length).toEqual(1); + it('test avatar user', function() { + var args = avatarStub.getCall(1).args; 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(); + it('test avatar for groups', function() { + var args = placeholderStub.getCall(0).args; + expect(args.length).toEqual(1); + expect(args[0]).toEqual('group ' + OC.Share.SHARE_TYPE_GROUP); + }); + + it('test avatar for remotes', function() { + var args = placeholderStub.getCall(1).args; + expect(args.length).toEqual(1); + expect(args[0]).toEqual('foo@bar.com/baz ' + OC.Share.SHARE_TYPE_REMOTE); }); }); @@ -484,6 +514,8 @@ describe('OC.Share tests', function() { it('no avatar classes', function() { expect($('.avatar').length).toEqual(0); + expect(avatarStub.callCount).toEqual(0); + expect(placeholderStub.callCount).toEqual(0); }); }); });