Saltar al contenido principal

Card "Continúa donde quedaste" (Area personal /my/)

Tipo: Theme (layout + template + SCSS) Ubicacion: public/theme/cdigital/ Alcance: 2 — Dashboard de aprendizaje Estado: Implementado

Proposito

Tarjeta que muestra el ultimo curso visitado por el estudiante con un acceso directo para continuar desde donde lo dejo. Se renderiza en la parte superior del Area personal (/my/), debajo del Welcome Hero y encima del contenido de la pagina. Figma node 19644-8002.

La card muestra:

  • Imagen del curso (172 x 108 px).
  • Titulo "Continua donde quedaste".
  • Nombre del curso.
  • Nombre del siguiente modulo pendiente (ej. "Modulo 1").
  • Barra de progreso del curso con porcentaje.
  • Boton "Continuar" que lleva al curso en la seccion correspondiente.

Arquitectura

Mismo patron del Stats Row (ADR-002): presentacion quemada en el tema, sin bloques custom. La capa de datos es el plugin local local_pccntr8203403_dashboard.

theme_cdigital/layout/mydashboard.php
+-- Obtiene el ultimo curso visitado (course_get_recent_courses)
+-- Consulta progreso y modulos (course_stats::get_user_progress / get_user_module_progress)
+-- Determina el primer modulo incompleto
+-- Construye la URL con seccion especifica segun el formato del curso
+-- Renderiza templates/mydashboard.mustache
+-- partial templates/continue_card.mustache (wrapper .continuecard)

Flujo de datos

PasoQue haceFuente
1Obtiene el ultimo curso accedido por el usuariocourse_get_recent_courses($USER->id, 1)
2Porcentaje de progreso general del cursocourse_stats::get_user_progress()
3Estado de finalizacion por seccion/modulocourse_stats::get_user_module_progress()
4Primer modulo con complete === falseIteracion sobre modulos
5Construccion de URL de continuacionmoodle_url con logica segun formato

Logica de URL

El boton "Continuar" redirige al curso con un ancla a la seccion pendiente. La URL varia segun el formato del curso:

  • Formato onetopic (pestanas): /course/view.php?id=N&section=N#tabs-tree-start
  • Otros formatos: /course/view.php?id=N#section-N

Esto asegura que en formato OneTopic la navegacion active la pestana correspondiente y haga scroll al contenedor de pestanas.

Renderizado condicional

La card solo se muestra cuando:

  • El usuario esta autenticado y no es invitado (isloggedin() && !isguestuser()).
  • El usuario tiene al menos un curso accedido recientemente.
  • La seccion {{#continuecard}} en el Mustache es verdadera.

Ajustes de layout (pixel-perfect)

La card esta envuelta en un contenedor .cdigital-continuecard con las siguientes caracteristicas tomadas del diseno de Figma:

  • background-color: #fff — fondo blanco para el espacio exterior.
  • padding: 20px — margen blanco alrededor de la tarjeta.
  • border-radius: 12px — esquinas redondeadas del contenedor.

Archivos clave

ArchivoDescripcion
theme/cdigital/layout/mydashboard.phpArma el contexto continuecard (curso, progreso, modulo, URL)
theme/cdigital/templates/continue_card.mustachePartial de la card (imagen, titulo, info, progreso, boton)
theme/cdigital/templates/mydashboard.mustacheIncluye el partial condicionalmente
theme/cdigital/scss/preset/cdigital.scssSecciones .cdigital-continuecard y .continuecard__*
theme/cdigital/lang/{en,es}/theme_cdigital.phpStrings continuecard_title, continuecard_progresslabel, continuecard_continue, continuecard_continue_aria
local/pccntr8203403_dashboard/classes/data/course_stats.phpMetodos get_user_progress() y get_user_module_progress()