Закрепленная тема по умолчанию не отображается из-за плагина политики

Я заметил что-то странное с темой приветствия по умолчанию (закреплённой) в категории «Без категории»: она не отображается для анонимных запросов.

Насколько я могу судить, ограничений на её чтение нет: регистрация открыта, это категория «Без категории» по умолчанию (со специальными функциями безопасности), и ни один параметр не ограничивает просмотр содержимого.

JSON-представление показывает обработанную версию поста, однако HTML-версия пуста:

Такое поведение наблюдается только на этом форуме, который является мастером в конфигурации с несколькими сайтами.

https://ps.zoethical.org/t/welcome-to-p-s/8/1.json

Есть какие-то идеи?

Есть ответ с policy, который вызывает ошибки и не имеет кнопок… Возможно, это как-то связано?

Для полноты картины вот как это выглядит, когда я авторизован:

It’s visible via Safe mode, so it’s a customization or plugin:

@hellekin У меня точно такая же проблема. Если удалить пост с политикой или отключить плагин в настройках, тема появится.
Похоже, это баг: незарегистрированные пользователи не могут видеть тему, если в посте используется политика.

Кто-нибудь может нам помочь?

Я выследил виновника: это discourse-policy, как и предполагал @Vraag. Вопреки словам @Vraag, плагин влияет на «исчезающую» тему даже в отключённом состоянии: достаточно наличия его в списке плагинов, чтобы тема «исчезала» для незарегистрированных пользователей.

Ответ, использующий плагин Policy, является первым: Exploring community-based social media - #2 by system - Share - petites singularités
Markdown этого сообщения:

[policy group=trust_level_1 reminder=daily]
Мы не используем сторонние файлы cookie.
[/policy]

Вот журнал ошибок:

TypeError: p is null
Url: https://ps.zoethical.org/assets/plugins/discourse-policy-60b8413b741df408ff16f757f644f9de7cb64099d24c33dc3d85ef735478d72a.js
Line: 1
Column: 3373
Window Location: https://ps.zoethical.org/t/welcome-to-p-s/8

Вот трассировка стека:

r@https://ps.zoethical.org/assets/plugins/discourse-policy-60b8413b741df408ff16f757f644f9de7cb64099d24c33dc3d85ef735478d72a.js:1:3373
m@https://ps.zoethical.org/assets/plugins/discourse-policy-60b8413b741df408ff16f757f644f9de7cb64099d24c33dc3d85ef735478d72a.js:1:5934
value/<@https://ps.zoethical.org/assets/application-e5979c62e7a903663f877b29059ee0b4707ac3d11c783460ad7d0920ed92e017.js:73:2648
value@https://ps.zoethical.org/assets/application-e5979c62e7a903663f877b29059ee0b4707ac3d11c783460ad7d0920ed92e017.js:73:2619
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:10297
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:10576
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:10576
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:10576
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:10576
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:10576
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:10576
u@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:12330
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:11710
o@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:13433
i@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:13297
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:11816
o@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:13433
i@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:13297
r@https://ps.zoethical.org/assets/vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:5:13118
rerenderWidget@https://ps.zoethical.org/assets/application-e5979c62e7a903663f877b29059ee0b4707ac3d11c783460ad7d0920ed92e017.js:33:21229
y</t.invoke@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:9727
y</t.flush@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:8732
b</t.flush@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:10780
H</n._end@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:15438
H</n.end@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:12105
H</n._run@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:15973
H</n._join@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:15758
H</n.join@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:12813
c@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:12:3338
R/<@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:12:4903
h@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:2:9935
o/</f<@https://ps.zoethical.org/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:2:10240

Обратите внимание, что plugin.rb загружает множество зависимостей ещё до выполнения каких-либо действий. Возможно, ошибка возникает из-за одной из этих зависимостей, которая ожидает авторизованного пользователя.

Привет
Да, я забыл сказать, что нужно отредактировать пост после отключения плагина, иначе он продолжит на него влиять.

Отредактировать пост как в…? Убрать разметку политики?

Нет, отключите плагин, отредактируйте пост, содержащий плагин (например, добавьте случайную букву в начало поста), сохраните его, и незарегистрированные пользователи смогут видеть пост.
Разметка отобразится как [policy][/policy] и не будет ничего делать.
Интересно, почему простого отключения плагина недостаточно. После этого нужно обязательно отредактировать пост, иначе эффект продолжит действовать.

Действительно, редактирование поста, даже если плагин отключен, и изменение содержимого внутри тегов [policy] достаточно для восстановления вида темы.

Похоже, это ошибка в плагине discourse-policy, @sam?

Странно, но повторное включение плагина возвращает всё в норму. Не совсем понимаю, что с этим делать.

Думаю, эта тема пригодится в будущем, поэтому вот она: если какая-то тема «исчезает» из анонимного просмотра, и у вас есть пост с использованием плагина discourse-policy

  1. Отключите плагин — если это не поможет: удалите его из YAML-файла конфигурации контейнера и пересоберите.
  2. Отредактируйте пост с тегом [policy], чтобы он был пересобран и отключен (возможно, достаточно «пересобрать HTML»?).
  3. Включите плагин обратно.

Тада! Произошла какая-то магия.

Что вы имеете в виду под «произошла какая-то магия»? Я сделал всё, как вы сказали, и получил вот это:

    [policy group=testgroup reminder=daily]
Test
    [/policy]

Это не решает проблему. Скорее, это даже не исправление, а просто отказ от использования плагина. Если я отредактирую пост или пересоберу HTML, плагин заработает, но тема снова исчезнет для незарегистрированных пользователей.

Редактирование

Похоже, у вас та же ситуация. В вашей теме второй пост выглядит так:

[policy group=trust_level_1 reminder=daily]
    Мы не используем сторонние файлы cookie.
    [/policy]

Так что у нас всё ещё нет «решения». Если только не считать решением отказ от использования плагина xD. Вы могли бы просто удалить разметку из второго поста — результат будет тот же.
В текущем виде плагин можно использовать только в приватных категориях, где незарегистрированные пользователи всё равно не видят тему.