Saltar al contenido principal

Widget "Usuarios en línea" del Área personal (/my/)

Ficha técnica
  • Impacto — Tema: classes/output/online_users.php, templates/onlineusers_widget.mustache, strings onlineusers_*, SCSS del Panel de Actividades
  • Impacto — Plugin:
  • Requisito: Diseño (Figma) · Figma: 19541-18056 · Estado: Implementado

Reestiliza el bloque core block_online_users dentro del Panel de Actividades del Área personal según el diseño "Users Online Widget": stack de hasta 3 avatares circulares de 32 px con anillo blanco y solape de 8 px, chip cobalto +N para el resto, contador "N usuarios" alineado a la derecha y punto verde junto al título.

ElementoContenidoFuente del dato
Avatares (máx. 3)Fotos de perfil de usuarios en líneablock_online_users\fetcher (core)
Chip +NResto de usuarios en líneaConteo del fetcher
Contador"N usuarios" / "1 usuario"Strings onlineusers_count, onlineusers_countone
Calificador de periodo"Activos en los últimos N minutos" como title accesibleString onlineusers_period

Arquitectura

block_online_users no publica plantilla Mustache (su get_content() emite HTML fijo), así que no hay override normal posible. El contenido ya renderizado del bloque se reescribe con la clase theme_cdigital\output\online_users — misma técnica de DOMDocument que layout/mydashboard.php aplica al footer de block_badges — sobre la plantilla propia onlineusers_widget.mustache.

La decisión de qué usuarios pueden mostrarse permanece en el core: capacidad block/online_users:viewlist, preferencia de ocultar el estado en línea (dentro del SQL del fetcher) y user_can_view_profile(). El tema solo aporta presentación.

Degradación segura: cada paso de la reescritura verifica su ancla en el HTML del bloque (div.card-text.content, div.info, ul.list); si un release futuro de Moodle cambia ese markup, el widget vuelve a la apariencia core del bloque sin romper la página.

Archivos clave

ArchivoDescripción
theme/cdigital/classes/output/online_users.phpReescritura del contenido renderizado del bloque
theme/cdigital/templates/onlineusers_widget.mustachePlantilla del widget (avatares, chip, contador)
theme/cdigital/lang/{en,es}/theme_cdigital.phpStrings onlineusers_count, onlineusers_countone, onlineusers_period
theme/cdigital/scss/preset/cdigital.scssEstilos del widget dentro de .cdigital-activitypanel