# 📋 Pendientes y Mejoras - GKACHELE™ **© 2025 GKACHELE™. Todos los derechos reservados.** **Hash:** `gkachele-pendientes-20250115-004` **Fecha:** 2025-01-15 **⚠️ VER:** `PROBLEMAS_CRITICOS_CUSTOMIZER.md` - **REHACER COMPLETAMENTE EL CUSTOMIZER** --- ## ✅ FUNCIONALIDADES COMPLETADAS 1. ✅ **Sistema de bloques añadibles COMPLETO** (video, imagen, texto, redes sociales, mapa) - ✅ Función `addNewBlock()` implementada - ✅ Función `removeBlock()` implementada - ✅ Función `loadBlocksList()` implementada - ✅ Lista de bloques en sidebar funcional - ✅ Integración completa con backend - ✅ Notificaciones de éxito/error 2. ✅ Iconos SVG para redes sociales 3. ✅ Click to edit en preview 4. ✅ Gestión de platos del menú (añadir/eliminar) 5. ✅ Actualización en tiempo real del preview 6. ✅ Drag & drop básico para bloques --- ## 🔧 MEJORAS PENDIENTES ### 1. 🗺️ Mapa Automático desde Dirección **Estado:** Pendiente **Requisito:** - El mapa debe generarse automáticamente usando la dirección del campo "Dirección" - No debe requerir URL manual - Usar Google Maps Embed API sin API key (o geocoding simple) **Implementación:** ```javascript // Cuando cambie la dirección, generar automáticamente el mapa function generateMapFromAddress(address) { // Convertir dirección a URL de Google Maps embed const encodedAddress = encodeURIComponent(address); const mapUrl = `https://www.google.com/maps/embed/v1/place?key=AIzaSy...&q=${encodedAddress}`; // O usar iframe con búsqueda directa const mapUrl = `https://www.google.com/maps?q=${encodedAddress}&output=embed`; return mapUrl; } ``` **Archivos a modificar:** - `demo/templates/customizer.html` - Auto-generar mapa_url cuando cambie dirección - `demo/themes/restaurante-moderno/template.html` - Usar dirección si no hay mapa_url --- ### 2. 📁 Upload de Archivos (Drag & Drop) **Estado:** Pendiente **Requisito:** - Arrastrar y soltar archivos en campos de Media - O abrir navegador de archivos - No usar URLs manuales - Subir a servidor y guardar ruta **Implementación:** ```html

O arrastra y suelta aquí

``` ```python # En app.py @app.route('/api/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return jsonify({'error': 'No file'}), 400 file = request.files['file'] if file.filename == '': return jsonify({'error': 'No file selected'}), 400 filename = secure_filename(file.filename) filepath = os.path.join(UPLOAD_FOLDER, filename) file.save(filepath) return jsonify({'url': f'/uploads/{filename}'}) ``` **Archivos a modificar:** - `demo/templates/customizer.html` - Añadir drag & drop a campos Media - `demo/app.py` - Endpoint de upload - `demo/static/` - Carpeta para uploads --- ### 3. ✏️ Editar Contenido de Bloques Existentes **Estado:** Pendiente **Problema:** - Los bloques se pueden añadir y eliminar, pero no editar su contenido - No hay forma de modificar el contenido de un bloque después de crearlo **Solución:** ```javascript // En template.html - función debe estar disponible globalmente function removeBlockFromPreview(blockId) { if (window.parent !== window) { window.parent.postMessage({ type: 'remove-block', block_id: blockId }, '*'); } else { // Si no está en iframe, llamar directamente removeBlock(blockId); } } // En customizer.html - escuchar mensaje window.addEventListener('message', function(e) { if (e.data && e.data.type === 'remove-block') { removeBlock(e.data.block_id); } }); ``` **Archivos a modificar:** - `demo/templates/customizer.html` - Añadir función `editBlock(blockId)` que abra modal según tipo - `demo/templates/customizer.html` - Hacer bloques clickeables en la lista para editar - `demo/app.py` - Endpoint `/api/customizer/update-block` para actualizar contenido --- ### 4. 🧩 Eliminar Zonas/Secciones (Como WordPress) **Estado:** Pendiente **Requisito:** - Poder eliminar secciones completas (Hero, Menú, Horarios, Contacto, etc.) - Como WordPress: cada sección puede ocultarse/eliminarse - Guardar estado en content_json **Implementación:** ```json { "sections": { "hero": {"visible": true, "enabled": true}, "menu": {"visible": true, "enabled": true}, "horarios": {"visible": false, "enabled": false}, "contacto": {"visible": true, "enabled": true} } } ``` ```html {% if sections.hero.enabled %}
{% endif %} ``` **Archivos a modificar:** - `demo/templates/customizer.html` - Añadir controles para secciones - `demo/themes/restaurante-moderno/template.html` - Renderizar condicionalmente - `demo/app.py` - Endpoint para toggle de secciones --- ### 5. ✏️ Edición de Contenido de Bloques **Estado:** Pendiente **Requisito:** - Cada bloque añadido debe ser editable - Click en bloque → editar contenido - Modal o inline editor según tipo **Implementación:** ```javascript function editBlock(blockId) { const block = blocks.find(b => b.id === blockId); if (!block) return; // Abrir modal según tipo if (block.type === 'texto') { openTextEditor(block); } else if (block.type === 'video') { openVideoEditor(block); } else if (block.type === 'redes_sociales') { openSocialEditor(block); } } ``` **Archivos a modificar:** - `demo/templates/customizer.html` - Añadir función editBlock - `demo/themes/restaurante-moderno/template.html` - Hacer bloques clickeables --- ### 6. 🔄 Guardado Automático de Orden (Drag & Drop) **Estado:** Pendiente **Requisito:** - Al arrastrar y soltar bloques, guardar orden automáticamente - No esperar a añadir/eliminar **Implementación:** ```javascript function handleDrop(e) { e.preventDefault(); // Reordenar bloques const newOrder = Array.from(document.querySelectorAll('.gk-block')) .map(block => block.dataset.blockId); // Guardar orden inmediatamente fetch('/api/customizer/reorder-blocks', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ site_id: siteId, block_ids: newOrder }) }); } ``` **Archivos a modificar:** - `demo/themes/restaurante-moderno/template.html` - Mejorar drag & drop - `demo/templates/customizer.html` - Guardar orden automáticamente --- ## 🚨 PROBLEMAS CRÍTICOS (REHACER COMPLETAMENTE) **Ver documento completo:** `PROBLEMAS_CRITICOS_CUSTOMIZER.md` ### Problemas Identificados: 1. ❌ **Diseño horrible** - No se parece a WordPress 2. ❌ **Colores horribles** - No usa paleta WordPress 3. ❌ **Guardado inconsistente** - Algunas cosas guardan, otras no 4. ❌ **No hay botón Cancelar** - Hay que refrescar o salir 5. ❌ **Mapa no funciona** 6. ❌ **No hay WhatsApp flotante** 7. ❌ **No hay scroll suave** 8. ❌ **No hay iconos a elegir** (solo emojis) **Solución:** REHACER COMPLETAMENTE copiando EXACTAMENTE WordPress Customizer --- ## 📝 CHECKLIST DE IMPLEMENTACIÓN ### Prioridad CRÍTICA (REHACER TODO) - [ ] **Rehacer diseño visual** - Copiar EXACTAMENTE WordPress - [ ] **Rehacer sistema de guardado** - Botón "Guardar y Publicar" + "Descartar" - [ ] **Arreglar mapa** - Generar automáticamente desde dirección - [ ] **Añadir WhatsApp flotante** - Configurable desde sidebar - [ ] **Añadir selector de iconos** - Dashicons o Font Awesome - [ ] **Añadir scroll suave** - Mejorar navegación ### Prioridad Alta - [ ] Editar contenido de bloques existentes - [ ] Upload de archivos (drag & drop) ### Prioridad Media - [ ] Eliminar/ocultar secciones - [ ] Edición de contenido de bloques - [ ] Guardado automático de orden ### Prioridad Baja - [ ] Mejoras de UI/UX - [ ] Validaciones adicionales - [ ] Optimizaciones de rendimiento --- ## 🔗 REFERENCIAS - WordPress: Sistema de secciones ocultables - Elementor: Drag & drop de bloques - Google Maps: Embed sin API key (búsqueda directa) --- ## 📌 NOTAS - El menú de platos ya funciona correctamente (añadir/eliminar) ✅ - Los iconos de redes sociales ya están implementados ✅ - **El sistema de bloques está COMPLETAMENTE funcional (añadir/eliminar/listar) ✅** - **Hash de implementación:** `gkachele-bloques-funcionales-20250115-001` --- **Última actualización:** 2025-01-15 **Hash:** `gkachele-pendientes-20250115-004` **Próxima sesión:** **REHACER COMPLETAMENTE EL CUSTOMIZER** - Ver `PROBLEMAS_CRITICOS_CUSTOMIZER.md`