Компонент темы заголовков категорий Discourse

Эти теги являются частью описания категории. Я могу попробовать добавить проверку на безопасность HTML, но не уверен, не приведёт ли это к уязвимостям?

Какая ошибка отображается в консоли при пустой странице? Та ли, что была опубликована выше?

Извините, не могли бы вы немного подробнее разъяснить это? Спасибо!

@NateDhaliwal, я не уверен! Извините, я понятия не имею, что означают эти ошибки или как найти ту, которая напрямую связана с этой страницей.

Вы смотрели, как другие компоненты с этим справляются?
Должно быть, это безопасно. По крайней мере, у меня сложилось впечатление, что официальный компонент баннера категории использует html-safe без дополнительного экранирования:

2 лайка

Кстати, похоже, что проблема связана с попыткой использовать старый маршрут вместо нового /admin/config/user-fields.json.

Также упоминается:

Возможно, @RGJ знает больше? :crossed_fingers:

1 лайк

TL;DR: нет. :slight_smile:

Подробная версия:

Это внутренний плагин, который мы используем на нашем хостинге (похож на «размещённый сайт» CDCK) и который добавляет дополнительные функции, необходимые для работы сайта. Эта конкретная строка заменяет стандартное сообщение об ошибке «не найдено» для мультисайтов на более подробное сообщение, указывающее, что владелец сайта, вероятно, неправильно настроил DNS.

Поскольку он патчит мультисайт-middleware, каждый запрос на каждом нашем размещённом сайте проходит через него. Если вы видите этот плагин в стеке вызовов, и строка lib/middleware/enforce_hostname.rb находится непосредственно над ним, то это обычный вызов и не является причиной проблемы.

3 лайка

Вы находитесь на стабильной ветке? Возможно, обновление привело к неработоспособности плагина на стабильной версии. В таком случае может помочь добавление записи в файл совместимости.

2 лайка

@Moin Я не знаю, как проверить, на какой ветке я нахожусь?

1 лайк

Да, вы на стабильной версии, @jackierenee.

И действительно, как сказал Moin, компонент темы был обновлён, но не было зафиксировано совместимости. @Rhidian @NateDhaliwal

5 лайков

Спасибо за подтверждение, @RGJ.

Значит, мне нужно просто дождаться пина совместимости, прежде чем добавлять этот компонент обратно на наш сайт?

Я работаю над PR, который, надеюсь, исправит эту проблему.

3 лайка

Да :+1:

1 лайк

Конечно.

Без компонента темы текст в описании категории по умолчанию имеет размер --font-up-3. Это задается через класс .category-heading. Мне кажется, что в последнее время он стал слишком большим.

С компонентом темы текст в описании категории имеет размер --font-0. Его можно увеличить до --font-up-1 (больше) или --font-up-2 (максимально). Однако ни один из этих вариантов не соответствует новому стандарту!

1 лайк

Хорошо, так это подходит?
меньше → --font-up-2
normal → --font-up-3
больше → --font-up-4
максимально → --font-up-5
Cc: @Rhidian

1 лайк

Привет @jackierenee, я объединил PR. Не могли бы вы обновить и проверить, работает ли это?

1 лайк

Привет @NateDhaliwal, я только что попробовал обновить и снова добавил компонент на свой сайт. Страницы категорий по-прежнему пустые.

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

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

Также теперь в верхней части моего сайта появляется ошибка:

Ещё один момент: я думаю, что вот этот лог ошибок связан с указанным сообщением об ошибке:

Сообщение (4472 копии)

[db6814] ActionController::RoutingError (Нет маршрута, соответствующего [GET] "/admin/customize/user_fields.json")
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/processing_request.rb:12:in `call'
lib/middleware/request_tracker.rb:385:in `call'


Стек вызовов

actionpack (7.2.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:35:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster (2.20.0) lib/logster/middleware/reporter.rb:40:in `call'
railties (7.2.2.1) lib/rails/rack/logger.rb:41:in `call_app'
railties (7.2.2.1) lib/rails/rack/logger.rb:29:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/request_id.rb:33:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
plugins/z-communiteq-features/plugin.rb:142:in `call'
rack (2.2.10) lib/rack/method_override.rb:24:in `call'
rack (2.2.10) lib/rack/sendfile.rb:110:in `call'
rack-mini-profiler (3.3.1) lib/mini_profiler.rb:191:in `call'
lib/middleware/processing_request.rb:12:in `call'
message_bus (4.3.8) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:385:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
rails_multisite (6.1.0) lib/rails_multisite/middleware.rb:26:in `call'
plugins/z-communiteq-features/plugin.rb:168:in `call'
railties (7.2.2.1) lib/rails/engine.rb:535:in `call'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.10) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.10) lib/rack/urlmap.rb:58:in `each'
rack (2.2.10) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'

Окружение

HTTP HOSTS: community.eaie.org

Спасибо!

Есть ли ошибки в консоли браузера?
Можете сообщить версию Discourse, на которой вы сейчас работаете? Она указана на странице /admin.
Спасибо!

Привет, @NateDhaliwal, извините, но я точно не знаю, что означает «ошибки в консоли браузера».

Полагаю, это версия Discourse, которую я использую: Discourse 3.4.6 — GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub версия 3d149ba8244585f4bcb41db77aa8825e72468bdb

Привет, @NateDhaliwal, извините, я смог разобраться, вот некоторые из ошибок:

Discourse v3.4.6 — https://github.com/discourse/discourse/commits/3d149ba824 — Ember v5.12.0
category-header.gjs:51 Uncaught TypeError: Cannot read properties of undefined (reading 'mobileView')
    at get showHeader (category-header.gjs:51:61)
    at eE (index.js:78:1)
    at index.js:78:1
    at index.js:78:1
    at X (index.js:78:1)
    at T (index.js:78:1)
    at index.js:78:1
    at index.js:78:1
    at X (index.js:78:1)
    at T (index.js:78:1)
    at Object.evaluate (index.js:78:1)
    at Object.evaluate (index.js:78:1)
    at tV.evaluateSyscall (index.js:78:1)
    at tV.evaluateInner (index.js:78:1)
    at tV.evaluateOuter (index.js:78:1)
    at t1.next (index.js:78:1)
    at t1._execute (index.js:78:1)
    at t1.execute (index.js:78:1)
    at t2.sync (index.js:78:1)
    at t6.render (index.js:78:1)
    at index.js:78:1
    at tx (index.js:78:1)
    at io._renderRoots (index.js:78:1)
    at io._renderRootsTransaction (index.js:78:1)
    at io._revalidate (index.js:78:1)
    at invoke (index.js:78:1)
    at m.flush (index.js:78:1)
    at g.flush (index.js:78:1)
    at V._end (index.js:78:1)
    at V.end (index.js:78:1)
    at V._run (index.js:78:1)
    at V.run (index.js:78:1)
    at d (deprecate.js:100:1)
    at Object.success (video-placeholder.js:39:1)
    at l (jquery.js:10:1)
    at Object.fireWith [as resolveWith] (jquery.js:10:1)
    at C (jquery.js:10:1)
    at XMLHttpRequest.<anonymous> (jquery.js:10:1)Понять эту ошибку
category-header.gjs:51 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'mobileView')
    at get showHeader (category-header.gjs:51:61)
    at eE (index.js:78:1)
    at index.js:78:1
    at index.js:78:1
    at X (index.js:78:1)
    at T (index.js:78:1)
    at index.js:78:1
    at index.js:78:1
    at X (index.js:78:1)
    at T (index.js:78:1)
    at Object.evaluate (index.js:78:1)
    at Object.evaluate (index.js:78:1)
    at tV.evaluateSyscall (index.js:78:1)
    at tV.evaluateInner (index.js:78:1)
    at tV.evaluateOuter (index.js:78:1)
    at t1.next (index.js:78:1)
    at t1._execute (index.js:78:1)
    at t1.execute (index.js:78:1)
    at t2.sync (index.js:78:1)
    at t6.render (index.js:78:1)
    at index.js:78:1
    at tx (index.js:78:1)
    at io._renderRoots (index.js:78:1)
    at io._renderRootsTransaction (index.js:78:1)
    at io._renderRoot (index.js:78:1)
    at io._appendDefinition (index.js:78:1)
    at io.appendOutletView (index.js:78:1)
    at invoke (index.js:78:1)
    at m.flush (index.js:78:1)
    at g.flush (index.js:78:1)
    at V._end (index.js:78:1)
    at index.js:78:1Понять эту ошибку
category-header.gjs:51 Uncaught TypeError: Cannot read properties of undefined (reading 'mobileView')
    at get showHeader (category-header.gjs:51:61)
    at eE (index.js:78:1)
    at index.js:78:1
    at index.js:78:1
    at X (index.js:78:1)
    at T (index.js:78:1)
    at index.js:78:1
    at index.js:78:1
    at X (index.js:78:1)
    at T (index.js:78:1)
    at Object.evaluate (index.js:78:1)
    at Object.evaluate (index.js:78:1)
    at tV.evaluateSyscall (index.js:78:1)
    at tV.evaluateInner (index.js:78:1)
    at tV.evaluateOuter (index.js:78:1)
    at t1.next (index.js:78:1)
    at t1._execute (index.js:78:1)
    at t1.execute (index.js:78:1)
    at t2.sync (index.js:78:1)
    at t6.render (index.js:78:1)
    at index.js:78:1
    at tx (index.js:78:1)
    at io._renderRoots (index.js:78:1)
    at io._renderRootsTransaction (index.js:78:1)
    at io._revalidate (index.js:78:1)
    at invoke (index.js:78:1)
    at m.flush (index.js:78:1)
    at g.flush (index.js:78:1)
    at V._end (index.js:78:1)
    at V.end (index.js:78:1)
    at V._runExpiredTimers (index.js:78:1)Понять эту ошибку
category-header.gjs:51 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'mobileView')
    at get showHeader (category-header.gjs:51:61)
    at eE (index.js:78:1)
    at index.js:78:1
    at index.js:78:1
    at X (index.js:78:1)
    at T (index.js:78:1)
    at index.js:78:1
    at index.js:78:1
    at X (index.js:78:1)
    at T (index.js:78:1)
    at Object.evaluate (index.js:78:1)
    at Object.evaluate (index.js:78:1)
    at tV.evaluateSyscall (index.js:78:1)
    at tV.evaluateInner (index.js:78:1)
    at tV.evaluateOuter (index.js:78:1)
    at t1.next (index.js:78:1)
    at t1._execute (index.js:78:1)
    at t1.execute (index.js:78:1)
    at t2.sync (index.js:78:1)
    at t6.render (index.js:78:1)
    at index.js:78:1
    at tx (index.js:78:1)
    at io._renderRoots (index.js:78:1)
    at io._renderRootsTransaction (index.js:78:1)
    at io._revalidate (index.js:78:1)
    at invoke (index.js:78:1)
    at m.flush (index.js:78:1)
    at g.flush (index.js:78:1)
    at V._end (index.js:78:1)
    at index.js:78:1Понять эту ошибку
1 лайк

Это очень странно. Странно, что эта ошибка появляется сейчас, ведь this.site.mobileView присутствовала в исходной версии :thinking:. Я не могу воспроизвести это с последней версией tests-passed. Неужели это ограничение стабильной версии (хотя это кажется маловероятным — ядро также использует это).