Les communautés Discourse ont souvent besoin d’automatiser l’appartenance aux groupes en fonction de conditions telles que la possession d’un badge ou l’appartenance à des groupes existants.
Les cas d’utilisation courants incluent :
Utilisateurs n’appartenant pas au groupe « abonnés »
Utilisateurs n’étant pas bannis de la publication dans Marketplace
Utilisateurs au niveau de confiance 0 ou 1, mais pas au niveau de confiance 2
Utilisateurs ayant terminé le tutoriel des nouveaux utilisateurs ou étant membres depuis plus d’un an
Utilisateurs appartenant à client_1, client_2 ou client_3 et n’étant pas stagiaires
Auparavant, la résolution de ce problème nécessitait des scripts personnalisés qui synchronisaient périodiquement les groupes. Le plugin Dynamic Groups élimine ce besoin.
Ce plugin introduit un champ d’expression booléenne dans les paramètres du groupe, permettant aux administrateurs de définir des règles qui déterminent dynamiquement l’appartenance aux groupes.
Exemples :
utilisateurs qui n’appartiennent pas au groupe « abonnés » trust_level_0 AND NOT subscribers
utilisateurs qui ne sont pas bannis de la publication dans Marketplace trust_level_2 AND NOT banned_users
utilisateurs qui sont au niveau de confiance 0 ou 1 mais pas au niveau de confiance 2 trust_level_0 AND NOT trust_level_2
utilisateurs qui ont terminé le tutoriel des nouveaux utilisateurs ou sont membres depuis plus d’un an badge:certified OR badge:anniversary
utilisateurs qui appartiennent aux clients 1, 2 ou 3 et ne sont pas stagiaires (client_1 OR client_2 OR client_3) AND NOT interns
Configuration
Une fois le plugin installé et activé, un nouvel onglet apparaîtra dans l’interface d’administration des groupes :
Lorsque vous entrez ou mettez à jour l’expression booléenne, le système prendra quelques instants pour remplir le groupe avec les utilisateurs correspondants. À partir de ce moment, l’appartenance au groupe sera automatiquement mise à jour à mesure que le statut des utilisateurs change.
Important :
Lorsqu’une règle est définie, le groupe est marqué comme automatique, désactivant les modifications manuelles des membres. Pour revenir à la gestion manuelle du groupe, il suffit de vider le champ d’expression. Les membres existants resteront, et vous retrouverez le contrôle manuel.
Bonjour, merci d’avoir développé ce plugin super utile !
J’utilise actuellement Discourse Dynamic Groups pour ajouter automatiquement tous les utilisateurs non anonymes à un groupe spécial. Mon expression booléenne est :
NOT anonymous_users
Comportement attendu :
Lorsqu’un nouvel utilisateur s’inscrit (et n’appartient pas au groupe anonymous_users), il devrait être automatiquement ajouté à ce groupe, sans aucune intervention manuelle.
Comportement actuel :
Les nouveaux utilisateurs inscrits ne sont pas immédiatement ajoutés au groupe. Ils ne sont ajoutés qu’après que j’ai manuellement réenregistré l’expression booléenne dans les paramètres du groupe.
Cela signifie que le groupe n’est pas mis à jour automatiquement lorsque des utilisateurs le rejoignent, sauf si je déclenche une synchronisation manuelle.
Je reçois l’erreur : Unknown keyword, group or badge: 'anonymous_users'
Si je change le nom du groupe avec mon groupe actuel, par exemple :
trust_level_0 AND NOT interns
Je reçois toujours : Unknown keyword, group or badge: 'interns'
J’ai vérifié et je copie le nom unique du groupe directement depuis la page d’administration du groupe, donc il n’y a pas de fautes de frappe.
Y a-t-il quelque chose que je pourrais manquer, ou y a-t-il autre chose que je dois configurer pour que les groupes personnalisés soient reconnus dans l’expression ?
En essayant de reproduire, j’ai identifié deux bugs et l’un d’eux vous a probablement touché. Veuillez mettre à jour le plugin vers la dernière version 59640f1 et voir si cela résout le problème.
Le plugin ne gère toujours pas très bien le renommage des groupes. Si vous renommez un groupe, vous devez enregistrer les règles de tous les groupes qui en dépendent (entrez simplement un espace après l’expression booléenne et supprimez-le à nouveau pour activer le bouton Enregistrer). Ceci sera corrigé dans une version ultérieure.
Les utilisateurs ayant le niveau de confiance 1 sont également membres du groupe de niveau de confiance 0. Le comportement est donc attendu. Vous pourriez exclure le groupe de niveau de confiance 1 pour n’obtenir que les utilisateurs TL0. Similaire à l’exemple du premier message
J’adore absolument ce plugin : il est extrêmement utile pour plusieurs cas d’usage. Bravo encore à l’équipe Communiteq pour le partage et la maintenance !
Question d’UX - Ne serait-il pas préférable de masquer les champs clés plutôt que l’onglet Membreship entier ?
Je remarque qu’il masque l’onglet Membreship des pages de groupe. Je veux dire celui-ci :
Bien que je comprenne la raison, cela pose certains problèmes lorsque vous souhaitez modifier le titre par défaut, le style ou l’effet.
On peut contourner ce problème en soit en réaffichant l’onglet via la console du navigateur, soit en supprimant l’expression dans l’onglet Groupes dynamiques, en actualisant, en apportant les modifications, en la réinsérant, puis en actualisant à nouveau.
Mais je me demande s’il ne serait pas préférable de simplement masquer les champs qui ne sont pas utiles, plutôt que l’onglet entier. Quelque chose de plus proche de ceci :
Oui, j’ai trouvé ça entre mon message et ta réponse !! Je n’avais pas réalisé que tu t’intègres ainsi aux fonctionnalités principales — c’est même très bien fait.
J’ai barré ma suggestion incorrecte.
Je suppose que l’autre solution de contournement que j’ai mentionnée convient alors.
Nous allons procéder à une maintenance de tous les plugins dans le mois à venir. Peut-être devrons-nous revoir le paramètre « automatique », car, si ma mémoire est bonne, il servait simplement à désactiver rapidement les fonctionnalités d’ajout/suppression de membres. Tout le reste est probablement des effets secondaires indésirables.