Я получил письмо об этом и был очень сбит с толку, так как не помню, чтобы делал подобное сообщение.
Меня интересует, как здесь в цитатном ответе произошло подмена на «taylor»? Это ошибка ручного редактирования (я не уверен, как вручную создать блок цитаты с источником или вообще возможно ли это), или где-то в логике ответов есть ошибка? @tshenry
Я только что попробовал процитировать несколько сообщений, и, кажется, что-то не так с именем пользователя и полным именем. Вероятно, это из-за недавнего коммита:
не мог бы ты предоставить мне больше информации о том, что
При включённой настройке сайта prioritize username in ux и выключенной display name on posts в цитате должно отображаться имя пользователя, и наоборот — полное имя.
Извините, я мог бы быть гораздо полезнее. Я просто попробовал процитировать несколько сообщений в этой теме, и в редакторе появились странные результаты:
[quote="Taylor, post:113, topic:13395"]
Вы можете получить бесплатный доступ к API v1.1 в рамках тарифа Elevated. Вам просто нужно подать заявку через панель разработчика. Я обнаружил, что это очень быстро и просто. После этого вход через Twitter в Discourse работал безупречно :tada:
[/quote]
(это стиль, из-за которого @taylor получил уведомление)
При обновлении логики цитирования, чтобы можно было переключать между именем пользователя и полным именем через настройку сайта, я столкнулся с проблемой (часть проблемы была отмечена выше). Давайте рассмотрим гипотетический сценарий…
Тим создаёт пост.
Добавлена и активирована настройка сайта для переключения отображаемого имени автора оригинального сообщения (ОП) между именем пользователя (было активно) и полным именем (сейчас активно).
Пользователь цитирует Тима в новом посте, но поскольку мы теперь используем полное имя для цитат, другой пользователь ТимТам, полное имя: Тим, получает уведомление о том, что его процитировали в посте, который он никогда не создавал.
Пересборка всех цитат также не подходит. Если эту настройку сайта переключали несколько раз, и мы будем выполнять пересборку многократно, то цитата, преобразуемая из полного имени в имя пользователя, может оказаться не уникальной и соответствовать нескольким пользователям.
Видимый нам путь решения — добавить дополнительный атрибут данных к цитате, например data-full-name="true"(или что-то подобное), чтобы проверять, нужно ли заменять имя пользователя на полное имя в интерфейсе, вместо манипуляций с data-username.
Это избавит нас от необходимости беспокоиться о том, по имени пользователя или полному имени мы выполняем запросы или отправляем уведомления. Что вы думаете? Стоит ли прилагать усилия для обновления PrettyText и нашего конструктора цитат ради этого изменения?
Я предпочитаю не добавлять поддержку переключения. Это решение вы принимаете на раннем этапе настройки сообщества; обеспечение максимально плавного переключения крайне дорого и сопряжено с рядом компромиссов.
Если я процитирую вас с приоритетом на имя пользователя, будет отрендерен следующий markdown:
Нужно быть осторожным с запятыми в полных именах, но я поддерживаю их удаление для этого случая, либо, полагаю, можно ввести какой-то трюк с экранированием.
Вы хотите сказать, что рекомендуете отказаться от попытки добавить возможность отображения цитат с полными именами? Мы неизбежно столкнемся с такими случаями переключения… например, любое существующее сообщество с цитатой.
Нет, не полностью отказываться… в meta отключена настройка prioritize username in ux. Цитата, которую я только что привёл, должна выглядеть так (в ней отсутствует аватар, что нужно исправить):
Разметка здесь должна быть следующей:
[quote="Isaac Janzen, post:14, topic:217633"]
Вы имеете в виду, что рекомендуете отказаться от попытки добавить возможность отображения цитат с полными именами?
[/quote]
Единственное необходимое изменение — сделать виджет цитирования aware от этой настройки, чтобы он заполнял полное имя вместо имени пользователя. Не беспокойтесь о миграции и истории.
# quote.js
# opts.displayName = true, если в настройках сайта приоритет отдается полному имени
const name = opts.displayName
? opts.name || post.name
: opts.username || post.username;
# формирование разметки цитаты
const params = [
name,
`post:${opts.post || post.post_number}`,
`topic:${opts.topic || post.topic_id}`,
];
чтобы получить вывод
но проблема заключалась в том, что поиск пользователя по полному имени ломал существующие цитаты, которые были сформированы с использованием имени пользователя.
Так почему же имя отсутствует в цитате выше? Изменения были откатаны?
Согласен, нам нужно поработать над этим:
Нам нужно извлечь имя пользователя из комбинации «пост / тема» и поместить его в обработанный Markdown (мы должны делать это без условий), иначе мы не сможем отображать аватары для полного имени.
Это также позволит нам исправить этот частный случай, чтобы мой аватар не отображался в этой ошибочной цитате (или даже подсвечивал ошибку цитирования).
Я полностью открыт к исправлению нескольких крайних случаев, пока мы этим занимаемся:
Несоответствие имени пользователя
Что делать с аватаром?
Что делать с именем пользователя?
Несоответствие полного имени
Что делать с аватаром?
Что делать с именем?
Думаю, лучшее решение на данный момент — просто «переопределить». Если в сообщении есть имя/имя пользователя, используйте их вместо тех, что были указаны в цитате. Учитывайте текущее имя и текущее имя пользователя.
Думаю, я могу принять изменение в разметке, чтобы избежать погружения в кроличью нору масштабного приключения по обеспечению безопасности. Однако это изменение должно быть гиперхирургически точным.
Можете ли вы подтвердить, что новый подробный синтаксис всегда срабатывает только если выполнены оба условия: siteSettings.display_name_on_posts && !siteSettings.prioritize_username_in_ux?
Я готов принять это как промежуточный шаг на данный момент, но нашей долгосрочной целью является удаление этого шума из блока цитаты (усиление безопасности, ограничение злоупотреблений) и поддержка сокращённого формата цитаты, который у нас всегда был, проработав «консервный завод с змеями» по вопросам безопасности, точно так же, как мы вынуждены делать сейчас для встроенных oneboxes, например: Quoting broken when name matches username - #20 by isaac ← Quoting broken when name matches username - #20 by isaac
Упоминаю @tobiaseigen здесь для видимости, так как это связано с предыдущими обсуждениями.
Итог:
По моему мнению, допустимо изменить формат разметки на данный момент только для этого частного случая — и только для этого частного случая — @codinghorror подтвердите.
Не определено: запланировать работу по безопасности, чтобы блок цитаты стал [quote="ВООБЩЕ ОПЦИОНАЛЬНО, БУДЕТ ИЗВЛЕЧЁН ИЗ ПОСТА, ЕСЛИ БЕЗОПАСНОСТЬ ПОДТВЕРДИТСЯ И ИНФОРМАЦИЯ ИЗ ПОСТА БУДЕТ ПРИОРИТЕТНЕЕ ЭТОГО ТЕКСТА, post:3, topic:7"]. — рекомендую пока подождать с этим.