29 Commits

Author SHA1 Message Date
komkida91
cdebdf9ddf fix(builder): disable cache and normalize restaurante default template 2026-03-03 10:48:28 +01:00
komkida91
9cccbab1c8 fix(builder): calcular alto free-drag con posicion real y evitar desorden visual 2026-03-01 14:48:23 +01:00
komkida91
864846da0f fix(builder): ordenar template restaurante en carga sin tocar drag libre 2026-03-01 14:44:39 +01:00
komkida91
02e32c9673 fix(builder): restaurante libre y ordenado; otros rubros sin cambios 2026-03-01 14:40:33 +01:00
komkida91
40738cc65b fix(builder): forzar layout template estable y desactivar free-drag auto 2026-03-01 14:35:58 +01:00
komkida91
d18a92d017 fix(builder): forzar auto-orden restaurante al detectar solape vertical 2026-03-01 14:32:45 +01:00
komkida91
10d8fb8cae fix(builder): detectar solape severo en free-drag y reordenar restaurante 2026-03-01 14:30:05 +01:00
komkida91
14eca53c91 fix(builder): ordenar layout default restaurante y corregir alto real en free-drag 2026-03-01 14:25:47 +01:00
komkida91
0787c7bc46 fix(builder): evitar solape en free-drag y auto-reparar posiciones duplicadas 2026-03-01 14:17:19 +01:00
komkida91
f7a1c2dffc fix(builder): evitar caos de layout cuando free-drag no tiene posiciones validas 2026-03-01 14:13:35 +01:00
komkida91
2cc845eb4d fix(builder): activar free drag persistente para template restaurante 2026-03-01 14:11:25 +01:00
komkida91
6c1ccc0a48 fix(builder): alinear preview-final con geometria visual del editor 2026-03-01 13:55:37 +01:00
komkida91
846ad5c7c6 docs(builder): integra STATE y baseline premium en memoria codex 2026-03-01 13:47:36 +01:00
komkida91
48742a2736 feat(builder): baseline premium campos misiones en elementor 2026-03-01 13:47:14 +01:00
komkida91
208dca9f05 feat(builder): add social design controls and per-block background/transitions 2026-02-24 16:48:49 +01:00
komkida91
93d046a24c fix(builder): improve menu anchor targeting and free-drop placement 2026-02-24 16:21:25 +01:00
komkida91
b37d2d4bec chore(versioning): add blocking checklist for execution workflow 2026-02-22 17:57:21 +01:00
komkida91
a15e3e17af chore(versioning): memorize working method and refresh session state 2026-02-22 17:52:37 +01:00
komkida91
d5f2b819bf fix(builder): use stable canvas container for drop/reorder positioning 2026-02-22 17:52:24 +01:00
komkida91
b3bb7d57aa docs(builder): memorize restaurant status and next QA pass for menu icons 2026-02-21 17:24:13 +01:00
komkida91
e83e915584 fix(builder): stabilize drawer reset flow and restore editable restaurant theme 2026-02-21 17:22:31 +01:00
komkida91
e3a1c9d17f chore(versioning): profesionalizar VERSIONADO_IA y limpiar protocolo 2026-02-19 23:54:18 +01:00
komkida91
8ae0017533 chore(versioning): registrar commit educacion v2 y regla token 2026-02-18 07:16:05 +01:00
komkida91
8ac360b69d feat(builder): educacion v2 + navegacion por anclas y regla token 2026-02-18 07:15:30 +01:00
komkida91
6f143089b4 fix(builder): unificar layout y estabilizar redimension en canvas 2026-02-16 20:33:44 +01:00
komkida91
685659c0f1 chore(versioning): registrar hash del fix final del dia 2026-02-14 20:40:49 +01:00
komkida91
f363eefdca fix(builder): reparar texto, habilitar modo libre y forzar full preview 2026-02-14 20:40:32 +01:00
komkida91
400a8230b5 chore(versioning): registrar hash de fix layout sin toggle global 2026-02-14 20:34:32 +01:00
komkida91
f9f7d23b8d fix(layout): quitar dos columnas global y usar solo drag por bloque 2026-02-14 20:34:16 +01:00
5 changed files with 1868 additions and 467 deletions

View File

@@ -4,6 +4,19 @@
## 🔄 Historial de Versiones ## 🔄 Historial de Versiones
### Hash: `gkachele-elementor-restaurante-20260221-v22`
**Fecha:** 21 Febrero 2026
**Estado:** OK funcional (mejorable)
#### Cambios:
- OK Drawer Pro estabilizado: apertura/cierre, overlay, z-index, lock scroll, Escape/foco y sync por viewport.
- OK Reset de builder corrige limpieza de bloques + settings.
- OK Se evita autoload de plantilla cuando ya hay estado guardado.
- OK Tema restaurante sin colores duros por bloque; vuelve a depender de variables editables.
- OK Se restaura comportamiento de ancho/contenedor para no romper bloques al 100%.
- Pendiente: QA manual de cada icono del menu en preview final (plan siguiente lote).
---
### Hash: `gkachele-elementor-apple-20260209-v14` ### Hash: `gkachele-elementor-apple-20260209-v14`
**Fecha:** 09 Febrero 2026 **Fecha:** 09 Febrero 2026
**Estado:** OK Fase 1 **Estado:** OK Fase 1
@@ -238,6 +251,8 @@
**© 2025 GKACHELE™. Todos los derechos reservados.** **© 2025 GKACHELE™. Todos los derechos reservados.**
## 🔄 Historial de Versiones
### Hash: `gkachele-builder-docs-20260208-v1` ### Hash: `gkachele-builder-docs-20260208-v1`
**Fecha:** 08 Febrero 2026 **Fecha:** 08 Febrero 2026
**Estado:** ✅ Documentado **Estado:** ✅ Documentado
@@ -259,3 +274,6 @@
- `memoria/ESTADO_ACTUAL.md` marcado como historico para evitar decisiones con contexto 2025. - `memoria/ESTADO_ACTUAL.md` marcado como historico para evitar decisiones con contexto 2025.
--- ---

View File

@@ -1,36 +1,80 @@
# Memoria Codex - GKACHELE # Memoria Codex - GKACHELE
**Fecha de corte:** 14 Febrero 2026 **Fecha de corte:** 24 Febrero 2026
## Fuente de verdad (estado IA) ## Fuente de verdad
- `codex/VERSIONADO_IA.md` - `codex/VERSIONADO_IA.md`
- `codex/BUILDER_ELEMENTOR_VERSION.md` - `codex/MEMORIA_CODEX.md`
- `codex/HISTORIAL_CAMBIOS.md` - `STATE.md` (raiz del workspace, memoria operativa Docker/SaaS desde 2026-02-28)
## Punto exacto ## Estado acordado (retomar desde aqui)
- Rama activa: `ai/ub24-builder-v1` - Rama activa: `ai/ub24-builder-v1`
- Commit HEAD: `6d696c4` - Checkpoint actual: `208dca9`
- Version base builder: `gkachele-elementor-templates-20260210-v21` - Tag local de checkpoint: `builder-social-blockfx-20260224-v1`
- Estado de sync local/remoto al corte: `0/0` - Base funcional estable previa: `e83e915` (tag local: `builder-stable-e83e915`)
## Estado actual funcional ## Estado funcional verificado
- Builder visual operativo en `/elementor/<site_id>`. - Builder operativo en `/elementor/<site_id>`.
- Drag/drop y resize fluido en canvas. - Customizer unificado en una sola ruta:
- Inspector para estilos y contenido. - `/customizer/<id>` activo
- Modo libre con snapping. - `/customizer2/<id>` y `/customizer3/<id>` fuera (`404`)
- Preview limpio y menu por modos (horizontal/acordeon/ambos). - Mejoras ya hechas en builder:
- menu manual con mejor mapeo a bloques reales
- drop en modo libre mas preciso
- bloque `Redes` con mas controles visuales
- controles de fondo/transicion por bloque (version inicial)
## Pendientes inmediatos ## Feedback del usuario memorizado (obligatorio)
- Cargar bloques reales por plantilla de rubro (no solo look-and-feel). - Hay cosas buenas en lo hecho.
- Definir persistencia de resenas al publicar. - El resultado visual actual todavia se percibe "cutre".
- Integrar calendario real (Calendly/Google). - Las animaciones actuales no alcanzan nivel pro.
- Consolidar puente Builder -> SaaS (`/customizer/<id>`). - Los fondos (sobre todo imagen de fondo) no se ven profesionales.
- Lo de `Redes` debe escalarse y aplicarse mejor a cada bloque.
- No perder este contexto ni volver a "no saber en que quedamos".
- Estandar visual confirmado por usuario: nivel premium como landing `campos-misiones`
- Hero con fondo potente y composicion pro.
- Bloques de contacto/redes con look comercial real.
- Mapas embebidos y galerias con acabado profesional.
- Botones con micro-movimiento y sombra consistente.
- Este nivel debe replicarse en plantillas y en el customizer de `word`.
## Flujo operativo memorizado ## Siguiente lote acordado
1. Construir y validar local en `http://127.0.0.1:5001`. 1. Subir calidad visual global (no solo `Redes`) con sistema consistente por bloque.
2. Guardar cambios en commits atomicos. 2. Rehacer fondos animados a nivel pro (capas, movimiento elegante, control fino).
3. Push a `origin/ai/ub24-builder-v1` en cada lote validado. 3. Rehacer transiciones/hover con calidad premium y coherencia global.
4. Actualizar hash y estado en `codex/VERSIONADO_IA.md`. 4. Mantener flujo: `1 archivo + 1 cambio + 1 prueba` por iteracion.
## Comando de arranque ## Metodo operativo
- `python -m demo.app` desde `c:\word` - Misma rama + control por hash/revert.
- Sin push/tag sin orden explicita del usuario.
- Validacion inmediata por URL canonica:
- `http://127.0.0.1:5001/elementor/1`
- Arranque:
- `python -m demo.app` desde `c:\word`
## Memoria integrada desde STATE.md (raiz)
- Objetivo paralelo vigente: automatizacion Docker estable en `C:\word` con flujo reproducible.
- Regla activa: un solo flujo oficial de automatizacion, cambios pequenos y verificables, registro de fallo+fix.
- Flujo Docker objetivo:
1. `docker compose build`
2. `docker compose up -d`
3. `docker compose ps`
4. `docker compose logs --tail=200`
5. `docker compose restart <service>` cuando aplique
- Proximo paso operativo en esa linea: definir compose canonico unico y retirar variantes no usadas.
- Estandar visual SaaS validado (2026-02-28): referencia `Campos Misiones` como base premium replicable.
## Pendientes criticos memorizados (24 Febrero 2026)
1. Paridad real entre editor y preview final:
- lo que se ve mientras se edita debe verse igual en `/elementor/<id>/preview-final`.
2. Movimiento libre real de objetos:
- drag/reordenamiento debe funcionar estable y predecible.
3. Cache:
- revisar y corregir cache agresiva que oculta cambios recientes.
4. Ancho de bloques:
- no forzar 100% por defecto.
- permitir control real de ancho (mas angosto/mas ancho) sin romper layout.
5. Hero izquierda/derecha:
- swap de contenido debe reflejarse claramente en editor y preview final.
6. Modularizacion tecnica:
- dividir `elementor_builder.html` en archivos mas pequenos (CSS/JS por responsabilidades) para evitar regressiones y acelerar fixes.

View File

@@ -1,147 +1,127 @@
# Versionado IA - UB24/Elementor # Versionado IA - UB24 / Elementor
## Rama de trabajo ## 0) Protocolo Bloqueante (siempre)
- `ai/ub24-builder-v1` 1. Definir objetivo del lote en 1 linea.
2. Tocar un solo archivo por fix (salvo excepcion aprobada).
3. Hacer un solo cambio por intento.
4. Probar inmediatamente con flujo fijo acordado.
5. Si falla, revert inmediato por hash/commit (sin encadenar parches).
6. Si pasa, commit atomico con mensaje semantico.
7. Push solo con orden explicita del usuario.
8. Antes de declarar estado, verificar sync real (`fetch` + `rev-list`).
## Estado de sincronizacion (14 Febrero 2026) ## 1) Objetivo
- Local: `ai/ub24-builder-v1` Definir un proceso de versionado auditable, reproducible y estable para el desarrollo del builder UB24.
- Remoto: `origin/ai/ub24-builder-v1`
- Divergencia verificada: `0/0` (sin commits pendientes entre local y remoto)
## Regla de trabajo ## 2) Estado actual verificado
1. Cada cambio funcional se guarda en un commit separado. - Fecha de verificacion: `2026-02-22`
2. Cada commit se registra con su hash. - Rama activa: `ai/ub24-builder-v1`
3. Cada commit debe incluir comando de reversion rapida. - Upstream: `origin/ai/ub24-builder-v1`
4. La rama debe quedar sincronizada con remoto al cerrar bloque de trabajo. - Divergencia local/remoto: `3 0`
- Comando usado:
- `git rev-list --left-right --count ai/ub24-builder-v1...origin/ai/ub24-builder-v1`
## Convencion de mensaje ## 3) Politica de versionado
1. Commits atomicos por cambio funcional.
2. Mensajes bajo convencion semantica.
3. Reversion siempre definida por commit.
4. Cada bloque validado se empuja a remoto.
5. No mezclar cambios de infraestructura con cambios de UX en el mismo commit.
## 4) Convencion de commits
- `feat(builder): ...` - `feat(builder): ...`
- `fix(builder): ...` - `fix(builder): ...`
- `refactor(builder): ...` - `refactor(builder): ...`
- `chore(versioning): ...` - `chore(versioning): ...`
- `docs(builder): ...`
## Flujo con Gitea ## 5) Flujo obligatorio por sesion
1. Trabajo local en `ai/ub24-builder-v1`. 1. Verificar rama activa:
2. Push continuo a `origin/ai/ub24-builder-v1`. - `git branch --show-current`
3. Merge cuando validemos en local y Raspberry. 2. Actualizar referencias remotas:
- `git fetch origin --prune`
## Protocolo fijo de sincronizacion (siempre) 3. Verificar divergencia:
1. Verificar rama activa: `git branch --show-current` - `git rev-list --left-right --count ai/ub24-builder-v1...origin/ai/ub24-builder-v1`
2. Actualizar referencias remotas: `git fetch origin --prune` 4. Si no es `0 0`, sincronizar antes de editar.
3. Medir divergencia: `git rev-list --left-right --count ai/ub24-builder-v1...origin/ai/ub24-builder-v1` 5. Al cerrar lote validado:
4. Si el resultado no es `0 0`, sincronizar antes de continuar.
5. Despues de cada lote validado:
- `git add <archivos>` - `git add <archivos>`
- `git commit -m "tipo(scope): mensaje"` - `git commit -m "tipo(scope): mensaje"`
- `git push origin ai/ub24-builder-v1` - `git push origin ai/ub24-builder-v1`
6. Registrar hash y objetivo en este archivo y en `codex/HISTORIAL_CAMBIOS.md`.
## Registro de hashes ## 5.1) Metodo de ejecucion memorizado (obligatorio)
### Baseline 1. Misma rama activa (`ai/ub24-builder-v1`), sin ramas paralelas para fixes rapidos.
- Commit: `cb99f26` 2. Control por hash/revert: si un intento falla, revert inmediato por commit.
- Objetivo: crear rama y politica de versionado para trabajo IA. 3. Un archivo por fix cuando sea posible (evitar mezclar cambios laterales).
- Revert: 4. Validacion funcional inmediata despues de cada microcambio.
- `git revert <hash>` 5. No commit/push sin orden explicita del usuario.
- `git reset --hard <hash_anterior>` (solo con aprobacion explicita)
### Correccion historial ## 6) Protocolo de arranque local
- Commit: `fe8657e` - Comando canonico:
- Objetivo: revertir commit no deseado y mantener separacion de cambios. - `python -m demo.app`
- Revert: - URL canonica:
- `git revert fe8657e` - `http://127.0.0.1:5001`
- Builder:
- `http://127.0.0.1:5001/elementor/1`
- Verificacion rapida:
- `Invoke-WebRequest http://127.0.0.1:5001/elementor/1 -UseBasicParsing`
### Fix local Elementor ## 7) Criterios de estabilidad (no negociables)
- Commit: `22e564e` 1. No tocar funcionalidades estables sin requerimiento explicito.
- Objetivo: robustecer arranque local y carga de themes en Windows (BOM + logs seguros). 2. Mantener una sola estrategia de layout y DnD por flujo.
- Revert: 3. Mantener una sola ruta de guardado activa:
- `git revert 22e564e` - `/api/elementor/save`
4. Validar guardado/publicacion antes de cerrar lote.
5. Evitar cambios amplios si un fix local resuelve el problema.
### Fase 1 Builder (visual pro) ## 8) Registro de commits relevantes
- Commit: `1c04f04` | Fecha | Commit | Tipo | Objetivo | Revert recomendado |
- Objetivo: consolidar estilos reutilizables y subir calidad visual en hero, features, cards y contact del preview. |---|---|---|---|---|
- Revert: | 2026-02-21 | `e83e915` | fix | Estabilizar Drawer Pro, reset real de builder y restaurar tema restaurante editable + ancho | `git revert e83e915` |
- `git revert 1c04f04` | 2026-02-14 | `cb99f26` | chore | Crear rama y politica inicial de versionado IA | `git revert cb99f26` |
| 2026-02-14 | `fe8657e` | fix | Revertir commit no deseado y limpiar historial | `git revert fe8657e` |
| 2026-02-14 | `22e564e` | fix | Robustecer arranque local/theme load en Windows | `git revert 22e564e` |
| 2026-02-14 | `1c04f04` | feat | Mejora visual base (hero/features/cards/contact) | `git revert 1c04f04` |
| 2026-02-14 | `7c5f671` | fix | Limpieza preview/menu y ajustes de ancho | `git revert 7c5f671` |
| 2026-02-14 | `dd98e9d` | fix | Preview limpio y menu por modos | `git revert dd98e9d` |
| 2026-02-15 | `1a5778b` | refactor | Runtime unificado `python -m demo.app` + blueprint Elementor | `git revert 1a5778b` |
| 2026-02-15 | `8ac360b` | feat | Educacion V2 + correccion de anclas | `git revert 8ac360b` |
| 2026-02-15 | `f6d8ab1` | fix | Corregir wrapper SQLite para evitar fallo de arranque | `git revert f6d8ab1` |
| 2026-02-15 | `b6fb4da` | feat | API dedicada `/api/elementor/save` con opcion publicar | `git revert b6fb4da` |
| 2026-02-15 | `c2ee81d` | fix | Persistencia de bloques + feedback de publish | `git revert c2ee81d` |
| 2026-02-15 | `e20f086` | fix | Preview full-page y layout estable por secciones | `git revert e20f086` |
| 2026-02-15 | `e5df6de` | feat | Full width + soporte real de 2 columnas | `git revert e5df6de` |
| 2026-02-15 | `a6089ee` | feat | Drag inteligente por drop + preview en nueva pestana | `git revert a6089ee` |
| 2026-02-15 | `f9f7d23` | fix | Quitar layout global y forzar preview completo | `git revert f9f7d23` |
| 2026-02-15 | `f363eef` | fix | Correccion de texto/UI + modo libre + `?full=1` | `git revert f363eef` |
| 2026-02-16 | `6f14308` | fix | Unificar layout y estabilizar redimension en canvas | `git revert 6f14308` |
### Ajustes Builder (limpieza + preview + ancho) ## 9) Decisiones funcionales vigentes
- Commit: `7c5f671` - Rubros oficiales permitidos:
- Objetivo: quitar texto en barra Apple, limpiar menu vacio, preview local funcional sin salir de builder, ancho desktop al 100%, control de ancho por bloque y descripcion en bloque video. - `restaurante`
- Revert: - `danza`
- `git revert 7c5f671` - `cosmeticos`
- `despachos`
- `gimnasios`
- `educacion`
- `base_otro`
- Preview final separada habilitada:
- `GET /elementor/<site_id>/preview-final`
- `GET /ub24/<site_id>/preview-final`
- Motor de reordenamiento seleccionado para DnD:
- `SortableJS` (estrategia unica)
### Ajustes Builder (preview limpio + menu modos) ## 10) Pendientes priorizados
- Commit: `dd98e9d` 1. QA manual de cada icono/accion del menu superior en preview final (siguiente lote).
- Objetivo: mejorar vista previa (forzar modo limpio y restaurar estado), eliminar precarga automatica de bloques, y agregar modo de menu (horizontal/acordeon/ambos). 2. Footer global obligatorio con autoria del proyecto.
- Revert: 3. Watermark de autoria en codigo bajo convencion unica.
- `git revert dd98e9d` 4. Flujo dual estable de preview (editor/pagina real).
5. Mejora de interaccion touch/capacitiva del builder.
### Runtime unificado (app + elementor) ## 11) Referencias cruzadas
- Commit: `1a5778b` - Historial funcional detallado: `codex/HISTORIAL_CAMBIOS.md`
- Objetivo: unificar arranque con `python -m demo.app` y registrar blueprint de Elementor en runtime principal. - Arranque rapido local: `codex/ARRANQUE_RAPIDO_UB24.md`
- Revert: - Flujo general del proyecto: `codex/FLUJO_PROYECTO.md`
- `git revert 1a5778b`
### Fix SQLite wrapper (arranque sin error SQL) ## 12) Nota operativa
- Commit: `f6d8ab1` Este archivo define el estandar de trabajo. Cualquier cambio de proceso debe registrarse en un commit `chore(versioning)` y quedar reflejado aqui.
- Objetivo: evitar conversiones SQL invalidas en SQLite que rompian inicializacion y generaban reintentos.
- Revert:
- `git revert f6d8ab1`
### API Elementor save/publish
- Commit: `b6fb4da`
- Objetivo: agregar endpoint dedicado `/api/elementor/save` para guardar builder con opcion de publicar.
- Revert:
- `git revert b6fb4da`
### Builder persistencia y feedback de publicacion
- Commit: `c2ee81d`
- Objetivo: mantener bloques cargados al entrar, normalizar bloques sin id y mostrar estado de guardado/publicacion en topbar.
- Revert:
- `git revert c2ee81d`
### Preview full-page + layout estable
- Commit: `e20f086`
- Objetivo: hacer que vista previa ocupe pagina completa y forzar layout por secciones (sin modo libre por defecto) para alinear bloques.
- Revert:
- `git revert e20f086`
### Full width + dos columnas por bloque
- Commit: `e5df6de`
- Objetivo: expandir ancho util del canvas y habilitar 2 columnas reales con toggle "Ancho completo" por bloque.
- Revert:
- `git revert e5df6de`
### Drag inteligente columnas + preview completo
- Commit: `a6089ee`
- Objetivo: permitir decidir 1 o 2 columnas moviendo bloques al soltar (centro=ancho completo, lados=media columna) y agregar opcion de preview completo en nueva pestana.
- Revert:
- `git revert a6089ee`
## URL local canonica (unificada)
- Base local: `http://127.0.0.1:5001`
- Builder local: `http://127.0.0.1:5001/elementor/1`
- Regla: usar siempre `127.0.0.1` (no `localhost`) en scripts, pruebas y documentacion local.
## Arranque rapido local (Windows)
1. Desde `c:\word`, ejecutar:
- `python -m demo.app`
2. Abrir:
- `http://127.0.0.1:5001/elementor/1`
3. Verificacion rapida:
- `Invoke-WebRequest http://127.0.0.1:5001/elementor/1 -UseBasicParsing`
Notas:
- En el primer arranque puede tardar unos segundos adicionales por inicializacion de DB.
- Logs:
- `c:\word\logs_demo_app.txt`
- `c:\word\logs_demo_app.err`
## Control de rama (local/remoto)
- Rama local activa: `ai/ub24-builder-v1`
- Upstream remoto: `origin/ai/ub24-builder-v1`
- Estado al registrar: `en sync (0/0)` al 14 Febrero 2026
- Politica: commits atomicos + push por lote validado + verificacion de divergencia al inicio y al cierre.
## Fases memorizadas (builder)
1. Fase 1 (UI Pro base): navbar premium, hero premium, sistema de espaciado/grid, pulido visual consistente.
2. Fase 2 (estructura): separar renderers por bloque y reducir inline styles para automatizacion.
3. Fase 3 (presets): presets por rubro + reglas responsive + variantes exportables.

View File

@@ -1,4 +1,4 @@
from flask import Blueprint, render_template, session, request, jsonify from flask import Blueprint, render_template, session, request, jsonify, make_response
import json import json
from db import get_db from db import get_db
from utils.theme_engine import get_theme_config from utils.theme_engine import get_theme_config
@@ -13,7 +13,7 @@ elementor_bp = Blueprint(
) )
def _render_builder(site_id, builder_mode='default', **_kwargs): def _render_builder(site_id, builder_mode='default', preview_only=False, **_kwargs):
conn = get_db() conn = get_db()
c = conn.cursor() c = conn.cursor()
c.execute('SELECT user_id, slug, theme, content_json FROM sites WHERE id = ?', (site_id,)) c.execute('SELECT user_id, slug, theme, content_json FROM sites WHERE id = ?', (site_id,))
@@ -40,7 +40,7 @@ def _render_builder(site_id, builder_mode='default', **_kwargs):
user_plan = user_data[0] if user_data else 'base' user_plan = user_data[0] if user_data else 'base'
user_rubro = user_data[1] if user_data else 'restaurante' user_rubro = user_data[1] if user_data else 'restaurante'
return render_template( html = render_template(
'elementor_builder.html', 'elementor_builder.html',
site_id=site_id, site_id=site_id,
slug=site[1], slug=site[1],
@@ -49,8 +49,15 @@ def _render_builder(site_id, builder_mode='default', **_kwargs):
theme_config=theme_config, theme_config=theme_config,
user_plan=user_plan, user_plan=user_plan,
rubro=user_rubro, rubro=user_rubro,
builder_mode=builder_mode builder_mode=builder_mode,
preview_only=bool(preview_only)
) )
response = make_response(html)
# Dynamic builder output should never be cached.
response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0'
response.headers['Pragma'] = 'no-cache'
response.headers['Expires'] = '0'
return response
@elementor_bp.route('/elementor/<int:site_id>') @elementor_bp.route('/elementor/<int:site_id>')
@@ -58,11 +65,21 @@ def elementor_view(site_id):
return _render_builder(site_id, builder_mode='default') return _render_builder(site_id, builder_mode='default')
@elementor_bp.route('/elementor/<int:site_id>/preview-final')
def elementor_preview_final(site_id):
return _render_builder(site_id, builder_mode='default', preview_only=True)
@elementor_bp.route('/ub24/<int:site_id>') @elementor_bp.route('/ub24/<int:site_id>')
def ub24_view(site_id): def ub24_view(site_id):
return _render_builder(site_id, builder_mode='ub24') return _render_builder(site_id, builder_mode='ub24')
@elementor_bp.route('/ub24/<int:site_id>/preview-final')
def ub24_preview_final(site_id):
return _render_builder(site_id, builder_mode='ub24', preview_only=True)
@elementor_bp.route('/api/elementor/save', methods=['POST']) @elementor_bp.route('/api/elementor/save', methods=['POST'])
def save_elementor(): def save_elementor():
data = request.get_json(silent=True) or {} data = request.get_json(silent=True) or {}
@@ -103,4 +120,9 @@ def save_elementor():
conn.commit() conn.commit()
conn.close() conn.close()
return jsonify({'success': True, 'published': publish}) response = jsonify({'success': True, 'published': publish})
response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0'
response.headers['Pragma'] = 'no-cache'
response.headers['Expires'] = '0'
return response

File diff suppressed because it is too large Load Diff