Merge pull request #13866 from rullzer/avatar_share_dialog
Avatars in share dialog
This commit is contained in:
commit
e8f16db49d
|
@ -68,6 +68,12 @@
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
#shareWithList .avatar {
|
||||||
|
margin-right: 2px;
|
||||||
|
display: inline-block;
|
||||||
|
overflow: hidden;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
#shareWithList li label{
|
#shareWithList li label{
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,7 @@ $array = array(
|
||||||
'session_keepalive' => \OCP\Config::getSystemValue('session_keepalive', true),
|
'session_keepalive' => \OCP\Config::getSystemValue('session_keepalive', true),
|
||||||
'version' => implode('.', OC_Util::getVersion()),
|
'version' => implode('.', OC_Util::getVersion()),
|
||||||
'versionstring' => OC_Util::getVersionString(),
|
'versionstring' => OC_Util::getVersionString(),
|
||||||
|
'enable_avatars' => \OC::$server->getConfig()->getSystemValue('enable_avatars', true),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
"oc_appconfig" => json_encode(
|
"oc_appconfig" => json_encode(
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
],
|
],
|
||||||
"libraries": [
|
"libraries": [
|
||||||
"jquery-showpassword.js",
|
"jquery-showpassword.js",
|
||||||
"jquery-tipsy.js"
|
"jquery-tipsy.js",
|
||||||
|
"jquery.avatar.js"
|
||||||
],
|
],
|
||||||
"modules": [
|
"modules": [
|
||||||
"compatibility.js",
|
"compatibility.js",
|
||||||
|
|
|
@ -358,9 +358,17 @@ OC.Share={
|
||||||
var html = '<div id="dropdown" class="drop shareDropDown" data-item-type="'+itemType+'" data-item-source="'+itemSource+'">';
|
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 !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) {
|
||||||
if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) {
|
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 {
|
} 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 />';
|
html += '<br />';
|
||||||
// reduce possible permissions to what the original share allowed
|
// reduce possible permissions to what the original share allowed
|
||||||
|
@ -437,6 +445,12 @@ OC.Share={
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
dropDownEl = $(html);
|
dropDownEl = $(html);
|
||||||
dropDownEl = dropDownEl.appendTo(appendTo);
|
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
|
// Reset item shares
|
||||||
OC.Share.itemShares = [];
|
OC.Share.itemShares = [];
|
||||||
OC.Share.currentShares = {};
|
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 html = '<li style="clear: both;" data-share-type="'+escapeHTML(shareType)+'" data-share-with="'+escapeHTML(shareWith)+'" title="' + escapeHTML(shareWith) + '">';
|
||||||
var showCrudsButton;
|
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>';
|
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>';
|
html += '<span class="username">' + escapeHTML(shareWithDisplayName) + '</span>';
|
||||||
var mailNotificationEnabled = $('input:hidden[name=mailNotificationEnabled]').val();
|
var mailNotificationEnabled = $('input:hidden[name=mailNotificationEnabled]').val();
|
||||||
if (mailNotificationEnabled === 'yes' && shareType !== OC.Share.SHARE_TYPE_REMOTE) {
|
if (mailNotificationEnabled === 'yes' && shareType !== OC.Share.SHARE_TYPE_REMOTE) {
|
||||||
|
@ -681,6 +702,9 @@ OC.Share={
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '</li>';
|
html += '</li>';
|
||||||
html = $(html).appendTo('#shareWithList');
|
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
|
// insert cruds button into last label element
|
||||||
var lastLabel = html.find('>label:last');
|
var lastLabel = html.find('>label:last');
|
||||||
if (lastLabel.exists()){
|
if (lastLabel.exists()){
|
||||||
|
|
|
@ -26,6 +26,8 @@ describe('OC.Share tests', function() {
|
||||||
var oldAppConfig;
|
var oldAppConfig;
|
||||||
var loadItemStub;
|
var loadItemStub;
|
||||||
var autocompleteStub;
|
var autocompleteStub;
|
||||||
|
var oldEnableAvatars;
|
||||||
|
var avatarStub;
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
$('#testArea').append($('<div id="shareContainer"></div>'));
|
$('#testArea').append($('<div id="shareContainer"></div>'));
|
||||||
|
@ -54,6 +56,10 @@ describe('OC.Share tests', function() {
|
||||||
var $el = $('<div></div>').data('ui-autocomplete', {});
|
var $el = $('<div></div>').data('ui-autocomplete', {});
|
||||||
return $el;
|
return $el;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
oldEnableAvatars = oc_config.enable_avatars;
|
||||||
|
oc_config.enable_avatars = false;
|
||||||
|
avatarStub = sinon.stub($.fn, 'avatar');
|
||||||
});
|
});
|
||||||
afterEach(function() {
|
afterEach(function() {
|
||||||
/* jshint camelcase:false */
|
/* jshint camelcase:false */
|
||||||
|
@ -61,6 +67,8 @@ describe('OC.Share tests', function() {
|
||||||
loadItemStub.restore();
|
loadItemStub.restore();
|
||||||
|
|
||||||
autocompleteStub.restore();
|
autocompleteStub.restore();
|
||||||
|
avatarStub.restore();
|
||||||
|
oc_config.enable_avatars = oldEnableAvatars;
|
||||||
$('#dropdown').remove();
|
$('#dropdown').remove();
|
||||||
});
|
});
|
||||||
it('calls loadItem with the correct arguments', function() {
|
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() {
|
describe('"sharesChanged" event', function() {
|
||||||
var autocompleteOptions;
|
var autocompleteOptions;
|
||||||
var handler;
|
var handler;
|
||||||
|
|
Loading…
Reference in New Issue