From b236ec46719bdddc4d97ec00fe69b67008f2a3cb Mon Sep 17 00:00:00 2001
From: Myriam Delaruelle <myriam.delaruelle@univ-lorraine.fr>
Date: Thu, 8 Feb 2024 15:00:34 +0100
Subject: [PATCH] =?UTF-8?q?Interface=20de=20param=C3=A9trage=20du=20tablea?=
 =?UTF-8?q?u=20de=20suivi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 classes/form/edittable_form.php               | 85 ++++---------------
 .../course_format_iena_table_option.php       | 26 ++++--
 lang/en/format_iena.php                       | 10 ++-
 lang/fr/format_iena.php                       | 10 ++-
 suivi_edit.php                                | 28 +-----
 tests/my_test.php                             | 34 ++++----
 6 files changed, 77 insertions(+), 116 deletions(-)

diff --git a/classes/form/edittable_form.php b/classes/form/edittable_form.php
index bc4274f..632547d 100644
--- a/classes/form/edittable_form.php
+++ b/classes/form/edittable_form.php
@@ -26,91 +26,40 @@ class edittable_form extends moodleform {
         $display_custom = $this->_customdata['display_custom'];
         //$sectioninfo = $this->_customdata['cs'];
 
-
-    
-        /// Prepare course and the editor
-
-        /*$mform->addElement('checkbox', 'display_groups', 'Afficher les groupes','Activer');
-
-        $mform->addHelpButton('display_groups', 'summary');
-
-        $mform->addElement('checkbox', 'display_custom', 'Activer la personnalisation', 'Activer');
-
-        $mform->addHelpButton('display_custom', 'summary');
-
-        $mform->addElement('checkbox', 'display_status', 'Activer le statut "En attente d\'évaluation de ma part"', 'Activer');
-
-        $mform->addHelpButton('display_status', 'summary');
-
-        $mform->addElement('checkbox', 'display_details', 'Afficher le détail des évaluation au clic', 'Activer');
-
-        $mform->addHelpButton('display_details', 'summary');*/
         $radioarray = array();
-        $radioarray[] = $mform->createElement('advcheckbox', 'display_groups', 'Activer');
-        $mform->addGroup($radioarray, 'groups', 'Afficher les groupes', array(' '), false);
-        $mform->addHelpButton('groups', 'modalite', 'format_iena');
+        $radioarray[] = $mform->createElement('advcheckbox', 'display_groups', get_string('enable'));
+        $mform->addGroup($radioarray, 'groups', get_string('display_groups', 'format_iena'), array(' '), false);
+        $mform->addHelpButton('groups', 'display_groups', 'format_iena');
         $mform->setDefault('display_groups', $display_groups['value']);
 
         $radioarray = array();
-        $radioarray[] = $mform->createElement('advcheckbox', 'display_custom', 'Activer');
-        $mform->addGroup($radioarray, 'custom', 'Activer la personnalisation', array(' '), false);
-        $mform->addHelpButton('custom', 'modalite', 'format_iena');
+        $radioarray[] = $mform->createElement('advcheckbox', 'display_custom', get_string('enable'));
+        $mform->addGroup($radioarray, 'custom', get_string('display_custom', 'format_iena'), array(' '), false);
+        $mform->addHelpButton('custom', 'display_custom', 'format_iena');
         $mform->setDefault('display_custom', $display_custom['value']);
 
         $radioarray = array();
-        $radioarray[] = $mform->createElement('advcheckbox', 'display_status', 'Activer');
-        $mform->addGroup($radioarray, 'status', 'Afficher les groupes', array(' '), false);
-        $mform->addHelpButton('status', 'modalite', 'format_iena');
+        $radioarray[] = $mform->createElement('advcheckbox', 'display_status', get_string('enable'));
+        $mform->addGroup($radioarray, 'status', get_string('display_status', 'format_iena'), array(' '), false);
+        $mform->addHelpButton('status', 'display_status', 'format_iena');
         $mform->setDefault('display_status', $display_status['value']);
 
         $radioarray = array();
-        $radioarray[] = $mform->createElement('advcheckbox', 'display_details', 'Activer');
-        $mform->addGroup($radioarray, 'details', 'Afficher les groupes', array(' '), false);
-        $mform->addHelpButton('details', 'modalite', 'format_iena');
+        $radioarray[] = $mform->createElement('advcheckbox', 'display_details', get_string('enable'));
+        $mform->addGroup($radioarray, 'details', get_string('display_details', 'format_iena'), array(' '), false);
+        $mform->addHelpButton('details', 'display_details', 'format_iena');
         $mform->setDefault('display_details', $display_details['value']);
     
-
-       
-        $this->add_action_buttons(true, "Enregistrer");
-        //$mform->_registerCancelButton('cancel');
-        //
-       /* $buttonarray=array();
-            $buttonarray[] = $mform->createElement('submit', 'submitbutton', get_string('savechanges'));
-            $buttonarray[] = $mform->createElement('cancel');
-            $mform->addGroup($buttonarray, 'buttonar', '', ' ', false);
-
-
-            */
-           $mform->addElement('hidden', 'courseid', $courseid);
-            $mform->setType('courseid', PARAM_INT);
+        $this->add_action_buttons(true, get_string('savechangesanddisplay'));
+        $mform->addElement('hidden', 'courseid', $courseid);
+        $mform->setType('courseid', PARAM_INT);
 
         $this->set_data($courseid);
     }
 
 
 
-
-
-  
-
-    /*function is_cancelled(){
-        $mform =& $this->_form;
-        error_log("on passe par là monsieur");
-        error_log($mform->isSubmitted());
-        error_log(" bla bla");
-        if ($mform->isSubmitted()){
-            error_log("submitted");
-            foreach ($mform->_cancelButtons as $cancelbutton){
-                if ($this->optional_param($cancelbutton, 0, PARAM_RAW)) {
-                    error_log("on va par là");
-                    return true;
-                }
-            }
-        }
-        return false;
-    }*/
-
-    function get_data() {
+    /*function get_data() {
         $mform =& $this->_form;
        
         if (!$this->is_cancelled() and $this->is_submitted() and $this->is_validated()) {
@@ -125,7 +74,7 @@ class edittable_form extends moodleform {
         } else {
             return NULL;
         }
-    }
+    }*/
 
 
 
diff --git a/classes/output/course_format_iena_table_option.php b/classes/output/course_format_iena_table_option.php
index 41dd240..b1206ba 100644
--- a/classes/output/course_format_iena_table_option.php
+++ b/classes/output/course_format_iena_table_option.php
@@ -25,7 +25,16 @@
 
 namespace format_iena\output;
 
+
+
 class course_format_iena_table_option {
+
+    const DISPLAY_GROUPS= "display_groups";
+    const DISPLAY_CUSTOM= "display_custom";
+    const DISPLAY_DETAILS= "display_details";
+    const DISPLAY_STATUS="display_status";
+
+
     /** @var boolean */
     
     /**
@@ -36,10 +45,10 @@ class course_format_iena_table_option {
     public $courseid;
     public $userid;
     public $listoptions=array(
-        "display_groups"=>array("value"=>0),
-        "display_custom"=>array("value"=>0),
-        "display_details"=>array("value"=>0),
-        "display_status"=>array("value"=>0)
+        self::DISPLAY_GROUPS=>array("value"=>0),
+        self::DISPLAY_CUSTOM=>array("value"=>0),
+        self::DISPLAY_DETAILS=>array("value"=>0),
+        self::DISPLAY_STATUS=>array("value"=>0)
     );
 
     
@@ -151,9 +160,12 @@ class course_format_iena_table_option {
     }
 
     public function check_options_state($arrayfrominput){
-        foreach($arrayfrominput as $optionname=>$optionvalue){
-            if(in_array($optionname, array_keys($this->listoptions))){
-                
+        foreach($this->listoptions as $option=>$arrayvalues){
+            if(isset($arrayvalues["id"])){
+                $this->save_property($option, $arrayfrominput->$option, $arrayvalues["id"]);
+            }
+            else if($arrayfrominput->$option != 0){
+                $this->save_property($option, $arrayfrominput->$option);
             }
         }
     }
diff --git a/lang/en/format_iena.php b/lang/en/format_iena.php
index ee7a346..2afd5a2 100644
--- a/lang/en/format_iena.php
+++ b/lang/en/format_iena.php
@@ -100,4 +100,12 @@ $string['message_dist_desc'] = "Configure default blended course message";
 $string['message_default_dist'] = "Default message distance learning";
 $string['formatenabled']="Course completion is disabled. You can enable it in the \"Course completion\" section here: ";
 $string['selectedActivities']="selected";
-$string['allActivities']="All";
\ No newline at end of file
+$string['allActivities']="All";
+$string['display_groups']="Display groups in a column";
+$string['display_custom']="Enable table customization ";
+$string['display_details']="Display assessments details on click";
+$string['display_status']="Enable status \"Waiting for an evaluation from me\"";
+$string['display_groups_help']="Add a column to the table which display the student's group";
+$string['display_custom_help']="This option enables the table customization and allows you to add colors to certain activities (just for you), or to define milestones (for all teachers in the course)";
+$string['display_details_help']="this option allows you to have the details of an assessment on click: grade, date of evaluation, evaluator, etc.";
+$string['display_status_help']="This option adds a new status \"Waiting for an evaluation from me\" which allows you to identify which activities have been completed by the student and require action from the teacher";
\ No newline at end of file
diff --git a/lang/fr/format_iena.php b/lang/fr/format_iena.php
index 3222e08..736030a 100644
--- a/lang/fr/format_iena.php
+++ b/lang/fr/format_iena.php
@@ -100,4 +100,12 @@ $string['message_dist_desc'] = "Paramétrez le message qui sera envoyé par déf
 $string['message_default_dist'] = "Entrez ici le message qui sera envoyé à vos étudiants";
 $string['formatenabled']="L'achèvement de cours n'est pas activé. Vous pouvez l'activer dans la section \"Achèvement de cours\" des paramètres du cours : ";
 $string['selectedActivities']="sélectionnée(s)";
-$string['allActivities']="Toutes";
\ No newline at end of file
+$string['allActivities']="Toutes";
+$string['display_groups']="Afficher les groupes dans une colonne du tableau";
+$string['display_custom']="Activer la personnalisation du tableau";
+$string['display_details']="Afficher les détails d'une activité évaluée au clic";
+$string['display_status']="Activer le statut \"En attente d'évaluation de ma part\"";
+$string['display_groups_help']="Cette option ajoute une colonne dans le tableau contenant le nom du groupe de l'étudiant.";
+$string['display_custom_help']="Cette option active la personnalisation du tableau et permet d'ajouter des couleurs à certaines activités (personnel), ou de définir des jalons (pour tous les enseignants du cours)";
+$string['display_details_help']="Cette option permet à l'enseignant d'avoir les détails d'une évaluation au clic : note, date de l'évaluation, évaluateur...";
+$string['display_status_help']="Cette option ajoute un statut 'En attente d'évaluation de ma part qui permet de repérer quelles activités ont été complétées par l'étudiant et nécessite une action de la part de l'enseignant";
\ No newline at end of file
diff --git a/suivi_edit.php b/suivi_edit.php
index 8f3cb72..09f72f6 100644
--- a/suivi_edit.php
+++ b/suivi_edit.php
@@ -93,7 +93,7 @@ if (!has_capability('course/iena:suivi', $context = context_course::instance($co
 
 
     init_page($course, $PAGE);
-    echo $OUTPUT->header();
+    
     $data = [];
     $obj=new \format_iena\output\course_format_iena_table_option();
     $obj->setCourseid($courseid);
@@ -108,30 +108,10 @@ if (!has_capability('course/iena:suivi', $context = context_course::instance($co
     if ($mform->is_cancelled()) {
         redirect($returnurl);
     } else if ($fromform = $mform->get_data()) {
-        var_dump($fromform);
-        var_dump($listoptions);
-        foreach($listoptions as $property => $arrayvalue){
-            //fromform : récupère l'input de l'utilisateur
-            //Attention : si on décoche une option elle n'est plus dans dans fromform
-            //Si l'id existe dans arraycustom form et qu'il n'y a plus dans from form alors on va changer
-            //Si la propriété est bien dans fromform : on vient de cocher l'option
-            if(isset($fromform->$property)){
-                if(isset($arraycustomform[$property]['id'])){
-                    $request=$obj->save_property($property, $fromform->$property, $arraycustomform[$property]['id']);
-                }
-                else{
-                    $request=$obj->save_property($property, $fromform->$property);
-                }
-                
-            }
-            //si elle n'est pas dans fromform MAIS qu'il y a un id dans arraycustom alors ça veut dire qu'elle a été décochée
-        
-        }
-
-        //on stocke en BDD les nouvelles données
-       //redirect($returnurl);
+        $obj->check_options_state($fromform);
+        redirect($returnurl);
     }
-
+    echo $OUTPUT->header();
 
     $data["form"]=$mform->render();
     $renderer = $PAGE->get_renderer('format_iena');
diff --git a/tests/my_test.php b/tests/my_test.php
index c39d7df..3402dc8 100644
--- a/tests/my_test.php
+++ b/tests/my_test.php
@@ -45,8 +45,8 @@ class my_test extends \advanced_testcase {
          // Create a set of options for the table.
          
         foreach($data as $x => $i){
-            $obj=new \format_iena\output\course_format_iena_table_option($i["option"], $i["value"], $i["courseid"], $i["userid"]);
-            $arrayoptionsid=$obj->create_array_option();
+            $obj=new \format_iena\output\course_format_iena_table_option(null, 0, $i["courseid"], $i["userid"]);
+            $arrayoptionsid=$obj->save_property($i["option"], $i["value"]);
         }
         $arrayoptions=$obj->get_options_by_course_id($course1->id);
         
@@ -71,7 +71,7 @@ class my_test extends \advanced_testcase {
 
 
         $data=[
-            "option"=>"display_groups",
+            "option"=>\format_iena\output\course_format_iena_table_option::DISPLAY_GROUPS,
             "value"=>"1",
             "courseid"=>"1",
             "userid"=>"1",
@@ -102,14 +102,15 @@ class my_test extends \advanced_testcase {
 
         $olddebug = $CFG->debug;
         $CFG->debug = 0;
+        $obj=new \format_iena\output\course_format_iena_table_option();
         $data=[
-            "option"=>"display_groups",
+            "option"=>$obj::DISPLAY_GROUPS,
             "value"=>"1",
             "courseid"=>"1",
             "userid"=>"1",
         ];
          // Create a set of options for the table.
-        $obj=new \format_iena\output\course_format_iena_table_option();
+       
         
         $obj->setCourseId($data["courseid"]);
         $obj->setUserId($data["userid"]);
@@ -125,7 +126,7 @@ class my_test extends \advanced_testcase {
         $this->assertNull($arrayoptions->timemodified);
 
         $arrayoptionsid2=$obj->save_property($data["option"], 0, $arrayoptionsid);
-       // fwrite(STDERR, print_r($arrayoptionsid2, TRUE));
+  
         $arrayoptionsupdated = $DB->get_record('format_iena_options', ['id' => $arrayoptionsid]);
 
         $this->assertEquals($data["option"], $arrayoptionsupdated->optionname);
@@ -147,8 +148,9 @@ class my_test extends \advanced_testcase {
 
         $olddebug = $CFG->debug;
         $CFG->debug = 0;
+        $obj=new \format_iena\output\course_format_iena_table_option();
         $data=[
-            "option"=>"display_groups",
+            "option"=>$obj::DISPLAY_GROUPS,
             "value"=>"1",
             "courseid"=>"1",
             "userid"=>"1",
@@ -160,7 +162,7 @@ class my_test extends \advanced_testcase {
             "userid"=>"1",
         ];
          // Create a set of options for the table.
-        $obj=new \format_iena\output\course_format_iena_table_option();
+       
         
         $obj->setCourseId($data["courseid"]);
         $obj->setUserId($data["userid"]);
@@ -174,8 +176,8 @@ class my_test extends \advanced_testcase {
 
 
         $this->assertCount(2, $arrayrequest);
-        $this->assertEquals($arrayoptions["display_groups"]["id"], $idoptiongroup);
-        $this->assertEquals($arrayoptions["display_custom"]["id"], $idoptioncustom);
+        $this->assertEquals($arrayoptions[$obj::DISPLAY_GROUPS]["id"], $idoptiongroup);
+        $this->assertEquals($arrayoptions[$obj::DISPLAY_CUSTOM]["id"], $idoptioncustom);
         
 
 
@@ -185,8 +187,8 @@ class my_test extends \advanced_testcase {
         
         // Instantiate a form to submit.
         $values=[
-            "display_groups"=>1,
-            "display_custom"=>0
+            $obj::DISPLAY_GROUPS=>1,
+            $obj::DISPLAY_CUSTOM=>0
         ];
 
         // Fetch the data and then mock the submission of that data.
@@ -199,11 +201,13 @@ class my_test extends \advanced_testcase {
         $actualfromform = $mform->get_data();
         $obj->check_options_state($actualfromform);
         $arrayrequest=$DB->get_records('format_iena_options',["courseid"=>1, "optionvalue"=>1]);
+        $arrayrequestall=$DB->get_records('format_iena_options',["courseid"=>1]);
 
-        fwrite(STDERR, print_r($arrayrequest, TRUE));
         $this->assertCount(1, $arrayrequest);
-        $this->assertEquals($arrayrequest[$idoptiongroup]->optionname, "display_groups");
-        //fwrite(STDERR, print_r($actualfromform, TRUE));
+        $this->assertEquals($arrayrequest[$idoptiongroup]->optionname, $obj::DISPLAY_GROUPS);
+        $this->assertCount(2, $arrayrequestall);
+        $this->assertEquals($arrayrequestall[$idoptioncustom]->optionname, $obj::DISPLAY_CUSTOM);
+        $this->assertEquals($arrayrequestall[$idoptioncustom]->optionvalue, $values[$obj::DISPLAY_CUSTOM]);
         $CFG->debug = $olddebug;
         
     }
-- 
GitLab