Saltar al contenido principal

Sección "Mis Cursos" del Área personal (/my/)

Ficha técnica
  • Impacto — Tema: Layout mydashboard.php (arma el arreglo miscursos), miscursos_section.mustache, AMD miscursos_tabs.js, SCSS .cdigital-miscursos* y variante de tamaño de .cdigital-coursecard para el dashboard; overrides cosméticos block_myoverview/view-cards.mustache y block_recentlyaccessedcourses/course-card.mustache (quitan el truncado del título)
  • Impacto — Plugin: local_pccntr8203403_dashboard\data\course_stats::get_user_progress (reutilizado)
  • Requisito: 02 · Lógica Dashboard (xlsx) · Figma: 19541-17693 (sección), 19667:14130 (card) · Estado: Implementado

Propósito

Sección renderizada en el contenido principal del Área personal (/my/), debajo de la card "Continúa donde quedaste" y antes del Panel de Actividades. Muestra hasta 6 cursos en los que el estudiante está matriculado, en tarjetas con imagen, categoría, título, campo "Profesor:", barra de progreso con porcentaje y botón "Ver curso", filtrables por tres pestañas: Todos, En Curso y Completados.

Diferencia con la Card de curso de "Mis cursos" (/my/courses.php)

Card de curso documenta el override de core_course/coursecard.mustache que usa block_myoverview para renderizar client-side (WS core + Templates.render) en /my/courses.php. Esta sección es un flujo distinto e independiente: se construye 100% server-side dentro de layout/mydashboard.php, con el mismo patrón que Welcome Hero, Stats Row y la card "Continúa donde quedaste" — sin pasar por block_myoverview ni por el override core_course/coursecard.mustache.

Reutiliza el mismo lenguaje visual de card (cdigital-coursecard) mediante una plantilla propia (miscursos_section.mustache), por lo que /my/courses.php no se modifica ni depende de esta sección.

Filtrado por pestañas

  • Cada card se clasifica en el servidor como inprogress o completed según el porcentaje de avance (>= 100completed); los cursos sin seguimiento de finalización quedan en inprogress con hasprogress = false (sin barra de progreso).
  • La clasificación se expone como data-completion en el wrapper de cada card.
  • amd/src/miscursos_tabs.js alterna la pestaña activa y oculta/muestra wrappers (wrapper.hidden) según el filtro elegido, sin recargar ni volver a pedir datos al servidor.

Datos de cada card

  • Profesor: core_course_list_element::get_course_contacts(), la misma API que usa la función externa get_course_teachers de Card de curso — aquí se resuelve inline en el servidor (sin llamada AJAX adicional) porque el listado ya se genera server-side.
  • Progreso: local_pccntr8203403_dashboard\data\course_stats::get_user_progress(), igual que la card "Continúa donde quedaste".
  • Favorito: reutiliza el módulo AMD coursecard_favourite.js (mismo toggle y WS core_course_set_favourite_courses que en /my/courses.php).
  • El enlace "Todos los cursos" del encabezado apunta a /course/index.php (catálogo general de cursos), no a /my/courses.php.

Configuración requerida en Moodle (Site administration)

Esta sección no retira automáticamente ningún bloque nativo: coexiste con lo que ya esté configurado en la región de bloques del Área personal (side-pre, mostrada dentro del Panel de Actividades). Si el bloque nativo "Cursos a los que se ha accedido recientemente" (block_recentlyaccessedcourses) está presente en esa región, duplica la misma información (cursos matriculados, con progreso) que ya muestra "Mis Cursos" y debe retirarse manualmente:

  1. Ir a Administración del sitio → Apariencia → Página Mi Moodle predeterminada (/my/indexsys.php) para quitarlo del dashboard predeterminado de todos los usuarios, o a la propia Área personal → "Personalizar esta página" para quitarlo solo de un usuario que ya personalizó su dashboard.
  2. Activar la edición y localizar el bloque "Cursos a los que se ha accedido recientemente".
  3. Eliminarlo con el menú de acciones del bloque (Eliminar).
  4. Si se retiró del dashboard predeterminado, usar "Reset all user dashboards" para propagar el cambio a los usuarios que ya personalizaron su página.

Procedimiento detallado, incluida la alternativa por SQL directo: Retirar bloques del dashboard.

Archivos clave

ArchivoDescripción
theme/cdigital/layout/mydashboard.phpArma el arreglo miscursos (hasta 6 cursos matriculados, con progreso, profesores, categoría, favorito)
theme/cdigital/templates/miscursos_section.mustacheEncabezado + 3 tabs + grid de cards de la sección
theme/cdigital/templates/mydashboard.mustacheInserta la sección ({{#miscursos}}) en dashboard-content-top
theme/cdigital/amd/src/miscursos_tabs.jsFiltro client-side por pestaña (data-completion / data-active-filter)
theme/cdigital/templates/block_myoverview/view-cards.mustacheOverride cosmético: quita el truncado de 55 caracteres del título de block_myoverview para que envuelva en varias líneas
theme/cdigital/templates/block_recentlyaccessedcourses/course-card.mustacheOverride cosmético equivalente para el bloque nativo "recentlyaccessedcourses", por si se añade a la región de bloques
theme/cdigital/scss/preset/cdigital.scss.cdigital-miscursos* (encabezado, tabs, grid) y variante de tamaño de .cdigital-coursecard dentro de .dashboard-columns__main (271×498px)
theme/cdigital/lang/{en,es}/theme_cdigital.phpStrings miscursos_title, miscursos_all, miscursos_inprogress, miscursos_completed, miscursos_allcourses

Build y despliegue

Esta feature incluye un módulo AMD nuevo que requiere build previo al despliegue. Para el procedimiento de build, ver Build de assets del tema. Para el despliegue completo (copia de código, upgrade, purga de cachés), ver Procedimiento de despliegue.