From 15a511597edf86a5cb74b6e1a50570a472a91cae Mon Sep 17 00:00:00 2001 From: skodak Date: Mon, 6 Aug 2007 20:51:09 +0000 Subject: [PATCH] MDL-10738 finished hiding support in grade and item edit page --- grade/edit/tree/grade.php | 25 ++++++++++++++++++++----- grade/edit/tree/grade_form.php | 7 ++++++- grade/edit/tree/item.php | 19 +++++++++++++++++++ grade/edit/tree/item_form.php | 7 +++++++ grade/edit/tree/outcomeitem.php | 19 +++++++++++++++++++ grade/edit/tree/outcomeitem_form.php | 8 +++++++- lang/en_utf8/grades.php | 1 + 7 files changed, 79 insertions(+), 7 deletions(-) diff --git a/grade/edit/tree/grade.php b/grade/edit/tree/grade.php index 3b5fd65e37..63a885878e 100644 --- a/grade/edit/tree/grade.php +++ b/grade/edit/tree/grade.php @@ -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) { diff --git a/grade/edit/tree/grade_form.php b/grade/edit/tree/grade_form.php index ad6c133867..b1cd0b197d 100755 --- a/grade/edit/tree/grade_form.php +++ b/grade/edit/tree/grade_form.php @@ -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)); diff --git a/grade/edit/tree/item.php b/grade/edit/tree/item.php index 9c6ff88d90..6156deedfa 100644 --- a/grade/edit/tree/item.php +++ b/grade/edit/tree/item.php @@ -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)) { diff --git a/grade/edit/tree/item_form.php b/grade/edit/tree/item_form.php index bb09d41155..7243ab34c2 100644 --- a/grade/edit/tree/item_form.php +++ b/grade/edit/tree/item_form.php @@ -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')); diff --git a/grade/edit/tree/outcomeitem.php b/grade/edit/tree/outcomeitem.php index 8101f2e52f..b22fadbf4d 100644 --- a/grade/edit/tree/outcomeitem.php +++ b/grade/edit/tree/outcomeitem.php @@ -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); } diff --git a/grade/edit/tree/outcomeitem_form.php b/grade/edit/tree/outcomeitem_form.php index 8d2771c536..05f07c5fe2 100644 --- a/grade/edit/tree/outcomeitem_form.php +++ b/grade/edit/tree/outcomeitem_form.php @@ -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 diff --git a/lang/en_utf8/grades.php b/lang/en_utf8/grades.php index 216c92162f..ae9cfbff3a 100644 --- a/lang/en_utf8/grades.php +++ b/lang/en_utf8/grades.php @@ -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'; -- 2.39.5