Réponses privées dans Discourse

Github : GitHub - communiteq/discourse-private-replies

Ce plugin masque les réponses d’un sujet pour tous, sauf pour le créateur du sujet et l’auteur du message.

Cas d’utilisation

Ceci peut être utilisé par exemple pour des devoirs où l’enseignant ouvre un sujet et publie un devoir, et tous les élèves postent une réponse avec leurs solutions. Lorsque tout le monde a soumis son travail, l’enseignant peut révéler les réponses afin que les élèves puissent en discuter.

Un deuxième cas d’utilisation pourrait être une vente aux enchères où quelque chose est proposé à la vente. Les gens peuvent poster leur enchère et une fois la vente terminée, le propriétaire du sujet peut révéler toutes les enchères afin de montrer à la communauté que tout s’est déroulé conformément aux règles.

Utilisation

Après avoir installé et activé le plugin, vous pouvez activer la fonctionnalité du plugin sur une base par sujet.

Si vous êtes le créateur du sujet, vous verrez un nouveau bouton en bas du sujet.

bouton

En appuyant sur ce bouton, vous avez activé la fonctionnalité Réponses Privées pour ce sujet.

Une bannière apparaîtra au-dessus du sujet et voici ce qui se passe :

  • les gens ne pourront voir que les messages qu’ils ont postés, ceux du propriétaire du sujet et ceux des utilisateurs des groupes sélectionnés.
  • seul le propriétaire du sujet pourra voir tous les messages.

bannière

En appuyant une seconde fois sur le bouton, le sujet reviendra à la normale.

Le plugin, lorsqu’il est activé, autorise les réponses privées sur tous les sujets. Cependant, si le réglage réponses privées uniquement sur certaines catégories est activé, le plugin peut être activé par catégorie dans les paramètres de sécurité de la catégorie.

Dans cet même écran, vous trouverez également le réglage pour activer les réponses privées par défaut pour tous les nouveaux sujets de cette catégorie. C’est particulièrement utile lorsque les sujets sont soumis par e-mail.

Paramètres

  • private_replies_participants_can_see_all si activé, toute personne ayant participé au sujet peut voir toutes les réponses.
  • private_replies_min_trust_level_to_see_all les personnes ayant ce niveau de confiance ou plus peuvent voir toutes les réponses.
  • private_replies_groups_can_see_all les utilisateurs de ces groupes peuvent toujours voir toutes les réponses (par défaut : staff).
  • private_replies_see_all_from_groups les messages des utilisateurs de ces groupes sont toujours visibles par tout le monde (par défaut : staff).
  • private_replies_topic_starter_primary_group_can_see_all les utilisateurs du même groupe principal que le propriétaire du sujet peuvent voir toutes les réponses.

Limitations

Le plugin désactive les méthodes suivantes pour récupérer le contenu des messages :

  • vue du sujet (c’est-à-dire la manière habituelle de voir les messages)
  • profil utilisateur - activité
  • recherche
  • brut (/raw/topic_id/post_id)

Cependant, vous pouvez toujours savoir qui a posté dans le sujet :

  • Les icônes de la liste des sujets montreront toujours qui a posté dans le sujet.
  • Vous pourrez également voir “l’utilisateur xxx est en train de répondre” en bas du sujet.
  • Les sujets sont également visibles dans le profil utilisateur - résumé.

Cependant, tout cela ne révèle pas le contenu du message.

Contexte :

Ma conjointe est enseignante (grec ancien et latin classique) et utilise Discourse dans ses classes depuis plusieurs années maintenant. Elle l’utilise principalement pour distribuer des devoirs à ses élèves et en discuter ensuite. Cependant, tous les devoirs sont rendus sur papier pendant ses cours.

Jusqu’à présent - depuis que les écoles ont fermé à cause de toute la panique du coronavirus, elle passe à un enseignement 100% en ligne, y compris les devoirs. Tous ces élèves lui envoient actuellement leur travail par e-mail. C’est très sous-optimal car cela lui demande beaucoup d’administration (et je peux vous dire qu’elle n’est pas très douée pour ce genre de choses :wink:).

Nous discutions de quelques options et elle a dit : “Pourquoi ne puis-je pas avoir un sujet où les gens ne peuvent voir que mes messages (c’est-à-dire les messages du créateur du sujet) et leurs propres messages ? Cela me permettrait de publier un devoir comme sujet et que chaque élève poste ses réponses en dessous sans pouvoir voir toutes les autres réponses. Ensuite, quand tout le monde aura entré son travail et qu’il sera temps de discuter, je veux pouvoir appuyer sur un bouton pour faire disparaître le voile et rendre tous les messages du sujet visibles par tout le monde, afin qu’ils puissent tous voir et discuter du travail des autres.”

Oui - génial ! (c’est pourquoi je l’aime). J’ai donc créé un plugin pour cela. Discussion précédente ici : Topic replies invisible until topic owner decides to reveal them?

77 « J'aime »

New ways schools can adopt with Discourse! Nice job! :grinning:

10 « J'aime »

Very cool and thank you for sharing this @RGJ :beers:

15 « J'aime »

Great to see this!

My one nitpick is that I’d rather have the feature enabled at the category level, then replies can get revealed per-topic when everything’s submitted.

11 « J'aime »

Very cool, I was wondering if there is a way to still access the contents of private replies:

  • by Group (Teachers)
  • Trust Level (all teachers are at least Trust Level 3).
9 « J'aime »

Why do you think that’s better?

That’s a pretty good idea. It shouldn’t be too hard to add that to the plugin.
I’ll keep it in mind but right now I don’t have a use case for this myself. PR’s are welcome though!

6 « J'aime »

Prevents random abuse from topic starters enabling the setting on non-intended categories. It’s a “why would you do that?” situation but still something that needs a flag to resolve.

7 « J'aime »

Yeah, that’s useful indeed. So that could be solved by a category setting ‘allow private replies’.
I thought you wanted a ‘topics have private replies by default’ setting, which would be harder to build.

6 « J'aime »

Hello, Richard! Your teacher should be happy because your plugin works great :grinning:

I think about 2 improvements:

  1. Is it possible to make this function active by default? This should be set in the category settings. No need to do it manually with every topic.
  2. Make replies visible to specific groups set in the settings?
7 « J'aime »

Hi! I’d like to add translations to your plugin. Tried to add 2 extra files: client.en and server.en
Then I did ./launcher rebuild app, but the translation didn’t appear after I changed the locale in the user interface. What I missed?

1 « J'aime »

The files should be called client.XX.yml and server.XX.yml where XX is the language code.

However, there are already files for en (English): https://github.com/communiteq/discourse-private-replies/tree/master/config/locales so I am not sure what you have done or what you are trying to accomplish.

3 « J'aime »

I’ve done this exact thing (added client.de.yml and server.de.yml for the German language) and nothing changed.

  • Probably, I found the mistake. I missed the language code in the file. I’ll check it later.
2 « J'aime »

Can you please make a PR once you’ve got things working? That would be much appreciated!

1 « J'aime »

Everything is working, it was my mistake. I will add all languages to your fork when I finish it.

2 « J'aime »

Hi! I got errors in /sidekiq from your plugin. Can you please check your installation? Do you have such errors?

Wrapped I18n::InvalidLocaleData: can not load translations from /var/www/discourse/plugins/discourse-private-replies/config/locales/server.ar.yml: #
<Psych::SyntaxError: (/var/www/discourse/plugins/discourse-private-replies/config/locales/server.ar.yml): did not find expected key while parsing a block mapping at line 3 column 5>

There is an extra " that should be removed.

private_replies_enabled: "قم بتمكين المكون الإضافي "الردود الخاصة."
2 « J'aime »

Thank you for reporting this! I’ve pushed a fix.

3 « J'aime »

Hey,
It won’t install from the admin interface. Is it hooks only?

The error is:

about.json does not exist. Are you sure this is a Discourse plugin?
1 « J'aime »

I am not familiar with that error message. It is not part of the Discourse source code. Are you sure this is the exact message?

Plugins are not installed from the admin interface either.
Please refer to Install plugins on a self-hosted site.

2 « J'aime »

@RGJ
My company, Haddee, is eager to develop some new features for the plugin.
I was wondering if you could put a license on it just to make contribution easier and smoother

Thanks :slight_smile:

6 « J'aime »

Right, it worked installing from the hooks system indeed.
I guess it can’t be installed from the admin like themes and extensions as it has server features and that’s why it’s called a plug-in (so many specific terms and various ways to extend or customize Discourse that we can easily get lost as a dev)

This one seems clean and small enough to be easy to customize.

Thanks for the replies :wink:

2 « J'aime »