Discourse Retort

Участники Maker Forums действительно ценят возможность использовать несколько реакций в виде эмодзи. Мы были бы очень расстроены, если бы эта функция исчезла при миграции в случае, если retort перестанет поддерживаться.

3 лайка

Retort будет и дальше поддерживаться Pavilion.

@Ahmed_Gagan, есть ли у вас какие-либо мысли по поводу нижеизложенного?

5 лайков

Для реакции на реторт с приоритетом вы можете использовать:

SiteSetting.post_undo_action_window_mins = максимальное количество минут

ReactionManager.new(first_retort_reaction_at_priority, by_user, Guardian.new(by_user), post).toggle!

Это обработает всё: удалит like, если пользователь уже лайкнул пост, и добавит реакцию.

1 лайк

Да, я мог бы это сделать. Хотя это было бы своего рода костылем :wink:

Не уверен, что этот обходной путь останется рабочим со временем. Кроме того, это довольно рискованно. Например, если я просто запущу этот код, настройка сайта пользователя post_undo_action_window_mins останется изменённой. Можно было бы вернуть её обратно в конце миграции, но такие изменения настроек на лету, чтобы обойти Guardian, не являются идеальным решением.

В идеале мне нужно внести небольшие изменения в интерфейс ReactionManager, чтобы можно было надёжно мигрировать retorts в реакции. В настоящее время он настроен только для обработки запросов от клиента.

Один из способов сделать это:

  • абстрагировать Guardian в методе toggle! в метод ensure_can_toggle
  • сделать метод ensure_can_toggle зависимым от опции force

Такой подход обычно используется для обработки миграций или импорта с бэкенда в других частях Discourse (если вы поищете force в app/ или lib/, то найдёте несколько примеров).

Всё понятно?

2 лайка

Я думаю, что нам не нужно использовать эту настройку здесь, так как мы не изменяем уже существующие лайки на посте. Это означает, что мы создаем новые реакции на пост. В таком случае guardian.can_delete_reaction_user? всегда будет возвращать true. На мой взгляд, для этой цели достаточно просто использовать ReactionManager.toggle.

1 лайк

Discourse активно использует функцию «Нравится»: ограничивает количество лайков в зависимости от уровня доверия и выдаёт пользователям значки на основе полученных лайков.

Добавление реакции также увеличивает счётчик лайков как для пользователей, так и для тем?

1 лайк

Вы можете отдельно спросить о том, как это взаимодействует с новым официальным плагином Discourse Reactions

Однако Retort (который, в отличие от плагина Discourse Reactions, позволяет нескольким пользователям оставлять несколько реакций на один пост) никак не взаимодействует с уровнями доверия и значками, связанными с лайками.

5 лайков

@gdpelican это репост из https://meta.discourse.org/t/reaction-emoji-seem-to-have-no-verification/189108, так как, похоже, реакция не является частью Discourse, я размещаю её здесь:

Я думаю, что обнаружил ошибку, но у меня нет корректного сценария воспроизведения, однако я могу легко показать примеры проблемы, и, думаю, моя теория может быть верной.

Вот в чём суть: вы можете добавлять несуществующие эмодзи в реакции к сообщениям. В результате в постах появляются реакции вида :whateverYouWant:.

Пример этого можно увидеть на форуме Manjaro, где я заметил, что у конкретного пользователя в постах часто встречаются такие несуществующие эмодзи. Задав ему несколько вопросов, я пришёл к выводу, что он использует какое-то автоматическое расширение для перевода в браузере, которое, вероятно, переводит эмодзи вида :code: на его язык. К сожалению, я не получил ответа от этого пользователя, чтобы точно узнать его настройки браузера. В подтверждение своей теории могу сказать, что когда он цитировал кого-то в следующей связанной теме, в его цитате присутствовал перевод оригинального сообщения.

Посмотрите это сообщение/тему на форуме Manjaro:

Посмотрите пример в реакциях: вы чётко видите проблему рядом со всеми корректными реакциями и некорректной:

Таким образом, похоже, что пользователь может отправлять несуществующие эмодзи из-за отсутствия проверки кода эмодзи.

1 лайк


У кого-нибудь тоже возникала такая ситуация, когда на маленьком экране и на мобильных устройствах реакции отображались не на своём месте?

1 лайк

Я обновил этот плагин для работы с последним кодом Discourse.

@th21 Я также обновил HTML-структуру retort, чтобы лучше размещать длинные списки ответов, особенно на мобильных устройствах.

8 лайков

Спасибо, всё работает!

2 лайка

В последнем обновлении реторты на мобильных устройствах у меня работают некорректно

1 лайк

Я думаю, что контейнер для ответов должен располагаться выше или ниже панели инструментов, предпочтительно выше — это даст нам гораздо больше возможностей для работы с CSS.

2 лайка

Возможно ли использовать Data Explorer или консоль, чтобы найти список самых популярных эмодзи? :thinking: Я изучал таблицу plugin_store_rows, но ничего полезного не нашёл.

3 лайка

Привет! Тултип, через который пользователи отвечали на реплики, сейчас не работает на мобильных устройствах. Я пробовал поиграть с z-index, но не смог исправить это с помощью кастомного CSS. Не мог бы кто-нибудь посмотреть?

Этот плагин больше не поддерживается. Пожалуйста, используйте плагин Reactions.

5 лайков

«Discourse Reactions» — плохая замена по одной ключевой причине: она ограничивает реакции одним на пост. Это резкое снижение полезности реакций по сравнению с «Retort», который позволяет пользователям оставлять несколько реакций на один и тот же пост.

Я очень надеюсь, что «Retort» будет поддерживаться именно по этой причине. Лучшим решением было бы обновить «Discourse Reactions», чтобы разрешить несколько реакций.

5 лайков

Ещё одним существенным недостатком является то, что Retort позволяет выбирать из всех доступных эмодзи, тогда как для Discourse Reactions нужно задавать определённый набор эмодзи. Если бы в Discourse Reactions были обе эти функции, я бы с радостью отказался от Retort, но пока этого не произошло, мои пользователи не будут довольны, если я скажу им, что они теряют доступ к 95% реакций-эмодзи.

2 лайка

Существует тема #feature, которая выглядит многообещающе…

3 лайка

Да, если всё это будет реализовано, я думаю, что смогу легко убедить своих пользователей перейти на новую версию. Просто немного обидно отказываться от альтернативы, пока всё ещё не полностью готово.

3 лайка