$mform->addElement('text', $gradelettername, $gradeletterstring);
$mform->setHelpButton($gradelettername, array(false, $gradeletterstring, false, true, false, $gradeletterhelp));
$mform->setDefault($gradelettername, $letter);
- $mform->setType($gradelettername, PARAM_ALPHANUM);
+ $mform->setType($gradelettername, PARAM_RAW);
$mform->disabledIf($gradelettername, 'override');
$mform->addElement('select', $gradeboundaryname, $gradeboundarystring, $percentages);
} else {
// Percentage format if specified by user (check each item for a set preference)
- $gradedisplaytype = $this->get_pref('gradedisplaytype', $item->id);
+ $gradedisplaytype = $item->get_displaytype();
$percentsign = '';
$grademin = $item->grademin;
}
$decimalpoints = $this->get_pref('decimalpoints', $item->id);
+
// Determine which display type to use for this average
- $gradedisplaytype = $this->get_pref('gradedisplaytype', $item->id);
+ $gradedisplaytype = $item->get_displaytype();
+
if ($USER->gradeediting[$this->courseid]) {
$displaytype = GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL;
} elseif ($averagesdisplaytype == GRADE_REPORT_PREFERENCE_INHERIT) { // Inherit specific column or general preference
$decimalpoints = $this->get_pref('decimalpoints', $item->id);
// Determine which display type to use for this range
- $gradedisplaytype = $this->get_pref('gradedisplaytype', $item->id);
+ $gradedisplaytype = $item->get_displaytype();
if ($USER->gradeediting[$this->courseid]) {
$displaytype = GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL;
} else {
$this->course = get_record('course', 'id', $this->courseid);
}
-
+
$this->gpr = $gpr;
$this->context = $context;
$this->page = $page;
}
/**
- * Fetches and returns an array of grade letters indexed by their grade boundaries, as stored in preferences.
+ * Fetches and returns an array of grade letters indexed by their grade boundaries, as stored in course item settings or site preferences.
* @return array
*/
function get_grade_letters() {
+ global $COURSE;
$letters = array();
- for ($i = 1; $i <= 10; $i++) {
- $boundary = grade_report::get_pref('gradeboundary' . $i);
- $letter = grade_report::get_pref('gradeletter' . $i);
- if (!is_null($boundary) && $boundary != -1 && !empty($letter)) {
- $letters[$boundary] = $letter;
+ $context = get_context_instance(CONTEXT_COURSE, $COURSE->id);
+
+ if ($records = get_records('grade_letters', 'contextid', $context->id)) {
+ foreach ($records as $record) {
+ if (!is_null($record->lowerboundary) && !empty($record->letter)) {
+ $letters[$record->lowerboundary] = $record->letter;
+ }
+ }
+ } else {
+ for ($i = 1; $i <= 10; $i++) {
+ $boundary = grade_report::get_pref('gradeboundary' . $i);
+ $letter = grade_report::get_pref('gradeletter' . $i);
+ if (!is_null($boundary) && $boundary != -1 && !empty($letter)) {
+ $letters[$boundary] = $letter;
+ }
}
}
return $letters;
}
$coursemodule = get_coursemodule_from_instance($itemmodule, $iteminstance, $this->course->id);
-
+
$dir = $CFG->dirroot . "/mod/$itemmodule/";
$url = $CFG->wwwroot . "/mod/$itemmodule/";
}
$url .= "?id=$coursemodule->id";
-
+
// MDL-11274, Hide grades in the grader report if the current grader doesn't have 'moodle/grade:viewhidden'
if (has_capability('moodle/grade:viewhidden', get_context_instance(CONTEXT_COURSE, $coursemodule->course))) {
return '<a href="' . $url . '">' . $modulename . '</a>';
} else {
- return $modulename;
+ return $modulename;
}
}
return true;
}
}
+
+ /**
+ * Returns the value of the display type. It can be set at 3 levels: grade_item, course and site. The lowest level overrides the higher ones.
+ * @return int Display type
+ */
+ function get_displaytype() {
+ global $CFG;
+ $course_gradedisplaytype = get_field('grade_items', 'display', 'courseid', $this->courseid, 'itemtype', 'course');
+ $site_gradedisplaytype = $CFG->grade_report_gradedisplaytype;
+ $default_gradedisplaytype = $this->display;
+
+ if ($this->display == GRADE_REPORT_PREFERENCE_DEFAULT) {
+ $default_gradedisplaytype = $course_gradedisplaytype;
+ if ($course_gradedisplaytype == GRADE_REPORT_PREFERENCE_DEFAULT) {
+ $default_gradedisplaytype = $site_gradedisplaytype;
+ }
+ }
+ return $default_gradedisplaytype;
+ }
}
?>