Portafolio
Grupo IOE / UNADE · 2026

Dashboard de cursos por categorías para Moodle

Bloque Moodle con jerarquía y progreso

Bloque Moodle que reemplaza el listado plano de "Mis cursos" por un dashboard navegable en tres niveles de categorías, con tarjetas de curso, progreso por color y un botón contextual Comenzar/Continuar/Completado.

Mi rol Diseño e implementación completa

  • Moodle
  • PHP 8
  • core_completion API
  • File Storage API
  • Mustache
  • Bootstrap
  • AMD / JavaScript
  • localStorage
Dashboard de cursos por categorías para Moodle
621
Líneas PHP
3
Niveles de jerarquía
2
Plantillas Mustache
3
Estados de botón (CTA)

Capturas

Problema

El listado nativo de "Mis cursos" de Moodle muestra todas las matrículas en una rejilla plana, sin estructura. Para UNADE, con una oferta amplia organizada en áreas y subáreas formativas, ese listado se volvía inmanejable: el alumno no distinguía a qué programa pertenecía cada curso ni veía de un vistazo cuáles tenía empezados, terminados o pendientes. Hacía falta un panel que reflejara la jerarquía real de categorías virtuales que ya gestionaba el plugin local_ioe y que diera contexto inmediato sobre el avance.

Solución

Diseñé e implementé block_ioe_multicategory, un bloque que reconstruye el dashboard sobre las categorías virtuales de local_ioe. La lógica de datos (391 líneas en main.php) lee las tablas de categorías y matrículas, deduplica resultados y arma una jerarquía de hasta tres niveles que se renderiza como pestañas, pills y sub-pills mediante dos plantillas Mustache. Cada tarjeta calcula el progreso real con la API core_completion, resuelve la imagen del curso con doble fallback sobre la File Storage API y muestra una barra de color (rojo, amarillo, verde) y un botón contextual Comenzar / Continuar / Completado. Un módulo AMD persiste la pestaña activa en localStorage. El bloque respeta "Acceder como" y distingue admin de alumno.

Resultado

UNADE dispone de un dashboard de cursos que sustituye al listado plano por una navegación jerárquica fiel a su estructura formativa, con progreso visible y una llamada a la acción clara en cada curso. El bloque está en madurez STABLE (release 1.0.0), es bilingüe ES/EN y se acopla al plugin hermano local_ioe mediante su flag de categorías virtuales, lo que permite reutilizar la taxonomía ya existente sin duplicar configuración.