Merge pull request #20943 from owncloud/load_avatar_once

[Avatars] JS should not load same avatar twice
This commit is contained in:
Vincent Petry 2015-12-04 11:24:44 +01:00
commit af8bcb3a4d
2 changed files with 42 additions and 22 deletions

View File

@ -47,7 +47,7 @@
*/ */
(function ($) { (function ($) {
$.fn.avatar = function(user, size, ie8fix, hidedefault, callback) { $.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {
if (typeof(size) === 'undefined') { if (typeof(size) === 'undefined') {
if (this.height() > 0) { if (this.height() > 0) {
size = this.height(); size = this.height();
@ -79,30 +79,51 @@
'/avatar/{user}/{size}', '/avatar/{user}/{size}',
{user: user, size: Math.ceil(size * window.devicePixelRatio)}); {user: user, size: Math.ceil(size * window.devicePixelRatio)});
$.get(url, function(result) { // If the displayname is not defined we use the old code path
if (typeof(result) === 'object') { if (typeof(displayname) === 'undefined') {
if (!hidedefault) { $.get(url, function(result) {
if (result.data && result.data.displayname) { if (typeof(result) === 'object') {
$div.imageplaceholder(user, result.data.displayname); if (!hidedefault) {
if (result.data && result.data.displayname) {
$div.imageplaceholder(user, result.data.displayname);
} else {
// User does not exist
$div.imageplaceholder(user, 'X');
$div.css('background-color', '#b9b9b9');
}
} else { } else {
// User does not exist $div.hide();
$div.imageplaceholder(user, 'X');
$div.css('background-color', '#b9b9b9');
} }
} else { } else {
$div.hide(); $div.show();
if (ie8fix === true) {
$div.html('<img width="' + size + '" height="' + size + '" src="'+url+'#'+Math.floor(Math.random()*1000)+'">');
} else {
$div.html('<img width="' + size + '" height="' + size + '" src="'+url+'">');
}
} }
} else { if(typeof callback === 'function') {
callback();
}
});
} else {
// We already have the displayname so set the placeholder (to show at least something)
if (!hidedefault) {
$div.imageplaceholder(displayname);
}
var img = new Image();
// If the new image loads successfull set it.
img.onload = function() {
$div.show(); $div.show();
if (ie8fix === true) { $div.text('');
$div.html('<img width="' + size + '" height="' + size + '" src="'+url+'#'+Math.floor(Math.random()*1000)+'">'); $div.append(img);
} else {
$div.html('<img width="' + size + '" height="' + size + '" src="'+url+'">');
}
} }
if(typeof callback === 'function') {
callback(); img.width = size;
} img.height = size;
}); img.src = url;
}
}; };
}(jQuery)); }(jQuery));

View File

@ -65,8 +65,7 @@ var UserList = {
* Avatar or placeholder * Avatar or placeholder
*/ */
if ($tr.find('div.avatardiv').length){ if ($tr.find('div.avatardiv').length){
$tr.find('.avatardiv').imageplaceholder(user.name, user.displayname); $('div.avatardiv', $tr).avatar(user.name, 32, undefined, undefined, undefined, user.displayname);
$('div.avatardiv', $tr).avatar(user.name, 32);
} }
/** /**