Como configurar objetos de array em um plugin? Tentei usar json_schema, mas as propriedades do objeto não aceitam seletores como category, permitindo apenas entrada de texto. Já type: objects simplesmente não funciona nas configurações do plugin.
Configuração do 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: "Configuração de Atendimento por Categoria",
additionalProperties: false, # Impede o envio de campos não definidos
required: %w[category customers], # Ambos os campos são obrigatórios
properties: {
category: {
type: "category",
description: "Categoria do fórum vinculada",
label: "Categoria"
},
customers: {
type: "usernames", # Seleção múltipla de usuários, substituindo o username único
description: "Contas de atendimento atribuídas a esta categoria, com suporte a seleção múltipla",
label: "Usuários de Atendimento"
}
}
}
}
end
end
end
end
end
Sim, é possível. No entanto, type:objects também não suporta type:category. Minha necessidade é selecionar categorias e grupos.
Ah, entendi. Então as configurações do objeto são adicionadas diretamente ao seu settings.yml. Você deve formatá-lo assim:
oauth2_category_example:
type: objects
default: []
area: "oauth2"
schema:
name: category_rule
identifier: name
properties:
name:
type: string
required: true
label: Nome da regra
description: Um rótulo para esta regra
category:
type: categories
required: true
label: Categoria
description: A categoria à qual esta regra se aplica
validations:
max: 1
groups:
type: groups
label: Grupos
description: Grupos associados a esta categoria
Isso resultaria em um menu suspenso de categorias assim
Não há suporte para seleção única type:category?
Seguindo esta configuração:
quectel_online_customer_category_customer_group:
type: objects
default: []
schema:
name: "Categoria de Grupo de Atendimento ao Cliente"
identifier: name
properties:
name:
type: string
required: true
label: Nome
description: Nome
category:
type: categories
required: true
label: "Categoria"
description: "Nome da categoria, verifique na página <a href=\"/categories\" target=\"_blank\">Todas as Categorias</a>"
group_name:
type: groups
required: true
label: "Nome do Grupo de Atendimento ao Cliente"
description: "Nome do grupo de atendimento ao cliente, use caracteres em inglês, verifique na página <a href=\"/admin/groups\" target=\"_blank\">Grupos de Atendimento ao Cliente</a>"
Encontrei o seguinte erro:
Ocorreu um erro:
- Ao renderizar:
{{outlet}} para -top-level
-top-level
{{outlet}} para application
application
DiscourseRoot
{{outlet}} para admin
admin
{{outlet}} para admin.schema
schema
SchemaSettingNewEditor
SchemaSettingField
SchemaSettingTypeCategories
CategorySelector
section-link.gjs:149
Tentativa de re-renderização falhou, mas o aplicativo Ember encontrou um erro irrecoverável durante a renderização. Você deve recarregar o aplicativo após corrigir a causa do erro.
categories.gjs:13
Uncaught (in promise) TypeError: this.args.value?.map não é uma função
at SchemaSettingTypeCategories.<anonymous> (categories.gjs:13:9)
Isso tem relação com minha versão?
Discourse v2026.1.4 — Commits · discourse/discourse · GitHub — Ember v6.6.0
Você tem alguma configuração obsoleta salva nas configurações? Poderia tentar redefini-la para o padrão com o botão de redefinir, se ele aparecer?
Não vi o botão de redefinir. A página está exatamente como na captura de tela, e os itens abaixo da categoria não estão sendo renderizados.
Hmmm, não tenho certeza do que pode estar dando errado lá… Testei a opção de categorias com o tipo de objetos e sei que funciona, então não deveria ser um problema com a sua versão. Ainda me pergunto se algo está travado em um estado ruim em algum lugar, você pode tentar uma configuração separada com um novo nome só para testar? Isso está no GitHub ou em algum outro lugar para eu tentar?
type:categories funciona, mas type:category não.
No entanto, a configuração abaixo também funciona bem para o caso de selecionar apenas uma opção, tornando type:category desnecessário.
category:
type: categories
required: true
label: "Categoria"
description: "Nome da categoria"
validations:
max: 1