Несколько настроек не соответствуют документации, а также есть баги интерфейса

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

Отсутствующие настройки

Ошибки интерфейса

  • Меню плагинов не отображается, кроме режима инкогнито в Chrome. В Firefox (включая режим инкогнито) оно не появляется, как показано здесь.


    Ниже — режим инкогнито в Chrome

    (Решено … AdBlocker)

  • Кнопка «Discord» в интеграции чата Discord не реагирует, и под ней отображается странный ползунок прокрутки. При нажатии на кнопку ничего не происходит и ошибок в режиме разработчика нет.

  • При создании категории кнопка «Добавить обязательную группу тегов» не работает «до сохранения категории».

Отключите блокировщик рекламы :rofl:

Настройка вебхуков находится в интерфейсе Discord, а не в Discourse. Возможно, они изменили способ её работы?

Эти настройки скрыты в некоторых тарифных планах нашего хостинга.

Уберите свой блокировщик рекламы

Похоже, это помогло с меню плагинов. Спасибо!

Функция вебхуков находится в интерфейсе Discord, а не в Discourse. Возможно, они изменили способ её работы?

Я знаю, как получить вебхук из Discord (это не изменилось)… но мне нужно добавить адрес вебхука где-то в Discourse, чтобы он мог отправлять данные в Discord.

Эти настройки скрыты в некоторых наших тарифных планах хостинга.

Это разочаровывает. Я хотел бы добавить на страницу виджет WidgetBot crate (интеграция с Discord) — это гораздо лучшее решение, чем (Deprecated) Display a "Discord Widget" in a dropdown button

<script src="https://cdn.jsdelivr.net/npm/@widgetbot/crate@3" async defer>
  new Crate({
    server: '299881420891881473',
    channel: '355719584830980096',
  })
</script>

Довольно простой кусок кода. Ручное добавление их исходного JavaScript не работает.

Я предполагаю, что нет альтернативного способа включить эти опции?

Возможно, можно предусмотреть процедуру запроса для проверки безопасности исходного кода и его добавления на размещённые экземпляры? Или просто разрешить это, поскольку JavaScript выполняется на стороне клиента, а не на стороне хоста?

Правильный путь — создать #theme-component, который выполняет нужную вам задачу. Такой компонент может поставлять сторонний JavaScript в качестве собственного ресурса, что более безопасно и совместимо с CSP.

Один из недавних примеров, который я реализовал, — GitHub - discourse/discourse-orgchart · GitHub, где в его ресурсах размещены три различные JS-библиотеки, и всё работает без проблем в условиях CSP.

Хорошо, это указывает мне в правильном направлении. Я был сбит с толку расширением через settings.yml, но теперь это начинает иметь смысл. Вот пример, который кажется уместным: discourse-mermaid-theme-component/settings.yml at fa43854e66becf43626063e33dde29f636933d1f · discourse/discourse-mermaid-theme-component · GitHub

Кстати, я ценю ваши ответы!

Если хотите, самый простой способ через интерфейс — просто вставить содержимое https://cdn.jsdelivr.net/npm/@widgetbot/crate@3 в тег скрипта, например:

<script>
// вставьте сюда всё содержимое https://cdn.jsdelivr.net/npm/@widgetbot/crate@3
</script>
<script>
  new Crate({
    server: '299881420891881473',
    channel: '355719584830980096',
  })
</script>

К сожалению, это не сработало.

Также не работает при расширении через тему. :confused:

Итак, теперь, когда мое меню плагинов работает… кажется, что Голосование в Discourse не включено. Это намеренно? Я предполагал, что все официальные плагины будут включены по умолчанию.

Не все официальные плагины включены во все тарифные планы хостинга