dbravoan / dbcms-module-popups
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
Requires
- dbravoan/dbcms-core: ^1.2
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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.