Здравствуйте, я пытался реализовать Our solution for blurring NSFW content - #5 by bartv, но, к сожалению, код больше не работает.
Я немного застрял и не смог найти никакой документации по JavaScript API Discourse в целом или о том, как получать данные из пользовательских полей профиля.
Я попытался добавить связанный фрагмент кода в секцию header.html своей темы.
Объект, доступный в JavaScript: const user = api.getCurrentUser();, похоже, содержит свойство custom_fields, а не user_fields, как указано в упомянутой теме.
Однако оно пустое, или я не знаю, как правильно запросить/заполнить его. У меня возникает ощущение, что для доступа к этим данным потребуется настоящий Ruby-плагин.
Я был бы очень признателен за любую помощь в решении этой проблемы или за руководство о том, как снова реализовать аналогичный функционал.
Мне нужно добавить пользовательский CSS-класс к тегу body в зависимости от значения пользовательского поля профиля.
Если вы посмотрите на вывод .json профиля пользователя, вы увидите запись user_fields (например, https://meta.discourse.org/u/pfaffman.json, хотя здесь нет пользовательских полей). Именно там находятся пользовательские поля, которые вы добавляете в интерфейсе (на самом деле это особый вид user_custom_field). Поля user_custom_fields, похоже, отсутствуют в записи пользователя в потоке тем. Не уверен, были ли они там раньше, а теперь исчезли (это, вероятно, ошибка). Убедитесь, что ваши пользовательские поля видны в соответствующих настройках (например, отображаются на карточке пользователя?).
Судя по тому, что я вижу сейчас, вам нужно создать плагин, который добавит эти пользовательские поля в сериализатор.
Если вместо пользовательского поля пользователя вы сможете использовать группы, это может решить вашу проблему.
Именно там находятся поля пользователя, которые вы добавляете в UX (фактически это особый вид user_custom_field).
Понятно, это объясняет выбор имен переменных. Спасибо.
Кажется, что эндпоинт /u/user.json раскрывает только публичные поля, поскольку он доступен публично. Учитывая суть проблемы, я сомневаюсь, что люди захотят, чтобы их предпочтения относительно NSFW отображались на их карточке пользователя. Поэтому сначала я попробую использовать группы как обходное решение