This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/helpers/user-avatar.js.es6
2019-01-11 17:54:23 +01:00

78 lines
2.1 KiB
JavaScript

import { registerUnbound } from "discourse-common/lib/helpers";
import { avatarImg, formatUsername } from "discourse/lib/utilities";
let _customAvatarHelpers;
export function registerCustomAvatarHelper(fn) {
_customAvatarHelpers = _customAvatarHelpers || [];
_customAvatarHelpers.push(fn);
}
export function addExtraUserClasses(u, args) {
let extraClasses = classesForUser(u).join(" ");
if (extraClasses && extraClasses.length) {
args.extraClasses = extraClasses;
}
return args;
}
export function classesForUser(u) {
let result = [];
if (_customAvatarHelpers) {
for (let i = 0; i < _customAvatarHelpers.length; i++) {
result = result.concat(_customAvatarHelpers[i](u));
}
}
return result;
}
function renderAvatar(user, options) {
options = options || {};
if (user) {
const name = Ember.get(user, options.namePath || "name");
const username = Ember.get(user, options.usernamePath || "username");
const avatarTemplate = Ember.get(
user,
options.avatarTemplatePath || "avatar_template"
);
if (!username || !avatarTemplate) {
return "";
}
let displayName = name || formatUsername(username);
let title = options.title;
if (!title && !options.ignoreTitle) {
// first try to get a title
title = Ember.get(user, "title");
// if there was no title provided
if (!title) {
// try to retrieve a description
const description = Ember.get(user, "description");
// if a description has been provided
if (description && description.length > 0) {
// preprend the username before the description
title = displayName + " - " + description;
}
}
}
return avatarImg({
size: options.imageSize,
extraClasses: Ember.get(user, "extras") || options.extraClasses,
title: title || displayName,
avatarTemplate: avatarTemplate
});
} else {
return "";
}
}
registerUnbound("avatar", function(user, params) {
return new Handlebars.SafeString(renderAvatar.call(this, user, params));
});
export { renderAvatar };