Permettre aux utilisateurs de bloquer des mots-clés

|||
|-|-|-|
| :information_source: | Résumé | Ce composant de thème permet aux utilisateurs de bloquer des mots-clés. Nécessite la création de trois champs utilisateur personnalisés dans les paramètres d’administration pour fonctionner.
| :eyeglasses:|Aperçu| Je ne peux pas prévisualiser cela sur le créateur de thème car cela nécessite la création de champs utilisateur, mais j’ai inclus des captures d’écran ci-dessous. |
| :hammer_and_wrench:|Dépôt| Github - a-very-old-sock/discourse-keyword-block |
| :question:|Guide d’installation|Comment installer un thème ou un composant de thème|
| :open_book:|Nouveau sur les thèmes Discourse ?| Guide pour débutants sur l’utilisation des thèmes Discourse

Installer ce composant de thème

Ce composant de thème permet aux utilisateurs de bloquer des mots-clés, spécifiés par l’utilisateur dans Préférences > Profil. Nécessite la création de trois champs utilisateur personnalisés dans les paramètres d’administration pour fonctionner.

Bloquer les mots-clés dans le titre du sujet ou l’extrait du sujet :

Bloquer les sujets ou les réponses qui contiennent le mot-clé, ainsi que les sujets suggérés qui contiennent le mot-clé :

Ce composant de thème permet à un utilisateur individuel de spécifier les mots-clés qu’il ne souhaite pas voir, et masque les sujets et les réponses contenant ce mot-clé avec un lien pour les afficher quand même. Les mots surveillés sont un paramètre d’administrateur qui s’applique à tous les utilisateurs sur l’ensemble du site ; ceci permet aux utilisateurs individuels de spécifier leurs propres mots-clés qu’ils ne souhaitent pas voir.

Exemple de scénario : un forum sur les animaux de compagnie pourrait avoir un fil de discussion général sur la gestion des poils d’animaux où le sujet principal n’est pas tagué avec un type spécifique d’animal. L’utilisateur A répond à propos de son chien, l’utilisateur B répond à propos de son chat, mais l’utilisateur A ne veut rien voir sur les chats. Ce que fait ce composant de thème, c’est de permettre à l’utilisateur A de mettre “chat” dans sa liste de blocage, et ensuite partout où “chat” apparaît dans un sujet ou une réponse, il est remplacé par “Bloqué car contient des chats” avec un clic pour afficher quand même.

L’utilisateur doit spécifier une liste de ses mots-clés bloqués séparés par des virgules dans un champ utilisateur personnalisé dans Préférences > Profil, et peut spécifier si les mots-clés à bloquer sont sensibles à la casse ou doivent correspondre au mot entier. (La sensibilité à la casse et la correspondance de mots entiers s’appliquent à toute la liste de blocage, pas à des mots-clés individuels).

Ce composant de thème nécessite que vous créiez trois champs utilisateur personnalisés dans Admin > Personnaliser > Champs utilisateur pour fonctionner. Par défaut, les paramètres du composant de thème s’attendent à ce que ces champs utilisateur soient 1, 2 et 3 dans l’ordre indiqué ci-dessous. Si vous avez d’autres champs utilisateur personnalisés définis, vous devrez entrer les bons numéros de champ utilisateur dans les paramètres du composant de thème. (La numérotation des champs utilisateur commence à 1, donc comptez la liste du nombre d’autres champs utilisateur que vous avez définis). Voir le guide Meta Créer et configurer des champs utilisateur personnalisés pour plus de détails.

1 - Liste des termes bloqués par l’utilisateur

Type de champ : Champ de texte

Nom du champ : (n’importe quel nom fonctionnera ici) Termes bloqués

Description du champ : (n’importe quelle description fonctionnera ici) Bloquer les mots ou phrases qui apparaissent dans les messages ou les sujets. Séparés par des virgules. Pour bloquer un nom d’utilisateur, incluez @ si la correspondance de mots entiers est sélectionnée.

:white_check_mark: Modifiable après l’inscription
:cross_mark: Requis à l’inscription
:cross_mark: Afficher sur le profil public
:cross_mark: Afficher sur la carte utilisateur
:cross_mark: Recherchable

2 - Sensibilité à la casse

Type de champ : Confirmation

Nom du champ : (n’importe quel nom fonctionnera ici) Termes bloqués - sensible à la casse

Description du champ : (n’importe quelle description fonctionnera ici) Les mots de la liste “Termes bloqués” sont sensibles à la casse.

:white_check_mark: Modifiable après l’inscription
:cross_mark: Requis à l’inscription
:cross_mark: Afficher sur le profil public
:cross_mark: Afficher sur la carte utilisateur
:cross_mark: Recherchable

3 - Rechercher des mots entiers ou partiels

Type de champ : Confirmation

Nom du champ : (n’importe quel nom fonctionnera ici) Termes bloqués - mots entiers

Description du champ : (n’importe quelle description fonctionnera ici) Les termes bloqués doivent apparaître comme des mots complets, et non comme des parties de mots.

:white_check_mark: Modifiable après l’inscription
:cross_mark: Requis à l’inscription
:cross_mark: Afficher sur le profil public
:cross_mark: Afficher sur la carte utilisateur
:cross_mark: Recherchable

Le CSS ci-dessous est inclus dans le composant de thème et empêchera l’affichage de tout champ utilisateur personnalisé sur le formulaire d’inscription. Si vous avez d’autres champs utilisateur personnalisés que vous souhaitez afficher sur le formulaire d’inscription, vous devrez remplacer cela par votre propre CSS personnalisé.

.login-form .user-fields {
    display: none;
}

Je n’ai testé cela qu’avec le thème par défaut. Les messages et les sujets sont bloqués lorsque les catégories sont définies pour afficher Catégories/Derniers et Catégories/Meilleurs, mais pas dans Catégories/En vedette ou dans les vues de catégories en boîte. Il est peu probable que je modifie cela car je n’en ai pas besoin pour mon propre site, mais les pull requests sont les bienvenues.

Cela ne bloque actuellement qu’un message qui contient un mot-clé dans le titre ou l’extrait visible dans le navigateur. Je n’ai pas pu trouver comment vérifier le contenu du message entier lors de la visualisation des résultats de recherche ou d’une liste de sujets, mais j’apprécierais toute idée sur la façon de le faire.

J’ai l’intention que cela fonctionne également sur la vue de recherche pleine page, mais à la date du 24/02/2023, j’ai actuellement du mal à faire fonctionner cela. Je modifierai ceci si je parviens à faire fonctionner le blocage sur la recherche.

Ceci est compatible avec le composant de thème Extraits de sujet ; il n’est pas compatible avec les Aperçus de liste de sujets. Je n’ai pas testé cela de manière exhaustive avec d’autres composants de thème.

3 « J'aime »

Après avoir créé des champs utilisateur personnalisés et activé le composant, j’obtiens ceci :

Des idées sur ce qu’il essaie de me signaler ? À cause de ceci peut-être :

Le thème/composant User Keyword Blocker génère des erreurs : TypeError : null n'est pas un objet (évaluation de 'e.match')

trace
Message

Le thème/composant User Keyword Blocker génère des erreurs :
TypeError : null n'est pas un objet (évaluation de 'e.match')

Trace

viewingCategoryId@https://foorumi.katiska.eu/theme-javascripts/2d7e05cf5f7eb3e5f8699871f25f32a21d9221c2.js?__ws=foorumi.katiska.eu:209:77
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:71
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:3677:13
get@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:56
Ee@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1324:40
map@[code natif]
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:5042:163
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:71
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:3677:13
get@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:56

Environnement

HTTP HOSTS: foorumi.katiska.eu

Alors… qu’est-ce que j’ai fait de mal ?

1 « J'aime »

Hmm, je ne suis pas sûr, je n’ai pas pu reproduire cela avec un champ utilisateur nouvellement créé ou un champ utilisateur inexistant.

Il semble que vous ayez le thème par défaut ? Avez-vous d’autres composants de thème activés ? Il semble que cela ait quelque chose à voir avec la correspondance regex, mais cela ne devrait pas générer d’erreurs si rien n’est trouvé.

Bien sûr, j’ai d’autres composants aussi :wink: Mais c’est sûr — il peut y avoir un conflit entre celui-ci et un autre composant ou plugin.

J’essaierai de creuser un peu plus à un moment donné.

Et voilà, c’est arrivé maintenant :wink:

Le conflit se produit entre ceci et aperçus de listes de sujets. Dans ma configuration en tout cas.

Alors je vous laisse, toi et @merefield, discuter pour savoir lequel d’entre vous (qui ? Je déteste vraiment l’anglais) corrige et quoi :wink:

1 « J'aime »

Trop occupé pour prendre en charge les conflits avec des composants de thème tiers, désolé, mais ouvert aux PR. Pour l’instant, vous devrez choisir entre eux. :slight_smile:

2 « J'aime »

Je me demandais si cela pouvait être utilisé pour étendre la fonction de mise en sourdine de l’utilisateur ?

C’est-à-dire mettre l’utilisateur mis en sourdine dans la liste des mots bloqués pour masquer les réponses à l’utilisateur mis en sourdine ?

Je pense que c’est possible en théorie, mais je ne trouve pas de moyen simple de le faire pour le moment. Pour l’instant, ce que je fais, c’est utiliser decorateCooked, qui ne semble pas permettre un accès facile à l’élément parent où se trouvent les informations de réponse. Je vais peut-être expérimenter davantage pour voir si je peux y arriver, mais sans promesses.

Cela bloquera les mentions d’un nom d’utilisateur dans la publication si le nom d’utilisateur est inclus dans la liste de blocage ; si la correspondance de mots entiers est activée, le nom d’utilisateur dans la liste de blocage doit inclure la mention @, mais si la correspondance de mots entiers est désactivée, seul le nom d’utilisateur sans @ peut être inclus.

1 « J'aime »

Je ne pense pas que je vais pouvoir les rendre compatibles non plus, mais j’ai noté dans le message d’origine qu’ils ne sont pas compatibles. Une PR est la bienvenue cependant.

Mes excuses. En examinant cela. Ce que je voulais dire par étendre le blocage/la mise en sourdine de l’utilisateur. C’est ajouter le nom d’utilisateur à une liste de mots bloqués. Ma théorie est que peut-être le nom d’utilisateur étant dans :

[quote=“asc, post:9, topic:256228”]

Donc, si par exemple j’ajoutais votre nom d’utilisateur “asc”, toute réponse de publication avec ce qui précède s’afficherait comme masquée.

Pour confirmer, le mot bloqué n’est pas affiché ? Juste un lien pour afficher la publication ? Ou le mot surveillé peut-il être remplacé pour ne pas afficher le mot bloqué ?

Si c’est le cas, cela se rapprocherait du blocage plus complet que certains utilisateurs souhaitent.