$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()) {
}
}
- $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);
$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) {
$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));
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);
$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);
$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)) {
$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'));
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') {
$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);
$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);
}
$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
$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';