Sección de Mensajes para la barra lateral

:information_source: Resumen Añade enlaces a la bandeja de entrada de mensajes personales y de grupo a la barra lateral, incluyendo indicadores de mensajes no leídos
:eyeglasses: Vista previa Theme Creator
:hammer_and_wrench: Repositorio GitHub - moin-Jana/sidebar-messages-section: Adds personal and group message inbox links to the sidebar, including unread message indicators.
:question: Guía de instalación Cómo instalar un tema o componente de tema
:open_book: ¿Nuevo en los temas de Discourse? Guía para principiantes sobre el uso de temas de Discourse

Instalar este componente de tema

El componente añade una sección de Mensajes a la barra lateral con enlaces a las bandejas de entrada de mensajes personales, tanto la bandeja de entrada personal del usuario como cualquier bandeja de entrada de grupo a la que tenga acceso. La sección también incluye un botón para redactar un nuevo mensaje personal junto al encabezado de la sección.

Bandeja de entrada personal

Por defecto, el componente añade un enlace a la bandeja de entrada personal para todos los usuarios. Con la configuración show_personal_inbox, los administradores también pueden ocultarla por completo o mostrarla solo para los usuarios a los que se les permite crear mensajes privados según la configuración del sitio Personal message enabled groups. Esto refleja cómo aparece el enlace de la bandeja de entrada personal en el menú de notificaciones, el perfil del usuario y la sección Comunidad de la barra lateral.

:bulb: Para evitar enlaces duplicados a la bandeja de entrada personal, es posible que desees eliminar el enlace de mensajes en la primera sección de la barra lateral. Puedes hacerlo abriendo el menú Más y seleccionando Personalizar esta sección, y luego eliminando el enlace Mensajes de la sección.

Bandejas de entrada de grupo

Todas las bandejas de entrada de grupo que contengan al menos un mensaje y de las que el usuario sea miembro aparecerán automáticamente en su barra lateral. Los administradores pueden ocultar bandejas de entrada de grupo específicas utilizando la configuración hide_group_inboxes, lo que puede ser útil cuando una bandeja de entrada de grupo ya no se utiliza activamente.

Una configuración separada, use_group_page_inbox, te permite elegir si los enlaces de la bandeja de entrada de grupo se abren en la interfaz de mensajes del usuario (/my/messages/group/{group_name}) o en la página del grupo (/g/{group_name}/messages/inbox).

Indicador de no leído

Cada enlace de bandeja de entrada muestra el estado actual del mensaje según la preferencia del usuario para “Mostrar un recuento de los elementos nuevos”: ya sea un punto o el recuento numérico. Los valores superiores a 100 se muestran como 99+.

Configuración avanzada de la bandeja de entrada de grupo

Para personalizar el orden de las bandejas de entrada de grupo o cambiar el nombre que se muestra en la barra lateral, puedes utilizar la configuración advanced_group_inbox_configuration.

En esta configuración puedes:

  • seleccionar un grupo de un menú desplegable
  • opcionalmente definir un nombre personalizado que se mostrará en la barra lateral
  • reordenar los grupos configurados utilizando los botones de la parte inferior

El nombre personalizado también es útil dentro de la propia configuración.
Si no se proporciona un nombre, la entrada se etiquetará como group 1, group 2, etc. (según su posición). Añadir un nombre temporal puede facilitar el reordenamiento, y puedes eliminarlo de nuevo antes de guardar si lo deseas.

Los grupos con mensajes que no se añaden a la configuración avanzada seguirán apareciendo en la barra lateral, listados después de los configurados y ordenados por su ID de grupo.

Los grupos listados en la configuración hide_group_inboxes siempre se ocultarán, independientemente de si también están presentes en la configuración avanzada o tienen mensajes. Una advertencia solo para administradores ayuda a resaltar cuando un grupo se añade a ambas configuraciones.

Puedes ver un ejemplo de configuración y cómo afecta al orden y a los nombres mostrados en las capturas de pantalla a continuación:

Posición de la sección de mensajes

Para cambiar la posición de la sección de mensajes, puedes usar CSS, por ejemplo

Alternativamente, puedes instalar el componente Navigation (sidebar) menu display control que incluye una configuración para cambiar el orden de las secciones en la barra lateral. Utiliza inbox-section como nombre de la sección al ajustar su posición.

15 Me gusta

¡Vaya, bien hecho Moin! :clap: :tada:

4 Me gusta

Sugerencia menor: ¿quizás javascripts/discourse/api-initializers/group-inboxes-in-sidebar.gjs debería ser un archivo JS en lugar de GJS?

¡Gran componente!


Pasé los últimos 10 minutos revisando el código y examinando las clases principales y debo decir lo notable que fue (y es) que Discourse fue hecho de tal manera que todo encaja tan bien.

2 Me gusta

Sí, la API ofrece casi todo lo que necesitas para que la sección se vea y funcione como todas las demás. El chat también la utiliza, lo que probablemente influyó en el desarrollo. Las características se desarrollaron al mismo tiempo.
Desafortunadamente, get badgeText(), que muestra el número de temas no leídos en las secciones principales, no es compatible, por lo que tuve que ser un poco creativo con los números.

4 Me gusta

No pude encontrar una configuración de administrador para esto, así que PSA, esto lo ocultará a través de CSS:

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

¿Por qué prefieres que el enlace se oculte con CSS en lugar de usar la opción existente para que los administradores personalicen la barra lateral? Ocultar con CSS parece más propenso a romperse que usar las opciones integradas de Discourse.

2 Me gusta

Derp, tienes razón. Estaba pensando demasiado, creyendo que sería una configuración en la consola de administración y/o una funcionalidad central.

1 me gusta

No eres el único que estaba mirando allí. :joy:


¡Este es un componente genial!

2 Me gusta

He expandido la nota:

5 Me gusta

Sí lo hiciste. Pero como administradores, a menudo estamos acostumbrados a revisar el panel de administración. :wink:. Por lo que al leer las instrucciones por encima, podríamos pasar por alto algunos detalles.

Incluso con las actualizaciones principales, estoy seguro de que muchos de nosotros no siempre leemos todos los detalles hasta que algo que usamos se ha movido a otra área.

Hace mucho, mucho tiempo, con Android, si no recuerdo mal, Gingerbread solía tener Navegación y Mapas. Pasé unos 10 minutos buscando Navegación después de que la fusionaran con Mapas en una actualización. :joy:

Este es un Componente de Tema brillante que se adapta a los sitios que dependen mucho de los Mensajes. ¡Gracias @moin por tu excelente trabajo!

Para hacerlo aún mejor para aquellos que usan Grupos con bastante frecuencia (los Mensajes son un gran componente de esto), ¿te importaría considerar estas sugerencias?

Posición seleccionable en la barra lateral

Para enfatizar más los Mensajes en la interfaz de usuario, me gustaría tenerlos en la parte superior de la Barra lateral (es decir, justo debajo de los enlaces). Básicamente, quiero que las personas puedan ver fácilmente sus Mensajes recientes (por grupo) de un vistazo sin depender de las notificaciones.

He utilizado este CSS para lograrlo, pero sospecho que no soy el único para quien esto sería útil:

/* Asegura que la sección de Mensajes aparezca primero en el contenedor flexbox */
.sidebar-section-wrapper {
  order: 1;
}
.sidebar-section-wrapper[data-section-name="inbox-section"] {
  order: 0;
}

Abrir las bandejas de entrada de grupo en el contexto del grupo

Quiero que mis usuarios puedan encontrar e interactuar fácilmente con sus Grupos. Me parece lógico que trabajen con los Mensajes en la Bandeja de entrada a la que se accede desde la página del Grupo (es decir, /g/el-grupo/messages/inbox) en lugar de su página de Bandeja de entrada Personal (es decir, /my/messages/group/el-grupo)

Esto les da una página limpia centrada en el grupo, con fácil acceso a los otros miembros y configuraciones del grupo:

Sería genial tener esto gobernado por una configuración en el TC.

3 Me gusta

He pensado en esto, sobre qué ruta es un mejor valor predeterminado y una configuración, pero la eliminé por alguna razón que no recuerdo ahora mismo. Le echaré un vistazo mañana más tarde. Creo que fue sobre el indicador de mensajes no leídos. ¿Aún preferirías esta ruta si la consecuencia fuera que no habría indicador de mensajes no leídos?

Creo que la posición actual es la misma que la sección de mensajes que estaba en el núcleo.
Ya existe un gran componente sobre cómo cambiar el orden de las secciones en la barra lateral: Navigation (sidebar) menu display control
Para evitar conflictos porque ambos componentes intentan anular el orden, tendría sentido que los administradores que deseen un orden diferente utilicen el componente existente (el autor confirmó que funciona usando “inbox-section” como nombre de la sección).
Tendré que ver si puedo ofrecer una configuración adicional para esto. En cualquier caso, quiero evitar que los componentes interfieran entre sí.

2 Me gusta

He estado jugueteando con esto en mi bifurcación y he encontrado lo mismo. Funciona, pero pierde tanto el indicador de mensajes no leídos como el resaltado de enlaces en la barra lateral. ¡Ambas cosas son de gran valor!

He hecho una PR para donde llegué:

Pero para que realmente funcione, necesita que el indicador de no leído y el resaltado de enlaces funcionen, ¿verdad?

¡Buen punto! Esa es una idea mucho mejor. Para mi vergüenza, soy uno de los autores de ese TC.

1 me gusta

¿Por qué usaste href en lugar de route? Creo que href no funcionaba en absoluto con los indicadores de no leído. Me preocupaba más que los números en la ruta group.messages.inbox no estuvieran disponibles de la manera en que puedes usarlos en userPrivateMessages.

1 me gusta

Porque soy un desarrollador pésimo, ¡y probé un montón de cosas hasta que algo funcionó! Probablemente también debido a mi dependencia poco saludable de la IA generativa no tan inteligente :wink:.

Intenté utilizar rutas, pero en realidad no pude hacer que anulara las rutas existentes. Así que me rendí.

Me preguntaba si era posible obtener esos números/comportamiento, simplemente secuestrando el enlace para que fuera a una ubicación diferente. Pero esto es un poco complejo para mi simple yo.

¡Siéntete libre de ‘mejorarlo’!

(Por cierto, el maravilloso @moin ha hecho exactamente eso, añadiendo la funcionalidad, ¡haciéndolo funcionar correctamente!)

2 Me gusta

Esto funciona muy bien, de hecho. Algo vergonzosamente, soy uno de los autores (muy secundario a @lilly) de ese TC :flushed_face:!

Sería genial tener esto en el OP.

2 Me gusta

@nathank solicitó una opción para cambiar el orden de las bandejas de entrada de grupo en la barra lateral. Anteriormente, solicité ideas sobre la mejor manera de abordar esto en Configuring the order of groups in theme component settings, y creo que ahora he llegado a una solución.
Combiné esto con la solicitud de mostrar el nombre completo de un grupo en lugar de su nombre corto. Dado que el nombre completo no está fácilmente disponible en este contexto, la solución es permitir a los administradores definir un nombre de visualización personalizado en su lugar. El campo que anteriormente solo se usaría para mostrar el nombre del grupo en la configuración ahora también se utiliza para controlar el nombre que se muestra en la barra lateral.

Ambas características se manejan a través de la nueva configuración advanced_group_inbox_configuration.

En esta configuración puedes:

  • seleccionar un grupo de un menú desplegable
  • definir opcionalmente un nombre personalizado que se mostrará en la barra lateral
  • reordenar los grupos configurados usando los botones en la parte inferior

El nombre personalizado también es útil dentro de la propia configuración.
Si no se proporciona un nombre, la entrada se etiquetará como grupo 1, grupo 2, etc. (según su posición). Agregar un nombre temporal puede facilitar el reordenamiento, y puedes eliminarlo antes de guardar si lo deseas.

Los grupos con mensajes que no se agregan a la configuración avanzada seguirán apareciendo en la barra lateral, enumerados después de los configurados y ordenados por su ID de grupo.
Los grupos enumerados en la configuración hide_group_inboxes siempre estarán ocultos, independientemente de si también están presentes en la configuración avanzada o tienen mensajes.


En este ejemplo, no se introdujo un nombre personalizado para el grupo de moderadores, por lo que aparece como grupo 1 en la configuración. Los otros grupos tienen nombres personalizados.

Esta configuración da como resultado:


Aquí puedes ver que las bandejas de entrada ‘doggo-daily’ y ‘cat_pics’ han cambiado de posición y se muestran sin guiones ni guiones bajos. La bandeja de entrada ‘Team’ aparece debajo de las configuradas en la configuración avanzada.
También puedes ver una advertencia exclusiva para administradores, que aparece porque el grupo ‘admin’ se agregó a la configuración avanzada y a la configuración hide_group_inboxes al mismo tiempo.

4 Me gusta

Esto es simplemente brillante para aquellos que utilizan grupos para las comunicaciones. ¡Gran trabajo, @Moin!

Gracias por escuchar y participar activamente en los comentarios de otros (y míos), y por producir un componente de tema tan bien diseñado y pragmático que resuelve un problema de larga data con tanta elegancia.

1 me gusta