]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13778 Added 6 "composite" grade display types for the grader report Merged from...
authornicolasconnault <nicolasconnault>
Thu, 8 Jan 2009 08:53:20 +0000 (08:53 +0000)
committernicolasconnault <nicolasconnault>
Thu, 8 Jan 2009 08:53:20 +0000 (08:53 +0000)
admin/settings/grades.php
grade/edit/tree/item_form.php
lang/en_utf8/grades.php
lib/grade/constants.php
lib/gradelib.php

index 26e14b4443760d874098c50737bf9b012bb49afd..f703ef6486c2cb40713fe1a6e1a23db71f0a1adb 100644 (file)
@@ -5,11 +5,23 @@
 if (has_capability('moodle/grade:manage', $systemcontext)
  or has_capability('moodle/grade:manageletters', $systemcontext)) { // speedup for non-admins, add all caps used on this page
 
+    require_once $CFG->libdir.'/grade/constants.php';
+    $display_types = array(GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
+                           GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
+                           GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades'),
+                           GRADE_DISPLAY_TYPE_REAL_PERCENTAGE => get_string('realpercentage', 'grades'),
+                           GRADE_DISPLAY_TYPE_REAL_LETTER => get_string('realletter', 'grades'),
+                           GRADE_DISPLAY_TYPE_LETTER_REAL => get_string('letterreal', 'grades'),
+                           GRADE_DISPLAY_TYPE_LETTER_PERCENTAGE => get_string('letterpercentage', 'grades'),
+                           GRADE_DISPLAY_TYPE_PERCENTAGE_LETTER => get_string('percentageletter', 'grades'),
+                           GRADE_DISPLAY_TYPE_PERCENTAGE_REAL => get_string('percentagereal', 'grades')
+                           );
+    asort($display_types);
+
     // General settings
 
     $temp = new admin_settingpage('gradessettings', get_string('generalsettings', 'grades'), 'moodle/grade:manage');
     if ($ADMIN->fulltree) {
-        require_once $CFG->libdir.'/grade/constants.php';
 
         // new CFG variable for gradebook (what roles to display)
         $temp->add(new admin_setting_special_gradebookroles());
@@ -29,10 +41,8 @@ if (has_capability('moodle/grade:manage', $systemcontext)
         $temp->add(new admin_setting_configcheckbox('gradepublishing', get_string('gradepublishing', 'grades'), get_string('configgradepublishing', 'grades'), 0));
 
         $temp->add(new admin_setting_configselect('grade_export_displaytype', get_string('gradeexportdisplaytype', 'grades'),
-                                                  get_string('configgradeexportdisplaytype', 'grades'), GRADE_DISPLAY_TYPE_REAL,
-                                                  array(GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
-                                                        GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
-                                                        GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades'))));
+                                                  get_string('configgradeexportdisplaytype', 'grades'), GRADE_DISPLAY_TYPE_REAL, $display_types));
+
 
         $temp->add(new admin_setting_configselect('grade_export_decimalpoints', get_string('gradeexportdecimalpoints', 'grades'),
                                                   get_string('configexportdecimalpoints', 'grades'), 2,
@@ -98,10 +108,7 @@ if (has_capability('moodle/grade:manage', $systemcontext)
     $temp = new admin_settingpage('gradeitemsettings', get_string('gradeitemsettings', 'grades'), 'moodle/grade:manage');
     if ($ADMIN->fulltree) {
         $temp->add(new admin_setting_configselect('grade_displaytype', get_string('gradedisplaytype', 'grades'),
-                                                  get_string('configgradedisplaytype', 'grades'), GRADE_DISPLAY_TYPE_REAL,
-                                                  array(GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
-                                                        GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
-                                                        GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades'))));
+                                                  get_string('configgradedisplaytype', 'grades'), GRADE_DISPLAY_TYPE_REAL, $display_types));
 
         $temp->add(new admin_setting_configselect('grade_decimalpoints', get_string('decimalpoints', 'grades'),
                                                   get_string('configdecimalpoints', 'grades'), 2,
index 3f1fee6c18055cdecff52d720e3a117b68d97de5..3d5f6ca83cf01b2ec3ab3322cb02a314d5b87944 100644 (file)
@@ -93,10 +93,20 @@ class edit_item_form extends moodleform {
 
         /// grade display prefs
         $default_gradedisplaytype = grade_get_setting($COURSE->id, 'displaytype', $CFG->grade_displaytype);
-        $options = array(GRADE_DISPLAY_TYPE_DEFAULT    => get_string('default', 'grades'),
-                         GRADE_DISPLAY_TYPE_REAL       => get_string('real', 'grades'),
-                         GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
-                         GRADE_DISPLAY_TYPE_LETTER     => get_string('letter', 'grades'));
+        $options = array(GRADE_DISPLAY_TYPE_DEFAULT            => get_string('default', 'grades'),
+                         GRADE_DISPLAY_TYPE_REAL               => get_string('real', 'grades'),
+                         GRADE_DISPLAY_TYPE_PERCENTAGE         => get_string('percentage', 'grades'),
+                         GRADE_DISPLAY_TYPE_LETTER             => get_string('letter', 'grades'),
+                         GRADE_DISPLAY_TYPE_REAL_PERCENTAGE    => get_string('realpercentage', 'grades'),
+                         GRADE_DISPLAY_TYPE_REAL_LETTER        => get_string('realletter', 'grades'),
+                         GRADE_DISPLAY_TYPE_LETTER_REAL        => get_string('letterreal', 'grades'),
+                         GRADE_DISPLAY_TYPE_LETTER_PERCENTAGE  => get_string('letterpercentage', 'grades'),
+                         GRADE_DISPLAY_TYPE_PERCENTAGE_LETTER  => get_string('percentageletter', 'grades'),
+                         GRADE_DISPLAY_TYPE_PERCENTAGE_REAL    => get_string('percentagereal', 'grades')
+                         );
+
+        asort($options);
+
         foreach ($options as $key=>$option) {
             if ($key == $default_gradedisplaytype) {
                 $options[GRADE_DISPLAY_TYPE_DEFAULT] = get_string('defaultprev', 'grades', $option);
@@ -136,12 +146,16 @@ class edit_item_form extends moodleform {
         $mform->addElement('header', 'headerparent', get_string('parentcategory', 'grades'));
 
         $options = array();
+        $default = '';
         $coefstring = '';
         $categories = grade_category::fetch_all(array('courseid'=>$COURSE->id));
 
         foreach ($categories as $cat) {
             $cat->apply_forced_settings();
             $options[$cat->id] = $cat->get_name();
+            if ($cat->is_course_category()) {
+                $default = $cat->id;
+            }
 
             if ($cat->is_aggregationcoef_used()) {
                 if ($cat->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN) {
index 0deccd54a0675ffd87f8d2a877f18d1ab21dea37..0f7f2ac4e2d5268a225b0e4634e2d22034176b61 100644 (file)
@@ -30,7 +30,10 @@ $string['aggregation'] = 'Aggregation';
 $string['aggregationcoef'] = 'Aggregation coefficient';
 $string['aggregationcoefextra'] = 'Extra credit coefficient';
 $string['aggregationcoefextrasum'] = 'Act as extra credit';
+$string['aggregationcoefextrasum'] = 'Extra credit';
+$string['aggregationcoefextrasumhelp'] = 'Extra credit for this grade item during aggregation.';
 $string['aggregationcoefweight'] = 'Item weight';
+$string['aggregationcoefweighthelp'] = 'Weight applied to all grades in this grade item during aggregation with other grade items.';
 $string['aggregationhelp'] = 'Strategy used to aggregate grades across all students in a course.';
 $string['aggregationposition'] = 'Aggregation position';
 $string['aggregationview'] = 'Aggregation view';
@@ -301,6 +304,8 @@ $string['lessthanmin'] = 'The grade entered for $a->itemname for $a->username is
 $string['lettergrade'] = 'Letter grade';
 $string['lettergradenonnumber'] = 'Low and/or High grade were non-numeric for';
 $string['letter'] = 'Letter';
+$string['letterpercentage'] = 'Letter (percentage)';
+$string['letterreal'] = 'Letter (real)';
 $string['letters'] = 'Letters';
 $string['linkedactivity'] = 'Linked activity';
 $string['linkedactivityhelp'] = 'Specifies an optional activity to which this outcome item is linked. This is used to measure student performance on criteria not assessed by the activity grade.';
@@ -394,6 +399,8 @@ $string['parentcategory'] = 'Parent category';
 $string['pctoftotalgrade'] = '%% of total grade';
 $string['percent'] = 'Percent';
 $string['percentage'] = 'Percentage';
+$string['percentageletter'] = 'Percentage (letter)';
+$string['percentagereal'] = 'Percentage (real)';
 $string['percentascending'] = 'Sort by percent ascending';
 $string['percentdescending'] = 'Sort by percent descending';
 $string['percentshort'] = '%%';
@@ -420,6 +427,8 @@ $string['rangesdisplaytype'] = 'Range display type';
 $string['rank'] = 'Rank';
 $string['rawpct'] = 'Raw %%';
 $string['real'] = 'Real';
+$string['realletter'] = 'Real (letter)';
+$string['realpercentage'] = 'Real (percentage)';
 $string['regradeanyway'] = 'Regrade anyway';
 $string['removeallcoursegrades'] = 'Delete all grades';
 $string['removeallcourseitems'] = 'Delete all items and categories';
index 6852a1e5d4c3188490b12427be888e80d79b88ef..fd84192f66ad9e67a17416568f9de49622bc7f3b 100644 (file)
@@ -66,6 +66,12 @@ define('GRADE_DISPLAY_TYPE_DEFAULT', 0);
 define('GRADE_DISPLAY_TYPE_REAL', 1);
 define('GRADE_DISPLAY_TYPE_PERCENTAGE', 2);
 define('GRADE_DISPLAY_TYPE_LETTER', 3);
+define('GRADE_DISPLAY_TYPE_REAL_PERCENTAGE', 12);
+define('GRADE_DISPLAY_TYPE_REAL_LETTER', 13);
+define('GRADE_DISPLAY_TYPE_LETTER_REAL', 31);
+define('GRADE_DISPLAY_TYPE_LETTER_PERCENTAGE', 32);
+define('GRADE_DISPLAY_TYPE_PERCENTAGE_LETTER', 23);
+define('GRADE_DISPLAY_TYPE_PERCENTAGE_REAL', 21);
 
 define('GRADE_REPORT_AGGREGATION_POSITION_FIRST', 0);
 define('GRADE_REPORT_AGGREGATION_POSITION_LAST', 1);
index 4c56bc2f64b58b1848a3845c69b993c23737b523..cc993347e2f9bd8e78fba3e37535f79f5e09547e 100644 (file)
@@ -666,48 +666,84 @@ function grade_format_gradevalue($value, &$grade_item, $localized=true, $display
 
     switch ($displaytype) {
         case GRADE_DISPLAY_TYPE_REAL:
-            if ($grade_item->gradetype == GRADE_TYPE_SCALE) {
-                if (!$scale = $grade_item->load_scale()) {
-                    return get_string('error');
-                }
-
-                $value = (int)bounded_number($grade_item->grademin, $value, $grade_item->grademax);
-                return format_string($scale->scale_items[$value-1]);
-
-            } else {
-                return format_float($value, $decimals, $localized);
-            }
+            return grade_format_gradevalue_real($value, $grade_item, $decimals, $localized);
 
         case GRADE_DISPLAY_TYPE_PERCENTAGE:
-            $min = $grade_item->grademin;
-            $max = $grade_item->grademax;
-            if ($min == $max) {
-                return '';
-            }
-            $value = bounded_number($min, $value, $max);
-            $percentage = (($value-$min)*100)/($max-$min);
-            return format_float($percentage, $decimals, $localized).' %';
+            return grade_format_gradevalue_percentage($value, $grade_item, $decimals, $localized);
 
         case GRADE_DISPLAY_TYPE_LETTER:
-            $context = get_context_instance(CONTEXT_COURSE, $grade_item->courseid);
-            if (!$letters = grade_get_letters($context)) {
-                return ''; // no letters??
-            }
+            return grade_format_gradevalue_letter($value, $grade_item);
 
-            $value = grade_grade::standardise_score($value, $grade_item->grademin, $grade_item->grademax, 0, 100);
-            $value = bounded_number(0, $value, 100); // just in case
-            foreach ($letters as $boundary => $letter) {
-                if ($value >= $boundary) {
-                    return format_string($letter);
-                }
-            }
-            return '-'; // no match? maybe '' would be more correct
+        case GRADE_DISPLAY_TYPE_REAL_PERCENTAGE:
+            return grade_format_gradevalue_real($value, $grade_item, $decimals, $localized) . ' (' .
+                    grade_format_gradevalue_percentage($value, $grade_item, $decimals, $localized) . ')';
+
+        case GRADE_DISPLAY_TYPE_REAL_LETTER:
+            return grade_format_gradevalue_real($value, $grade_item, $decimals, $localized) . ' (' .
+                    grade_format_gradevalue_letter($value, $grade_item) . ')';
+
+        case GRADE_DISPLAY_TYPE_PERCENTAGE_REAL:
+            return grade_format_gradevalue_percentage($value, $grade_item, $decimals, $localized) . ' (' .
+                    grade_format_gradevalue_real($value, $grade_item, $decimals, $localized) . ')';
+
+        case GRADE_DISPLAY_TYPE_LETTER_REAL:
+            return grade_format_gradevalue_letter($value, $grade_item) . ' (' .
+                    grade_format_gradevalue_real($value, $grade_item, $decimals, $localized) . ')';
 
+        case GRADE_DISPLAY_TYPE_LETTER_PERCENTAGE:
+            return grade_format_gradevalue_letter($value, $grade_item) . ' (' .
+                    grade_format_gradevalue_percentage($value, $grade_item, $decimals, $localized) . ')';
+
+        case GRADE_DISPLAY_TYPE_PERCENTAGE_LETTER:
+            return grade_format_gradevalue_percentage($value, $grade_item, $decimals, $localized) . ' (' .
+                    grade_format_gradevalue_letter($value, $grade_item) . ')';
         default:
             return '';
     }
 }
 
+function grade_format_gradevalue_real($value, $grade_item, $decimals, $localized) {
+    if ($grade_item->gradetype == GRADE_TYPE_SCALE) {
+        if (!$scale = $grade_item->load_scale()) {
+            return get_string('error');
+        }
+
+        $value = (int)bounded_number($grade_item->grademin, $value, $grade_item->grademax);
+        return format_string($scale->scale_items[$value-1]);
+
+    } else {
+        return format_float($value, $decimals, $localized);
+    }
+}
+
+function grade_format_gradevalue_percentage($value, $grade_item, $decimals, $localized) {
+    $min = $grade_item->grademin;
+    $max = $grade_item->grademax;
+    if ($min == $max) {
+        return '';
+    }
+    $value = bounded_number($min, $value, $max);
+    $percentage = (($value-$min)*100)/($max-$min);
+    return format_float($percentage, $decimals, $localized).' %';
+}
+
+function grade_format_gradevalue_letter($value, $grade_item) {
+    $context = get_context_instance(CONTEXT_COURSE, $grade_item->courseid);
+    if (!$letters = grade_get_letters($context)) {
+        return ''; // no letters??
+    }
+
+    $value = grade_grade::standardise_score($value, $grade_item->grademin, $grade_item->grademax, 0, 100);
+    $value = bounded_number(0, $value, 100); // just in case
+    foreach ($letters as $boundary => $letter) {
+        if ($value >= $boundary) {
+            return format_string($letter);
+        }
+    }
+    return '-'; // no match? maybe '' would be more correct
+}
+
+
 /**
  * Returns grade options for gradebook category menu
  * @param int $courseid