Criar e configurar campos de usuário personalizados

Acho que você poderia reordená-los com o console do Rails. Eu optei por inserir os campos com seus IDs porque é mais difícil digitar um nome sem erros de digitação

ids_in_order = [3, 7, 8, 5, 1, 2]

ids_in_order.each_with_index do |id, index|
  UserField.find(id).update!(position: index)
end
1 curtida

Veja como é a janela “reordenar categorias”. Eu suponho que se isso existe no Discourse, pode haver uma maneira de usá-lo para campos de usuário também?

1 curtida

Eu não acredito, mas recentemente escrevi um componente de tema que oculta a exibição original dos campos personalizados no cartão do usuário e nas páginas de perfil e depois os renderiza novamente, opcionalmente tornando alguns seguros para HTML (eles estão adicionando algumas informações via API a um campo personalizado que os usuários não podem editar). Eu acho que a mesma ideia poderia ser usada para adicionar um campo de ordem aos campos personalizados para alterar a ordem em que são exibidos no cartão e/ou no perfil.

Acho que você pode usar os métodos existentes para reordenar os campos do usuário. É um pouco impraticável ter que abrir o menu novamente após cada mudança de posição. Isso é um tanto irritante ao mover-se por várias posições.

Mas um componente que tornasse os botões sempre visíveis ou uma caixa de seleção para um “modo de reordenação” no topo que os tornasse visíveis fora do menu já poderia melhorar a experiência.

1 curtida

Ah. Engraçado. Sim. Opa. Isso é muito melhor do que a minha ideia. :rofl:

Tenho um campo personalizado e o configurei como pesquisável. No entanto, na página de usuário /u, o único campo de pesquisa diz “filtrar por nome de usuário”. Quando procuro pelo conteúdo do campo personalizado, nenhum resultado é exibido.

Consigo ver os valores na lista (ativei a coluna no personalizador), então sei que esses valores existem claramente.

O que estou fazendo de errado?

Estranhamente, os valores do campo personalizado são links, por exemplo, u?cards=no&name=Female&order=likes_received, e ao clicar neles, executa uma pesquisa pelo valor no campo name. E não retorna nada.

Estas são as preferências do campo:

Além disso (não sei se isso é uma dica), quando ordeno por essa coluna de campo personalizado, seja para frente ou para trás, sempre há usuários com campos vazios no topo da lista (usuários diferentes). Apenas um pequeno número de usuários tem conteúdo neste campo, mas eu esperaria que todos os vazios estivessem no topo ou no final da lista, não em ambos.

Criando um campo de usuário multiseleção no Discourse com muitas opções

Digitar dezenas ou centenas de opções uma a uma no editor de campos de usuário personalizados do Discourse é tedioso. Estou desenvolvendo uma ferramenta CLI multiuso para o Discourse chamada dsc, que torna operações como essa mais fáceis e determinísticas usando arquivos locais. Apenas uma das muitas coisas que ela pode fazer é manipular Campos de Usuário Personalizados.

O dsc pode criar um novo campo de usuário personalizado a partir de um arquivo YAML, incluindo toda a lista ordenada de opções em uma única operação. O comando ucf é um apelido para user-field.

Primeiro, liste seus campos de usuário personalizados existentes:

dsc ucf list myforum --format yaml

Isso mostra seus IDs, tipos, opções e configurações.

Preparar o campo

Crie user-fields.yaml, substituindo a URL de origem, a pergunta e as opções pelas suas. Certifique-se de que seu YAML seja válido - é fácil errar.

Por exemplo, aqui está uma multiseleção de países com 25 opções:

version: 1
source: https://forum.example.org
user_fields:
  - name: Countries
    description: Which countries do you work in? Select all that apply.
    field_type: multiselect
    editable: true
    requirement: on_signup
    show_on_profile: false
    show_on_signup: true
    show_on_user_card: false
    searchable: false
    options:
      - Argentina
      - Australia
      - Brazil
      - Canada
      - China
      - Denmark
      - Egypt
      - France
      - Germany
      - India
      - Ireland
      - Italy
      - Japan
      - Kenya
      - Mexico
      - Netherlands
      - New Zealand
      - Nigeria
      - Norway
      - Singapore
      - South Africa
      - Spain
      - Sweden
      - United Kingdom
      - United States

Isso cria um único campo com 25 opções, em vez de 25 campos separados. Você pode estender a lista conforme necessário - usei essa abordagem com sucesso para um campo com mais de 250 opções.

Pré-visualizar, criar e verificar

dsc ucf push --dry-run myforum user-fields.yaml
# Revise o plano e o arquivo YAML completo antes de aplicar.
dsc ucf push myforum user-fields.yaml
dsc ucf show myforum <field-id> --format yaml

Fico feliz em receber feedback sobre o dsc, incluindo ideias para recursos ausentes. Por favor, crie issues no repositório no GitHub.

2 curtidas