Politique de Discourse

:discourse2: Summary Discourse Policy gives the ability to confirm your users have seen or done something, with optional reminders.
:open_book: Install Guide This plugin is bundled with Discourse core. There is no need to install the plugin separately.

Features

Discourse policy shares much of its DNA with polls, it has the goal of ensuring members of a group accept certain policies by clicking a button.

It has some specific features that set it apart from polls:

  1. It must apply to a group.

  2. It can optionally nag members of a group either weekly or daily to click accept on a policy.

  3. The UX makes it very easy to see who accepted and who did not accept a policy.

Configuration

Screenshots

Before clicking accept

After clicking “grey” person on top right

After clicking accept

Creating a policy

Discourse policy registers a custom [policy] BBCode element. Which means you need to write this block of code in your post where you want to show this policy.

[policy group=founders reminder=daily]
I accept this policy will annoy me daily until I click accept
[/policy]

In this case the policy applies to the founders group and a reminder is sent daily to all users that did not accept the policy.

Site settings

policy_enabled : Enable the discourse policy plugin on the site.

policy_restrict_to_staff_posts: Policies may only appear on staff posts.

policy easy revoke: Show the accept and revoke buttons at the same time.

BBCode attributes

The [policy] element can accept the following attributes.

  • group: the group name that policy will apply to required
  • version: the version number of the policy, bump number up to require all users re-accept the policy
  • reminder: remind users of the group to accept policy (weekly or daily), optional, default off
  • accept: text used for accept button, default is “Accept Policy”
  • revoke: text used for revoke button, default is “Revoke Policy”
  • renew: number of days or text describing period (monthly, quarterly or yearly) after which a user needs to re-accept policy
  • renew-start: the first date renewals will start at Eg: 17-10-2017, useful if you want to set the renewal cadence so it happens every half-year (Jan,June)
  • add-users-to-group: accepts a single group as input; users who accept the policy will be automatically added into this group (when policy is manually revoked or if the policy version is updated, user(s) gets removed from group)
  • private: hide users who accepted/did not accept the policy

:information_source: The backend job to check for policy reminders runs every 6 hours. If the reminder element is set to weekly or daily, users who have not accepted a policy will be sent notification reminders to accept the policy only if they have not already received a reminder notification for the policy within the past week or day.

Usage examples

Basic policy:

[policy group="team" reminder="daily" accept="Accept" revoke="Ignore" version="1"]
I have read, understand and acknowledge this policy.
[/policy]

Bumping the revision number, to require that everyone reads the update:

[policy group="team" reminder="daily" accept="Accept" revoke="Ignore" version="2"]
I have read, understand and acknowledge this policy. (Last updated [date=2020-04-23 timezone="America/Los_Angeles"])
[/policy]

Periodic auditing task:

[policy group="audit_committee" reminder="weekly" renew="90" renew-start="01-07-2019" version="1" accept="Assignment Complete"] 
I have ensured that someone is assigned to this quarterly audit task.
[/policy]

CHANGELOG

TODO

  • Optional immediate reminder for new policies
  • Possibly allow certain groups to apply policies (expanding on staff)

Last edited by @david 2025-07-22T13:14:42Z

Check documentPerform check on document:
65 « J'aime »

2 messages ont été déplacées vers un nouveau sujet : Limiter la création de politiques au personnel uniquement ?

4 messages ont été déplacées vers un nouveau sujet : Est-il possible d’interdire la révocation de l’accord sur certaines politiques ?

Il semble que la limite de 200 et policy_max_group_size aient été supprimées avec ce commit. Est-ce que je manque quelque chose ?

3 « J'aime »

6 messages ont été déplacées vers un nouveau sujet : Les personnes reçoivent des rappels même si elles ont accepté la politique

Lorsqu’une politique avec un texte de bouton long est appliquée à un grand groupe, l’interface utilisateur est déformée : dans la capture d’écran ci-dessous, nous pouvons voir que les avatars forment une colonne presque infinie qui rend les choses un peu gênantes. Je vais examiner le CSS pour voir si cela peut être facilement corrigé, mais il faudrait probablement une sorte de refonte :

Supprimer display: flex sur .cooked .policy .user-lists le rend correct sur ordinateur :

J’ai fini par utiliser le CSS suivant :

/* Empêche la liste d'utilisateurs de politique de déborder */
.cooked .policy .user-lists {
    display: block;
}
3 « J'aime »

Erreur après l’installation du plugin. Je ne sais pas pourquoi. Quelque chose lié à « en essayant de charger /admin/dashboard/general.json ».

Erreur serveur

en essayant de charger [/admin/plugins]

Code d’erreur : erreur 500

Oups

Le logiciel qui alimente ce forum de discussion a rencontré un problème inattendu. Nous nous excusons pour la gêne occasionnée.

Des informations détaillées sur

Bonjour,

Les boutons Accepter/Révoquer s’afficheront-ils si la politique se trouve dans un sujet de catégorie qui est fermé et n’autorise pas les réponses ?

Merci

Cela fait un moment que je n’ai pas utilisé ce plugin, mais je pense qu’il permettra aux utilisateurs d’accepter/révoquer lorsqu’un sujet est fermé, car appuyer sur un bouton n’est pas une réponse, ce que la fermeture empêche.

1 « J'aime »

salut j’ai une question :
Nous voulons utiliser le plugin Discourse Policy pour : forcer les nouveaux utilisateurs à accepter les Conditions d’Utilisation (CGU). Exigences :

  • S’ils n’acceptent pas → ils ne peuvent pas utiliser le forum (seulement voir la page des CGU)
  • Quand ils acceptent → ils peuvent utiliser le forum + obtenir un badge “CGU”

ma solution était de créer un nouveau sujet et à l’intérieur j’ai ajouté ceci :
[policy group=trust_level_0 reminder=daily add-users-to-group=tos_accepted accept=“J’accepte les conditions” version=“1”]
En cliquant sur “J’accepte les conditions”, je confirme avoir lu et accepté les Conditions d’Utilisation.
[/policy]

mais si un nouvel utilisateur se connecte, la politique n’apparaît pas du tout et il peut faire ce qu’il veut, nous voulons seulement que s’il clique sur “Accepter” il puisse accéder à notre page. comment faire cela et merci

Vous pourriez utiliser un champ personnalisé et lier les pages CGU et FAQ. Une fois que l’utilisateur les aura lues, il recevra le badge « Lignes directrices lues ».

2 « J'aime »

Merci pour votre réponse — cela a fonctionné comme vous l’avez dit. Cependant, ce que je veux vraiment, c’est afficher cette bannière après que l’utilisateur se soit connecté, et n’autoriser l’accès à la page que si l’utilisateur clique sur ‘Accepter’. Sinon, la bannière doit rester visible et l’utilisateur ne doit pas pouvoir interagir avec la page.

ce que j’ai en ce moment, c’est ceci :


après cela, l’utilisateur peut accéder à notre page normalement

y a-t-il un moyen de faire cela et merci

:partying_face: Ce plugin est maintenant inclus dans le cœur de Discourse dans le cadre de Bundling more popular plugins with Discourse core. Si vous auto-hébergez et utilisez le plugin, vous devez le supprimer de votre app.yml avant votre prochaine mise à niveau.

3 « J'aime »

Il serait agréable que vous puissiez ajouter la possibilité de supprimer des utilisateurs d’un groupe lors de leur acceptation ou rejet.

Pour l’instant, cette fonctionnalité alerte seulement les utilisateurs (facultatif) et ajoute - à moins que je ne manque quelque chose.

Merci !

1 « J'aime »