MDL-10738 finished hiding support in grade and item edit page
authorskodak <skodak>
Mon, 6 Aug 2007 20:51:09 +0000 (20:51 +0000)
committerskodak <skodak>
Mon, 6 Aug 2007 20:51:09 +0000 (20:51 +0000)
grade/edit/tree/grade.php
grade/edit/tree/grade_form.php
grade/edit/tree/item.php
grade/edit/tree/item_form.php
grade/edit/tree/outcomeitem.php
grade/edit/tree/outcomeitem_form.php
lang/en_utf8/grades.php

index 3b5fd65e376aa0e693612723e2a206951169a92d..63a885878e38e647ebca07d88108f37427b840d4 100644 (file)
@@ -52,7 +52,7 @@ if (!$grade_item = grade_item::fetch(array('id'=>$itemid, 'courseid'=>$courseid)
 
 $mform = new edit_grade_form(null, array('grade_item'=>$grade_item, 'gpr'=>$gpr));
 
-if ($grade = get_record('grade_grades', 'itemid', $id, 'userid', $userid)) {
+if ($grade = get_record('grade_grades', 'itemid', $grade_item->id, 'userid', $userid)) {
     if ($grade_text = get_record('grade_grades_text', 'gradeid', $grade->id)) {
         // always clean existing feedback - grading should not have XSS risk
         if (can_use_html_editor()) {
@@ -68,9 +68,16 @@ if ($grade = get_record('grade_grades', 'itemid', $id, 'userid', $userid)) {
         }
     }
 
-    $grade->locked     = $grade->locked     > 0 ? 1:0;
-    $grade->overridden = $grade->overridden > 0 ? 1:0;
-    $grade->excluded   = $grade->excluded   > 0 ? 1:0;
+    $grade->locked      = $grade->locked     > 0 ? 1:0;
+    $grade->overridden  = $grade->overridden > 0 ? 1:0;
+    $grade->excluded    = $grade->excluded   > 0 ? 1:0;
+
+    if ($grade->hidden > 1) {
+        $grade->hiddenuntil = $grade->hidden;
+        $grade->hidden = 0;
+    } else {
+        $grade->hiddenuntil = 0;
+    }
 
     $mform->set_data($grade);
 
@@ -90,7 +97,15 @@ if ($mform->is_cancelled()) {
 
     $grade_grade = grade_grade::fetch(array('userid'=>$data->userid, 'itemid'=>$grade_item->id));
 
-    $grade_grade->set_hidden($data->hidden); // TODO: this is wrong - hidden might be a data to hide until
+    if (empty($data->hidden)) {
+        if (empty($data->hiddenuntil)) {
+            $grade_grade->set_hidden(0);
+        } else {
+            $grade_grade->set_hidden($data->hiddenuntil);
+        }
+    } else {
+        $grade_grade->set_hidden(1);
+    }
 
     // ignore overridden flag when changing final grade
     if ($old_grade_grade->finalgrade == $grade_grade->finalgrade) {
index ad6c1338670b4a3542cbed9fcc813ba0e3c1aa79..b1cd0b197de18584ac6248424bf81500b011e189 100755 (executable)
@@ -37,10 +37,15 @@ class edit_grade_form extends moodleform {
             $mform->addElement('select', 'finalgrade', get_string('finalgrade', 'grades'), $scaleopt);
         }
 
-        $mform->addElement('advcheckbox', 'hidden', get_string('hidden', 'grades'));
         $mform->addElement('advcheckbox', 'overridden', get_string('overridden', 'grades'));
         $mform->addElement('advcheckbox', 'excluded', get_string('excluded', 'grades'));
 
+        /// hiding
+        /// advcheckbox is not compatible with disabledIf !!
+        $mform->addElement('checkbox', 'hidden', get_string('hidden', 'grades'));
+        $mform->addElement('date_time_selector', 'hiddenuntil', get_string('hiddeuntil', 'grades'), array('optional'=>true));
+        $mform->disabledIf('hiddenuntil', 'hidden', 'checked');
+
         /// locking
         $mform->addElement('advcheckbox', 'locked', get_string('locked', 'grades'));
         $mform->addElement('date_time_selector', 'locktime', get_string('locktime', 'grades'), array('optional'=>true));
index 9c6ff88d903cd989e43e24e7ba69bf18223f5091..6156deedfa36eae5f882f83bd700f5cac20fc013 100644 (file)
@@ -33,6 +33,13 @@ if ($item = get_record('grade_items', 'id', $id, 'courseid', $course->id)) {
         redirect($gpr->add_url_params($url));
     }
 
+    if ($item->hidden > 1) {
+        $item->hiddenuntil = $item->hidden;
+        $item->hidden = 0;
+    } else {
+        $item->hiddenuntil = 0;
+    }
+
     // Get Item preferences
     $item->pref_gradedisplaytype = grade_report::get_pref('gradedisplaytype', $id);
     $item->pref_decimalpoints    = grade_report::get_pref('decimalpoints', $id);
@@ -46,6 +53,11 @@ if ($data = $mform->get_data(false)) {
         $data->calculation = grade_item::normalize_formula($data->calculation, $course->id);
     }
 
+    $hidden      = empty($data->hidden) ? 0: $data->hidden;
+    $hiddenuntil = empty($data->hiddenuntil) ? 0: $data->hiddenuntil;
+    unset($data->hidden);
+    unset($data->hiddenuntil);
+
     $grade_item = new grade_item(array('id'=>$id, 'courseid'=>$courseid));
     grade_item::set_properties($grade_item, $data);
 
@@ -59,6 +71,13 @@ if ($data = $mform->get_data(false)) {
         $grade_item->update();
     }
 
+    // update hiding flag (in grades too if needed)
+    if (empty($hidden)) {
+        $grade_item->set_hidden($hiddenuntil);
+    } else {
+        $grade_item->set_hidden(1);
+    }
+
     // Handle user preferences
     if (isset($data->pref_gradedisplaytype)) {
         if (!grade_report::set_pref('gradedisplaytype', $data->pref_gradedisplaytype, $grade_item->id)) {
index bb09d4115535c3b3e8c8875a5c0a0becdb086394..7243ab34c254f32ab96b5d82340f8ab7333409a5 100644 (file)
@@ -73,6 +73,13 @@ class edit_item_form extends moodleform {
         $mform->setHelpButton('aggregationcoef', array(false, get_string('aggregationcoef', 'grades'), false, true, false, 'aggregationcoefhelp'));
         $mform->setDefault('aggregationcoef', 0.0);
 
+        /// hiding
+        /// advcheckbox is not compatible with disabledIf !!
+        $mform->addElement('checkbox', 'hidden', get_string('hidden', 'grades'));
+        $mform->addElement('date_time_selector', 'hiddenuntil', get_string('hiddenuntil', 'grades'), array('optional'=>true));
+        $mform->disabledIf('hiddenuntil', 'hidden', 'checked');
+
+        /// locking
         $mform->addElement('advcheckbox', 'locked', get_string('locked', 'grades'));
         $mform->setHelpButton('locked', array(false, get_string('locked', 'grades'), false, true, false, 'lockedhelp'));
 
index 8101f2e52ffa778a745d39849942f616f1e2d906..b22fadbf4d88e43fbe703b4d0d7ed42216a26ff7 100644 (file)
@@ -34,6 +34,13 @@ if ($item = get_record('grade_items', 'id', $id, 'courseid', $course->id)) {
         redirect($gpr->add_url_params($url));
     }
 
+    if ($item->hidden > 1) {
+        $item->hiddenuntil = $item->hidden;
+        $item->hidden = 0;
+    } else {
+        $item->hiddenuntil = 0;
+    }
+
     $item->calculation = grade_item::denormalize_formula($item->calculation, $course->id);
 
     if ($item->itemtype == 'mod') {
@@ -51,6 +58,11 @@ if ($data = $mform->get_data(false)) {
         $data->calculation = grade_item::normalize_formula($data->calculation, $course->id);
     }
 
+    $hidden      = empty($data->hidden) ? 0: $data->hidden;
+    $hiddenuntil = empty($data->hiddenuntil) ? 0: $data->hiddenuntil;
+    unset($data->hidden);
+    unset($data->hiddenuntil);
+
     $grade_item = new grade_item(array('id'=>$id, 'courseid'=>$courseid));
     grade_item::set_properties($grade_item, $data);
 
@@ -111,6 +123,13 @@ if ($data = $mform->get_data(false)) {
         $grade_item->update();
     }
 
+    // update hiding flag (in grades too if needed)
+    if (empty($hidden)) {
+        $grade_item->set_hidden($hiddenuntil);
+    } else {
+        $grade_item->set_hidden(1);
+    }
+
     redirect($returnurl);
 }
 
index 8d2771c53670ae1e9df0b43c74a2912f1558602a..05f07c5fe24d3f0e5ece304d8f771f6bf3a3a98e 100644 (file)
@@ -43,8 +43,14 @@ class edit_outcomeitem_form extends moodleform {
         $mform->addElement('text', 'aggregationcoef', get_string('aggregationcoef', 'grades'));
         $mform->setDefault('aggregationcoef', 0.0);
 
-        $mform->addElement('advcheckbox', 'locked', get_string('locked', 'grades'));
+        /// hiding
+        /// advcheckbox is not compatible with disabledIf !!
+        $mform->addElement('checkbox', 'hidden', get_string('hidden', 'grades'));
+        $mform->addElement('date_time_selector', 'hiddenuntil', get_string('hiddeuntil', 'grades'), array('optional'=>true));
+        $mform->disabledIf('hiddenuntil', 'hidden', 'checked');
 
+        //locking
+        $mform->addElement('advcheckbox', 'locked', get_string('locked', 'grades'));
         $mform->addElement('date_time_selector', 'locktime', get_string('locktime', 'grades'), array('optional'=>true));
 
 /// hidden params
index 216c92162f67976a987d64ceff226eff383e5003..ae9cfbff3a9b90009406dbcfd22111dbdd8b1027 100644 (file)
@@ -165,6 +165,7 @@ $string['grades'] = 'Grades';
 $string['gradetype'] = 'Grade type';
 $string['gradeview'] = 'View Grade';
 $string['gradeweighthelp'] = 'Grade Weight Help';
+$string['hiddenuntil'] = 'Hidden until';
 $string['hideadvanced'] = 'Hide Advanced Features';
 $string['hidecalculations'] = 'Hide calculations';
 $string['hidecategory'] = 'Hidden';