Política do 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 curtidas

2 posts foram divididos em um novo tópico: Criar política de limite apenas para funcionários?

4 posts foram divididos em um novo tópico: É possível proibir o cancelamento de concordância com certas políticas?

Parece que o limite de 200 e o policy_max_group_size foram removidos com este commit. Estou perdendo alguma coisa?

3 curtidas

6 posts foram divididos em um novo tópico: Pessoas recebendo lembretes mesmo tendo aceitado a política

Quando uma política com texto de botão longo é aplicada a um grupo grande, a interface do usuário fica distorcida: na captura de tela abaixo, podemos ver que os avatares formam uma coluna quase infinita que a torna um pouco estranha. Vou verificar o CSS para ver se isso pode ser corrigido facilmente, mas provavelmente deve haver algum tipo de redesenho:

Remover display: flex em .cooked .policy .user-lists faz com que pareça bom no Desktop:

Acabei usando o seguinte CSS:

/* Faz com que a lista de usuários da política não transborde */
.cooked .policy .user-lists {
    display: block;
}
3 curtidas

Erro após a instalação do plugin. Não sei porquê. Algo relacionado a “ao tentar carregar /admin/dashboard/general.json”.

Erro no Servidor

ao tentar carregar [/admin/plugins]

Código de erro: erro 500

Ops

O software que alimenta este fórum de discussão encontrou um problema inesperado. Pedimos desculpas pelo inconveniente.

Informações detalhadas sobre o erro foram registradas e uma notificação automática gerada. Vamos analisar isso.

Nenhuma ação adicional é necessária. No entanto, se a condição de erro persistir, você pode fornecer detalhes adicionais, incluindo passos para reproduzir o erro, postando um tópico de discussão na categoria de feedback do site.

Olá,

Os botões Aceitar/Revogar serão exibidos se a Política estiver em um Tópico de Categoria que está Fechado, de modo que não permite respostas?

Obrigado

Faz tempo que não uso este plugin, mas acho que ele permitirá que os usuários aceitem/revoguem quando um tópico for fechado, já que pressionar um botão não é uma resposta, que é o que o fechamento impede.

1 curtida

oi, eu tenho uma pergunta:
Nós queremos usar o plugin Discourse Policy para: forçar usuários iniciantes a aceitarem os Termos de Serviço (TdS). Requisitos:

  • Se eles não aceitarem → eles não podem usar o fórum (só podem ver a página de TdS)
  • Quando eles aceitarem → eles podem usar o fórum + ganhar um badge de “TdS”

minha solução foi criar um novo tópico e dentro dele eu adicionei isto:
[policy group=trust_level_0 reminder=daily add-users-to-group=tos_accepted accept=“Eu Aceito os Termos” version=“1”]
Ao clicar em “Eu Aceito os Termos”, confirmo que li e concordo com os Termos de Serviço.
[/policy]

mas se um novo usuário faz login, a política não aparece e ele pode fazer o que quiser. Queremos que ele só possa acessar nossa página se clicar em “Aceitar”. Como fazer isso? Obrigado.

Você poderia usar um campo personalizado e vincular as páginas de Termos de Serviço e Perguntas Frequentes. Assim que um usuário as ler, ele receberá o distintivo ‘Leu as Diretrizes’.

2 curtidas

Obrigado pela sua resposta — funcionou exatamente como você disse. No entanto, o que eu realmente quero é exibir este banner depois que o usuário fizer login, e só permitir o acesso à página se o usuário clicar em ‘Aceitar’. Caso contrário, o banner deve permanecer visível e o usuário não poderá interagir com a página

o que eu tenho agora é isto:


depois disso, o usuário pode acessar nossa página normalmente

há alguma maneira de fazer isso e obrigado

:partying_face: Este plugin agora está incluído no core do Discourse como parte de Bundling more popular plugins with Discourse core. Se você auto-hospeda e usa o plugin, precisa removê-lo do seu app.yml antes da sua próxima atualização.

3 curtidas

Seria bom se você pudesse adicionar a capacidade de remover usuários de um grupo após a aceitação ou rejeição.

Atualmente, este recurso apenas incomoda os usuários (opcionalmente) e adiciona - a menos que eu esteja perdendo alguma coisa.

Obrigado!

1 curtida