Banners de notificación

Hola @gormus, estoy recibiendo este error al intentar instalar:

An error occurred: Error creating upload asset: splide_css. Original filename Sorry, the file you are trying to upload is not authorized (authorized extensions: wasm, jpg, jpeg, png, woff, woff2, svg, eot, ttf, otf, gif, webp, avif, js).

Actualización: Funcionó, en realidad olvidé agregar CSS en las extensiones.

3 Me gusta

Añadí dos banners al mismo outlet y seleccioné carrusel en ambos. Pero solo se muestran apilados. ¿Me falta algo para que funcione el carrusel?

1 me gusta

Hola @manuel, debe haber al menos 2 banners en el mismo punto de venta para que funcione el carrusel; y por supuesto, la opción Mostrar en un carrusel debe estar habilitada en todos los banners también. El carrusel no se renderizará si solo uno de los banners está habilitado.

Además:

  1. ¿Obtienes algún error de javascript en la consola del navegador? ¿Alguno de ellos hace referencia a los banners de notificación?
  2. Teniendo en cuenta que puede haber un conflicto; ¿pudiste aislar el problema a los banners de notificación deshabilitando los otros temas, componentes y plugins? ¿o usando el modo seguro?

Alternativamente, ¿podrías compartir la configuración? Así podré importarla e intentar probarla en mi entorno…

  1. En la página de administración de Banners de Notificación de Discourse, haz clic en el botón Editor de Configuración en la parte inferior de la página.
  2. Copia los datos JSON
  3. Elimina cualquier dato sensible que puedas tener
  4. Comparte los datos JSON en una respuesta aquí, o envíame un mensaje privado.
2 Me gusta

¡Gracias @gormus! Estoy un poco perdido sobre por qué no funcionó… Lo configuré en dos instancias independientes y no funcionó en ninguna de las dos. ¡Ahora empecé de nuevo desde cero y funciona en ambas! :+1: :upside_down_face:

2 Me gusta

Hola, sobre la audiencia, parece imposible dirigirse solo a usuarios TL0, ¿verdad? Porque todos son TL0.

1 me gusta

Me temo que tienes razón @patrickemin Los niveles de confianza son aditivos y, finalmente, hacen que todos los usuarios registrados sean parte de TL0 por defecto, incluso si se les ha aumentado manualmente a TL4.

Por lo tanto, actualmente si seleccionas TL0 como audiencia, básicamente estás seleccionando a todos los usuarios registrados. En sí mismo tiene un valor en mi humilde opinión, pero esto podría ser engañoso.

Creo que voy a actualizar la lógica para el campo de audiencia y definir una nueva regla para todos los niveles de confianza. Gracias por darme la idea : )

2 Me gusta

Hola @gormus He seguido tus notas aquí para tu respuesta a nolo, pero por alguna razón no consigo que las notificaciones se ejecuten como un carrusel. Simplemente aparecen como mensajes apilados. Tengo dos mensajes de prueba y el carrusel está habilitado para ambos y se encuentran en la misma salida. No hay errores en la consola relacionados con js. y deshabilité todos los demás componentes y nada parece funcionar. ¿Alguna idea?

Hola @marksalter , parece que ya revisaste lo habitual. Lo único que se me ocurre es intentar reproducir el problema usando tus exportaciones de configuración. Por favor, envíame tu archivo de exportación por mensaje privado, sanitiza los datos si es necesario. Sin embargo, no volveré hasta dentro de 10 días : )

Hola, tengo este error al actualizar mi mensaje de banners:

La propiedad del puntero JSON “/0/enabled_groups” debe ser una matriz de IDs de grupo válidos.

[quote=“patrickemin, post:29, topic:325279”]La propiedad del puntero JSON “/0/enabled_groups” debe ser una matriz de identificadores de grupo válidos.
[/quote]

¿Por casualidad tienes una referencia a un grupo de usuarios eliminado (o renombrado) en el campo Audiencia?

1 me gusta

Gracias, eso era todo. Asumí que los grupos se identificaban solo por su ID y que el nombre no importaba.

1 me gusta

He estado considerando esta idea para dirigirme mejor a una audiencia utilizando los Niveles de Confianza:

Creo que tengo algo para que todos revisen.

Sin embargo, recomiendo probar esto primero en un entorno que no sea de producción, ya que introduce un cambio que puede romper la compatibilidad.

Para instalar esta versión, use la rama staging de Notification Banners:

Cambio que puede romper la compatibilidad

Cuando la visibilidad del banner se evalúa utilizando los valores del campo Audiencia, todos los roles trust_level_* del visitante se ignoran, excepto el nivel más alto.

Por ejemplo, considere un usuario que tiene estos roles: support_team, blog, trust_level_0, trust_level_1 y trust_level_2.

El campo Audiencia considerará que el usuario solo tiene support_team, blog y trust_level_2.

Por lo tanto, si un banner necesita dirigirse solo a los usuarios TL2, el campo Audiencia deberá establecerse en trust_level_2. Los otros niveles de confianza no verán el banner.

He actualizado la descripción del campo Audiencia para aclarar este cambio también.

Planeo probar estos cambios más a fondo y probablemente crear un nuevo lanzamiento a finales de septiembre. Agradezco cualquier comentario que pueda proporcionar.

¡Gracias!

2 Me gusta

Ya se ha lanzado la v1.3.0.

Asegúrate de probarla antes de implementarla en producción.

Cambios notables:

  • Los banners ahora se ordenan como se muestran en la página de configuración. En lugar del campo “Orden de visualización”, ahora puedes ordenar los banners usando los botones nativos de reordenación.

  • Se cambió el comportamiento del campo Audiencia:

    Selecciona qué grupos de usuarios pueden ver este banner. Debes seleccionar al menos un grupo.

    Para mostrar a todos los usuarios y visitantes: Selecciona el grupo everyone.

    Nota importante sobre los niveles de confianza: Seleccionar un nivel de confianza (por ejemplo, trust_level_3) mostrará el banner solo a los usuarios de ese nivel exacto. No incluye a los usuarios de niveles superiores o inferiores.

  • Se cambiaron las opciones predeterminadas del carrusel Splide:
    antes:

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

    después:

    { "autoHeight": true, "height": "8rem", "arrows": false, "autoplay": true, "direction": "ttb", "focus": "center", "gap": 0, "type": "loop" }
    
2 Me gusta

Hola, la última actualización rompió mi sitio (solo se carga la cabecera del sitio), tuve que desactivar el TC y todo volvió a la normalidad. Veamos si solo me pasa a mí, sin prisa :grinning_face_with_smiling_eyes:

1 me gusta

Gracias por el informe @patrickemin y por los detalles que proporcionaste.

El hotfix (v1.3.1) que implementé anteriormente debería haber solucionado el problema que introduje en la v1.3.0. Mis disculpas a todos los que tuvieron que experimentar el problema.

Estoy intentando que este componente funcione. Pero el banner de prueba que creé no se muestra. Estoy usando una versión de Discourse muy actualizada (de hace unos 3 días) y la versión 1.3.1 del componente.

Estoy bastante seguro de que las opciones están bien configuradas. También probé las tres ubicaciones para que se muestre el banner de prueba. Nada.

¿Hay algún otro error o es un problema del usuario? ¿Dónde podría buscar?

¿Ves algún error registrado en la consola?

Si la consola está libre de errores, ¿podrías enviarme tu configuración por mensaje directo usando el Editor de Configuración?
Por favor, limpia los mensajes de cualquier detalle sensible que puedas tener.

Solo avisos de deprecación. Además (pero solo en Opera, no en Firefox, y he configurado Content security policy script src en 'unsafe-eval' durante mucho tiempo):

La política de seguridad de contenido de tu sitio bloquea el uso de ‘eval’ en JavaScript

La Política de Seguridad de Contenido (CSP) evita la evaluación de cadenas arbitrarias como JavaScript para dificultar que un atacante inyecte código no autorizado en tu sitio.

Para solucionar este problema, evita usar eval(), new Function(), setTimeout([string], ...) y setInterval([string], ...) para evaluar cadenas.

Si absolutamente debes hacerlo: puedes habilitar la evaluación de cadenas agregando unsafe-eval como una fuente permitida en una directiva script-src.

Gracias. También puedo publicar esto aquí, ya que solo tengo un banner de prueba activo en este momento:

[
	{
		"setting": "banners",
		"value": [
			{
				"title": "Título del banner de prueba",
				"message": "Texto del banner de prueba Texto del banner de prueba",
				"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\" }"
	}
]

También probé sin fechas de inicio y fin y los otros dos outlets de plugin. También probé everyone en lugar de Administrators para ver un efecto en Firefox sin iniciar sesión en el sitio. Y no toqué las opciones de splide.

1 me gusta

Gracias por el informe @Roi.

Tu configuración no incluía una selección para ninguna categoría, y NB denegaba erróneamente el acceso al banner.

Acabo de implementar una corrección y lanzar v1.3.2. Por favor, actualiza los banners de notificación.

1 me gusta

¡Sí, genial, ahora funciona!

Y sí, dejé la selección de categorías vacía, ya que pensé que se mostraría en todas partes. ¿Entonces fue un error en el componente que quería una opción para eso? De todos modos, ya está arreglado. ¡Gracias! :slight_smile:

Como soy nuevo en este componente, ¿puedo hacer algunas preguntas?

Quiero notificar/recordar a nuestros usuarios que se involucren en la comunidad. La idea era mostrar un banner cada 4 a 8 semanas para recordarles una y otra vez. Tan pronto como un usuario lo descarta, ya no es visible. Hasta aquí, todo bien.

¿Puedo simplemente alterar la fecha de inicio y fin y, después de guardarlo, el banner se mostrará nuevamente para los usuarios que lo descartaron? (¿Cómo funciona esto de todos modos? ¿Cookies es mi suposición?) ¿O necesitaría crear un banner completamente nuevo?

Alguien mencionó un ciclo aquí en el tema anteriormente. Así que mostrar un banner cada 8 semanas. Esa sería una gran opción, ya que no requiere mantenimiento, si no quieres cambiar otras cosas. Pero la pregunta sigue siendo si el banner se mostrará nuevamente para los usuarios que lo descartaron cuando comience el nuevo ciclo.