Этот компонент работает, просто заменяя имя пользователя на имя пользователя (если оно доступно) при отображении сообщений. При редактировании ничего не меняется. Вы по-прежнему отмечаете @username, как обычно, в редакторе.
Также добавляется класс .mention-fullname к элементу якоря a.mention, если вы хотите стилизовать упоминания полных имен особым образом.
Отображение карточки при клике на упоминания @fullname остается полностью функциональным.
Представьте экземпляр Discourse, где каждое имя пользователя следует шаблону X9999999 (одна буква и семь цифр). Теперь представьте, что зарегистрировано 100 тысяч пользователей.
Не очень дружелюбно, верно? К сожалению, это очень реальная ситуация, а не выдуманная. Экземпляр Discourse связан с SSO, и все имена пользователей следуют корпоративной политике.
В этом случае гораздо лучше читать @John Doe вместо @X9999999.
Настройки:
show_fullname_in_mentions: Если включено, @упоминания будут показывать @fullname вместо @username
Я попробовал его, но после экспериментов заметил, что он создаёт некоторые несоответствия с точки зрения UX.
Вот что происходит: у меня есть пользователь с именем пользователя “oli44” и полным именем “Henri Oliver”. С вашим компонентом темы теперь отображается “Henri Oliver”, что отлично, так как добавляет лучший контекст. Но представьте, что я другой пользователь, который не знает, что “Henri Oliver” использует имя пользователя “oli44”. Как тогда мне упомянуть его в своём посте?
Я буду искать “Henri Oliver” и действительно увижу “oli44”, но как мне понять, что это тот самый человек?
По этой причине в текущем виде я пока не включаю эту функцию. Знаете ли вы, возможно, другой компонент темы или плагин, который решил бы эту проблему? Я пытался найти что-то подобное, но не смог.
Или, может быть, есть способ, чтобы ваш компонент темы всё же показывал имя пользователя (например, @Henri Oliver (oli44)), чтобы, когда мне нужно упомянуть этого человека, я знал, что искать?
В любом случае спасибо за это отличное дополнение.
Для каждого упоминания будет отправляться один AJAX-запрос на сервер.
Может ли это привести к ограничению частоты запросов (throttling) на страницах с большим количеством имён пользователей (например, в предоставленных пользователями справочниках)?
Кэшированное преобразование имени пользователя в полное имя не будет учитывать изменения полного имени. Как долго живёт этот кэш?
Интересно, можно ли предоставить необходимую информацию (имя пользователя → полное имя) через сопутствующий плагин, что сделало бы эти проблемы неактуальными.
Я не знаю. Поскольку я занимаюсь только разработкой плагинов и компонентов, я решил собрать эти два обходных решения, чтобы получить желаемое поведение.
Но, возможно, кто-то другой захочет присоединиться и доработать это.
Вы только что опубликовали это, и я как раз установил плагин оригинального автора в тот момент, когда вы это сделали. Дело в том, что я заметил: плагин оригинального автора не поддерживает полные названия для групп. Однако, похоже, вы добавили группы. Если это так, поздравляю! Ваш плагин заслуживает отдельной темы, учитывая то, что вы реализовали!
Спасибо! Теперь я понял. Возможно ли также поиск по группам? У меня группа с trust_level_0 называется everyone. Если бы плагин мог использовать полное название группы для упоминаний, это было бы отличным способом сделать глобальные упоминания trust_level_0 похожими на упоминание everyone.
Поскольку плагин включает эту информацию при сборке сообщений. Обратите внимание: если пользователь обновит полное имя, оно не обновится в сообщении, пока сообщение не будет пересобрано.
Мне нужно обновить несколько вещей в этом компоненте темы. Теперь, если включен статус пользователя, можно убрать вызовы Ajax.
РЕДАКТИРОВАНИЕ: Ах, потому что столбец full_name в таблице groups не содержит изменённого значения полного названия для групп уровней доверия! Проверил в Data Explorer — там значение null. Странно?
Действительно. Я попробовал это, и всё сработало без серьёзных последствий. Есть ли способ внедрить группы, не используя плагин, а только компонент темы? Для меня это предпочтительнее, так как я не люблю усложнять, если можно этого избежать.