MDL-11353 Completed the implementation. This included a new method in grade_item: get_displaytype(), since that value could be set to default, and we must then look up to course, then site values. And the get_letter() method in grade_grade has been modified to first check the grade_letters table. All works like a dream!

This commit is contained in:
nicolasconnault
2007-09-19 15:37:46 +00:00
parent ac5b0a4919
commit 41f22daa71
4 changed files with 46 additions and 14 deletions
@@ -74,7 +74,7 @@ class edit_grade_display_form extends moodleform {
$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);
+5 -3
View File
@@ -727,7 +727,7 @@ class grade_report_grader extends grade_report {
} 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;
@@ -897,8 +897,10 @@ class grade_report_grader extends grade_report {
}
$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
@@ -974,7 +976,7 @@ class grade_report_grader extends grade_report {
$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;
+21 -10
View File
@@ -118,7 +118,7 @@ class grade_report {
} else {
$this->course = get_record('course', 'id', $this->courseid);
}
$this->gpr = $gpr;
$this->context = $context;
$this->page = $page;
@@ -245,16 +245,27 @@ class grade_report {
}
/**
* 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;
@@ -328,7 +339,7 @@ class grade_report {
}
$coursemodule = get_coursemodule_from_instance($itemmodule, $iteminstance, $this->course->id);
$dir = $CFG->dirroot . "/mod/$itemmodule/";
$url = $CFG->wwwroot . "/mod/$itemmodule/";
@@ -339,12 +350,12 @@ class grade_report {
}
$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;
}
}
+19
View File
@@ -1685,5 +1685,24 @@ class grade_item extends grade_object {
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;
}
}
?>