Adicionando novas colunas às listas de usuários em grupos

É possível adicionar colunas adicionais às listas de usuários em grupos? Tenho um plugin ao qual estou tentando adicionar funcionalidade, que adiciona uma coluna à lista de usuários em grupos mostrando se um usuário está Ativo, Suspenso, Silenciado ou Desativado. Parece que o template Handlebars e o controller group-index são o que preciso para isso, mas não há um ponto de saída de plugin, então estou me perguntando qual seria a maneira correta de adicionar uma nova coluna, se isso for possível. Sou novo no desenvolvimento do Discourse, então posso estar perdendo algo aqui, mas agradeceria muito qualquer dica. Li estes guias de desenvolvimento, que são ótimos recursos, mas no momento estou travado.

1 curtida

Olá, bem-vindo à meta :wave:
Você pode usar os outlets group-index-table-header-after-username e group-index-table-row-after-username para inserir um cabeçalho/linha ao lado da coluna de nome de usuário.

Por exemplo:

Para o cabeçalho, você pode usar o componente TableHeaderToggle.
Para a linha, você pode usar, por exemplo, <div class="directory-table__cell directory-table__cell--status">{{this.args.member}}</div> – você pode acessar os dados com {{this.args.member}}

Você precisará corrigir o CSS da grade para incluir uma nova coluna.

.group-members--can-manage {
    grid-template-columns: 3fr repeat(5, minmax(min-content, 1fr)) 3em;
                                      ^
}

Se você quiser mover a coluna, o posicionamento é um pouco complicado por causa de display: contents; no entanto, usar order pode funcionar.

Em uma nota paralela, você pode ter problemas para obter o status do usuário. Em meus testes, os dados não foram refletidos em member com um usuário suspenso ou silenciado (silencedTillDate ou suspendedTillDate estão indefinidos). Não tenho certeza se há um bug aqui. Não investiguei mais, por enquanto!

Espero que isso ajude.

5 curtidas

Ótimo, obrigado! Isso ajuda muito. Percebo agora que não estava vendo as saídas group-index-table-header-after-username e group-index-table-row-after-username porque o site está usando uma versão desatualizada do Discourse (2.7).

1 curtida

De nada!. 2.7! É bem antigo, de fato. :smile:

Como observação, eu encorajaria muito você a usar este componente: (deprecated) Plugin outlet locations theme component. Super útil! :+1:

4 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.