Участники Maker Forums действительно ценят возможность использовать несколько реакций в виде эмодзи. Мы были бы очень расстроены, если бы эта функция исчезла при миграции в случае, если retort перестанет поддерживаться.
Retort будет и дальше поддерживаться Pavilion.
@Ahmed_Gagan, есть ли у вас какие-либо мысли по поводу нижеизложенного?
Для реакции на реторт с приоритетом вы можете использовать:
SiteSetting.post_undo_action_window_mins = максимальное количество минут
ReactionManager.new(first_retort_reaction_at_priority, by_user, Guardian.new(by_user), post).toggle!
Это обработает всё: удалит like, если пользователь уже лайкнул пост, и добавит реакцию.
Да, я мог бы это сделать. Хотя это было бы своего рода костылем ![]()
Не уверен, что этот обходной путь останется рабочим со временем. Кроме того, это довольно рискованно. Например, если я просто запущу этот код, настройка сайта пользователя post_undo_action_window_mins останется изменённой. Можно было бы вернуть её обратно в конце миграции, но такие изменения настроек на лету, чтобы обойти Guardian, не являются идеальным решением.
В идеале мне нужно внести небольшие изменения в интерфейс ReactionManager, чтобы можно было надёжно мигрировать retorts в реакции. В настоящее время он настроен только для обработки запросов от клиента.
Один из способов сделать это:
- абстрагировать Guardian в методе
toggle!в методensure_can_toggle - сделать метод
ensure_can_toggleзависимым от опцииforce
Такой подход обычно используется для обработки миграций или импорта с бэкенда в других частях Discourse (если вы поищете force в app/ или lib/, то найдёте несколько примеров).
Всё понятно?
Я думаю, что нам не нужно использовать эту настройку здесь, так как мы не изменяем уже существующие лайки на посте. Это означает, что мы создаем новые реакции на пост. В таком случае guardian.can_delete_reaction_user? всегда будет возвращать true. На мой взгляд, для этой цели достаточно просто использовать ReactionManager.toggle.
Discourse активно использует функцию «Нравится»: ограничивает количество лайков в зависимости от уровня доверия и выдаёт пользователям значки на основе полученных лайков.
Добавление реакции также увеличивает счётчик лайков как для пользователей, так и для тем?
Вы можете отдельно спросить о том, как это взаимодействует с новым официальным плагином Discourse Reactions
Однако Retort (который, в отличие от плагина Discourse Reactions, позволяет нескольким пользователям оставлять несколько реакций на один пост) никак не взаимодействует с уровнями доверия и значками, связанными с лайками.
@gdpelican это репост из https://meta.discourse.org/t/reaction-emoji-seem-to-have-no-verification/189108, так как, похоже, реакция не является частью Discourse, я размещаю её здесь:
Я думаю, что обнаружил ошибку, но у меня нет корректного сценария воспроизведения, однако я могу легко показать примеры проблемы, и, думаю, моя теория может быть верной.
Вот в чём суть: вы можете добавлять несуществующие эмодзи в реакции к сообщениям. В результате в постах появляются реакции вида :whateverYouWant:.
Пример этого можно увидеть на форуме Manjaro, где я заметил, что у конкретного пользователя в постах часто встречаются такие несуществующие эмодзи. Задав ему несколько вопросов, я пришёл к выводу, что он использует какое-то автоматическое расширение для перевода в браузере, которое, вероятно, переводит эмодзи вида :code: на его язык. К сожалению, я не получил ответа от этого пользователя, чтобы точно узнать его настройки браузера. В подтверждение своей теории могу сказать, что когда он цитировал кого-то в следующей связанной теме, в его цитате присутствовал перевод оригинального сообщения.
Посмотрите это сообщение/тему на форуме Manjaro:
Посмотрите пример в реакциях: вы чётко видите проблему рядом со всеми корректными реакциями и некорректной:
Таким образом, похоже, что пользователь может отправлять несуществующие эмодзи из-за отсутствия проверки кода эмодзи.
У кого-нибудь тоже возникала такая ситуация, когда на маленьком экране и на мобильных устройствах реакции отображались не на своём месте?
Я обновил этот плагин для работы с последним кодом Discourse.
@th21 Я также обновил HTML-структуру retort, чтобы лучше размещать длинные списки ответов, особенно на мобильных устройствах.
Спасибо, всё работает!
Я думаю, что контейнер для ответов должен располагаться выше или ниже панели инструментов, предпочтительно выше — это даст нам гораздо больше возможностей для работы с CSS.
Возможно ли использовать Data Explorer или консоль, чтобы найти список самых популярных эмодзи?
Я изучал таблицу plugin_store_rows, но ничего полезного не нашёл.
Привет! Тултип, через который пользователи отвечали на реплики, сейчас не работает на мобильных устройствах. Я пробовал поиграть с z-index, но не смог исправить это с помощью кастомного CSS. Не мог бы кто-нибудь посмотреть?
Этот плагин больше не поддерживается. Пожалуйста, используйте плагин Reactions.
«Discourse Reactions» — плохая замена по одной ключевой причине: она ограничивает реакции одним на пост. Это резкое снижение полезности реакций по сравнению с «Retort», который позволяет пользователям оставлять несколько реакций на один и тот же пост.
Я очень надеюсь, что «Retort» будет поддерживаться именно по этой причине. Лучшим решением было бы обновить «Discourse Reactions», чтобы разрешить несколько реакций.
Ещё одним существенным недостатком является то, что Retort позволяет выбирать из всех доступных эмодзи, тогда как для Discourse Reactions нужно задавать определённый набор эмодзи. Если бы в Discourse Reactions были обе эти функции, я бы с радостью отказался от Retort, но пока этого не произошло, мои пользователи не будут довольны, если я скажу им, что они теряют доступ к 95% реакций-эмодзи.
Существует тема #feature, которая выглядит многообещающе…
Да, если всё это будет реализовано, я думаю, что смогу легко убедить своих пользователей перейти на новую версию. Просто немного обидно отказываться от альтернативы, пока всё ещё не полностью готово.

