Bannières de notification

Salut @gormus, j’obtiens cette erreur en essayant d’installer :

Une erreur s'est produite : Erreur lors de la création de l'asset de téléchargement : splide_css. Nom de fichier d'origine Désolé, le fichier que vous essayez de télécharger n'est pas autorisé (extensions autorisées : wasm, jpg, jpeg, png, woff, woff2, svg, eot, ttf, otf, gif, webp, avif, js).

Mise à jour : ça a fonctionné, j’avais oublié d’ajouter CSS dans les extensions.

3 « J'aime »

J’ajoute deux bannières au même point de vente et sélectionne carrousel sur les deux. Mais elles ne s’affichent qu’empilées. Est-ce que quelque chose me manque pour que le carrousel fonctionne ?

1 « J'aime »

Salut @manuel, il faut au moins 2 bannières dans le même point de vente pour que le carrousel fonctionne ; et bien sûr, l’option Afficher dans un carrousel doit être activée sur toutes les bannières également. Le carrousel ne s’affichera pas s’il n’y a qu’une seule bannière activée.

Aussi ;

  1. Obtenez-vous des erreurs javascript dans la console du navigateur ? L’une d’elles fait-elle référence aux bannières de notification ?
  2. Étant donné qu’il pourrait y avoir un conflit ; avez-vous pu isoler le problème aux bannières de notification en désactivant les autres thèmes, composants et plugins ? ou en utilisant le mode sans échec ?

Alternativement, pourriez-vous partager les paramètres ? Ainsi, je pourrai les importer et les essayer de mon côté…

  1. Sur la page d’administration des Bannières de notification Discourse, cliquez sur le bouton Éditeur de paramètres en bas de la page.
  2. Copiez les données JSON
  3. Supprimez toutes les données sensibles que vous pourriez avoir
  4. Partagez les données JSON en réponse ici, ou envoyez-moi un message privé.
2 « J'aime »

Merci @gormus ! Je suis un peu perdu pour comprendre pourquoi ça n’a pas marché… Je l’ai configuré sur deux instances indépendantes et ça n’a fonctionné sur aucune des deux. Maintenant, j’ai recommencé à zéro et ça fonctionne sur les deux ! :+1: :upside_down_face:

2 « J'aime »

Salut, concernant l’audience, il semble impossible de cibler uniquement les utilisateurs TL0, n’est-ce pas ? Parce que tout le monde est TL0 ?

1 « J'aime »

Je crains que vous ayez raison @patrickemin Les niveaux de confiance sont cumulatifs et finissent par faire de tous les utilisateurs connectés des membres du TL0 par défaut, même s’ils sont promus manuellement au TL4.

Donc, actuellement, si vous sélectionnez TL0 comme public, vous sélectionnez essentiellement tous les utilisateurs connectés. En soi, cela a une valeur IMHO, mais cela pourrait être trompeur.

Je pense que je vais mettre à jour la logique pour le champ public, et définir une nouvelle règle pour tous les niveaux de confiance. Merci de m’avoir donné l’idée : )

2 « J'aime »

Salut @gormus J’ai suivi tes notes ici pour ta réponse à nolo mais pour une raison quelconque, je n’arrive pas à faire fonctionner les notifications en carrousel. Elles restent juste comme des messages empilés. J’ai deux messages de test et le carrousel est activé pour les deux et ils se trouvent dans le même outlet. Rien dans la console pour des erreurs liées au JS. et j’ai désactivé tous les autres composants et rien ne semble fonctionner. Des idées ?

Salut @marksalter , on dirait que vous avez déjà vérifié les suspects habituels. La seule autre chose à laquelle je peux penser est d’essayer de reproduire le problème en utilisant vos exportations de paramètres. Veuillez m’envoyer votre fichier d’exportation par message privé, en assainissant les données si nécessaire. Cependant, je ne serai de retour que dans 10 jours : )

Salut, j’ai cette erreur lors de la mise à jour de mon message de bannières :

La propriété de pointeur JSON « /0/enabled_groups » doit être un tableau d’identifiants de groupe valides.

[quote=“patrickemin, post:29, topic:325279”]La propriété de pointeur JSON « /0/enabled_groups » doit être un tableau d’identifiants de groupe valides.
[/quote]

Par hasard, avez-vous une référence à un groupe d’utilisateurs supprimé (ou renommé) dans le champ Audience ?

1 « J'aime »

Merci, c’était ça. Je supposais que les groupes étaient identifiés uniquement par leur ID et que le nom n’avait pas d’importance.

1 « J'aime »

J’ai envisagé cette idée pour mieux cibler une audience en utilisant les niveaux de confiance :

Je pense avoir quelque chose à vous faire vérifier.

Cependant, je recommande de tester ceci dans un environnement non-production d’abord car cela introduit un changement qui casse la compatibilité.

Pour installer cette version, utilisez la branche staging de Notification Banners :

Changement qui casse la compatibilité

Lorsque la visibilité de la bannière est évaluée en utilisant les valeurs du champ Audience, tous les rôles trust_level_* du visiteur sont ignorés, à l’exception du niveau le plus élevé.

Par exemple, considérez un utilisateur ayant ces rôles : support_team, blog, trust_level_0, trust_level_1, et trust_level_2.

Le champ Audience considérera que l’utilisateur n’a que support_team, blog, et trust_level_2.

Donc, si une bannière doit cibler uniquement les utilisateurs TL2, le champ Audience devra être défini sur trust_level_2. Les autres niveaux de confiance ne verront pas la bannière.

J’ai mis à jour la description du champ Audience pour clarifier ce changement également.

Je prévois de tester davantage ces changements, et probablement de créer une nouvelle version d’ici la fin septembre. J’apprécierais tout retour que vous pourriez fournir.

Merci !

2 « J'aime »

v1.3.0 est maintenant publié.

Assurez-vous de le tester avant de le déployer en production.

Changements notables :

  • Les bannières sont maintenant triées comme elles sont affichées sur la page des paramètres. Au lieu du champ « Ordre d’affichage », vous pouvez maintenant trier les bannières à l’aide des boutons natifs de réorganisation.

  • Changement du comportement du champ Audience :

    Sélectionnez les groupes d’utilisateurs qui peuvent voir cette bannière. Vous devez sélectionner au moins un groupe.

    Pour afficher à tous les utilisateurs et visiteurs : Sélectionnez le groupe everyone.

    Note importante sur les niveaux de confiance : La sélection d’un niveau de confiance (par exemple, trust_level_3) affichera la bannière uniquement aux utilisateurs de ce niveau exact. Cela n’inclut pas les utilisateurs de niveaux supérieurs ou inférieurs.

  • Changement des options par défaut du carrousel Splide :
    avant :

    { "arrows": false, "autoHeight": true, "autoplay": true, "direction": "ttb", "focus": "center", "height": "15vh", "gap": 0, "type": "loop" }
    

    après :

    { "autoHeight": true, "height": "8rem", "arrows": false, "autoplay": true, "direction": "ttb", "focus": "center", "gap": 0, "type": "loop" }
    
2 « J'aime »

Salut, la dernière mise à jour a cassé mon site (seul l’en-tête du site est chargé), j’ai dû désactiver le TC et tout est revenu à la normale. Voyons si c’est seulement moi, pas de précipitation :grinning_face_with_smiling_eyes:

1 « J'aime »

Merci pour le rapport @patrickemin, et pour les détails que vous avez fournis.

Le correctif (v1.3.1) que j’ai déployé plus tôt aurait dû résoudre le problème que j’ai introduit dans la v1.3.0. Je m’excuse auprès de tous ceux qui ont dû faire l’expérience du problème.

J’essaie de faire fonctionner ce composant. Mais la bannière de test que j’ai créée ne s’affiche pas. J’utilise une version très récente de Discourse (environ 3 jours) et la version 1.3.1 du composant.

Je suis à peu près sûr que les options sont correctement définies. J’ai également essayé les trois emplacements pour afficher la bannière de test. Rien.

Y a-t-il un autre bug ou est-ce un problème utilisateur ? Où pourrais-je chercher ?

Voyez-vous des erreurs enregistrées dans la console ?

Si la console ne contient aucune erreur, pourriez-vous m’envoyer votre configuration par message privé à l’aide de l’éditeur de paramètres ?
Veuillez supprimer les détails sensibles des chaînes de message.

Seulement des avis de dépréciation. De plus (mais seulement dans Opera, pas Firefox, et j’ai défini Content security policy script src sur 'unsafe-eval' depuis longtemps) :

La politique de sécurité du contenu de votre site bloque l’utilisation de ‘eval’ en JavaScript

La politique de sécurité du contenu (CSP) empêche l’évaluation de chaînes arbitraires en tant que JavaScript pour rendre plus difficile l’injection de code non autorisé sur votre site par un attaquant.

Pour résoudre ce problème, évitez d’utiliser eval(), new Function(), setTimeout([string], ...) et setInterval([string], ...) pour évaluer des chaînes.

Si vous devez absolument le faire : vous pouvez activer l’évaluation de chaînes en ajoutant unsafe-eval comme source autorisée dans une directive script-src.

Merci. Je peux aussi poster ceci ici, car je n’ai qu’une seule bannière de test active pour le moment :

[
	{
		"setting": "banners",
		"value": [
			{
				"title": "Titre de la bannière de test",
				"message": "Texte de la bannière de test Texte de la bannière de test",
				"date_after": "2025-11-01 12:00:00Z",
				"date_before": "2025-12-01 12:00:00Z",
				"dismissable": true,
				"plugin_outlet": "top-notices",
				"enabled_groups": [
					1
				]
			}
		]
	},
	{
		"setting": "splide_options__above_site_header",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	},
	{
		"setting": "splide_options__below_site_header",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	},
	{
		"setting": "splide_options__top_notices",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	}
]

J’ai aussi essayé sans dates de début et de fin et avec les deux autres sorties de plugin. J’ai également essayé everyone au lieu de Administrators pour voir un effet dans Firefox sans me connecter au site. Et je n’ai pas touché aux options splide.

1 « J'aime »

Merci pour le rapport @Roi.

Votre configuration n’incluait pas de sélection pour des catégories, et NB refusait à tort l’accès à la bannière.

Je viens de pousser un correctif et de publier v1.3.2. Veuillez mettre à jour les bannières de notification.

1 « J'aime »

Ouais, super, ça marche maintenant !

Et oui, j’ai laissé la sélection des catégories vide car je pensais que cela s’affichait partout. C’était donc un bug dans le composant qui nécessitait une option pour cela ? Quoi qu’il en soit, c’est résolu maintenant. Merci ! :slight_smile:

Comme je suis nouveau sur ce composant, puis-je poser quelques questions ?

Je veux informer/rappeler à nos utilisateurs de s’impliquer dans la communauté. L’idée était d’afficher une bannière toutes les 4 à 8 semaines pour le rappeler encore et encore. Dès qu’elle est dismissée par un utilisateur, elle n’est plus visible. Jusqu’ici, tout va bien.

Puis-je simplement modifier la date de début et de fin et, après l’avoir enregistrée, la bannière s’affichera à nouveau pour les utilisateurs qui l’ont dismissée ? (Comment cela fonctionne-t-il d’ailleurs ? Les cookies, je suppose ?) Ou devrais-je créer une nouvelle bannière ?

Quelqu’un a mentionné un cycle ici dans le sujet auparavant. Donc, afficher une bannière toutes les 8 semaines. Ce serait une excellente option, car elle ne nécessite aucune maintenance - si vous ne voulez pas changer d’autres choses. Mais la question demeure : la bannière réapparaît-elle pour les utilisateurs qui l’ont dismissée lorsque le nouveau cycle commence ?