Grupos Dinámicos de Discourse

:information_source: Resumen Administra automáticamente la membresía de grupos
:hammer_and_wrench: Enlace del Repositorio \u003chttps://github.com/communiteq/discourse-dynamic-groups\u003e
:open_book: Guía de Instalación Cómo instalar plugins en Discourse

:warning: Este plugin debe considerarse beta :warning:

Características

Las comunidades de Discourse a menudo necesitan automatizar las membresías de grupos basadas en condiciones como la propiedad de insignias o las membresías de grupos existentes.

Los casos de uso comunes incluyen:

  • Usuarios que no están en el grupo ‘suscriptores’

  • Usuarios que no tienen prohibido publicar en Marketplace

  • Usuarios en TL0 o TL1, pero no en TL2

  • Usuarios que han completado el tutorial para nuevos usuarios o han sido miembros durante más de un año

  • Usuarios que pertenecen a client_1, client_2 o client_3 y no son becarios

Anteriormente, resolver esto requería scripts personalizados que sincronizaban periódicamente los grupos. El plugin Dynamic Groups elimina esa necesidad.

Este plugin introduce un campo de expresión booleana en la configuración del grupo, lo que permite a los administradores definir reglas que determinan dinámicamente la membresía del grupo.

Ejemplos:

  • usuarios que no están en el grupo ‘suscriptores’
    trust_level_0 AND NOT subscribers

  • usuarios que no tienen prohibido publicar en Marketplace
    trust_level_2 AND NOT banned_users

  • usuarios que están en TL0 o TL1 pero no en TL2
    trust_level_0 AND NOT trust_level_2

  • usuarios que completaron el tutorial para nuevos usuarios o son miembros desde hace más de un año
    badge:certified OR badge:anniversary

  • usuarios que pertenecen a los clientes 1, 2 o 3 y no son becarios
    (client_1 OR client_2 OR client_3) AND NOT interns

Configuración

Una vez que el plugin esté instalado y habilitado, aparecerá una nueva pestaña en la interfaz de administración de grupos:

Cuando ingrese o actualice la expresión booleana, el sistema tardará unos momentos en poblar el grupo con los usuarios coincidentes. A partir de ese momento, la membresía del grupo se actualizará automáticamente a medida que cambie el estado del usuario.

Importante:
Cuando se define una regla, el grupo se marca como automático, lo que deshabilita los cambios manuales de miembros. Para revertir el grupo a la gestión manual, simplemente borre el campo de expresión. Los miembros existentes permanecerán y recuperará el control manual.

24 Me gusta

¡Guau! ¡Increíble trabajo, Richard!

Esto cubre una gran carencia en la gestión de grupos dentro de Discourse. Totalmente encantado y deseando probarlo a fondo.

Principalmente lo usaré para habilitar subgrupos funcionales.

3 Me gusta

¡Definitivamente una adición bienvenida a las funciones de Discourse!

1 me gusta

Se fusionaron 7 publicaciones en un tema existente: Solo la primera entrada funciona con campos Multiselect cuando se usa el Disparador El primer ingreso del usuario

Hola, ¡gracias por desarrollar este plugin tan útil!

Actualmente estoy usando Discourse Dynamic Groups para añadir automáticamente todos los usuarios no anónimos a un grupo especial. Mi expresión booleana es:

NOT anonymous_users
Comportamiento esperado:
Cuando un nuevo usuario se registra (que no pertenece al grupo anonymous_users), debería ser añadido automáticamente a este grupo, sin ninguna intervención manual.

Comportamiento real:
Los usuarios recién registrados no se añaden inmediatamente al grupo. Solo se añaden después de que yo vuelva a guardar manualmente la expresión booleana en la configuración del grupo.
Esto significa que el grupo no se actualiza automáticamente a medida que los usuarios se unen, a menos que yo active una sincronización manual.

1 me gusta

Hmm… buena observación. Y estoy de acuerdo en que este debería ser el comportamiento esperado.

Desde un punto de vista técnico, el plugin solo volverá a evaluar la membresía del grupo en dos condiciones diferentes:

  1. Cuando se guarda la expresión booleana en la configuración del grupo
  2. Si un usuario es añadido o eliminado de un grupo mencionado en la expresión booleana.

Cuando un nuevo usuario se registra, ninguno de los dos es el caso.

¿Puedes intentar cambiar la expresión a trust_level_0 AND NOT anonymous_users e informar si eso resuelve el problema?

3 Me gusta

Hola,

Cuando intento usar la expresión

trust_level_0 AND NOT anonymous_users

Recibo el error:
Palabra clave, grupo o insignia desconocida: 'anonymous_users'

Si cambio el nombre del grupo a mi grupo real, por ejemplo:

trust_level_0 AND NOT interns

Aún recibo:
Palabra clave, grupo o insignia desconocida: 'interns'

He verificado dos veces y estoy copiando el nombre único del grupo directamente desde la página de administración del grupo, así que no hay errores de escritura.
¿Hay algo que podría estar olvidando o hay algo más que necesito configurar para que los grupos personalizados sean reconocidos en la expresión?

4 Me gusta

Gracias por informar de esto.

Intentando reproducir, he identificado dos errores y uno de ellos probablemente te afectó. ¿Puedes actualizar el plugin a la última versión 59640f1 y ver si eso resuelve el problema?

El plugin todavía no gestiona muy bien el cambio de nombre de los grupos. Si cambias el nombre de un grupo, debes guardar las reglas de todos los grupos que dependen de él (simplemente introduce un espacio después de la expresión booleana y elimínalo de nuevo para habilitar el botón Guardar). Esto se abordará en una versión posterior.

3 Me gusta

¿Esto utiliza tu plugin de restricción de categorías o funciona de forma independiente a él?

impresionante plugin para llenar vacíos.

Funciona de forma independiente.

1 me gusta

Hola,

Estoy usando el plugin Dynamic Groups y he establecido mis criterios como:

trust_level_0 AND NOT anon_group

Sin embargo, he notado que los usuarios con trust_level_1 que no están en el anon_group también se están agregando a este grupo dinámico.

¿Podrías confirmar si este es el comportamiento esperado o si se trata de un error?

Los usuarios con nivel de confianza 1 también son miembros del grupo de nivel de confianza 0. Por lo tanto, el comportamiento es el esperado. Podrías excluir al grupo de nivel de confianza 1 para obtener solo usuarios TL0. Similar al ejemplo de la primera publicación

2 Me gusta

Gracias por la aclaración