Empêcher les utilisateurs de déplacer des sujets dans d'autres catégories

Je cherche une option pour désactiver cette fonctionnalité car elle peut compliquer la gestion des fils de discussion lorsque vous avez différentes équipes de modérateurs pour différentes catégories et qu’elles se retrouvent soudainement avec un fil de discussion important ou controversé dans leur catégorie sans préavis.

J’ai lu ici Access rights for moving a topic to another category mais il est indiqué que seuls les utilisateurs de niveau de confiance 3 devraient pouvoir le faire. J’ai un environnement de test dans lequel un utilisateur de niveau de confiance 2 a pu le faire.

J’ai essayé d’activer la fonction « désactiver la modification après qu’un membre du personnel ait modifié un message », mais cela n’a pas semblé affecter la possibilité de changer de catégorie pour un fil de discussion.

Est-ce que je manque quelque chose ici ? Probablement :smiley:

2 « J'aime »

Je ne suis pas sûr, il faudrait faire quelques tests. Un mod de groupe de catégories pourrait toujours être capable de déplacer un sujet via la commande d’édition ou de déplacement.

Vous voudrez peut-être également vous pencher sur le Plugin Niveaux de confiance personnalisés.

J’ai vérifié cela et je le prendrai en considération, mais j’essaierai d’abord de créer un composant simple qui masque cette sélection pour l’édition, sauf pour le personnel.

Je préfère les plugins qui font des choses simples :slight_smile:

1 « J'aime »

@Canapin m’a fourni du code pour masquer le bouton J’aime des groupes ne faisant pas partie d’un groupe spécifié.

Cela pourrait vous donner une bonne base de travail.

lien corrigé

2 « J'aime »

Merci beaucoup @Heliosurge (et l’ubiquitaire @Canapin :stuck_out_tongue: ) Je me demandais juste où je pourrais chercher un plugin similaire à utiliser comme exemple :slight_smile:

2 « J'aime »

De rien ! L’équipe et cette communauté sont géniales d’après mon expérience. :clinking_beer_mugs::smiling_face_with_sunglasses::+1:

2 « J'aime »

J’y ai jeté un œil, c’est un bon MVP mais la communauté que je recherche est assez calée en technologie et il serait préférable que le DOM ignore complètement le rendu de ce composant au lieu de simplement le masquer.\n\nCela nécessiterait-il un plugin ou est-ce quelque chose que je pourrais réaliser de toute façon avec un composant ?\n\nCe que je dois faire, en gros, c’est déterminer si le HTML de cette sélection est généré ou non, en fonction du rôle.

1 « J'aime »

Je suis à peu près sûr qu’un composant suffirait.

1 « J'aime »

Je ne suis pas un codeur.

Pour masquer le sélecteur de catégorie lors de la modification du premier message (depuis l’action de modification du message, pas la modification du titre), cela fonctionne :

<script type="text/discourse-plugin" version="1.6.0">
    let currentUser = api.getCurrentUser();
    api.modifyClass("component:composer-title", {
      pluginId: "PreventCategoryChange",
      didInsertElement: function() {
        if(currentUser.trust_level == 1) {
            let categoryInput = document.getElementsByClassName('category-input')[0];
            let miniTagChoser = document.getElementsByClassName('mini-tag-chooser')[0];
            if(categoryInput != null) {
                categoryInput.remove();
                if(miniTagChoser != null) {
                    miniTagChoser.style.marginLeft = '0';
                }
            }
        }
      }
    });
</script>

chrome_NTAAc37JXB

J’ai utilisé le niveau de confiance, mais je pense que vous pouvez gérer la vérification du groupe d’utilisateurs à la place, tout est dans l’objet currentUser.

Je ne sais pas comment supprimer dynamiquement le sélecteur de catégorie lors de la modification du titre.
Peut-être que vous pourrez le découvrir à partir des fichiers qui semblent liés :

2 « J'aime »

Merci beaucoup @Canapin

Je devrai ajouter quelque chose pour la modification du titre, mais cela m’aide déjà beaucoup :slight_smile:

Quand ce sera fait, je le posterai ici dans la section des composants de thème pour que d’autres puissent l’utiliser :wink:

2 « J'aime »

Ce lien discourse/app/assets/javascripts/discourse/app/templates/topic.hbs at 53695e7d29e718041fa53bf4fef21e02354a4088 · discourse/discourse · GitHub

semble être le bon identifiant à accéder, maintenant si quelqu’un sait comment interagir avec lui via un composant de thème… :stuck_out_tongue:

1 « J'aime »

Pour l’amour des dieux, je ne trouve aucun hook pour détecter quand la modification du titre est déclenchée. Quelqu’un sait ce que je pourrais écouter ?

La masquage du changement de catégorie lors de la modification du premier message d’un sujet fonctionne, il détecte uniquement lorsqu’il est en mode édition et tout.

1 « J'aime »

Bien, grâce à un bon ami qui souffre d’insomnie, nous avons trouvé où trouver le bon hook :stuck_out_tongue:

Le voici, il ajuste également les visuels du formulaire et permet de sélectionner un niveau de confiance minimum à partir duquel l’accès à la modification de la catégorie sera disponible de toute façon (niveau de confiance par défaut 0 pour être en ligne avec les paramètres par défaut de Discourse)

Je vais maintenant créer un nouveau sujet dans la section Plugin.

Merci BEAUCOUP @Canapin d’avoir montré la bonne direction au début :heart_eyes:

3 « J'aime »

J’ai regardé votre code, excellent travail :+1:

Je crois que vous m’avez appris plus qu’à vous !

Juste une note, ce que vous avez créé est un Theme component, pas un Plugin :slight_smile:

2 « J'aime »

Pour information, un niveau de confiance 3 et 4 peut recatégoriser n’importe quel sujet tant que « les utilisateurs de confiance peuvent modifier les autres » est activé. Un niveau de confiance 0/1/2 ne devrait pouvoir le faire que sur son propre sujet, et uniquement pendant sa période d’édition [1]. Si vous verrouillez le premier message à l’aide de la clé à molette de message, cela devrait également empêcher la modification de la catégorie (ainsi que du titre et des tags).

Je ne suis pas sûr à 100 % de suivre votre cas d’utilisation, mais je suis heureux que vous ayez trouvé une solution. :slightly_smiling_face::+1:


  1. définie par limite de temps d'édition des messages pour les niveaux de confiance 0 et 1 et limite de temps d'édition des messages TL2 pour les niveaux de confiance 2 et 3 ↩︎

3 « J'aime »

Ah, oui, je n’étais pas au courant de cette option :

Elle empêche toute modification ultérieure (sauf suppression) même par un modérateur de catégorie.

Mais un verrouillage du premier message ne peut pas être automatisé à partir d’un minuteur de sujet ni d’une tâche automatisée.

1 « J'aime »

Oui, j’en étais conscient.

Cependant, mon intention était d’éviter que les modérateurs aient à gérer plusieurs occurrences de changements de catégorie, ce qui pourrait compliquer la modération lorsqu’un sujet se trouve d’abord dans une catégorie, puis passe dans une autre, etc.

1 « J'aime »

Je pense qu’il serait important d’ajouter que, puisqu’il s’agit d’un composant de thème, un utilisateur peut contourner ces limitations en injectant du javascript (je pense) ou en activant le mode sans échec s’il est disponible pour lui (voir le paramètre activer le mode sans échec).

Vous avez besoin d’un plugin si vous souhaitez une méthode plus sécurisée pour le faire.

2 « J'aime »

Oui, c’est pourquoi j’ai également examiné les plugins, mais pour une première version, un composant suffit.

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.