backup: estado antes de limpieza de defaults
This commit is contained in:
784
admin/PLAN-DE-ACCION-CORRECCION.md
Normal file
784
admin/PLAN-DE-ACCION-CORRECCION.md
Normal file
@@ -0,0 +1,784 @@
|
||||
# PLAN DE ACCIÓN: CORRECCIÓN DE DEFAULTS HARDCODEADOS
|
||||
|
||||
**Fecha inicio:** _[Pendiente]_
|
||||
**Fecha fin:** _[Pendiente]_
|
||||
**Estado:** 🔴 NO INICIADO
|
||||
|
||||
---
|
||||
|
||||
## 📋 OBJETIVO
|
||||
|
||||
Eliminar defaults hardcodeados del código y establecer tabla `wp_apus_theme_components_defaults` como única fuente de verdad.
|
||||
|
||||
---
|
||||
|
||||
## ⏱️ TIEMPO ESTIMADO TOTAL
|
||||
|
||||
- **FASE 1:** 2-3 horas (Limpiar código actual)
|
||||
- **FASE 2:** 1 hora (Crear tabla defaults)
|
||||
- **FASE 3:** 3-4 horas (Corregir algoritmo)
|
||||
- **TOTAL:** 6-8 horas
|
||||
|
||||
---
|
||||
|
||||
## 🔄 ESTADO DEL PLAN
|
||||
|
||||
```
|
||||
FASE 1: Limpiar Código Actual [ ] 0/15 pasos completados
|
||||
FASE 2: Crear Tabla Defaults [ ] 0/4 pasos completados
|
||||
FASE 3: Corregir Algoritmo [ ] 0/8 pasos completados
|
||||
```
|
||||
|
||||
**Progreso total:** 0/27 pasos (0%)
|
||||
|
||||
---
|
||||
|
||||
# FASE 1: LIMPIAR CÓDIGO ACTUAL
|
||||
|
||||
**Objetivo:** Eliminar código mal implementado antes de corregir algoritmo
|
||||
|
||||
**Duración estimada:** 2-3 horas
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.1: Backup de Código Actual
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Crear branch de backup: `git checkout -b backup-antes-limpieza`
|
||||
- [ ] Hacer commit de estado actual: `git commit -am "backup: estado antes de limpieza de defaults"`
|
||||
- [ ] Push del backup: `git push origin backup-antes-limpieza`
|
||||
- [ ] Volver a main: `git checkout main`
|
||||
- [ ] Crear branch de trabajo: `git checkout -b fix/limpiar-defaults-hardcodeados`
|
||||
|
||||
**Verificación:** Branch `backup-antes-limpieza` existe en GitHub
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.2: Listar Archivos a Eliminar del Admin Panel
|
||||
**Duración:** 10 min
|
||||
|
||||
- [ ] Ejecutar: `dir admin\assets\js\component-*.js 2>nul` (listar JS componentes)
|
||||
- [ ] Ejecutar: `dir admin\assets\css\component-*.css 2>nul` (listar CSS componentes)
|
||||
- [ ] Ejecutar: `dir admin\components\component-*.php 2>nul` (listar PHP componentes)
|
||||
- [ ] Ejecutar: `dir admin\includes\sanitizers\class-*-sanitizer.php 2>nul` (listar sanitizers)
|
||||
- [ ] Documentar lista de archivos encontrados abajo
|
||||
|
||||
**Archivos encontrados:**
|
||||
```
|
||||
JS:
|
||||
-
|
||||
|
||||
CSS:
|
||||
-
|
||||
|
||||
PHP Componentes:
|
||||
-
|
||||
|
||||
Sanitizers:
|
||||
-
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.3: Eliminar Archivos JS de Componentes
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Eliminar: `admin/assets/js/component-navbar.js` (si existe)
|
||||
- [ ] Eliminar: `admin/assets/js/component-topbar.js` (si existe)
|
||||
- [ ] Eliminar: `admin/assets/js/component-hero.js` (si existe)
|
||||
- [ ] Eliminar: otros archivos `component-*.js` listados arriba
|
||||
- [ ] Verificar que NO quedan archivos: `dir admin\assets\js\component-*.js 2>nul`
|
||||
|
||||
**Archivos eliminados:** _[Anotar aquí]_
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.4: Eliminar Archivos CSS de Componentes
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Eliminar: `admin/assets/css/component-navbar.css` (si existe)
|
||||
- [ ] Eliminar: `admin/assets/css/component-topbar.css` (si existe)
|
||||
- [ ] Eliminar: `admin/assets/css/component-hero.css` (si existe)
|
||||
- [ ] Eliminar: otros archivos `component-*.css` listados arriba
|
||||
- [ ] Verificar que NO quedan archivos: `dir admin\assets\css\component-*.css 2>nul`
|
||||
|
||||
**Archivos eliminados:** _[Anotar aquí]_
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.5: Eliminar Archivos PHP de Componentes
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Eliminar: `admin/components/component-navbar.php` (si existe)
|
||||
- [ ] Eliminar: `admin/components/component-top-bar.php` (si existe)
|
||||
- [ ] Eliminar: `admin/components/component-hero.php` (si existe)
|
||||
- [ ] Eliminar: otros archivos `component-*.php` listados arriba
|
||||
- [ ] Verificar que NO quedan archivos: `dir admin\components\component-*.php 2>nul`
|
||||
|
||||
**Archivos eliminados:** _[Anotar aquí]_
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.6: Eliminar Sanitizers de Componentes
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Eliminar: `admin/includes/sanitizers/class-topbar-sanitizer.php` (si existe)
|
||||
- [ ] Eliminar: `admin/includes/sanitizers/class-navbar-sanitizer.php` (si existe)
|
||||
- [ ] Eliminar: otros archivos `class-*-sanitizer.php` listados arriba
|
||||
- [ ] Verificar que NO quedan archivos: `dir admin\includes\sanitizers\class-*-sanitizer.php 2>nul`
|
||||
|
||||
**Archivos eliminados:** _[Anotar aquí]_
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.7: Limpiar class-admin-menu.php
|
||||
**Duración:** 10 min
|
||||
|
||||
**Archivo:** `admin/includes/class-admin-menu.php`
|
||||
|
||||
- [ ] Leer el archivo completo
|
||||
- [ ] Identificar líneas que encolaron CSS de componentes (wp_enqueue_style para component-*.css)
|
||||
- [ ] Identificar líneas que encolaron JS de componentes (wp_enqueue_script para component-*.js)
|
||||
- [ ] Eliminar todas las líneas encontradas
|
||||
- [ ] Verificar que método `enqueue_assets()` solo encola archivos del core (admin-panel.css, admin-app.js)
|
||||
|
||||
**Líneas eliminadas:** _[Anotar números de línea]_
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.8: Limpiar admin/pages/main.php (Parte 1: Analizar)
|
||||
**Duración:** 15 min
|
||||
|
||||
**Archivo:** `admin/pages/main.php`
|
||||
|
||||
- [ ] Leer el archivo completo
|
||||
- [ ] Buscar secciones de tabs de navegación (ej: Top Bar, Navbar, etc.)
|
||||
- [ ] Buscar secciones de tab-pane con formularios de componentes
|
||||
- [ ] Documentar números de línea a eliminar abajo
|
||||
|
||||
**Secciones encontradas:**
|
||||
```
|
||||
Tabs navegación:
|
||||
Líneas: _____ a _____
|
||||
|
||||
Tab-pane Top Bar:
|
||||
Líneas: _____ a _____
|
||||
|
||||
Tab-pane Navbar:
|
||||
Líneas: _____ a _____
|
||||
|
||||
Otros:
|
||||
Líneas: _____ a _____
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.9: Limpiar admin/pages/main.php (Parte 2: Eliminar)
|
||||
**Duración:** 10 min
|
||||
|
||||
**Archivo:** `admin/pages/main.php`
|
||||
|
||||
Usando los rangos de líneas identificados en PASO 1.8:
|
||||
|
||||
- [ ] Eliminar sección de tab navegación de componentes
|
||||
- [ ] Eliminar sección tab-pane de Top Bar
|
||||
- [ ] Eliminar sección tab-pane de Navbar
|
||||
- [ ] Eliminar otras secciones documentadas arriba
|
||||
- [ ] Verificar que NO quedan referencias a componentes
|
||||
- [ ] Dejar SOLO estructura base del admin panel
|
||||
|
||||
**Verificación:** Buscar "top_bar", "navbar", "component" en el archivo - NO debe encontrar nada
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.10: Limpiar admin/assets/js/admin-app.js
|
||||
**Duración:** 15 min
|
||||
|
||||
**Archivo:** `admin/assets/js/admin-app.js`
|
||||
|
||||
- [ ] Leer el archivo completo
|
||||
- [ ] Buscar métodos `renderTopBar()`, `renderNavbar()`, etc.
|
||||
- [ ] Buscar referencias a componentes en método `collectFormData()`
|
||||
- [ ] Buscar valores hardcodeados tipo: `'Accede a más de 200,000...'`
|
||||
- [ ] Eliminar todos los métodos y referencias encontradas
|
||||
- [ ] Verificar que NO quedan fallbacks hardcodeados (ej: `|| 'default value'`)
|
||||
|
||||
**Líneas eliminadas:** _[Anotar aquí]_
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.11: Limpiar class-settings-manager.php (Parte 1)
|
||||
**Duración:** 10 min
|
||||
|
||||
**Archivo:** `admin/includes/class-settings-manager.php`
|
||||
|
||||
- [ ] Leer método `get_defaults()` completo
|
||||
- [ ] Identificar sección de defaults de componentes (top_bar, navbar, etc.)
|
||||
- [ ] Documentar líneas a eliminar
|
||||
|
||||
**Defaults encontrados:**
|
||||
```
|
||||
top_bar: Líneas _____ a _____
|
||||
navbar: Líneas _____ a _____
|
||||
otros: Líneas _____ a _____
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.12: Limpiar class-settings-manager.php (Parte 2)
|
||||
**Duración:** 15 min
|
||||
|
||||
**Archivo:** `admin/includes/class-settings-manager.php`
|
||||
|
||||
- [ ] Eliminar método `get_defaults()` COMPLETO (se reemplazará después)
|
||||
- [ ] Leer método `sanitize_settings()`
|
||||
- [ ] Eliminar secciones de sanitización de componentes
|
||||
- [ ] Verificar que NO quedan referencias a top_bar, navbar, etc.
|
||||
|
||||
**Líneas eliminadas:** _[Anotar aquí]_
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.13: Limpiar Tema (header.php y otros)
|
||||
**Duración:** 20 min
|
||||
|
||||
- [ ] Leer `header.php` completo
|
||||
- [ ] Buscar código que lea de Settings Manager para componentes
|
||||
- [ ] Buscar valores hardcodeados duplicados (ej: "Accede a más de 200,000...")
|
||||
- [ ] Documentar qué encontraste
|
||||
|
||||
**Código encontrado en header.php:**
|
||||
```
|
||||
Líneas: _____ a _____
|
||||
Descripción: _______________
|
||||
```
|
||||
|
||||
- [ ] Revisar otros archivos del tema si es necesario
|
||||
- [ ] Documentar archivos revisados
|
||||
|
||||
**Archivos del tema revisados:**
|
||||
- [ ] header.php
|
||||
- [ ] footer.php
|
||||
- [ ] _______
|
||||
|
||||
**Decisión:** ¿Eliminar código configurable del tema o dejarlo?
|
||||
_[Decidir con usuario antes de eliminar]_
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.14: Limpiar Base de Datos
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Conectar a base de datos (phpMyAdmin o terminal)
|
||||
- [ ] Ejecutar: `SELECT * FROM wp_apus_theme_components;`
|
||||
- [ ] Documentar componentes encontrados:
|
||||
|
||||
**Componentes en DB:**
|
||||
```
|
||||
component_name: ___________
|
||||
component_name: ___________
|
||||
```
|
||||
|
||||
- [ ] Ejecutar: `DELETE FROM wp_apus_theme_components;` (vaciar tabla)
|
||||
- [ ] Verificar: `SELECT COUNT(*) FROM wp_apus_theme_components;` (debe ser 0)
|
||||
|
||||
**Registros eliminados:** _____
|
||||
|
||||
---
|
||||
|
||||
## PASO 1.15: Commit de Limpieza
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Ejecutar: `git status` (ver todos los cambios)
|
||||
- [ ] Ejecutar: `git add .`
|
||||
- [ ] Ejecutar commit:
|
||||
```bash
|
||||
git commit -m "fix: eliminar implementación incorrecta de componentes
|
||||
|
||||
- Eliminar archivos JS/CSS/PHP de componentes mal implementados
|
||||
- Limpiar class-admin-menu.php de encolamiento de componentes
|
||||
- Limpiar admin/pages/main.php de secciones de componentes
|
||||
- Limpiar admin-app.js de métodos y defaults hardcodeados
|
||||
- Limpiar class-settings-manager.php de get_defaults() y sanitizers
|
||||
- Vaciar tabla wp_apus_theme_components
|
||||
|
||||
Preparación para implementar arquitectura correcta con tabla defaults.
|
||||
|
||||
Ref: PROBLEMA-DEFAULTS-HARDCODEADOS-ALGORITMO.md"
|
||||
```
|
||||
- [ ] Ejecutar: `git push origin fix/limpiar-defaults-hardcodeados`
|
||||
|
||||
---
|
||||
|
||||
## ✅ CHECKLIST FASE 1 COMPLETA
|
||||
|
||||
- [ ] Backup creado en branch separado
|
||||
- [ ] Archivos de componentes eliminados (JS, CSS, PHP, Sanitizers)
|
||||
- [ ] class-admin-menu.php limpiado
|
||||
- [ ] admin/pages/main.php limpiado
|
||||
- [ ] admin-app.js limpiado
|
||||
- [ ] class-settings-manager.php limpiado
|
||||
- [ ] Tema revisado
|
||||
- [ ] Base de datos vaciada
|
||||
- [ ] Commit y push realizados
|
||||
|
||||
**Estado FASE 1:** ⬜ Pendiente | 🟡 En progreso | ✅ Completada
|
||||
|
||||
---
|
||||
|
||||
# FASE 2: CREAR TABLA DE DEFAULTS
|
||||
|
||||
**Objetivo:** Implementar tabla `wp_apus_theme_components_defaults` en base de datos
|
||||
|
||||
**Duración estimada:** 1 hora
|
||||
|
||||
---
|
||||
|
||||
## PASO 2.1: Crear Script SQL
|
||||
**Duración:** 10 min
|
||||
|
||||
- [ ] Crear archivo: `admin/includes/migrations/create-defaults-table.sql`
|
||||
- [ ] Copiar SQL de `PROBLEMA-DEFAULTS-HARDCODEADOS-ALGORITMO.md` (líneas 418-437)
|
||||
- [ ] Verificar sintaxis SQL
|
||||
|
||||
**Contenido del archivo:**
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS wp_apus_theme_components_defaults (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
component_name VARCHAR(50) NOT NULL COMMENT 'Nombre del componente',
|
||||
config_key VARCHAR(100) NOT NULL COMMENT 'Clave de configuración',
|
||||
config_value TEXT NOT NULL COMMENT 'Valor por defecto extraído del tema',
|
||||
data_type ENUM('string','integer','boolean','array','json') NOT NULL,
|
||||
version VARCHAR(20) DEFAULT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY unique_default_config (component_name, config_key),
|
||||
INDEX idx_component_name (component_name),
|
||||
INDEX idx_config_key (config_key)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 2.2: Ejecutar SQL en Base de Datos
|
||||
**Duración:** 5 min
|
||||
|
||||
**Método 1: phpMyAdmin**
|
||||
- [ ] Abrir phpMyAdmin
|
||||
- [ ] Seleccionar base de datos del tema
|
||||
- [ ] Ir a pestaña SQL
|
||||
- [ ] Copiar contenido de `create-defaults-table.sql`
|
||||
- [ ] Ejecutar SQL
|
||||
|
||||
**Método 2: Terminal/CMD**
|
||||
- [ ] Conectar a MySQL/MariaDB
|
||||
- [ ] Ejecutar: `USE nombre_base_datos;`
|
||||
- [ ] Copiar y ejecutar SQL
|
||||
|
||||
**Verificación:**
|
||||
- [ ] Ejecutar: `SHOW TABLES LIKE 'wp_apus_theme_components_defaults';`
|
||||
- [ ] Debe retornar la tabla
|
||||
|
||||
---
|
||||
|
||||
## PASO 2.3: Verificar Estructura de Tabla
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Ejecutar: `DESCRIBE wp_apus_theme_components_defaults;`
|
||||
- [ ] Verificar columnas:
|
||||
- [ ] id (BIGINT)
|
||||
- [ ] component_name (VARCHAR 50)
|
||||
- [ ] config_key (VARCHAR 100)
|
||||
- [ ] config_value (TEXT)
|
||||
- [ ] data_type (ENUM)
|
||||
- [ ] version (VARCHAR 20)
|
||||
- [ ] created_at (DATETIME)
|
||||
- [ ] updated_at (DATETIME)
|
||||
- [ ] Verificar índices:
|
||||
- [ ] PRIMARY KEY (id)
|
||||
- [ ] UNIQUE (component_name, config_key)
|
||||
- [ ] INDEX (component_name)
|
||||
- [ ] INDEX (config_key)
|
||||
|
||||
---
|
||||
|
||||
## PASO 2.4: Commit de Creación de Tabla
|
||||
**Duración:** 5 min
|
||||
|
||||
- [ ] Ejecutar: `git add admin/includes/migrations/create-defaults-table.sql`
|
||||
- [ ] Ejecutar commit:
|
||||
```bash
|
||||
git commit -m "feat(db): crear tabla wp_apus_theme_components_defaults
|
||||
|
||||
- Tabla para almacenar valores por defecto de componentes
|
||||
- Estructura normalizada (un row por campo)
|
||||
- Índices para optimizar búsquedas
|
||||
- Script SQL reutilizable en create-defaults-table.sql
|
||||
|
||||
Ref: PROBLEMA-DEFAULTS-HARDCODEADOS-ALGORITMO.md"
|
||||
```
|
||||
- [ ] Ejecutar: `git push origin fix/limpiar-defaults-hardcodeados`
|
||||
|
||||
---
|
||||
|
||||
## ✅ CHECKLIST FASE 2 COMPLETA
|
||||
|
||||
- [ ] Script SQL creado en `admin/includes/migrations/create-defaults-table.sql`
|
||||
- [ ] SQL ejecutado en base de datos
|
||||
- [ ] Tabla `wp_apus_theme_components_defaults` existe
|
||||
- [ ] Estructura verificada (8 columnas, 3 índices)
|
||||
- [ ] Commit y push realizados
|
||||
|
||||
**Estado FASE 2:** ⬜ Pendiente | 🟡 En progreso | ✅ Completada
|
||||
|
||||
---
|
||||
|
||||
# FASE 3: CORREGIR ALGORITMO
|
||||
|
||||
**Objetivo:** Modificar archivos del algoritmo para usar tabla defaults en lugar de hardcodear valores
|
||||
|
||||
**Duración estimada:** 3-4 horas
|
||||
|
||||
---
|
||||
|
||||
## PASO 3.1: Modificar PASO 12 del Algoritmo (Parte 1: Analizar)
|
||||
**Duración:** 15 min
|
||||
|
||||
**Archivo:** `_planeacion/apus-theme/admin-panel-theme/100-modularizacion-admin/00-algoritmo/12-F03-IMPLEMENTACION-IMPLEMENTAR-ADMIN-JS.md`
|
||||
|
||||
- [ ] Leer archivo completo
|
||||
- [ ] Identificar líneas con objeto `DEFAULT_CONFIG` (aprox líneas 43-51, 169-177)
|
||||
- [ ] Identificar líneas con fallbacks en método `render()` (aprox líneas 117-129)
|
||||
- [ ] Identificar líneas con botón reset (aprox líneas 196-204)
|
||||
- [ ] Documentar cambios necesarios
|
||||
|
||||
**Líneas a modificar:**
|
||||
```
|
||||
DEFAULT_CONFIG: Líneas _____ a _____
|
||||
Fallbacks render(): Líneas _____ a _____
|
||||
Botón reset: Líneas _____ a _____
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 3.2: Modificar PASO 12 del Algoritmo (Parte 2: Eliminar DEFAULT_CONFIG)
|
||||
**Duración:** 20 min
|
||||
|
||||
**Archivo:** `12-F03-IMPLEMENTACION-IMPLEMENTAR-ADMIN-JS.md`
|
||||
|
||||
- [ ] Eliminar sección que instruye crear objeto `DEFAULT_CONFIG`
|
||||
- [ ] Eliminar ejemplo de código con `const DEFAULT_CONFIG = {...}`
|
||||
- [ ] Agregar nota: "❌ NO crear objeto DEFAULT_CONFIG - Los defaults vienen de DB vía AJAX"
|
||||
|
||||
**Texto a agregar:**
|
||||
```markdown
|
||||
## ❌ IMPORTANTE: NO Crear Objeto DEFAULT_CONFIG
|
||||
|
||||
**PROHIBIDO crear objeto con defaults hardcodeados en JavaScript.**
|
||||
|
||||
Los valores por defecto vienen de la base de datos vía AJAX.
|
||||
Settings Manager lee de tabla `wp_apus_theme_components_defaults`.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 3.3: Modificar PASO 12 del Algoritmo (Parte 3: Corregir Fallbacks)
|
||||
**Duración:** 20 min
|
||||
|
||||
**Archivo:** `12-F03-IMPLEMENTACION-IMPLEMENTAR-ADMIN-JS.md`
|
||||
|
||||
- [ ] Modificar sección del método `render()`
|
||||
- [ ] Eliminar ejemplos con fallbacks: `config.field || 'default value'`
|
||||
- [ ] Reemplazar por: `config.field` (sin fallback)
|
||||
- [ ] Agregar nota explicando que AJAX SIEMPRE retorna datos completos (DB + defaults merged)
|
||||
|
||||
**Ejemplo ANTES (INCORRECTO):**
|
||||
```javascript
|
||||
bgColorInput.value = config.custom_styles?.bg_color || '#000000';
|
||||
```
|
||||
|
||||
**Ejemplo DESPUÉS (CORRECTO):**
|
||||
```javascript
|
||||
bgColorInput.value = config.custom_styles?.bg_color;
|
||||
// NO fallback necesario - Settings Manager ya hace merge con defaults de DB
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 3.4: Modificar PASO 12 del Algoritmo (Parte 4: Botón Reset)
|
||||
**Duración:** 15 min
|
||||
|
||||
**Archivo:** `12-F03-IMPLEMENTACION-IMPLEMENTAR-ADMIN-JS.md`
|
||||
|
||||
- [ ] Modificar sección del botón "Reset to Defaults"
|
||||
- [ ] Cambiar de `loadConfig(DEFAULT_CONFIG)` a llamada AJAX
|
||||
- [ ] Agregar código para llamar endpoint que retorna defaults de DB
|
||||
|
||||
**Código a agregar:**
|
||||
```javascript
|
||||
// Botón Reset to Defaults
|
||||
resetBtn.addEventListener('click', function() {
|
||||
if (confirm('¿Restaurar valores por defecto?')) {
|
||||
// Llamar AJAX para obtener defaults de DB
|
||||
axios.get(apusAdminData.ajaxUrl, {
|
||||
params: {
|
||||
action: 'get_component_defaults',
|
||||
component: 'component_name',
|
||||
nonce: apusAdminData.nonce
|
||||
}
|
||||
})
|
||||
.then(response => {
|
||||
loadConfig(response.data);
|
||||
// Guardar defaults como config personalizada
|
||||
saveForm();
|
||||
});
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 3.5: Crear NUEVO PASO en Algoritmo (Poblar Defaults)
|
||||
**Duración:** 30 min
|
||||
|
||||
- [ ] Crear archivo: `_planeacion/.../00-algoritmo/07B-F02-DISENO-POBLAR-DEFAULTS-DB.md`
|
||||
- [ ] Ubicación: DESPUÉS de PASO 7, ANTES de PASO 8
|
||||
|
||||
**Contenido del archivo:**
|
||||
```markdown
|
||||
# PASO 7B: POBLAR TABLA DE DEFAULTS
|
||||
|
||||
**Prerequisito:** PASO 7 completado (código configurable documentado)
|
||||
|
||||
## Objetivo
|
||||
|
||||
Insertar valores por defecto del componente en tabla `wp_apus_theme_components_defaults`.
|
||||
|
||||
## 7B.1 Leer Valores Extraídos
|
||||
|
||||
- Abrir archivo del PASO 6: `03-DOCUMENTACION-ESTRUCTURA-DATOS.md`
|
||||
- Identificar TODOS los campos con sus valores por defecto
|
||||
- Valores de textos/URLs: Del código hardcodeado actual
|
||||
- Valores de colores/estilos: Del CSS original del componente
|
||||
|
||||
## 7B.2 Generar Script SQL
|
||||
|
||||
Crear archivo: `[componente]/defaults-insert.sql`
|
||||
|
||||
Formato:
|
||||
INSERT INTO wp_apus_theme_components_defaults
|
||||
(component_name, config_key, config_value, data_type, version)
|
||||
VALUES
|
||||
('[component_name]', 'enabled', '1', 'boolean', '2.1.4'),
|
||||
('[component_name]', '[field1]', '[valor]', 'string', '2.1.4'),
|
||||
...
|
||||
|
||||
## 7B.3 Ejecutar SQL
|
||||
|
||||
- Conectar a base de datos
|
||||
- Ejecutar script SQL
|
||||
- Verificar: SELECT * FROM wp_apus_theme_components_defaults WHERE component_name='[nombre]';
|
||||
|
||||
## 7B.4 Verificar
|
||||
|
||||
- [ ] Todos los campos del PASO 6 tienen row en tabla defaults
|
||||
- [ ] Valores coinciden con los extraídos del código/CSS actual
|
||||
- [ ] data_type es correcto para cada campo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 3.6: Modificar PASO 14 del Algoritmo (Eliminar get_defaults)
|
||||
**Duración:** 30 min
|
||||
|
||||
**Archivo:** `_planeacion/.../00-algoritmo/14-F04-CIERRE-GIT-COMMITS.md`
|
||||
|
||||
- [ ] Leer sección "14.4 Modificar Settings Manager (CRÍTICO)"
|
||||
- [ ] Leer subsección "Modificación 1: Agregar Defaults (línea ~146)"
|
||||
- [ ] Eliminar TODO el ejemplo del método `get_defaults()` con array hardcodeado (líneas ~88-123)
|
||||
- [ ] Reemplazar por instrucciones para leer de tabla defaults
|
||||
|
||||
**Texto a eliminar:**
|
||||
```php
|
||||
public function get_defaults() {
|
||||
return array(
|
||||
'version' => APUS_ADMIN_PANEL_VERSION,
|
||||
'components' => array(
|
||||
'component_name' => array(
|
||||
'enabled' => true,
|
||||
// ... defaults hardcodeados
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
**Texto a agregar:**
|
||||
```markdown
|
||||
### Modificación: Settings Manager Lee de Tabla Defaults
|
||||
|
||||
**❌ NO crear método get_defaults() con array hardcodeado**
|
||||
|
||||
Los defaults ya están en tabla `wp_apus_theme_components_defaults` (insertados en PASO 7B).
|
||||
|
||||
Settings Manager debe leer de DB, NO tener defaults hardcodeados.
|
||||
|
||||
Ver método `get_component_config()` que hace merge automático:
|
||||
1. Lee config personalizada de `wp_apus_theme_components`
|
||||
2. Si no existe → Lee defaults de `wp_apus_theme_components_defaults`
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 3.7: Modificar DB Manager (Agregar get_component_defaults)
|
||||
**Duración:** 30 min
|
||||
|
||||
**Archivo:** `admin/includes/class-db-manager.php`
|
||||
|
||||
- [ ] Leer archivo completo
|
||||
- [ ] Buscar método `get_component($component_name)`
|
||||
- [ ] Copiar método y modificar para leer de tabla `_defaults`
|
||||
- [ ] Agregar nuevo método
|
||||
|
||||
**Código a agregar:**
|
||||
```php
|
||||
/**
|
||||
* Get component default values from defaults table
|
||||
*
|
||||
* @param string $component_name
|
||||
* @return array
|
||||
*/
|
||||
public function get_component_defaults($component_name) {
|
||||
global $wpdb;
|
||||
$table_name = $wpdb->prefix . 'apus_theme_components_defaults';
|
||||
|
||||
$results = $wpdb->get_results(
|
||||
$wpdb->prepare(
|
||||
"SELECT config_key, config_value, data_type
|
||||
FROM $table_name
|
||||
WHERE component_name = %s",
|
||||
$component_name
|
||||
),
|
||||
ARRAY_A
|
||||
);
|
||||
|
||||
if (empty($results)) {
|
||||
return array();
|
||||
}
|
||||
|
||||
// Convertir rows a array asociativo
|
||||
$config = array();
|
||||
foreach ($results as $row) {
|
||||
$config[$row['config_key']] = $this->cast_value(
|
||||
$row['config_value'],
|
||||
$row['data_type']
|
||||
);
|
||||
}
|
||||
|
||||
return $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cast value to correct type based on data_type
|
||||
*
|
||||
* @param mixed $value
|
||||
* @param string $type
|
||||
* @return mixed
|
||||
*/
|
||||
private function cast_value($value, $type) {
|
||||
switch ($type) {
|
||||
case 'boolean':
|
||||
return (bool) $value;
|
||||
case 'integer':
|
||||
return (int) $value;
|
||||
case 'array':
|
||||
case 'json':
|
||||
return json_decode($value, true);
|
||||
default:
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASO 3.8: Modificar Settings Manager (get_component_config)
|
||||
**Duración:** 20 min
|
||||
|
||||
**Archivo:** `admin/includes/class-settings-manager.php`
|
||||
|
||||
- [ ] Buscar método `get_component_config($component_name)`
|
||||
- [ ] Modificar para leer de tabla defaults si no hay config personalizada
|
||||
|
||||
**Código ANTES:**
|
||||
```php
|
||||
public function get_component_config($component_name) {
|
||||
$settings = $this->get_settings();
|
||||
$defaults = $this->get_defaults(); // ← Método hardcodeado
|
||||
|
||||
return wp_parse_args(
|
||||
$settings['components'][$component_name] ?? array(),
|
||||
$defaults['components'][$component_name] ?? array()
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
**Código DESPUÉS:**
|
||||
```php
|
||||
public function get_component_config($component_name) {
|
||||
// 1. Intentar leer config personalizada
|
||||
$user_config = $this->db_manager->get_component($component_name);
|
||||
|
||||
if (!empty($user_config)) {
|
||||
return $user_config; // Usuario ya personalizó
|
||||
}
|
||||
|
||||
// 2. Si no hay personalización, leer defaults de tabla
|
||||
$defaults = $this->db_manager->get_component_defaults($component_name);
|
||||
|
||||
if (!empty($defaults)) {
|
||||
return $defaults; // Usar defaults de DB
|
||||
}
|
||||
|
||||
// 3. Error: componente sin defaults
|
||||
error_log("APUS Theme: No defaults found for component: {$component_name}");
|
||||
return array();
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ CHECKLIST FASE 3 COMPLETA
|
||||
|
||||
- [ ] PASO 12 modificado (eliminado DEFAULT_CONFIG y fallbacks)
|
||||
- [ ] PASO 7B creado (poblar defaults en DB)
|
||||
- [ ] PASO 14 modificado (eliminado get_defaults hardcodeado)
|
||||
- [ ] DB Manager modificado (agregado get_component_defaults)
|
||||
- [ ] Settings Manager modificado (lee de tabla defaults)
|
||||
- [ ] Todos los cambios commiteados
|
||||
|
||||
**Estado FASE 3:** ⬜ Pendiente | 🟡 En progreso | ✅ Completada
|
||||
|
||||
---
|
||||
|
||||
## 🎯 RESUMEN FINAL
|
||||
|
||||
Una vez completadas las 3 fases:
|
||||
|
||||
### ✅ Lo que se logró:
|
||||
1. Código actual limpiado (sin implementaciones incorrectas)
|
||||
2. Tabla `wp_apus_theme_components_defaults` creada y funcionando
|
||||
3. Algoritmo corregido (sin defaults hardcodeados en JS/PHP)
|
||||
4. DB Manager y Settings Manager leen de tabla defaults
|
||||
|
||||
### 🚀 Próximos pasos:
|
||||
1. Ejecutar algoritmo CORREGIDO para primer componente (ej: Navbar)
|
||||
2. Pasos 1-13: Generar documentación
|
||||
3. PASO 7B: Insertar defaults en DB
|
||||
4. PASO 14: Implementar código real
|
||||
5. PASO 15-16: Testing y cierre
|
||||
|
||||
---
|
||||
|
||||
**Última actualización:** _[Fecha]_
|
||||
**Estado general:** ⬜ Pendiente | 🟡 En progreso | ✅ Completado
|
||||
Reference in New Issue
Block a user