Forum
Le Forum est disponible en natif dans l'application mobile, ouvert depuis le lanceur
« Mes apps » (famille Communication & collaboration, comme sur
le portail web). Les discussions de l'établissement se lisent — et se poursuivent — depuis
le téléphone, avec les vraies catégories partagées à l'utilisateur (module forum).
Trois niveaux, comme sur le web
- Catégories — celles dont l'utilisateur est propriétaire ou qui lui sont partagées (directement ou via un de ses groupes), les plus actives en tête ;
- Sujets d'une catégorie — titre, aperçu de la dernière contribution (auteur + début du message), nombre de messages et date de dernière activité ;
- Fil de discussion — les messages du plus ancien au plus récent, chacun avec la pastille d'initiales de son auteur, sa date, et son contenu mis en forme (le HTML de l'éditeur ENT est rendu tel quel, images comprises). Les messages de l'utilisateur connecté sont signalés (« Vous », liseré à la couleur de l'instance).
Le retour matériel remonte d'un niveau ; chaque niveau se rafraîchit en tirant vers le bas.
Les captures viennent de l'établissement de référence collège (Morlaix) : la catégorie Vie de la classe 501 et son sujet Sortie au musée de Morlaix sont de vraies données de l'instance de recette, partagées aux groupes de la classe.
Répondre depuis le mobile
Un composeur est présent au bas du fil : la réponse est envoyée au sujet
(POST /forum/category/:id/subject/:sid/messages) puis le fil est rechargé. Le texte saisi
est converti en HTML simple (un paragraphe par ligne, caractères échappés) — mêmes règles
que la rédaction de la messagerie.
L'envoi peut être refusé par le serveur pour deux raisons légitimes, expliquées à
l'utilisateur : l'absence du droit contribuer sur la catégorie (category.contrib), ou
les horaires d'ouverture du forum (le module refuse les écritures hors plage, cf.
SpaceOpeningHours).
Parcours capturé en test e2e live —
apps/mobile/e2e/lanceur/parcours-forum.yaml: compte enseignant réel (lilit.upreti001). Le test saisit une réponse sans l'envoyer, pour ne rien écrire sur l'instance.
Données réelles
- Source : module
forum.GET /forum/categories, puisGET /forum/category/:id/subjectsetGET /forum/category/:id/subject/:sid/messages. Aucune donnée fabriquée. - Aperçu de la dernière contribution : le serveur renvoie les sujets avec leur
dernier message seulement (projection
$slice: -1) — l'application s'en sert directement, sans requête supplémentaire. - Droits : la lecture exige
category.read, la contributioncategory.contrib; le filtrage des catégories partagées est fait côté serveur, à partir des groupes de l'utilisateur. - Visibilité pilotée par les droits : le Forum n'apparaît dans « Mes apps » que si l'instance l'autorise à l'utilisateur.
Tests
- Jest : mapping pur — catégories, sujets (aperçu du dernier message, compteur), fil
trié du plus ancien au plus récent, marquage de mes messages, conversion du texte saisi
en HTML (
apps/mobile/__tests__/forum-mapping.test.ts). - e2e Maestro live :
apps/mobile/e2e/lanceur/parcours-forum.yaml(connexion enseignant → « Mes apps » → Forum → catégorie → sujet → fil → composeur). Le test n'envoie pas la réponse : il ne crée aucune donnée sur l'instance.