]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11353 Completed the implementation. This included a new method in grade_item...
authornicolasconnault <nicolasconnault>
Wed, 19 Sep 2007 15:37:46 +0000 (15:37 +0000)
committernicolasconnault <nicolasconnault>
Wed, 19 Sep 2007 15:37:46 +0000 (15:37 +0000)
grade/edit/gradedisplay/gradedisplay_form.php
grade/report/grader/lib.php
grade/report/lib.php
lib/grade/grade_item.php

index e2f02d8a76ccd078a52561929f8008edc4fa9fb0..50914a28c8699158fe54a865ead4697f3e094530 100644 (file)
@@ -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);
index 2391b73f640ca8b94138ba5419760e79cb50b30b..bee29f9153ffdbc3af8d44b615c96c253ce157a1 100644 (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;
index fda0f7b54313eacfeb88a54df0ebce662e263ea5..b9f8e3692fc6c4a24017b4bf34c5fb9f06d7c54c 100755 (executable)
@@ -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;
             }
         }
 
index 126fcc9645c9b551644ff0ea891520c3c95f65e6..ad8620328a6b976e68f93efb56fd7efca78cdf8f 100644 (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;
+    }
 }
 ?>