Skip to content

Commit f507601

Browse files
committed
Merge pull request #14582 from rullzer/avatar_fixes
Avatars in share dialog fixes
2 parents aa11b83 + c9272be commit f507601

File tree

4 files changed

+72
-37
lines changed

4 files changed

+72
-37
lines changed

core/css/share.css

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@
3737
display: none !important;
3838
}
3939

40+
#dropdown .avatar {
41+
margin-right: 2px;
42+
display: inline-block;
43+
overflow: hidden;
44+
vertical-align: middle;
45+
width: 32px;
46+
height: 32px;
47+
}
48+
4049
#shareWithList {
4150
list-style-type:none;
4251
padding:8px;
@@ -68,12 +77,6 @@
6877
overflow: hidden;
6978
vertical-align: middle;
7079
}
71-
#shareWithList .avatar {
72-
margin-right: 2px;
73-
display: inline-block;
74-
overflow: hidden;
75-
vertical-align: middle;
76-
}
7780
#shareWithList li label{
7881
margin-right: 8px;
7982
}

core/js/core.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
"jquery-ui/ui/jquery-ui.custom.js",
66
"underscore/underscore.js",
77
"moment/min/moment-with-locales.js",
8-
"handlebars/handlebars.js"
8+
"handlebars/handlebars.js",
9+
"blueimp-md5/js/md5.js"
910
],
1011
"libraries": [
1112
"jquery-showpassword.js",
1213
"jquery-tipsy.js",
13-
"jquery.avatar.js"
14+
"jquery.avatar.js",
15+
"placeholder.js"
1416
],
1517
"modules": [
1618
"compatibility.js",

core/js/share.js

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -357,20 +357,17 @@ OC.Share={
357357
var dropDownEl;
358358
var html = '<div id="dropdown" class="drop shareDropDown" data-item-type="'+itemType+'" data-item-source="'+itemSource+'">';
359359
if (data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) {
360+
html += '<span class="reshare">';
361+
if (oc_config.enable_avatars === true) {
362+
html += '<div class="avatar"></div> ';
363+
}
364+
360365
if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) {
361-
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});
362-
if (oc_config.enable_avatars === true) {
363-
html += ' <div id="avatar-share-owner" style="display: inline-block"></div>';
364-
}
365-
html += '</span>';
366+
html += t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.displayname_owner});
366367
} else {
367-
html += '<span class="reshare">'+t('core', 'Shared with you by {owner}', {owner: data.reshare.displayname_owner});
368-
if (oc_config.enable_avatars === true) {
369-
html += ' <div id="avatar-share-owner" style="display: inline-block"></div>';
370-
}
371-
html += '</span>';
368+
html += t('core', 'Shared with you by {owner}', {owner: data.reshare.displayname_owner});
372369
}
373-
html += '<br />';
370+
html += '</span><br />';
374371
// reduce possible permissions to what the original share allowed
375372
possiblePermissions = possiblePermissions & data.reshare.permissions;
376373
}
@@ -448,7 +445,7 @@ OC.Share={
448445

449446
//Get owner avatars
450447
if (oc_config.enable_avatars === true && data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) {
451-
$('#avatar-share-owner').avatar(data.reshare.uid_owner, 32);
448+
dropDownEl.find(".avatar").avatar(data.reshare.uid_owner, 32);
452449
}
453450

454451
// Reset item shares
@@ -665,11 +662,7 @@ OC.Share={
665662
var showCrudsButton;
666663
html += '<a href="#" class="unshare"><img class="svg" alt="'+t('core', 'Unshare')+'" title="'+t('core', 'Unshare')+'" src="'+OC.imagePath('core', 'actions/delete')+'"/></a>';
667664
if (oc_config.enable_avatars === true) {
668-
if (shareType === OC.Share.SHARE_TYPE_USER) {
669-
html += '<div data-user="' + escapeHTML(shareWith) + '" class="avatar"></div>';
670-
} else {
671-
html += '<div class="avatar" style="padding-right: 32px"></div>';
672-
}
665+
html += '<div class="avatar"></div>';
673666
}
674667
html += '<span class="username">' + escapeHTML(shareWithDisplayName) + '</span>';
675668
var mailNotificationEnabled = $('input:hidden[name=mailNotificationEnabled]').val();
@@ -702,8 +695,13 @@ OC.Share={
702695
html += '</div>';
703696
html += '</li>';
704697
html = $(html).appendTo('#shareWithList');
705-
if (oc_config.enable_avatars === true && shareType === OC.Share.SHARE_TYPE_USER) {
706-
$('.avatar[data-user="' + escapeHTML(shareWith) + '"]').avatar(escapeHTML(shareWith), 32);
698+
if (oc_config.enable_avatars === true) {
699+
if (shareType === OC.Share.SHARE_TYPE_USER) {
700+
html.find('.avatar').avatar(escapeHTML(shareWith), 32);
701+
} else {
702+
//Add sharetype to generate different seed if there is a group and use with the same name
703+
html.find('.avatar').imageplaceholder(escapeHTML(shareWith) + ' ' + shareType);
704+
}
707705
}
708706
// insert cruds button into last label element
709707
var lastLabel = html.find('>label:last');

core/js/tests/specs/shareSpec.js

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ describe('OC.Share tests', function() {
2828
var autocompleteStub;
2929
var oldEnableAvatars;
3030
var avatarStub;
31+
var placeholderStub;
3132

3233
beforeEach(function() {
3334
$('#testArea').append($('<div id="shareContainer"></div>'));
@@ -60,6 +61,7 @@ describe('OC.Share tests', function() {
6061
oldEnableAvatars = oc_config.enable_avatars;
6162
oc_config.enable_avatars = false;
6263
avatarStub = sinon.stub($.fn, 'avatar');
64+
placeholderStub = sinon.stub($.fn, 'imageplaceholder');
6365
});
6466
afterEach(function() {
6567
/* jshint camelcase:false */
@@ -68,6 +70,7 @@ describe('OC.Share tests', function() {
6870

6971
autocompleteStub.restore();
7072
avatarStub.restore();
73+
placeholderStub.restore();
7174
oc_config.enable_avatars = oldEnableAvatars;
7275
$('#dropdown').remove();
7376
});
@@ -416,7 +419,12 @@ describe('OC.Share tests', function() {
416419
describe('check for avatar', function() {
417420
beforeEach(function() {
418421
loadItemStub.returns({
419-
reshare: [],
422+
reshare: {
423+
share_type: OC.Share.SHARE_TYPE_USER,
424+
uid_owner: 'owner',
425+
displayname_owner: 'Owner',
426+
permissions: 31
427+
},
420428
shares: [{
421429
id: 100,
422430
item_source: 123,
@@ -431,6 +439,14 @@ describe('OC.Share tests', function() {
431439
share_type: OC.Share.SHARE_TYPE_GROUP,
432440
share_with: 'group',
433441
share_with_displayname: 'group'
442+
},{
443+
id: 102,
444+
item_source: 123,
445+
permissions: 31,
446+
share_type: OC.Share.SHARE_TYPE_REMOTE,
447+
share_with: '[email protected]/baz',
448+
share_with_displayname: '[email protected]/baz'
449+
434450
}]
435451
});
436452
});
@@ -452,21 +468,35 @@ describe('OC.Share tests', function() {
452468
oc_config.enable_avatars = false;
453469
});
454470

455-
it('test correct function call', function() {
456-
expect(avatarStub.calledOnce).toEqual(true);
457-
var args = avatarStub.getCall(0).args;
458-
471+
it('test correct function calls', function() {
472+
expect(avatarStub.calledTwice).toEqual(true);
473+
expect(placeholderStub.calledTwice).toEqual(true);
474+
expect($('#shareWithList').children().length).toEqual(3);
475+
expect($('.avatar').length).toEqual(4);
476+
});
459477

460-
expect($('#shareWithList').children().length).toEqual(2);
478+
it('test avatar owner', function() {
479+
var args = avatarStub.getCall(0).args;
480+
expect(args.length).toEqual(2);
481+
expect(args[0]).toEqual('owner');
482+
});
461483

462-
expect($('.avatar[data-user="user1"]').length).toEqual(1);
484+
it('test avatar user', function() {
485+
var args = avatarStub.getCall(1).args;
463486
expect(args.length).toEqual(2);
464487
expect(args[0]).toEqual('user1');
465488
});
466489

467-
it('test no avatar for groups', function() {
468-
expect($('#shareWithList').children().length).toEqual(2);
469-
expect($('#shareWithList li:nth-child(2) .avatar').attr('id')).not.toBeDefined();
490+
it('test avatar for groups', function() {
491+
var args = placeholderStub.getCall(0).args;
492+
expect(args.length).toEqual(1);
493+
expect(args[0]).toEqual('group ' + OC.Share.SHARE_TYPE_GROUP);
494+
});
495+
496+
it('test avatar for remotes', function() {
497+
var args = placeholderStub.getCall(1).args;
498+
expect(args.length).toEqual(1);
499+
expect(args[0]).toEqual('[email protected]/baz ' + OC.Share.SHARE_TYPE_REMOTE);
470500
});
471501
});
472502

@@ -484,6 +514,8 @@ describe('OC.Share tests', function() {
484514

485515
it('no avatar classes', function() {
486516
expect($('.avatar').length).toEqual(0);
517+
expect(avatarStub.callCount).toEqual(0);
518+
expect(placeholderStub.callCount).toEqual(0);
487519
});
488520
});
489521
});

0 commit comments

Comments
 (0)