[ticket/13713] Fix avatar display with new helper methods

PHPBB3-13713
This commit is contained in:
Marc Alexander 2021-05-04 21:06:41 +02:00
parent 169015eab4
commit 9ae015569c
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
3 changed files with 25 additions and 12 deletions

View file

@ -416,17 +416,36 @@ function getCaretPosition(txtarea) {
/** /**
* Get default avatar * Get default avatar
* @param {string} type Type of avatar; either group or user on any other value * @param {string} type Type of avatar; either 'g' for group or user on any other value
* @returns {string} Default avatar svg code * @returns {string} Default avatar svg code
*/ */
function defaultAvatar(type) { function defaultAvatar(type) {
if (type === 'group') { if (type === 'g') {
return '<svg class="mention-media-avatar" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill-rule="evenodd" d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>'; return '<svg class="mention-media-avatar" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill-rule="evenodd" d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>';
} else { } else {
return '<svg class="mention-media-avatar" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill-rule="evenodd" d="M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"/></svg>'; return '<svg class="mention-media-avatar" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill-rule="evenodd" d="M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"/></svg>';
} }
} }
/**
* Get avatar HTML for data and type of avatar
*
* @param {object} data
* @param {string} type
* @return {string} Avatar HTML
*/
function getAvatar(data, type) {
const avatarToHtml = (avatarData) => {
if (avatarData.html !== '') {
return avatarData.html;
} else {
return '<img class="avatar" src="' + avatarData.src + '" width="' + avatarData.width + '" height="' + avatarData.height + '" alt="' + avatarData.title + '" />';
}
}
return data.html === '' && data.src === '' ? defaultAvatar(type) : "<span class='mention-media-avatar'>" + avatarToHtml(data)+ "</span>";
}
/** /**
* Get cached keyword for query string * Get cached keyword for query string
* @param {string} query Query string * @param {string} query Query string
@ -620,8 +639,8 @@ function getCaretPosition(txtarea) {
itemClass: 'mention-item', itemClass: 'mention-item',
menuItemTemplate: function (data) { menuItemTemplate: function (data) {
const itemData = data; const itemData = data;
let avatar = (itemData.avatar.img) ? "<span class='mention-media-avatar'>" + itemData.avatar.img + "</span>" : defaultAvatar(itemData.avatar.type), let avatar = getAvatar(itemData.avatar, itemData.type);
rank = (itemData.rank) ? "<span class='mention-rank'>" + itemData.rank + "</span>" : ''; let rank = (itemData.rank) ? "<span class='mention-rank'>" + itemData.rank + "</span>" : '';
return "<span class='mention-media'>" + avatar + "</span><span class='mention-name'>" + itemData.name + rank + "</span>"; return "<span class='mention-media'>" + avatar + "</span><span class='mention-name'>" + itemData.name + rank + "</span>";
}, },
selectTemplate: function (item) { selectTemplate: function (item) {

View file

@ -159,10 +159,7 @@ abstract class base_group implements source_interface
'name' => $groups[$group_id]['group_name'], 'name' => $groups[$group_id]['group_name'],
'type' => 'g', 'type' => 'g',
'id' => $group_id, 'id' => $group_id,
'avatar' => [ 'avatar' => $this->helper->get_avatar($groups[$group_id]),
'type' => 'group',
'img' => phpbb_get_group_avatar($groups[$group_id]),
],
'rank' => (isset($group_rank['title'])) ? $group_rank['title'] : '', 'rank' => (isset($group_rank['title'])) ? $group_rank['title'] : '',
'priority' => $this->get_priority($groups[$group_id]), 'priority' => $this->get_priority($groups[$group_id]),
]); ]);

View file

@ -152,10 +152,7 @@ abstract class base_user implements source_interface
'name' => $this->user_loader->get_username($user['user_id'], 'username'), 'name' => $this->user_loader->get_username($user['user_id'], 'username'),
'type' => 'u', 'type' => 'u',
'id' => $user['user_id'], 'id' => $user['user_id'],
'avatar' => [ 'avatar' => $this->user_loader->get_avatar($user['user_id']),
'type' => 'user',
'img' => $this->user_loader->get_avatar($user['user_id']),
],
'rank' => (isset($user_rank['rank_title'])) ? $user_rank['rank_title'] : '', 'rank' => (isset($user_rank['rank_title'])) ? $user_rank['rank_title'] : '',
'priority' => $this->get_priority($user), 'priority' => $this->get_priority($user),
]); ]);