Как настроить массив объектов в плагине? Я пробовал использовать json_schema, но для свойств объекта нельзя использовать селекторы вроде category — можно вводить только текст. А тип objects вообще не работает в настройках плагина.
Конфигурация json_schema:
quectel_online_customer_category_customers:
default: "[]"
client: true
json_schema: QuectelOnlineCustomer::SiteSettings::CategoryCustomersJsonSchema
plugins/quectel-online-customer/lib/quectel_online_customer/site_settings/category_customers_json_schema.rb
# frozen_string_literal: true
module QuectelOnlineCustomer
module SiteSettings
class CategoryCustomersJsonSchema
def self.schema
@schema ||= begin
{
type: "array",
uniqueItems: true,
default: [],
items: {
type: "object",
title: "Настройка категории поддержки",
additionalProperties: false, # Запрет отправки неопределённых полей
required: %w[category customers], # Оба поля обязательны
properties: {
category: {
type: "category",
description: "Связанная категория форума",
label: "Категория"
},
customers: {
type: "usernames", # Выбор нескольких пользователей вместо одного username
description: "Аккаунты поддержки, назначенные на эту категорию, с поддержкой множественного выбора",
label: "Пользователи поддержки"
}
}
}
}
end
end
end
end
end
Да, действительно можно. Однако в type:objects также не поддерживается type:category. Моя задача — выбрать категорию и группу.
Понял, значит настройки объекта добавляются напрямую в ваш settings.yml. Формат должен быть таким:
oauth2_category_example:
type: objects
default: []
area: "oauth2"
schema:
name: category_rule
identifier: name
properties:
name:
type: string
required: true
label: Имя правила
description: Подпись для этого правила
category:
type: categories
required: true
label: Категория
description: Категория, к которой применяется это правило
validations:
max: 1
groups:
type: groups
label: Группы
description: Группы, связанные с этой категорией
Это приведёт к появлению выпадающего списка категорий, как показано ниже
Не поддерживается одиночный выбор type:category?
Согласно этой конфигурации:
quectel_online_customer_category_customer_group:
type: objects
default: []
schema:
name: "Группы поддержки по категориям"
identifier: name
properties:
name:
type: string
required: true
label: Название
description: Название
category:
type: categories
required: true
label: "Категория"
description: "Название категории, просмотрите на странице <a href=\"/categories\" target=\"_blank\">все категории</a>"
group_name:
type: groups
required: true
label: "Название группы поддержки"
description: "Название группы поддержки, латинские символы, просмотрите на странице <a href=\"/admin/groups\" target=\"_blank\">группы поддержки</a>"
Я столкнулся со следующей ошибкой:
Произошла ошибка:
- При рендеринге:
{{outlet}} для -top-level
-top-level
{{outlet}} для application
application
DiscourseRoot
{{outlet}} для admin
admin
{{outlet}} для admin.schema
schema
SchemaSettingNewEditor
SchemaSettingField
SchemaSettingTypeCategories
CategorySelector
section-link.gjs:149
Попытка повторного рендеринга, но в приложении Ember произошла непоправимая ошибка во время рендеринга. После устранения причины ошибки необходимо перезагрузить приложение.
categories.gjs:13
Uncaught (in promise) TypeError: this.args.value?.map is not a function
at SchemaSettingTypeCategories.<anonymous> (categories.gjs:13:9)
Связано ли это с моей версией?
Discourse v2026.1.4 — Commits · discourse/discourse · GitHub — Ember v6.6.0
Сохранены ли какие-либо устаревшие настройки в параметрах? Если появится кнопка сброса, попробуйте вернуть настройки к значениям по умолчанию.
Кнопка сброса не видна, страница выглядит так, как на скриншоте: под категориями ничего не отображается.
Хм, я не уверен, что там может идти не так… Я тестировал опцию категорий с типом объектов, так что знаю, что она работает, и проблема не должна быть связана с вашей версией. Всё же думаю, что где-то что-то застряло в неправильном состоянии. Можете попробовать создать отдельную настройку с новым именем, просто для проверки? Это где-то на GitHub или где-то ещё, чтобы я мог это попробовать?
type:categories — это допустимо, type:category — нет.
Однако следующая конфигурация также корректно работает в случае выбора только одного элемента, поэтому type:category можно опустить.
category:
type: categories
required: true
label: «Категория»
description: «Название категории»
validations:
max: 1