From 51ef7b4c6feddadb27e355e3b42f0660b9fae655 Mon Sep 17 00:00:00 2001
From: Myriam Delaruelle <myriam.delaruelle@univ-lorraine.fr>
Date: Thu, 25 Apr 2024 14:06:24 +0200
Subject: [PATCH] Option affichage du groupe dans le tableau de suivi

---
 amd/build/suivi.js             | 15 -----------
 suivi_unit.php                 | 46 +++++++++++++++++-----------------
 templates/suivi-table.mustache |  3 ++-
 templates/suivi.mustache       |  4 +--
 4 files changed, 27 insertions(+), 41 deletions(-)

diff --git a/amd/build/suivi.js b/amd/build/suivi.js
index 0c916eb..2f3bc67 100644
--- a/amd/build/suivi.js
+++ b/amd/build/suivi.js
@@ -502,21 +502,6 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 
     //On va recharger dynamiquement les options donc on doit recréer les événements à chaque fois qu'on change de section
     function registerActivityFilter(){
-        /*$("input[type='checkbox'].justone").change(function(){
-            var a = $("input[type='checkbox'].justone");
-            if(a.length == a.filter(":checked").length){
-                console.log("on va sélectionner tout du coup");
-                $('.selectall').prop('checked', true);
-                $(".select-text").html(' Deselect');
-            }
-            else {
-                console.log("on va décocher le sélectionner tout");
-                $('.selectall').prop('checked', false);
-                $(".select-text").html(' Select');
-            }
-            displayTotalActivitiesFilter();
-        });*/
-
         $("input[type='checkbox'].justone").on('click', function(e){
             e.stopPropagation();
              var a = $("input[type='checkbox'].justone");
diff --git a/suivi_unit.php b/suivi_unit.php
index 3d4ffd4..f9f72d9 100644
--- a/suivi_unit.php
+++ b/suivi_unit.php
@@ -54,7 +54,7 @@ function init_page($course) {
 
 }
 
-function get_groups($context, $activegroupid, $progress, $groups) {
+function get_groups($context, $activegroupid, $groups) {
     global $USER, $COURSE;
     // Groupe du GET provenant du sélecteur de la page du cours
     // ou premier groupe de l'utilisateur, ou groupe 0 (tous les groupes).
@@ -90,7 +90,8 @@ function get_groups($context, $activegroupid, $progress, $groups) {
         }
     }
 
-    $groupsall->groups = $othergroups;
+
+    $groupsall->othergroups = $othergroups;
     $groupsall->current_user_groups = $currentusergroups;
     return $groupsall;
 
@@ -116,7 +117,12 @@ function format_progress($progress, $modules, $groups, $activegroupid, $activese
             $progressstudent->groups = "";
             foreach ($groups as $group) {
                 if (in_array($progressstudent->id, $group->members)) {
-                    $progressstudent->groups .= $group->name . " ";
+                    if(empty( $progressstudent->groups)){
+                        $progressstudent->groups .= $group->name . "";
+                    }
+                    else{
+                        $progressstudent->groups .= ", " .$group->name . " ";
+                    }
                 }
             }
         //}
@@ -182,7 +188,7 @@ function get_sections($activesectionid) {
     return $sections;
 }
 
-function set_filters($data, $filters, $symbols, $sections, $groups, $currentusergroups, $activegroupname, $activesectionid) {
+function set_filters($data, $filters, $symbols, $sections, $groups, $currentusergroups, $othergroups, $activesectionid) {
     if (isset($_GET['filter'])) {
         $filtercomplete = $_GET['filter'];
         $symbols[mb_substr($filtercomplete, 0, 1, 'UTF-8')]->selected = "selected";
@@ -195,7 +201,9 @@ function set_filters($data, $filters, $symbols, $sections, $groups, $currentuser
     $data['filters'] = array_values($filters);
     $data['symbols'] = array_values($symbols);
     $data["sections"] = $sections;
-    $data["groups"] = array_values($groups);
+    //Ici on récupère les groupes "autres" auxquels je n'appartiens pas
+    //$data["groups"] = array_values($groups);
+    $data["othergroups"]=$othergroups;
     $data['current_user_groups'] = $currentusergroups;
 
     if ($activegroupname == "") {
@@ -204,11 +212,11 @@ function set_filters($data, $filters, $symbols, $sections, $groups, $currentuser
 
     $data['data'] = array();
     $data['data']["sections"] = $sections;
-    $data['data']["groups"] = array_values($groups);
+    //$data['data']["groups"] = array_values($groups);
     $data['data']['current_user_groups'] = $currentusergroups;
-    $data['data']['active_group_name'] = $activegroupname;
     $data['data']['active_section_id'] = $activesectionid;
 
+
     return $data;
 }
 
@@ -338,15 +346,11 @@ if (isset($_GET['sectionid'])) {
     $activesectionid = $_GET['sectionid'];
 }
 
-if ($activegroupid == 0) {
-    // On récupère les ids des membres parce que dans l'excel on veut savoir qui appartient à quel groupe.
-    $groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', true);
-} else {
-    // On ne récupère pas les ids des membres.
-    $groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', true);
-}
+// On récupère les ids des membres parce que dans l'excel on veut savoir qui appartient à quel groupe.
+$groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', true);
+
 
-// If a post is sent trought the page.
+// If a post is sent trought the page --> Si on change les filtres, le template est appelé en JS
 if (isset($_POST['action']) && !empty($_POST['action'])) {
     // Si on change les filtres.
     $data = [];
@@ -359,6 +363,7 @@ if (isset($_POST['action']) && !empty($_POST['action'])) {
     init_page($course, $PAGE);
     echo $OUTPUT->header();
     $data = [];
+    //Si la complétion du cours n'est pas activée on redirige l'enseignant vers l'interface pour l'activer
     if(!$COURSE->enablecompletion){
         $data["completion_enabled"]=0;
         $data["link_enable"]= "<a href='".$CFG->wwwroot . '/course/edit.php?id=' . $courseid."'>sur ce lien</a>";
@@ -370,20 +375,16 @@ if (isset($_POST['action']) && !empty($_POST['action'])) {
         
 
         $modules = get_activities($completion, $activesectionid);
-        $groupsall = get_groups($context, $activegroupid, $progress, $groups);
+        //Répartit les groupes en "mes groupes" et "les groupes dont je ne fais pas partie"
+        $groupsall = get_groups($context, $activegroupid, $groups);
 
         if (isset($groupsall->current_user_groups) && !empty($groupsall->current_user_groups)) {
             $currentusergroups = $groupsall->current_user_groups;
         }
-        ini_set('xdebug.var_display_max_depth', 10);
-ini_set('xdebug.var_display_max_children', 256);
-ini_set('xdebug.var_display_max_data', 1024);
-        var_dump($groups);
-        var_dump($groupsall);
         //$groups = $groupsall->groups;
         $sections = get_sections($activesectionid);
 
-        $data = set_filters($data, $filters, $symbols, $sections, $groups, $currentusergroups, $activegroupname, $activesectionid);
+        $data = set_filters($data, $filters, $symbols, $sections, array_values($groups), $groupsall->current_user_groups, $groupsall->othergroups, $activesectionid);
         $data = set_data($data, $modules, $progress, $groups, $activegroupid, $activesectionid, $listoptions);
 
         if (isset($_GET["msg_success"])) {
@@ -391,7 +392,6 @@ ini_set('xdebug.var_display_max_data', 1024);
             $data["msg_success"] = $msg;
         }
 }
-    
     $renderer = $PAGE->get_renderer('format_iena');
     $renderer->display_completion($data);
     echo $OUTPUT->footer();
diff --git a/templates/suivi-table.mustache b/templates/suivi-table.mustache
index 4696ff1..49ba5a0 100644
--- a/templates/suivi-table.mustache
+++ b/templates/suivi-table.mustache
@@ -45,7 +45,8 @@
 								
 							</td>
 							{{#display_groups}}
-							<td>{{groups}}</td>
+
+							<td class="third-column-iena row-header">{{groups}}</td>
 							{{/display_groups}}
 
 	
diff --git a/templates/suivi.mustache b/templates/suivi.mustache
index 8096663..0ad29ce 100644
--- a/templates/suivi.mustache
+++ b/templates/suivi.mustache
@@ -85,10 +85,10 @@
 			</optgroup>
 			
 			<optgroup label="Autres groupes">
-				{{#groups}}
+				{{#othergroups}}
 					<option {{selected}} value='{{id}}'>{{name}}</option>";
 
-				{{/groups}}
+				{{/othergroups}}
 			</optgroup>
 			
 			
-- 
GitLab