Fase-01: Preparación del entorno y estructura inicial
- Verificación de entorno XAMPP (PHP 8.0.30, Composer 2.9.1, WP-CLI 2.12.0) - Configuración de Composer con PSR-4 para 24 namespaces - Configuración de PHPUnit con 140 tests preparados - Configuración de PHPCS con WordPress Coding Standards - Scripts de backup y rollback con mejoras de seguridad - Estructura de contextos (admin/, public/, shared/) - Schemas JSON para 11 componentes del sistema - Código fuente inicial con arquitectura limpia en src/ - Documentación de procedimientos de emergencia 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
186
schemas/components/contact-modal.json
Normal file
186
schemas/components/contact-modal.json
Normal file
@@ -0,0 +1,186 @@
|
||||
{
|
||||
"component_name": "contact-modal",
|
||||
"version": "1.0.0",
|
||||
"description": "Modal de contacto Bootstrap 5 con formulario AJAX para consultas de clientes",
|
||||
"groups": {
|
||||
"general": {
|
||||
"label": "Configuración General",
|
||||
"priority": 10,
|
||||
"fields": {
|
||||
"modal_title": {
|
||||
"type": "text",
|
||||
"label": "Título del modal",
|
||||
"default": "¿Tienes alguna pregunta?",
|
||||
"required": true,
|
||||
"description": "Título que aparece en el encabezado del modal"
|
||||
},
|
||||
"modal_description": {
|
||||
"type": "textarea",
|
||||
"label": "Descripción",
|
||||
"default": "Completa el formulario y nuestro equipo te responderá en menos de 24 horas.",
|
||||
"description": "Texto descriptivo debajo del título"
|
||||
}
|
||||
}
|
||||
},
|
||||
"form_fields": {
|
||||
"label": "Campos del Formulario",
|
||||
"priority": 20,
|
||||
"fields": {
|
||||
"fullName": {
|
||||
"type": "object",
|
||||
"label": "Campo Nombre Completo",
|
||||
"default": {
|
||||
"label": "Nombre completo",
|
||||
"placeholder": "",
|
||||
"required": true
|
||||
},
|
||||
"fields": {
|
||||
"label": {"type": "text", "label": "Etiqueta"},
|
||||
"placeholder": {"type": "text", "label": "Placeholder"},
|
||||
"required": {"type": "boolean", "label": "Requerido"}
|
||||
}
|
||||
},
|
||||
"company": {
|
||||
"type": "object",
|
||||
"label": "Campo Empresa",
|
||||
"default": {
|
||||
"label": "Empresa",
|
||||
"placeholder": "",
|
||||
"required": false
|
||||
},
|
||||
"fields": {
|
||||
"label": {"type": "text", "label": "Etiqueta"},
|
||||
"placeholder": {"type": "text", "label": "Placeholder"},
|
||||
"required": {"type": "boolean", "label": "Requerido"}
|
||||
}
|
||||
},
|
||||
"whatsapp": {
|
||||
"type": "object",
|
||||
"label": "Campo WhatsApp",
|
||||
"default": {
|
||||
"label": "WhatsApp",
|
||||
"placeholder": "",
|
||||
"required": true
|
||||
},
|
||||
"fields": {
|
||||
"label": {"type": "text", "label": "Etiqueta"},
|
||||
"placeholder": {"type": "text", "label": "Placeholder"},
|
||||
"required": {"type": "boolean", "label": "Requerido"}
|
||||
}
|
||||
},
|
||||
"email": {
|
||||
"type": "object",
|
||||
"label": "Campo Email",
|
||||
"default": {
|
||||
"label": "Correo electrónico",
|
||||
"placeholder": "",
|
||||
"required": true
|
||||
},
|
||||
"fields": {
|
||||
"label": {"type": "text", "label": "Etiqueta"},
|
||||
"placeholder": {"type": "text", "label": "Placeholder"},
|
||||
"required": {"type": "boolean", "label": "Requerido"}
|
||||
}
|
||||
},
|
||||
"comments": {
|
||||
"type": "object",
|
||||
"label": "Campo Comentarios",
|
||||
"default": {
|
||||
"label": "¿En qué podemos ayudarte?",
|
||||
"placeholder": "",
|
||||
"required": false,
|
||||
"rows": 4
|
||||
},
|
||||
"fields": {
|
||||
"label": {"type": "text", "label": "Etiqueta"},
|
||||
"placeholder": {"type": "text", "label": "Placeholder"},
|
||||
"required": {"type": "boolean", "label": "Requerido"},
|
||||
"rows": {"type": "number", "label": "Filas"}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"submit_button": {
|
||||
"label": "Botón de Envío",
|
||||
"priority": 30,
|
||||
"fields": {
|
||||
"text": {
|
||||
"type": "text",
|
||||
"label": "Texto del botón",
|
||||
"default": "Enviar Mensaje",
|
||||
"required": true,
|
||||
"description": "Texto que aparece en el botón de envío"
|
||||
},
|
||||
"icon": {
|
||||
"type": "text",
|
||||
"label": "Ícono del botón",
|
||||
"default": "bi-send-fill",
|
||||
"description": "Clase de Bootstrap Icons (ej: bi-send-fill)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"label": "Mensajes del Sistema",
|
||||
"priority": 40,
|
||||
"fields": {
|
||||
"success": {
|
||||
"type": "textarea",
|
||||
"label": "Mensaje de éxito",
|
||||
"default": "Mensaje enviado exitosamente. Te responderemos pronto.",
|
||||
"description": "Mensaje cuando el formulario se envía correctamente"
|
||||
},
|
||||
"error": {
|
||||
"type": "textarea",
|
||||
"label": "Mensaje de error",
|
||||
"default": "Error al enviar el mensaje. Por favor intenta nuevamente.",
|
||||
"description": "Mensaje cuando ocurre un error"
|
||||
},
|
||||
"validation_error": {
|
||||
"type": "textarea",
|
||||
"label": "Mensaje de validación",
|
||||
"default": "Por favor completa todos los campos requeridos.",
|
||||
"description": "Mensaje cuando faltan campos obligatorios"
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"label": "Configuración Avanzada",
|
||||
"priority": 50,
|
||||
"fields": {
|
||||
"modal_id": {
|
||||
"type": "text",
|
||||
"label": "ID del modal",
|
||||
"default": "contactModal",
|
||||
"readonly": true,
|
||||
"description": "ID HTML del modal (no modificar)"
|
||||
},
|
||||
"form_id": {
|
||||
"type": "text",
|
||||
"label": "ID del formulario",
|
||||
"default": "modalContactForm",
|
||||
"readonly": true,
|
||||
"description": "ID HTML del formulario (no modificar)"
|
||||
},
|
||||
"ajax_action": {
|
||||
"type": "text",
|
||||
"label": "Acción AJAX",
|
||||
"default": "roi_contact_modal_submit",
|
||||
"readonly": true,
|
||||
"description": "Nombre de la acción AJAX (no modificar)"
|
||||
},
|
||||
"email_to": {
|
||||
"type": "email",
|
||||
"label": "Email de destino",
|
||||
"default": "",
|
||||
"description": "Email donde se recibirán los mensajes (vacío = admin email)"
|
||||
},
|
||||
"email_subject": {
|
||||
"type": "text",
|
||||
"label": "Asunto del email",
|
||||
"default": "Nuevo mensaje de contacto desde el sitio web",
|
||||
"description": "Asunto del email que se enviará"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user