diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c7727feffcf69da79aec3f1fd7dbc5efc982cd7..1129ad2bc99d35da7097054aa44f123029969d48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ Les ronds de couleur qui indiquent l'état d'achèvement des activité est modif Toute la barre de progression ne base ses informations que sur les activités qui ont un suivi d'achèvement. L'ancien système de suivi à paramétrer en parallèle du suivi d'achèvement n'est plus utilisé. -La largeur des labels contenant le nom des sections est fixée à 300px afin que les ronds à droite soient toujours alignés (but esthétique). La largeur correspond à un nom de section de 5 mots environ. +La largeur des labels contenant le nom des sections est fixée à 300px afin que les ronds à droite soient toujours alignés. La largeur correspond à un nom de section de 5 mots environ. ## Pourcentage de progression dans les entêtes de section @@ -33,7 +33,7 @@ Le pourcentage de progression dans les entêtes de section est juste et ne peut ### Tableau de suivi (enseignant) -A présent, toutes les activités sous suivi d'achèvement apparaissent dans le tableau et seulement celles-ci. La sélection des activités à suivre n'existe plus car elle était un doublon du suivi d'achèvement et avait une faible plus-value. Pour qu'une activité apparaisse il faut activer le suivi d'achèvement. +A présent, toutes les activités sous suivi d'achèvement apparaissent dans le tableau et seulement celles-ci. La sélection des activités à suivre n'existe plus car elle était un doublon du suivi d'achèvement natif de Moodle et avait une faible plus-value. Pour qu'une activité apparaisse il faut activer le suivi d'achèvement. Les activités cachées mais disponibles s'affichent forcément dans la barre de progression tant qu'elles sont sous suivi d'achèvement. Sur le principe, toute activité pour laquelle on a jugé bon d'activer le suivi d'achèvement est bien censée apparaître dans les tableau de suivi de l'étudiant et de l'enseignant. @@ -54,7 +54,7 @@ Les cases sont colorées selon l'état d'achèvement selon les mêmes règles qu La performance est améliorée, notamment lors de l'affichage d'un seul groupe (au lieu de tous les étudiants). -La sélection d'étudiants en vue d'envoyer un message est préservée en utilisant le filtre de section et le filtre de pourcentage d'achèvement, mais pas le filtre de groupe, ce qui n'aurait pas d'intérêt en principe de toutes façon. On peut donc appliquez différents filtres de section et de % d'achèvement en sélectionnant au fur et à mesure plusieurs étudiants puis leur envoyer un message. +La sélection d'étudiants en vue d'envoyer un message est préservée en utilisant le filtre de section et le filtre de pourcentage d'achèvement, mais pas le filtre de groupe. On peut donc appliquez différents filtres de section et de % d'achèvement en sélectionnant au fur et à mesure plusieurs étudiants puis leur envoyer un message. Le filtre sur le degré d'achèvement est plus précis. Il permet de sélectionner tous, = 100%, = 0%, < 25%, < 50%, < 100% et >= 50%, >= 25%, >= 0%. @@ -109,264 +109,40 @@ Correction du fait que le filtre affichait >=0 au lieu de >0. __MAJ en 3.7__ -## __à tester__ +## Suivi des étudiants -## __Bugs résolus__ +### Tableau de suivi -### Page principale du cours +Le téléchargement du tableau de suivi inclus les groupes même quand tout le tableau est téléchargé. Cette opération peut être longue (+ de 10 secondes), mais des mécanismes existent pour éviter que des responsables de groupes chargent la vue pour tous les groupes dans des cours volumineux (plusieurs centaines d'étudiants). -### 2 +Le texte explicatif du tableau à téléchargé est amélioré pour expliquer la notation (0, 1, 0.5 et 2). -Sur la page d'accueil du cours. +L'envoi de message à tous les étudiants sélectionné prend bien en compte le filtre et le groupe. -Warning: include(../../lib.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/moodle37/course/format/iena/entity/course_format_iena_cron_action.php on line 37 +### Message quand pas d'activité à suivre -Warning: include(): Failed opening '../../lib.php' for inclusion (include_path='/Applications/MAMP/htdocs/moodle37/lib/pear:.:/Applications/MAMP/bin/php/php7.2.10/lib/php') in /Applications/MAMP/htdocs/moodle37/course/format/iena/entity/course_format_iena_cron_action.php on line 37 +Lorsqu'une section ne contient pas d'activité suivies, afficher un message au lieu de la liste des étudiants avec aucune activité en colonne et 0% pour chaque. Il indique qu'aucune activité n'est suivie pour cette section. Le message indiquant qu'aucun étudiant n'est retourné par les filtres ne peut apparaître que s'il y a des activités suivies. -Warning: include(../../../../config.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/moodle37/course/format/iena/entity/course_format_iena_cron_action.php on line 38 +## Cron -Warning: include(): Failed opening '../../../../config.php' for inclusion (include_path='/Applications/MAMP/htdocs/moodle37/lib/pear:.:/Applications/MAMP/bin/php/php7.2.10/lib/php') in /Applications/MAMP/htdocs/moodle37/course/format/iena/entity/course_format_iena_cron_action.php on line 38 - -Les fichiers ne sont plus inclus car ils le sont dans course/view.php qui devrait se charger d'inclure à son tout le reste. - -[x] tester si les crons fonctionnent toujours et si oui, classer le bug. - -#### 3 - -Clef numsection manquante sur l'objet cours. Suppression de l'appel à cette clef car dans le format de cours topic ils utilisent 0 pour ne pas recréer de sections. Question : à quoi ça sert ? - -Test : créé un nouveau cours avec cette modification : OK -Test : changer le nombre de sections avec cette modification : OK - -Avant : course_create_sections_if_missing($course, range(0, $course->numsections)); -Après : course_create_sections_if_missing($course, 0); - -[x] Solved. - -#### 4 - -Typo numsections au lieu de $numsections dans une condition dont l'intérieur n'était pas utilisé. - -La condition elle-même est commentée et le $ est ajouté. - -[x] Solved. - -#### 5 - -Notice: Undefined offset: 0 in /Applications/MAMP/htdocs/moodle37/course/format/iena/renderer.php on line 788 - -Avant : $nameSection[$section] .= $this->section_title_without_link($thissection, $course); -Après : $nameSection[$section] = $this->section_title_without_link($thissection, $course); - -[x] Solved. - -ET - -Notice: Undefined offset: 0 in /Applications/MAMP/htdocs/moodle37/course/format/iena/renderer.php on line 796 - -Avant : $introSection[$section] .= $this->section_header($thissection, $course, false, 0, true); -Après : $introSection[$section] = $this->section_header($thissection, $course, false, 0, true); - -[x] Solved. - -#### 6 - -Notice: Undefined property: stdClass::$showdefaultsectionname in /Applications/MAMP/htdocs/moodle37/course/format/iena/renderer.php on line 102 - -Commenté : sert à rien et la property n'existe pas. Pas présent dans le code de base du format topic. - -[x] Solved. - -#### 7 - -Notice: Undefined property: stdClass::$sectionposition in /Applications/MAMP/htdocs/moodle37/course/format/iena/renderer.php on line 836 - -Property sectionposition non définie dans une condition qui de plus requiert isset d'une variable non instanciée (code commenté). Dans le test d'une condition pour echo justement cette variable non instanciée (=== NULL). - -La condition et l'echo qu'elle contient sont commentés. - -[x] Solved. - -#### 8 - -Notice: Undefined variable: completion_total in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_course_header.php on line 13 - -Instantiation d'une propriété de la classe view_course_header d'après une variable n'existant pas en paramètre du constructeur. Cette propriété n'est plus utilisée (code commenté). - -La création de la propriété devenue inutile est commentée. - -[x] Solved. - -#### 9 - -Notice: Undefined variable: USER in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_course_header.php on line 370 - -Ajout de la global $USER dans la méthode. - -[x] Solved. - -#### 10 - -Notice: Undefined variable: view in /Applications/MAMP/htdocs/moodle37/course/format/iena/renderer.php on line 413 - -Instanciation de la variable $view = ""; - -[x] Solved. - -#### 11 - -Notice: Trying to get property 'presence' of non-object in /Applications/MAMP/htdocs/moodle37/course/format/iena/renderer.php on line 511 - -ET - -Idem pour date_rendu juste en dessous. - -Ajout d'une condition que la variable contenant l'objet ne soit pas === false dans le cas où aucun paramètre n'a été réglé pour la section (date, modalité, notifications). Sinon ce n'est pas un objet, mais false. - -[x] Solved. - -#### 12 - -Notice: Undefined variable: date in /Applications/MAMP/htdocs/moodle37/course/format/iena/renderer.php on line 622 - -Après le correctif #11, une variable instanciée uniquement dans la condition où $param_section n'est pas false ne l'est plus quand il n'y a aucun paramétrage existant pour la section. - -Ajout d'un else à la condition pour que $date soit toujours instancié. - -[x] Solved. - -#### 18 - -Notice sur renderer.php $course->sectionposition la propriété n'existe pas. - -Commentaire du code qui semble n'injecter qu'un span vide inutile avec une classe below qui n'existe pas dans le format de base Topic. - -[x] Solved. - -### Page principale du cours sans achèvement activé dans le cours - -Si l'achèvement d'activité n'est pas activé dans le cours. - -Problème de variable nulle. - -[x] Solved. - -### Page de suivi des étudiants - -#### 13 - -Notice: Undefined variable: where in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 67 - -Warning: implode(): Invalid arguments passed in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 67 - -Notice: Undefined variable: where_params in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 68 - -Notice: Undefined variable: firstnamesort in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 70 - -Notice: Undefined variable: csv in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 71 - -Warning: Use of undefined constant COMPLETION_REPORT_PAGE - assumed 'COMPLETION_REPORT_PAGE' (this will throw an Error in a future version of PHP) in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 71 - -Notice: Undefined variable: csv in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 72 - -Notice: Undefined variable: start in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 72 -Non-numeric limitnum parameter detected: 'COMPLETION_REPORT_PAGE', did you pass the correct arguments? -line 1050 of /lib/dml/moodle_database.php: call to debugging() -line 1231 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->normalise_limit_from_num() -line 1200 of /lib/completionlib.php: call to mysqli_native_moodle_database->get_records_sql() -line 1232 of /lib/completionlib.php: call to completion_info->get_tracked_users() -line 73 of /course/format/iena/view/view_suivi_unit3.php: call to completion_info->get_progress_all() -line 102 of /course/format/iena/suivi_unit.php: call to require_once() - -Problèmes relatifs à la fonction copiée dans le suivi d'achèvement natif de MOODLE dont les paramètres sont ici inexistants. - -Remplacement des variables non instanciées par des valeur qui sont celles par défaut dans la fonction appellée : -- $where = '' -- $where_params = array() -- $pagesize = '', -- $start = '' - -Utilisation du classement 'u.lastname ASC, u.firstname ASC' au lieu d'utiliser une variable booléenne (non instanciée) pour choisir entre prénom/nom ou nom/prénom. - -[x] Solved. - -#### 14 - -Notice: Undefined index: filter in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_suivi_unit3.php on line 114 - -Modification de la prise en compte du paramètre get optionnel 'filter' pour 'all' si non isset et sinon la valeur du paramètre passé dans le but qu'il ne puisse jamais être NULL. La valeur est utilisée pour matcher la liste déroulante du filtre de % d'achèvement. - -[x] Solved. - -#### 1 - -NaN dans le tableau d'achèvement quand pas d'activité dans la section (division par 0). - -Le nombre d'activité est vérifié pour afficher 0 s'il n'y a pas d'activité. - -[x] Solved. - -#### 17 - -Bug : L'envoi d'un message à plusieurs étudiants ne l'envoie qu'au premier le nombre de fois qu'il y avait d'étudiants sélectionnés. - -Instanciation du message pour chaque utilisateur, sans quoi la propriété du userto n'est pas surécrite. Modification de la boucle : ok. - -[x] Solved. - -### Paramétrage d'une section (date, modalité, etc.) - -#### 15 - -Notice: Trying to get property 'date_rendu' of non-object in /Applications/MAMP/htdocs/moodle37/course/format/iena/view/view_param_section.php on line 85 - -Et autres erreur du même genre. - -Raison : pas d'enregistrement existant pour cette section, donc le formulaire est rempli sur la base d'un objet qui n'existe pas (===false). - -Des conditions sont ajoutées pour tester la présence de paramètres existants et agit en conséquence pour préremplir ou non le formulaire. - -Suppression de la partie inutilisée du formulaire qui était utilisée pour cacher la section avant une certaine date. - -[x] Solved. - -#### 16 - -Erreurs diverses lors du post du formulaire d'enregistrement des paramètres d'une section. - -Raison : index manquants dans le post lorsqu'ils ne sont pas définis dans le formulaire. - -Le paramètre hide ayant été supprimé, la valeur false est attribuée dans l'enregistrement. Par la suite, il faudra le supprimer des données en base. - -Les paramètres non définis sont testés avec un isset au lieu de ramener leur absence à false dans les conditions. - -Variable courseid non définie remplacée par $COURSE->id plus sécurisée. - -[x] Solved. - -## Améliorations - -### Suivi des étudiants - -#### Message quand pas d'activité à suivre - -[x] Lorsqu'une section ne contient pas d'activité suivies, afficher un message au lieu de la liste des étudiants avec aucune activité en colonne et 0% pour chaque. Il indique qu'aucune activité n'est suivie pour cette section. Le message indiquant qu'aucun étudiant n'est retourné par les filtres ne peut apparaître que s'il y a des activités suivies. - -### Cron - -#### Paramètres +### Paramètres [x] Changement des jours de `"*/1" à "*"` pour envoyer tous les jours. -#### Notifications +### Notifications Les messages ayant évolués en chat ou notifications, le cron est modifié pour envoyer des notifications. Cliquer sur le notification envoie directement vers la section du cours considérée. -### Page du cours +## Page du cours -#### Description du cours +### Description du cours Le lien pour afficher l'entête ne s'affiche plus s'il n'y a pas de description du cours. Les descriptions vides type `<p><br></p>` que les WYSIWYG de MOODLE aiment bien faire ne s'affichent pas non plus. +## Divers + +Nettoyage du code. + +Suppression de paramètres de cours inutiles. diff --git a/README.md b/README.md index 31272b25a001d4ede4b6513b6caa8ab1ec9e1319..02fc15510035c7a0b501c576f6d7fb46be83874f 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,10 @@ Pour tout autre question : <iena-contact@univ-lorraine.fr>. Other : <iena-contact@univ-lorraine.fr>. +## Installation + +Ce plugin _doit_ être installé au chemin suivant : `/course/format/iena`. + ## Activation et paramétrage Rendez-vous dans les paramètres (généraux) du cours et sélectionnez ce format de cours provisoirement nommé "Format de cours hybride". Une fois sélectionné, vous pourrez ajuster les paramètres propres à ce format de cours. @@ -34,17 +38,19 @@ Rendez-vous dans les paramètres (généraux) du cours et sélectionnez ce forma ### Présentation du cours -Le cours est présenté d'une manière plus structurée et claire permetant une meilleure lecture par l'étudiant. +Le cours est présenté d'une manière plus fortement structurée permetant une meilleure lecture par l'étudiant. -La description du cours est visible sur la page de cours. La description des sections est pliable / dépliable pour permettre d'y placer une description longue et informative d'une séance de cours sans pour autant gêner l'affichage de la page. +La description du cours est visible sur la page de cours. La description des sections est pliable / dépliable pour permettre d'y placer une description longue et informative d'une séance de cours sans pour autant gêner, allonger, l'affichage de la page. ### Suivi de progression -Requis : avoir activé le "suivi d'achèvement d'activité" de MOODLE dans les paramètres généraux du cours (et éventuellement dans l'administration). +Requis : avoir activé le "suivi d'achèvement d'activité" de MOODLE dans les paramètres généraux du cours (et éventuellement dans l'administration du site). + +Les ressources ou activités dont l'achèvement est paramétré (dans les paramètres de l'activité) apparaissent dans une barre de progression en haut de page pour l'étudiant. Des pourcentages de progression sont disponibles pour chaque section, et des éléments colorés suivant l'état d'achèvement permettent de connaître son avancement dans le cours. -Les ressources ou activité dont l'achèvement est paramétré (dans les paramètres de l'activité) apparaissent dans une barre de progression en haut de page pour l'étudiant. Des pourcentages de progression sont disponibles pour chaque section et des éléments colorés suivant l'état d'achèvement permettent de connaître son avancement dans le cours. +L'enseignant peut accéder à un tableau de suivi par section, par groupe. Le tableau est filtrable par pourcentage d'achèvement et téléchargeable. -L'enseignant peut accéder à un tableau de suivi par section, par groupe. Le tableau est filtrable par pourcentage d'achèvement et téléchargeable. Codes couleurs dans l'interface et notation dans le tableau téléchargé : +Codes couleurs dans l'interface et notation dans le tableau téléchargé : - Non fait : vert clair (0) - Fait (si activité non notée) : vert foncé (1) @@ -55,8 +61,15 @@ Le tableau de suivi permet de sélectionner des étudiants et de leur envoyer un ### Modalités d'enseignement -Un label présence / distance et une date peut être placé dans l'entête d'une section / séance de cours afin d'indiquer des changements de modalité d'enseignement dans des dispositifs hybride. Cette fonction est liée à un rappel automatique par mail. +Un label présence / distance et une date peut être placé dans l'entête d'une section / séance de cours afin d'indiquer des changements de modalité d'enseignement dans des dispositifs hybride. Cette fonction est liée à un rappel automatique par mail. La date et l'heure peuvent être spécifiées. ### Contact enseignant Un bouton "Enseignant" en haut à droite permet à l'étudiant d'avoir la liste des enseignants du cours et de les contacter facilement par messagerie interne. Par défaut, les messages interne de MOODLE reçus hors connexion sont transmis par mail. + +## Roadmap + +- Refactorisation du code. +- Mode édition intégré pour l'ajout de ressources et activités et modification de leurs paramètres. +- Evolution du design de la page pour la rapprocher de l'apparence du plugin _Parcours_ plus esthétique. +- Ne pas afficher les filtres par groupe quand il n'y en a pas. diff --git a/version.php b/version.php index 5ad24e8d69b29ef2d0eb9a61c01ff01196c13735..26a27644f2083b3c883f0db6102ac55aa13d7981 100644 --- a/version.php +++ b/version.php @@ -28,7 +28,7 @@ defined('MOODLE_INTERNAL') || die(); - $plugin->version = 2019010802; + $plugin->version = 2019062101; $plugin->requires = 2014111000; $plugin->component = 'format_iena'; $plugin->release = "1.0";