Saltar al contenido principal

Fila de filtros de Mis cursos (/my/courses.php)

Ficha técnica
  • Impacto — Tema: siete overrides de block_myoverview, AMD mycourses_filters.js, layout mycourses.php y plantilla mycourses.mustache, SCSS .cdigital-tabfilter y .cdigital-viewtoggle
  • Impacto — Plugin: —
  • Figma: 19658-13096 · Estado: Implementado

Propósito​

Restila la fila de controles de la página Mis cursos para que use el mismo lenguaje visual que el resto del campus. La fila pasa del grupo de desplegables azules de Boost a una tira de pills a la izquierda (agrupación) y un grupo de búsqueda, orden y vista a la derecha.

No confundir con la sección "Mis Cursos" del Área personal

Son dos implementaciones distintas del mismo lenguaje visual, sin relación entre sí:

Esta fichaSección del Área personal
Página/my/courses.php/my/
Origen del contenidoblock_myoverview, client-side por Web Services de corelayout/mydashboard.php, 100 % server-side
Módulo AMDmycourses_filters.jsmiscursos_tabs.js

Overrides de block_myoverview​

PlantillaQué cambia
main.mustacheParte la fila de controles en tira de pills (izquierda) y grupo de búsqueda, orden y vista (derecha); engancha el módulo AMD
nav-grouping-selector.mustacheEl desplegable de agrupación pasa a pills
nav-display-selector.mustacheEl selector de vista pasa a un conmutador de iconos
nav-sort-selector.mustacheRestilado del selector de orden
nav-search-widget.mustacheRestilado del buscador
view-cards.mustacheRejilla de cards con el lenguaje del tema
progress-bar.mustacheBarra de progreso de la card

Por qué el módulo AMD no registra listeners propios​

mycourses_filters.js no escucha clics. Observa con MutationObserver los atributos data-grouping, data-display y data-sort que el propio view_nav.js de core escribe sobre [data-region="courses-view"], y sincroniza a partir de ellos el estado visual de las pills, el conmutador de vista y la etiqueta de orden.

La razón es concreta: view_nav.js aborta anticipadamente cuando la opción sobre la que se ha hecho clic ya lleva la clase active. Un segundo manejador que compitiera por añadir esa clase antes que core rompería el filtrado en silencio. Observar lo que core escribe elimina cualquier dependencia de orden entre los dos módulos.

Es el mismo criterio aplicado en Exploración de cursos por categorías, donde coursecategories.js tampoco registra listeners propios.

El layout mycourses.php​

theme_cdigital declara un layout propio para esta página, casi idéntico al layout de cajones de Boost. La única razón de su existencia es retirar nonavbar, para que la miga de pan construida por el tema se muestre también aquí. El resto del contenido lo sigue renderizando block_myoverview.

Verificación​

Como estudiante con varios cursos: las pills de agrupación filtran, el conmutador cambia entre rejilla y lista, el orden se aplica y el buscador encuentra cursos por nombre. Comprobar que el estado visual acompaña siempre al filtrado real: si una pill queda marcada como activa pero la lista no cambia, la sincronización está rota.