Seção de Mensagens para a barra lateral

:information_source: Resumo Adiciona links para a caixa de entrada de mensagens pessoais e de grupo à barra lateral, incluindo indicadores de mensagens não lidas
:eyeglasses: Prévia Theme Creator
:hammer_and_wrench: Repositório GitHub - moin-Jana/sidebar-messages-section: Adds personal and group message inbox links to the sidebar, including unread message indicators.
:question: Guia de Instalação Como instalar um tema ou componente de tema
:open_book: Novo em Temas do Discourse? Guia para iniciantes sobre como usar Temas do Discourse

Instalar este componente de tema

O componente adiciona uma seção Mensagens à barra lateral com links para caixas de entrada de mensagens pessoais - tanto a caixa de entrada pessoal do usuário quanto quaisquer caixas de entrada de grupo às quais ele tenha acesso. A seção também inclui um botão para compor uma nova mensagem pessoal ao lado do título da seção.

Caixa de entrada pessoal

Por padrão, o componente adiciona um link para a caixa de entrada pessoal de todos os usuários. Com a configuração show_personal_inbox, os administradores também podem ocultá-la completamente ou mostrá-la apenas para usuários autorizados a criar MPs com base na configuração do site Personal message enabled groups (Grupos com mensagens pessoais ativadas). Isso espelha a forma como o link da caixa de entrada pessoal aparece no menu de notificações, no perfil do usuário e na seção Comunidade da barra lateral.

:bulb: Para evitar links duplicados para a caixa de entrada pessoal, você pode querer remover o link de mensagens na primeira seção da barra lateral. Você pode fazer isso abrindo o menu Mais e selecionando Personalizar esta seção, e então remover o link Mensagens da seção.

Caixas de entrada de grupo

Todas as caixas de entrada de grupo que contêm pelo menos uma mensagem e das quais o usuário é membro aparecerão automaticamente em sua barra lateral. Os administradores podem ocultar caixas de entrada de grupo específicas usando a configuração hide_group_inboxes, o que pode ser útil quando uma caixa de entrada de grupo não está mais em uso ativo.

Uma configuração separada, use_group_page_inbox, permite que você escolha se os links da caixa de entrada do grupo abrem na interface de mensagens do usuário (/my/messages/group/{group_name}) ou na página do grupo (/g/{group_name}/messages/inbox).

Indicador de não lido

Cada link da caixa de entrada mostra o estado atual da mensagem com base na preferência do usuário por “Mostrar uma contagem de novos itens”: um ponto ou a contagem numérica. Valores acima de 100 são exibidos como 99+.

Configuração avançada da caixa de entrada de grupo

Para personalizar a ordem das caixas de entrada de grupo ou alterar o nome exibido na barra lateral, você pode usar a configuração advanced_group_inbox_configuration.

Nesta configuração você pode:

  • selecionar um grupo em um menu suspenso
  • opcionalmente definir um nome personalizado que será mostrado na barra lateral
  • reordenar os grupos configurados usando os botões na parte inferior

O nome personalizado também é útil dentro da própria configuração.
Se nenhum nome for fornecido, a entrada será rotulada como group 1, group 2, etc. (com base em sua posição). Adicionar um nome temporário pode facilitar o reordenamento, e você pode removê-lo novamente antes de salvar, se desejar.

Grupos com mensagens que não são adicionados à configuração avançada ainda aparecerão na barra lateral, listados após os configurados e ordenados pelo ID do grupo.

Grupos listados na configuração hide_group_inboxes estarão sempre ocultos, independentemente de estarem também presentes na configuração avançada ou terem mensagens. Um aviso exclusivo para administradores ajuda a destacar quando um grupo é adicionado a ambas as configurações.

Você pode ver um exemplo de configuração e como ela afeta a ordem e os nomes exibidos nas capturas de tela abaixo:

Posição da seção de mensagens

Para alterar a posição da seção de mensagens, você pode usar CSS, por exemplo

Alternativamente, você pode instalar o componente Navigation (sidebar) menu display control, que inclui uma configuração para alterar a ordem das seções na barra lateral. Use inbox-section como o nome da seção ao ajustar sua posição.

15 curtidas

Uau, bem feito Moin! :clap: :tada:

4 curtidas

Sugestão menor: talvez javascripts/discourse/api-initializers/group-inboxes-in-sidebar.gjs devesse ser um arquivo JS em vez de GJS?

Ótimo componente!


Passei os últimos 10 minutos examinando o código e analisando as classes principais e devo dizer o quão notável o Discourse foi (e é) feito de modo que tudo se encaixa tão bem.

2 curtidas

Sim, a API oferece quase tudo o que você precisa para fazer a seção parecer e funcionar como todas as outras. O chat também a utiliza, o que provavelmente influenciou o desenvolvimento. Os recursos foram desenvolvidos ao mesmo tempo.
Infelizmente, get badgeText(), que exibe o número de tópicos não lidos nas seções principais, não é suportado, então tive que ser um pouco criativo com os números.

4 curtidas

Não consegui encontrar uma configuração de administrador para isso, então um PSA: isso a ocultará via CSS:

.sidebar-section-link[data-link-name=\"my-messages\"] {
    display: none;
}
2 curtidas

Por que você prefere que o link fique oculto com CSS em vez de usar a opção existente para administradores personalizarem a barra lateral? Ocultar com CSS parece ter mais probabilidade de quebrar do que usar as opções integradas do Discourse.

2 curtidas

Derp, você está certo. Eu estava pensando demais, achando que seria uma configuração no console de administração e/ou funcionalidade principal.

1 curtida

Você não é o único que estava olhando lá. :joy:


Este é um componente adorável!

2 curtidas

Eu expandi a nota:

5 curtidas

Sim, você fez. Mas como administradores, muitas vezes estamos acostumados a passar pelo painel de administração. :wink:. Então, ao folhear as instruções, podemos ignorar alguns detalhes.

Mesmo com atualizações principais, tenho certeza de que muitos de nós nem sempre lemos todos os detalhes minuciosos até que algo que usamos tenha sido movido para outra área.

Há muito, muito tempo, com o Android, se bem me lembro, o Gingerbread costumava ter Navegação e Mapas. Passei cerca de 10 minutos procurando por Navegação depois que eles a fundiram com Mapas em uma atualização. :joy:

Este é um Componente de Tema brilhante que se adequa a sites que dependem muito de Mensagens! Obrigado @moin pelo seu excelente trabalho!

Para torná-lo ainda melhor para aqueles que usam Grupos com frequência (Mensagens são um grande componente disso), você se importaria de considerar estas sugestões?

Posição selecionável na barra lateral

Para enfatizar mais as Mensagens na interface do usuário, eu gostaria que elas ficassem no topo da Barra Lateral (ou seja, logo abaixo dos links). Basicamente, quero que as pessoas possam ver facilmente suas Mensagens recentes (por grupo) rapidamente, sem depender de notificações.

Eu usei este CSS para conseguir isso, mas suspeito que não sou o único para quem isso seria útil:

/* Garante que a seção Mensagens apareça primeiro no contêiner flexbox */
.sidebar-section-wrapper {
  order: 1;
}
.sidebar-section-wrapper[data-section-name="inbox-section"] {
  order: 0;
}

Abrir caixas de entrada de grupo no contexto do grupo

Quero que meus usuários possam encontrar e interagir facilmente com seus Grupos. Faz sentido para mim que eles trabalhem com Mensagens na Caixa de Entrada que é acessada a partir da página do Grupo (ou seja, /g/o-grupo/mensagens/caixa-de-entrada) em vez da página da Caixa de Entrada Pessoal (ou seja, /meu/mensagens/grupo/o-grupo)

Isso lhes dá uma página limpa centrada no grupo, com fácil acesso aos outros membros e configurações do grupo:

Seria ótimo ter isso controlado por uma configuração no TC.

3 curtidas

Eu pensei sobre isso, sobre qual rota é um padrão melhor e uma configuração, mas a removi por algum motivo que não me lembro agora. Vou dar uma olhada amanhã mais tarde. Acho que foi sobre o indicador de mensagem não lida. Você ainda preferiria esta rota se a consequência fosse que não haveria indicador para mensagens não lidas?

Eu acho que a posição atual é a mesma da seção de mensagens que estava no núcleo.
Já existe um ótimo componente sobre a alteração da ordem das seções na barra lateral: Navigation (sidebar) menu display control
Para evitar conflitos porque ambos os componentes tentam substituir a ordem, pode fazer sentido que administradores que desejam uma ordem diferente usem o componente existente (O autor confirmou que funciona usando “inbox-section” como nome da seção).
Terei que ver se consigo oferecer uma configuração adicional para isso. Em qualquer caso, quero evitar que os componentes interfiram uns com os outros.

2 curtidas

Tenho mexido nisso no meu fork e descobri a mesma coisa. Funciona, mas perde tanto o indicador de mensagem não lida quanto o destaque do link na barra lateral. Ambas essas coisas são de alto valor!

Fiz um PR sobre onde cheguei:

Mas para realmente funcionar, precisa que o indicador de não lido e o destaque do link funcionem, né?

Ponto bem colocado! Essa é uma ideia muito melhor. Para minha vergonha, sou um dos autores desse TC!

1 curtida

Por que você usou href em vez de route? Eu acho que href não funcionava com indicadores de não lido de jeito nenhum. Eu estava mais preocupado que os números na rota group.messages.inbox não estivessem disponíveis da maneira que você pode usá-los em userPrivateMessages.

1 curtida

Porque sou um desenvolvedor péssimo e tentei várias coisas até que algo funcionasse! Provavelmente também devido à minha dependência não saudável de IA generativa não tão inteligente :wink:.

Eu tentei utilizar rotas, mas não consegui fazê-las sobrescrever as rotas existentes. Então eu desisti.

Eu me perguntei se seria possível obter esses números/comportamento, simplesmente sequestrando o link para ir a um local diferente. Mas isso é um pouco complexo para o meu eu simples e antigo.

Sinta-se à vontade para ‘melhorar’ isso!

(A propósito, o maravilhoso @moin fez exatamente isso, adicionando a funcionalidade - fazendo funcionar corretamente!)

2 curtidas

Isso realmente funciona muito bem. De forma um pouco embaraçosa, sou um dos autores (muito secundário a @lilly) da aquele TC :flushed_face:!

Seria ótimo ter isso no OP.

2 curtidas

@nathank solicitou uma opção para alterar a ordem das caixas de entrada de grupo na barra lateral. Eu pedi ideias sobre a melhor forma de abordar isso anteriormente em Configuring the order of groups in theme component settings, e acho que cheguei a uma solução.
Combinei isso com o pedido para exibir o nome completo de um grupo em vez de seu nome curto. Como o nome completo não está facilmente disponível neste contexto, a solução é permitir que os administradores definam um nome de exibição personalizado em vez disso. O campo que anteriormente seria usado apenas para exibir o nome do grupo na configuração agora também é usado para controlar o nome mostrado na barra lateral.

Ambos os recursos são tratados através da nova configuração advanced_group_inbox_configuration.

Nesta configuração você pode:

  • selecionar um grupo em um menu suspenso
  • opcionalmente, definir um nome personalizado que será exibido na barra lateral
  • reordenar os grupos configurados usando os botões na parte inferior

O nome personalizado também é útil dentro da própria configuração.
Se nenhum nome for fornecido, a entrada será rotulada como group 1, group 2, etc. (com base em sua posição). Adicionar um nome temporário pode facilitar a reordenação, e você pode removê-lo novamente antes de salvar, se desejar.

Grupos com mensagens que não são adicionados à configuração avançada ainda aparecerão na barra lateral, listados após os configurados e ordenados pelo seu ID de grupo.
Grupos listados na configuração hide_group_inboxes sempre serão ocultados, independentemente de também estarem presentes na configuração avançada ou terem mensagens.


Neste exemplo, nenhum nome personalizado foi inserido para o grupo de moderadores, razão pela qual ele aparece como group 1 na configuração. Os outros grupos têm nomes personalizados.

Esta configuração resulta em:


Aqui você pode ver que as caixas de entrada ‘doggo-daily’ e ‘cat_pics’ trocaram de posição e são exibidas sem hifens ou sublinhados. A caixa de entrada ‘Team’ aparece abaixo daquelas configuradas na configuração avançada.
Você também pode ver um aviso exclusivo para administradores, que aparece porque o grupo ‘admin’ foi adicionado à configuração avançada e à configuração hide_group_inboxes ao mesmo tempo.

4 curtidas

Isto é simplesmente brilhante para aqueles que estão utilizando grupos para comunicações. Ótimo trabalho, @Moin!

Obrigado por ouvir e se envolver ativamente com o feedback dos outros (e meu) — e por produzir um componente de tema tão bem projetado e pragmático que resolve um problema antigo com tanta elegância.

1 curtida