785 lines
22 KiB
Markdown
785 lines
22 KiB
Markdown
# 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
|