Ocultar categorias de acordo com a associação ao grupo de usuários

Continuando a discussão de Como dividir o fórum em duas partes principais (geral/grupos) e como exibir apenas subcategorias nas quais posso criar uma nova postagem?:

Olá a todos,

Aqui está um componente de tema que faz algo que tenho querido fazer há muito tempo, mas gostaria de comentários sobre o código para melhorá-lo ou sugestões.

Não acredito que o código seja muito bom, então não quero recomendá-lo antes de ser verificado por outra pessoa.

O que ele faz

Oculta com CSS todos os tópicos para os quais o usuário tem restrição de permissão de categoria nas páginas escolhidas.

Repositório

Link do repositório
framagit.org/oca/discourse-theme-shroud-subcategories

Motivação

Tenho uma comunidade com muitos grupos e quero que as pessoas ignorem pacificamente o que pertence a grupos diferentes dos deles. Não quero restringir o acesso ao conteúdo, apenas não quero que ele apareça na página principal. Elas devem poder acessá-lo indo até ele, escolhendo entrar especificamente nessa categoria (por exemplo, para saber o que está sendo discutido ali). Obviamente, a ferramenta adequada seria a função de assistir/ignorar, mas como a interface exige mais de 2 cliques para configurá-la, ninguém na comunidade a usa. Alguma melhoria na página de Categoria poderia resolver o problema, mas isso está além das minhas habilidades.

Então, uso o que a interface oferece que é simples o suficiente para eles: a página do grupo. Na mesma página são exibidos todos os grupos aos quais eles podem acessar, livremente ou não, e suas descrições. Isso é perfeito, eles só precisam clicar e escolhê-los. A página do grupo está muito escondida para eles (dentro do menu hambúrguer), então eu poderia colocar um grande botão de link na página principal.

Agora, preciso vincular a associação ao grupo e a exibição das postagens da categoria.

Como funciona

O truque que usei foi configurar a permissão de categoria como:

  • todos: ler, escrever
  • aquele grupo: iniciar uma mensagem, ler, escrever

e, em seguida, para cada tópico na lista, verificar se há uma restrição de categoria e, se houver, adicionar uma classe not-in-group ao elemento do tópico.

Depois, o CSS adiciona display:none conforme necessário.

Interface (UI)

O administrador pode escolher as páginas nas quais esse comportamento é efetivo. Isso não deve ser feito na página de categoria porque, por definição, é lá que queremos acessar o conteúdo. No meu site, todos esses grupos são subcategorias que estão ocultas na página latest; acessamos por meio da página /c/groups/, então é essa página que é usada.

Melhorias

  • Poder selecionar categorias pai das categorias filtradas (para que qualquer categoria que não seja filha desta esteja segura de ser ignorada)
  • Adicionar tags, de modo que, se um tópico tiver essa tag, ele não será removido.
10 curtidas

Isso não faz sentido para mim. Por que não usar permissões de categoria para restringir o que os grupos veem?

4 curtidas

Porque quero que eles consigam ver essas categorias, mas apenas se fizerem o esforço de acessá-las. Por exemplo, para ver o que está sendo discutido naquele projeto específico antes de se registrarem.

Mas na página principal, não quero que eles sejam bombardeados com tópicos que não lhes interessam. A melhor maneira seria ignorá-los usando a opção de acompanhar/ignorar, mas isso é complicado demais para eles. A outra opção seria se registrar no grupo, ir até a página da categoria para ler o que está sendo discutido e, em seguida, cancelar o registro no grupo. São muitos cliques para a maioria deles, além de que eles não se atreveriam a fazer isso.

A última opção é a configuração da categoria «remover dos recentes», mas essa configuração afeta todos os usuários, até mesmo aqueles que estão acompanhando a categoria. Com este método, tenho o equivalente a «remover dos recentes», mas apenas para alguns usuários e em todas as páginas que eu quiser.

Espero que fique mais claro.

2 curtidas

Essas melhorias foram implementadas.

4 curtidas

Acho isso muito interessante. Poderia ver um exemplo ou entrar em um fórum onde esse componente está instalado?

1 curtida

Além disso, filtrar com este componente também faz com que as postagens não sejam enviadas por e-mail no Resumo? Porque isso seria INCRÍVEL.

1 curtida

Não, não remove. Ele não remove o acesso ao post, apenas o oculta com CSS. Os tópicos ainda são enviados ao usuário, com a instrução de não exibi-los. O caso de uso não é remover o acesso, mas apenas retirá-lo da página inicial (ou de qualquer outra página escolhida). Desculpe, não o instalei em um fórum sem login, mas fique à vontade para fazer perguntas aqui ou por mensagem privada.

2 curtidas

Obrigado!

O que significa essa parte?

1 curtida

Se você examinar o código-fonte da página, as informações do tópico são enviadas. No entanto, o componente do tema instrui a ignorá-las.

1 curtida

Funciona ‘apenas’ na EXIBIÇÃO de coisas durante a navegação. NÃO é uma função de silenciar ou ignorar. Mas acho essa solução muito interessante para alguns usos. Parabéns @oca por este trabalho!

2 curtidas

Vou dar uma olhada mais de perto. Obrigado novamente!

1 curtida

Olá, instalei este componente de tema e agora estou com problemas para configurá-lo. Quando tento escolher tags e categorias filtradas, as minhas não parecem aparecer. Como exemplo, certamente temos uma tag de FAQ, mas não tive sorte; não consigo selecioná-la. Também tentei apenas digitar a tag, mas isso também não funciona.

2 curtidas

Você tem as tags ativadas no Painel? Elas estão em Configurações/Tags. A primeira caixa no topo da lista de tags é para ativá-las. Em seguida, qualquer tag que você criar deve funcionar.

1 curtida

Sim, as tags estão ativadas.

1 curtida

O parâmetro de configuração não sabe quais tags existem. Você precisa escrever o nome da tag aqui, clicar em create: 'faq', e assim o nome da tag será selecionado. Você pode selecionar tantas tags quanto necessário; qualquer uma delas será suficiente para desocultar a postagem.

Cuidado: se sua conta tiver privilégios de administrador, ela terá permissão total para cada categoria. No entanto, ocultar uma categoria é feito verificando se a conta pode efetivamente criar uma nova postagem. A sua pode, portanto sua conta poderá ver todas as postagens em todos os lugares. Para testar o componente, recomendo criar uma conta de teste para ver o mesmo que um usuário veria.

2 curtidas

Obrigado(a). Acredito que consegui fazer funcionar e estou muito animado(a) para ver como vai dar. Agradeço pelo seu trabalho.

2 curtidas

Seria possível fazer uma exceção para pessoas que estão acompanhando uma categoria?

1 curtida