Search by

dbravoan / dbcms-module-popups

dbravoan

Editorial popups and announcement overlays using shared dbCMS blocks and privacy controls

Package info

github.com/dbravoan/dbcms-module-popups

Type:dbcms-module

pkg:composer/dbravoan/dbcms-module-popups

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-13 13:22 UTC

This package is auto-updated.

Last update: 2026-11-13 13:36:55 UTC


README

Módulo opcional Composer dbravoan/dbcms-module-popups. Sigue los contratos de extensiones e instalación. Requiere instalación y activación explícitas; desactivarlo conserva sus entidades y rechaza sus rutas y consultas públicas. El permiso declarado es manage:popups.

Desde Popups se crean avisos traducibles y asignables a mercados. El título es la etiqueta accesible y el contenido se compone con el gestor de bloques compartido. Las mutaciones HTTP y genéricas utilizan el esquema popup, el escritor de entidades, las secciones y los snapshots editoriales del núcleo. No hay una URL pública independiente ni incorporación automática a búsqueda o sitemap.

Los formatos disponibles son ventana modal, pantalla completa, barra superior, barra inferior y panel lateral. El runtime de overlays del núcleo posee cierre, Escape, foco, exclusividad y scroll; privacidad tiene preferencia. Mayor prioridad se evalúa primero; el ID ascendente desempata. Los formatos conservan el cierre visible y no dependen de animaciones.

En «Dónde aparece» se buscan páginas y referencias de taxonomía por su nombre, con resultados paginados por idioma y mercado. El selector consulta únicamente el contenido público del propietario (20 resultados por página; máximo 50). Las referencias no resueltas se mantienen visibles, y el modo avanzado conserva sus IDs sin eliminarlos por una consulta vacía.

Las inclusiones de páginas, tipos y taxonomías se combinan con AND entre dimensiones; dentro de una lista basta un valor. Cualquier coincidencia excluida gana. Los tipos proceden de esquemas con contenido público declarado. El propietario de la página aporta cms.public.entity_type, cms.public.entity_id y cms.public.taxonomies (clave de taxonomía a lista de IDs públicos). Por ejemplo, blog_category: 4, 8 requiere que Blog aporte esa relación mediante su lector público. El módulo no deduce tipos desde una URL ni consulta modelos privados de otro dueño. Una referencia sin contexto o soporte explícito queda no disponible; la simulación muestra el diagnóstico. Los IDs de páginas solo coinciden con el tipo público page.

Los disparadores se combinan con OR: demora, porcentaje de scroll, elemento visible, clic en selector CSS, inactividad, intención de salida en escritorio con puntero fino y evento público cms-form-submitted tras éxito. Los selectores inválidos o elementos ausentes permanecen inertes. Para formularios se puede limitar form_slug.

El navegador vuelve a comprobar el intervalo antes de una apertura demorada. Se comprueban publicación, intervalo de fechas (final exclusivo), mercado, idioma y sesión en servidor. Dispositivo se define por ancho (móvil <768, tableta <1024, escritorio ≥1024); los dominios de referencia y parámetros UTM se comparan exactamente en navegador. No se transmiten ni registran esas señales.

La frecuencia predeterminada es una impresión por página en memoria. Las opciones sesión de pestaña, una vez (hasta un año) e intervalo utilizan Web Storage únicamente cuando window.dbcmsStorage.allows(purpose) autoriza la finalidad declarada en el mecanismo común. Sin autorización o almacenamiento disponible el popup persistente no se abre. El módulo aporta la información de almacenamiento y revisión al servicio común de consentimiento; no crea cookies ni interpreta recibos. No guarda impresiones en servidor ni identificadores de visitante. La simulación privada y la previsualización de snapshots no consumen frecuencia ni almacenamiento.

Los temas incluyen el punto común components.cms.overlays. El compositor del módulo prepara popupOverlayView y popupOverlays solamente cuando está activo. El fragmento se personaliza en cada petición también en páginas cacheadas. Los assets públicos solo instalan disparadores cuando existe data-cms-popups.