Saltar al contenido principal

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

Ficha técnica
  • Impacto — Tema: Layout mydashboard.php, continue_card.mustache, lógica de URL por formato
  • Impacto — Plugin: course_stats (get_user_progress, get_user_module_progress)
  • Requisito: 02 · Lógica Dashboard (xlsx) · Figma: 19644-8002 · 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()