У нас включена настройка qa enable likes on answers, но сердечек
нигде не видно.
Также у нас установлен официальный плагин Discourse Reactions. Может ли это быть причиной данной ошибки?
У нас включена настройка qa enable likes on answers, но сердечек
нигде не видно.
Также у нас установлен официальный плагин Discourse Reactions. Может ли это быть причиной данной ошибки?
Я только что включил и выключил реакции на моём тестовом сайте, чтобы проверить это, и кажется, что всё работает. Не является ли это следствием исправления этой ошибки Палец вверх, дважды?
Здравствуйте,
По умолчанию реакции отключены (скрыты) в темах голосования с помощью CSS.
Вы можете снова включить их, добавив небольшой фрагмент CSS в компонент Common/CSS ![]()
.post-voting-topic,
.post-voting-topic-sort-by-activity {
.discourse-reactions-actions {
display: inline-flex;
}
}
Спасибо большое!
Ограничение по умолчанию понятно (слишком много вариантов для обратной связи может запутать), но если есть настройка, позволяющая администраторам включать «лайки», и эти администраторы уже включили реакции на своём сайте, то логично было бы автоматически включать реакции в постах с голосованием при включении этой настройки.
В любом случае, я полагаю, что больше администраторов, скорее всего, подумают, что это ошибка, чем будут проверять код и исправлять CSS. ![]()
| установлены реакции | включено голосование за посты | включены лайки на ответы | вызвать removePostMenuButton(‘like’)? |
|---|---|---|---|
| нет | нет | нет (Н/Д) | нет, оставить |
| да | нет | Н/Д | да, убрать кнопку лайка, показать реакции |
| нет | да | нет | да, убрать кнопку лайка для ответов |
| нет | да | да | нет, оставить |
| да | да | нет | да, убрать кнопку лайка, показывать реакции только для первого поста, а не для ответов |
| да | да | да | да, убрать кнопку лайка, показывать реакции для всех |
Здесь набросана своего рода таблица истинности. Нам нужно программно обеспечивать отображение реакций для разных постов в зависимости от настроек сайта, особенно от параметра enable likes on answers, вместо простого использования CSS display:none.
@tgxworld ещё тогда частично затронул эту тему, предложив, что, вероятно, стоит предоставить API в плагине discourse-reactions (t/67550/10). Возможно, стоит рассмотреть этот вариант.
// Удаление кнопки «like»
api.removePostMenuButton("like");
// И повторное добавление
api.decorateWidget("post-menu:before-extra-controls", (dec) => {
return dec.attach("discourse-reactions-actions", {
Вместо этого
мы должны добавить метод replacePostMenuButton в основной API плагинов и использовать его в плагине реакций. В этом случае нам не потребуется отдельная логика для кнопки реакций в плагине голосования за посты.
Поскольку существует обходной путь, я внесу это изменение после следующего выпуска.
Это потребовало 3 PR, но ваша идея реализации была потрясающей, @vinothkannans — всё работает как по маслу. Как только всё будет слито, я напишу снова ![]()
PR-запросы были слиты, и теперь (после обновления вашего экземпляра Discourse) реакции учитывают настройку qa_enable_likes_on_answers. Спасибо за отчет об ошибке @icaria36!
Объединённые PR ломают стабильный релиз Discourse. Сайт не загружается из-за ошибки в JavaScript.
Uncaught (in promise) TypeError: e.replacePostMenuButton is not a function
u discourse-reactions.js:12
withPluginApi plugin-api.js:2247
initialize discourse-reactions.js:165
initialize app.js:173
runInstanceInitializers Ember
each dag-map.js:192
walk dag-map.js:121
each dag-map.js:66
topsort dag-map.js:72
Ember 4
invoke queue.ts:201
flush queue.ts:98
flush deferred-action-queues.ts:75
_end index.ts:616
_boundAutorunEnd index.ts:257
discourse-reactions.js:12
Да, я должен был это предвидеть. Я внесу исправление в плагин реакций, чтобы он использовал резервный вариант, когда replacePostMenuButton отсутствует.
Редактирование: Я объединил изменение, которое добавляет обратную совместимость.
Эта тема была автоматически закрыта через 4 дня. Новые ответы больше не принимаются.