Masquer les catégories selon l'appartenance au groupe d'utilisateurs

Suite à la discussion sur Comment diviser le forum en deux parties principales (général/groupes) et afficher uniquement les sous-catégories dans lesquelles je peux créer un nouveau sujet ? :

Salut à tous,

Voici un composant de thème qui réalise une fonctionnalité que je souhaitais mettre en place depuis longtemps. J’aimerais cependant avoir vos commentaires sur le code pour l’améliorer, ou vos suggestions.

Je ne pense pas que le code soit très bon, aussi je ne souhaite pas le recommander avant qu’il n’ait été examiné par quelqu’un d’autre.

Ce qu’il fait

Masquer via CSS tous les sujets pour lesquels l’utilisateur fait l’objet d’une restriction de permission de catégorie sur les pages choisies.

Dépôt

Lien vers le dépôt
framagit.org/oca/discourse-theme-shroud-subcategories

Motivation

Je gère une communauté avec de nombreux groupes et je souhaite que les gens ignorent paisiblement ce qui relève d’autres groupes que le leur. Je ne veux pas restreindre l’accès au contenu, je ne veux simplement pas qu’il apparaisse sur la page principale. Ils doivent pouvoir y accéder en y allant volontairement, en choisissant spécifiquement cette catégorie (par exemple, pour savoir ce qui s’y discute). Évidemment, l’outil approprié serait la fonction de suivi/ignorance, mais comme l’interface nécessite plus de deux clics pour la configurer, personne dans la communauté ne l’utilise. Certaines améliorations sur la page Catégorie pourraient faire l’affaire, mais elles dépassent mes compétences.

J’utilise donc ce qui est suffisamment simple pour eux : la page des groupes. Sur la même page sont affichés tous les groupes auxquels ils peuvent accéder, librement ou non, ainsi que leur description. C’est parfait, ils n’ont qu’à cliquer et les choisir. La page des groupes est trop cachée pour eux (dans le menu hamburger), alors je pourrais placer un gros bouton lien sur la page principale.

Maintenant, je dois lier l’appartenance au groupe et l’affichage des publications de catégorie.

Fonctionnement

L’astuce que j’ai utilisée consiste à configurer les permissions de catégorie comme suit :

  • tout le monde : lire, écrire
  • ce groupe : démarrer un message, lire, écrire

Ensuite, pour chaque sujet de la liste, je vérifie s’il existe une restriction de catégorie, et si oui, j’ajoute une classe not-in-group à l’élément du sujet.

Ensuite, le CSS ajoute display:none en conséquence.

Interface utilisateur

L’administrateur peut choisir les pages où ce comportement est actif. Cela ne devrait pas être fait sur la page de catégorie car, par définition, c’est là que nous voulons accéder au contenu. Sur mon site, tous ces groupes sont des sous-catégories masquées sur la page latest ; nous y accédons via la page /c/groups/, donc c’est cette page qui est utilisée.

Améliorations

  • Pouvoir sélectionner les catégories parentes des catégories filtrées (ainsi, toute catégorie qui n’est pas une enfant de celle-ci sera épargnée).
  • Ajouter des balises, afin que si un sujet possède cette balise, il ne soit pas supprimé.
10 « J'aime »

Cela n’a pas de sens pour moi. Pourquoi ne pas utiliser les permissions de catégorie pour limiter ce que les groupes voient ?

4 « J'aime »

Parce que je veux qu’ils puissent voir ces catégories, mais uniquement s’ils font l’effort de les atteindre. Par exemple, afin de voir ce qui est discuté sur ce projet spécifique avant de s’inscrire.

Mais sur la page principale, je ne veux pas qu’ils soient bombardés de sujets qui ne les intéressent pas. La meilleure solution serait qu’ils les ignorent en utilisant la fonction « suivre/ignorer », mais c’est trop compliqué pour eux. L’autre option consisterait à s’inscrire au groupe, se rendre sur la page de la catégorie pour lire les discussions, puis se désinscrire du groupe. C’est trop de clics pour la plupart d’entre eux, et en plus, ils n’oseraient pas le faire.

La dernière option est le paramètre de catégorie « supprimer des derniers », mais ce paramètre affecte tous les utilisateurs, y compris ceux qui suivent cette catégorie. Avec cette méthode, j’obtiens l’équivalent de « supprimer des derniers », mais uniquement pour certains utilisateurs et sur toutes les pages que je souhaite.

J’espère que c’est plus clair.

2 « J'aime »

Ces améliorations ont été réalisées.

4 « J'aime »

Je trouve cela très intéressant. Pourrais-je voir un exemple ou rejoindre un forum où ce composant est installé ?

1 « J'aime »

D’ailleurs, est-ce que le filtrage avec ce composant empêche également les publications d’être envoyées dans l’e-mail de résumé ? Parce que ce serait FORMIDABLE.

1 « J'aime »

Non, ce n’est pas le cas.
Ce n’est pas l’accès au message qui est supprimé, il est simplement masqué via CSS.
Les sujets sont toujours envoyés à l’utilisateur, avec l’instruction de ne pas les afficher.
L’objectif n’est pas de supprimer l’accès, mais simplement de le retirer de la page d’accueil (ou de toute autre page choisie).

Désolé, je ne l’ai pas installé sur un forum sans connexion, mais n’hésitez pas à poser vos questions ici ou en message privé.

2 « J'aime »

Merci !

Que signifie cette partie ?

1 « J'aime »

Si vous examinez le code source de la page, les informations du sujet sont envoyées. Cependant, le composant de thème ordonne de les ignorer.

1 « J'aime »

Cela ne fonctionne « que » sur l’affichage des éléments lors de la navigation. Ce n’est pas une fonction de muter ou d’ignorer. Mais je trouve cette solution très intéressante pour certains usages. Félicitations à @oca pour ce travail !

2 « J'aime »

Je vais jeter un coup d’œil plus attentif. Merci encore !

1 « J'aime »

Bonjour, j’ai installé ce composant de thème et je rencontre maintenant des problèmes de configuration. Lorsque j’essaie de sélectionner des balises et des catégories filtrées, les miennes n’apparaissent pas. Par exemple, nous avons bien une balise « faq », mais sans succès, je ne peux pas la sélectionner. J’ai également essayé de simplement taper la balise, mais cela ne fonctionne pas non plus.

2 « J'aime »

Avez-vous activé les étiquettes dans le tableau de bord ? Elles se trouvent dans Paramètres/Étiquettes. La première case en haut de la liste des étiquettes permet de les activer. Ensuite, toutes les étiquettes que vous créez devraient fonctionner.

1 « J'aime »

Oui, les balises sont activées.

1 « J'aime »

Le paramètre de configuration ne connaît pas les balises existantes. Vous devez saisir le nom de la balise ici, cliquer sur create: 'faq', et le nom de la balise sera ainsi sélectionné. Vous pouvez sélectionner autant de balises que nécessaire ; l’une d’entre elles suffira à démasquer le message.

Soyez prudent : si votre compte dispose de privilèges d’administrateur, il a alors toutes les permissions pour chaque catégorie. Cependant, masquer une catégorie se fait en vérifiant si le compte peut effectivement créer un nouveau message. Le vôtre le peut, donc votre compte pourra voir tous les messages partout. Pour tester le composant, je vous conseille de créer un compte de test afin de voir exactement ce qu’un utilisateur verrait.

2 « J'aime »

Merci. Je pense avoir réussi à faire fonctionner cela et je suis très impatient de voir comment cela se passe. Je vous remercie pour votre travail.

2 « J'aime »

Une exception pourrait-elle être faite pour les personnes qui suivent une catégorie ?

1 « J'aime »