Widget "Usuarios en línea" del Área personal (/my/)
- Impacto — Tema:
classes/output/online_users.php,templates/onlineusers_widget.mustache, stringsonlineusers_*, 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.
| Elemento | Contenido | Fuente del dato |
|---|---|---|
| Avatares (máx. 3) | Fotos de perfil de usuarios en línea | block_online_users\fetcher (core) |
Chip +N | Resto de usuarios en línea | Conteo del fetcher |
| Contador | "N usuarios" / "1 usuario" | Strings onlineusers_count, onlineusers_countone |
| Calificador de periodo | "Activos en los últimos N minutos" como title accesible | String 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
| Archivo | Descripción |
|---|---|
theme/cdigital/classes/output/online_users.php | Reescritura del contenido renderizado del bloque |
theme/cdigital/templates/onlineusers_widget.mustache | Plantilla del widget (avatares, chip, contador) |
theme/cdigital/lang/{en,es}/theme_cdigital.php | Strings onlineusers_count, onlineusers_countone, onlineusers_period |
theme/cdigital/scss/preset/cdigital.scss | Estilos del widget dentro de .cdigital-activitypanel |