Sección "Mis Cursos" del Área personal (/my/)
- Impacto — Tema: Layout
mydashboard.php(arma el arreglomiscursos),miscursos_section.mustache, AMDmiscursos_tabs.js, SCSS.cdigital-miscursos*y variante de tamaño de.cdigital-coursecardpara el dashboard; overrides cosméticosblock_myoverview/view-cards.mustacheyblock_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
inprogressocompletedsegún el porcentaje de avance (>= 100→completed); los cursos sin seguimiento de finalización quedan eninprogressconhasprogress = false(sin barra de progreso). - La clasificación se expone como
data-completionen el wrapper de cada card. amd/src/miscursos_tabs.jsalterna 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 externaget_course_teachersde 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 WScore_course_set_favourite_coursesque 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:
- 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. - Activar la edición y localizar el bloque "Cursos a los que se ha accedido recientemente".
- Eliminarlo con el menú de acciones del bloque (Eliminar).
- 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
| Archivo | Descripción |
|---|---|
theme/cdigital/layout/mydashboard.php | Arma el arreglo miscursos (hasta 6 cursos matriculados, con progreso, profesores, categoría, favorito) |
theme/cdigital/templates/miscursos_section.mustache | Encabezado + 3 tabs + grid de cards de la sección |
theme/cdigital/templates/mydashboard.mustache | Inserta la sección ({{#miscursos}}) en dashboard-content-top |
theme/cdigital/amd/src/miscursos_tabs.js | Filtro client-side por pestaña (data-completion / data-active-filter) |
theme/cdigital/templates/block_myoverview/view-cards.mustache | Override 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.mustache | Override 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.php | Strings 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.