summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-02-17 10:17:36 +0100
committerVincent Petry <pvince81@owncloud.com>2015-02-17 10:17:36 +0100
commite8f16db49d3da864bf3d919918b79dcf59e0c10c (patch)
tree7082fa8e96261388722080c3b60d788af6b4d7a4 /core
parent30ca14021c176f5a12b7cf357b1e93db0221131e (diff)
parent9a6da8e6e2739c42c0f2e458ab8738e8b018187f (diff)
downloadnextcloud-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.css6
-rw-r--r--core/js/config.php1
-rw-r--r--core/js/core.json3
-rw-r--r--core/js/share.js28
-rw-r--r--core/js/tests/specs/shareSpec.js82
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;