Implement Cloudflare custom domain management flow

- Added support for connecting, refreshing, and removing custom domains through Cloudflare.
- Updated API routes and validation schemas to handle new domain actions.
- Refactored domain management logic in the dashboard to accommodate Cloudflare integration.
- Enhanced user experience with clear status messages and DNS instructions for domain setup.
- Updated translations and UI components to reflect new domain management features.
This commit is contained in:
Rotimi Best
2026-03-27 09:12:53 +01:00
parent 3919ff6c2f
commit f3d212f984
23 changed files with 1376 additions and 244 deletions
@@ -311,6 +311,7 @@
"creating_new": "Error al crear nuevas traducciones"
},
"exercise": {
"points_required_auto_grade": "Asigne un valor de puntos positivo a cada pregunta antes de guardar.",
"success": "Guardado exitosamente",
"submission_updated": "Envío actualizado a",
"error_fetching": "No se han podido recuperar los ejercicios. Vuelva a cargar la página."
@@ -750,6 +751,8 @@
"certificates": {
"title": "Certificados",
"certificate_settings": "Configuración del certificado",
"tab_design": "Diseño",
"tab_settings": "Configuración",
"theme": "Elige un tema",
"logo": "Logotipo de la marca",
"to_update": "Para actualizar su imagen de marca, vaya a",
@@ -1071,6 +1074,9 @@
"finish": "terminar",
"next": "Siguiente",
"check": "comprobar",
"auto_graded_badge": "Auto-graded",
"manual_grading_required_badge": "Manual grading required",
"points_required_auto_grade": "Points must be greater than 0 for auto-graded exercises.",
"analytics": {
"submissions": "Envíos",
"individual": {
@@ -1139,6 +1145,8 @@
"link": "Enlaces"
},
"select_type": "Seleccionar tipo",
"question_type_auto_gradable": "Auto",
"question_type_manual_grading": "Manual",
"premium_question_type": "Actualice para usar este tipo de pregunta"
},
"delete_confirmation": {
@@ -1608,6 +1616,27 @@
"nav_certificates": "Certificados",
"nav_landing_page": "Página de destino",
"nav_settings": "Configuración"
},
"completion": {
"modal": {
"title": "¡Requisitos del curso completos!",
"subtitle": "Felicitaciones, puede ver y descargar su certificado en cualquier momento.",
"view_certificate": "Ver certificado",
"later": "Cerrar"
}
},
"certification": {
"rules_heading": "Reglas de certificación",
"deadline_label": "Fecha límite de certificación",
"deadline_helper": "Los estudiantes deben alcanzar el porcentaje de finalización antes de esta fecha (hora local). Déjelo vacío sin fecha límite.",
"threshold_label": "Finalización mínima (%)",
"threshold_helper": "Progreso combinado de lección y ejercicio requerido para obtener el certificado (0–100). El valor predeterminado es 100%.",
"email_message_label": "Mensaje de correo electrónico de certificación",
"email_message_helper": "Mensaje opcional que se muestra en el correo electrónico cuando un estudiante cumple con los requisitos. Siempre se incluye un enlace a la página del certificado.",
"email_message_placeholder": "p.ej. Estamos orgullosos de tu progreso: ¡sigue aprendiendo!"
},
"certificates": {
"progress_hint": "{current}% completado ({required}% requerido para descargar)"
}
},
"courses": {
@@ -1785,7 +1814,20 @@
"refresh": "Actualizar",
"remove": "Quitar",
"custom_favicon": "favicon personalizado",
"custom_code": "código personalizado"
"custom_code": "código personalizado",
"reconnect": "Reconectar dominio",
"reconnect_hint": "Vuelva a conectar este dominio para generar nuevos registros de configuración de Cloudflare.",
"status_verified": "Verificado",
"status_pending_dns": "DNS pendiente",
"status_pending_verification": "Pendiente de verificación",
"status_reconnect_required": "Se requiere reconectar",
"status_error": "necesita atencion",
"status_removed": "Eliminado",
"verified_description": "Este dominio personalizado está activo y verificado.",
"pending_dns_description": "Agregue los registros DNS a continuación y luego actualice la verificación.",
"pending_verification_description": "Se encontraron registros DNS. La emisión o validación de SSL aún está en curso.",
"reconnect_description": "Este dominio debe conectarse nuevamente a través del nuevo flujo de configuración de Cloudflare.",
"error_description": "Este dominio personalizado existe, pero la verificación aún no se ha completado."
}
},
"quiz": {