MDL-10490 Letter type implemented

This commit is contained in:
nicolasconnault
2007-07-18 11:34:55 +00:00
parent 808b3dbeb3
commit 32b97bb24a
10 changed files with 219 additions and 54 deletions
+11 -7
View File
@@ -4,7 +4,7 @@ require_once $CFG->libdir.'/formslib.php';
class edit_item_form extends moodleform {
function definition() {
global $COURSE;
global $COURSE, $CFG;
$mform =& $this->_form;
@@ -74,17 +74,21 @@ class edit_item_form extends moodleform {
/// user preferences
$mform->addElement('header', 'general', get_string('userpreferences', 'grades'));
$mform->addElement('select', 'pref_gradedisplaytype', get_string('gradedisplaytype', 'grades'),
array(GRADE_REPORT_PREFERENCE_DEFAULT => get_string('default', 'grades'),
$options = array(GRADE_REPORT_PREFERENCE_DEFAULT => get_string('default', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades')));
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades'));
$label = get_string('gradedisplaytype', 'grades') . ' (' . get_string('default', 'grades')
. ': ' . $options[$CFG->grade_report_gradedisplaytype] . ')';
$mform->addElement('select', 'pref_gradedisplaytype', $label, $options);
$mform->setHelpButton('pref_gradedisplaytype', array(false, get_string('gradedisplaytype', 'grades'),
false, true, false, get_string("config_gradedisplaytype", 'grades')));
$mform->setDefault('pref_gradedisplaytype', GRADE_REPORT_PREFERENCE_DEFAULT);
$mform->addElement('select', 'pref_decimalpoints', get_string('decimalpoints', 'grades'),
array(GRADE_REPORT_PREFERENCE_DEFAULT => get_string('default', 'grades'), 0, 1, 2, 3, 4, 5));
$options = array(GRADE_REPORT_PREFERENCE_DEFAULT => get_string('default', 'grades'), 0, 1, 2, 3, 4, 5);
$label = get_string('decimalpoints', 'grades') . ' (' . get_string('default', 'grades')
. ': ' . $options[$CFG->grade_report_decimalpoints] . ')';
$mform->addElement('select', 'pref_decimalpoints', $label, $options);
$mform->setHelpButton('pref_decimalpoints', array(false, get_string('decimalpoints', 'grades'),
false, true, false, get_string("config_decimalpoints", 'grades')));
$mform->setDefault('pref_decimalpoints', GRADE_REPORT_PREFERENCE_DEFAULT);
+23 -10
View File
@@ -689,18 +689,16 @@ class grade_report_grader extends grade_report {
$gradedisplaytype = $this->get_pref('gradedisplaytype', $item->id);
$percentsign = '';
$grademin = $this->finalgrades[$userid][$item->id]->grademin;
$grademax = $this->finalgrades[$userid][$item->id]->grademax;
if ($gradedisplaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE) {
if (!is_null($gradeval)) {
$gradeval = grade_grades::standardise_score($gradeval, $grademin, $grademax, 0, 100);
}
$percentsign = '%';
}
// Convert the grade to percentage if needed
if ($gradedisplaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE && !is_null($gradeval)) {
$grademin = $this->finalgrades[$userid][$item->id]->grademin;
$grademax = $this->finalgrades[$userid][$item->id]->grademax;
$gradeval = grade_grades::standardise_score($gradeval, $grademin, $grademax, 0, 100);
}
// If feedback present, surround grade with feedback tooltip
if (!empty($grade->feedback)) {
if ($grade->feedbackformat == 1) {
@@ -712,9 +710,13 @@ class grade_report_grader extends grade_report {
$studentshtml .= '<span onmouseover="' . $overlib . '" onmouseout="return nd();">';
}
// finalgrades[$userid][$itemid] could be null because of the outer join
// in this case it's different than a 0
if ($item->scaleid && !empty($scales_array[$item->scaleid]) && $gradedisplaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL) {
if ($gradedisplaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER) {
$letters = grade_report::get_grade_letters();
if (!is_null($gradeval)) {
$studentshtml .= grade_grades::get_letter($letters, $gradeval, $grademin, $grademax);
}
} else if ($item->scaleid && !empty($scales_array[$item->scaleid])
&& $gradedisplaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL) {
$scale = $scales_array[$item->scaleid];
$scales = explode(",", $scale->scale);
@@ -835,7 +837,11 @@ class grade_report_grader extends grade_report {
if ($displaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE) {
$gradeval = grade_grades::standardise_score($rawvalue, $item->grademin, $item->grademax, 0, 100);
$gradehtml = round($gradeval, $decimalpoints) . '%';
} elseif ($displaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER) {
$letters = grade_report::get_grade_letters();
$gradehtml = grade_grades::get_letter($letters, $gradeval, $item->grademin, $item->grademax);
}
$groupavghtml .= '<td>'.$gradehtml.'</td>';
}
}
@@ -927,6 +933,9 @@ class grade_report_grader extends grade_report {
if ($displaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE) {
$gradeval = grade_grades::standardise_score($rawvalue, $item->grademin, $item->grademax, 0, 100);
$gradehtml = round($gradeval, $decimalpoints) . '%';
} elseif ($displaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER) {
$letters = grade_report::get_grade_letters();
$gradehtml = grade_grades::get_letter($letters, $gradeval, $item->grademin, $item->grademax);
}
$gradeavghtml .= '<td>'.$gradehtml.'</td>';
@@ -967,6 +976,10 @@ class grade_report_grader extends grade_report {
} elseif ($displaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE) {
$grademin = 0;
$grademax = 100;
} elseif ($displaytype == GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER) {
$letters = grade_report::get_grade_letters();
$grademin = end($letters);
$grademax = reset($letters);
}
$scalehtml .= '<th class="range">'. $grademin.'-'. $grademax.'</th>';
+5 -1
View File
@@ -47,7 +47,11 @@ if ($form = data_submitted()) {
set_user_preference('calendar_persistflt', intval($value));
break;
default:
set_user_preference($preference, $value);
if ($value == GRADE_REPORT_PREFERENCE_DEFAULT) {
unset_user_preference($preference);
} else {
set_user_preference($preference, $value);
}
break;
}
}
+73 -25
View File
@@ -17,52 +17,100 @@ class grader_report_preferences_form extends moodleform {
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
$strgradeboundary = get_string('gradeboundary', 'grades');
$strconfiggradeboundary = get_string('configgradeboundary', 'grades');
$strgradeletter = get_string('gradeletter', 'grades');
$strconfiggradeletter = get_string('configgradeletter', 'grades');
$strdefault = get_string('default', 'grades');
$strinherit = get_string('inherit', 'grades');
$stryes = get_string('yes');
$strno = get_string('no');
$percentages = array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_REPORT_PREFERENCE_UNUSED => get_string('unused', 'grades'));
for ($i=100; $i > -1; $i--) {
$percentages[$i] = "$i%";
}
$checkbox_default = array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault, 0 => $strno, 1 => $stryes);
/// form definition with preferences defaults
//--------------------------------------------------------------------------------
$preferences = array('bulkcheckboxes' => 'advcheckbox',
'enableajax' => 'advcheckbox',
'showcalculations' => 'advcheckbox',
'showeyecons' => 'advcheckbox',
'showaverages' => 'advcheckbox',
'showgroups' => 'advcheckbox',
'showlocks' => 'advcheckbox',
'showranges' => 'advcheckbox',
'quickgrading' => 'advcheckbox',
'quickfeedback' => 'advcheckbox',
'showuserimage' => 'advcheckbox',
'meanselection' => array(GRADE_AGGREGATE_MEAN_ALL => get_string('meanall', 'grades'),
$preferences = array('bulkcheckboxes' => $checkbox_default,
'enableajax' => $checkbox_default,
'showcalculations' => $checkbox_default,
'showeyecons' => $checkbox_default,
'showaverages' => $checkbox_default,
'showgroups' => $checkbox_default,
'showlocks' => $checkbox_default,
'showranges' => $checkbox_default,
'quickgrading' => $checkbox_default,
'quickfeedback' => $checkbox_default,
'showuserimage' => $checkbox_default,
'meanselection' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_AGGREGATE_MEAN_ALL => get_string('meanall', 'grades'),
GRADE_AGGREGATE_MEAN_GRADED => get_string('meangraded', 'grades')),
'aggregationposition' => array(GRADE_REPORT_AGGREGATION_POSITION_LEFT => get_string('left', 'grades'),
'aggregationposition' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_REPORT_AGGREGATION_POSITION_LEFT => get_string('left', 'grades'),
GRADE_REPORT_AGGREGATION_POSITION_RIGHT => get_string('right', 'grades')),
'aggregationview' => array(GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('full', 'grades'),
'aggregationview' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('full', 'grades'),
GRADE_REPORT_AGGREGATION_VIEW_COMPACT => get_string('compact', 'grades')),
'gradedisplaytype' => array(GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades')),
'averagesdisplaytype' => array(GRADE_REPORT_PREFERENCE_INHERIT => get_string('inherit', 'grades'),
'gradedisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades')),
'rangesdisplaytype' => array(GRADE_REPORT_PREFERENCE_INHERIT => get_string('inherit', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
'averagesdisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades')),
'averagesdecimalpoints' => array(GRADE_REPORT_PREFERENCE_INHERIT => get_string('inherit', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
'rangesdisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
'averagesdecimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
0, 1, 2, 3, 4, 5),
'rangesdecimalpoints' => array(GRADE_REPORT_PREFERENCE_INHERIT => get_string('inherit', 'grades'),
'rangesdecimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
0, 1, 2, 3, 4, 5),
'decimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => $strdefault,
0, 1, 2, 3, 4, 5),
'decimalpoints' => array(0, 1, 2, 3, 4, 5),
'studentsperpage' => 'text');
for ($i = 1; $i <= 10; $i++) {
$preferences['gradeboundary' . $i] = $percentages;
$preferences['gradeletter' . $i] = 'text';
}
foreach ($preferences as $pref => $type) {
if (preg_match('/([^[0-9]+)([0-9]+)/', $pref, $matches)) {
$lang_string = $matches[1];
$number = ' ' . $matches[2];
} else {
$lang_string = $pref;
$number = null;
}
$full_pref = 'grade_report_' . $pref;
$pref_value = get_user_preferences($full_pref, $CFG->$full_pref);
$options = null;
if (is_array($type)) {
$options = $type;
$type = 'select';
$default = $options[$CFG->$full_pref];
} else {
$default = $CFG->$full_pref;
}
$default_label = get_string($lang_string, 'grades') . $number . ' (' . $strdefault . ': ' . $default . ')';
$mform->addElement($type, $full_pref, get_string($pref, 'grades'), $options);
$mform->setHelpButton($full_pref, array(false, get_string($pref, 'grades'), false, true, false, get_string("config$pref", 'grades')));
$mform->addElement($type, $full_pref, $default_label, $options);
$mform->setHelpButton($full_pref, array(false, get_string($lang_string, 'grades'), false, true, false,
get_string("config$lang_string", 'grades')));
$mform->setDefault($full_pref, $pref_value);
$mform->setType($full_pref, PARAM_ALPHANUM);
}
+34 -10
View File
@@ -1,5 +1,13 @@
<?php // $Id$
require_once($CFG->libdir.'/gradelib.php');
$strgradeboundary = get_string('gradeboundary', 'grades');
$strconfiggradeboundary = get_string('configgradeboundary', 'grades');
$strgradeletter = get_string('gradeletter', 'grades');
$strconfiggradeletter = get_string('configgradeletter', 'grades');
$strinherit = get_string('inherit', 'grades');
$strpercentage = get_string('percentage', 'grades');
$strreal = get_string('real', 'grades');
$strletter = get_string('letter', 'grades');
/// Add settings for this module to the $settings object (it's already defined)
$settings->add(new admin_setting_configselect('grade_report_aggregationposition', get_string('aggregationposition', 'grades'),
@@ -20,20 +28,23 @@ $settings->add(new admin_setting_configcheckbox('grade_report_enableajax', get_s
$settings->add(new admin_setting_configselect('grade_report_gradedisplaytype', get_string('gradedisplaytype', 'grades'),
get_string('configgradedisplaytype', 'grades'), false,
array(GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'))));
array(GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => $strreal,
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => $strpercentage,
GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => $strletter)));
$settings->add(new admin_setting_configselect('grade_report_rangesdisplaytype', get_string('rangesdisplaytype', 'grades'),
get_string('configrangesdisplaytype', 'grades'), false,
array(GRADE_REPORT_PREFERENCE_INHERIT => get_string('inherit', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'))));
array(GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => $strreal,
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => $strpercentage,
GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => $strletter)));
$settings->add(new admin_setting_configselect('grade_report_averagesdisplaytype', get_string('averagesdisplaytype', 'grades'),
get_string('configaveragesdisplaytype', 'grades'), false,
array(GRADE_REPORT_PREFERENCE_INHERIT => get_string('inherit', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'))));
array(GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => $strreal,
GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => $strpercentage,
GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => $strletter)));
$settings->add(new admin_setting_configselect('grade_report_meanselection', get_string('meanselection', 'grades'),
get_string('configmeanselection', 'grades'), false,
@@ -80,7 +91,7 @@ $settings->add(new admin_setting_configselect('grade_report_decimalpoints', get_
'5' => '5')));
$settings->add(new admin_setting_configselect('grade_report_averagesdecimalpoints', get_string('averagesdecimalpoints', 'grades'),
get_string('configaveragesdecimalpoints', 'grades'), 2,
array(GRADE_REPORT_PREFERENCE_INHERIT => get_string('inherit', 'grades'),
array(GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
'0' => '0',
'1' => '1',
'2' => '2',
@@ -89,7 +100,7 @@ $settings->add(new admin_setting_configselect('grade_report_averagesdecimalpoint
'5' => '5')));
$settings->add(new admin_setting_configselect('grade_report_rangesdecimalpoints', get_string('rangesdecimalpoints', 'grades'),
get_string('configrangesdecimalpoints', 'grades'), 2,
array(GRADE_REPORT_PREFERENCE_INHERIT => get_string('inherit', 'grades'),
array(GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
'0' => '0',
'1' => '1',
'2' => '2',
@@ -97,5 +108,18 @@ $settings->add(new admin_setting_configselect('grade_report_rangesdecimalpoints'
'4' => '4',
'5' => '5')));
$percentages = array(GRADE_REPORT_PREFERENCE_UNUSED => get_string('unused', 'grades'));
for ($i=100; $i > -1; $i--) {
$percentages[$i] = "$i%";
}
for ($i = 1; $i <= 10; $i++) {
$default = abs(($i-10)*10);
$settings->add(new admin_setting_configselect('grade_report_gradeboundary'.$i, $strgradeboundary . " $i",
$strconfiggradeboundary, $default, $percentages));
$settings->add(new admin_setting_configtext('grade_report_gradeletter'.$i, $strgradeletter . " $i",
$strconfiggradeletter, ''));
}
?>
+16
View File
@@ -304,5 +304,21 @@ class grade_report {
$percentage = $offset_value * $factor;
return $percentage;
}
/**
* Fetches and returns an array of grade letters indexed by their grade boundaries, as stored in preferences.
* @return array
*/
function get_grade_letters() {
$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;
}
}
return $letters;
}
}
?>
+5
View File
@@ -38,7 +38,9 @@ $string['configaveragesdisplaytype'] = 'Specifies how to display the averages fo
$string['configbulkcheckboxes'] = 'Checkboxes near each grade for Bulk grade operations.';
$string['configdecimalpoints'] = 'The number of decimal points to display for each grade. This can be overriden per grading item.';
$string['configenableajax'] = 'Adds a layer of AJAX functionality to the grader report, simplifying and speeding up common operations. Depends on Javascript being switched on at the user\'s browser level.';
$string['configgradeboundary'] = 'A percentage boundary over which grades will be assigned a grade letter (if the Letter grade display type is used). ';
$string['configgradedisplaytype'] = 'Grades can be shown as real grades, as percentages (in reference to the minimum and maximum grades) or as letters (A, B, C etc..)';
$string['configgradeletter'] = 'A letter or other symbol used to represent a range of grades.';
$string['configmeanselection'] = 'Select which types of grades will be included in the column averages. Cells with no grade can be ignored, or counted as 0 (default setting).';
$string['configquickfeedback'] = 'Quick Feedback adds a text input element in each grade cell on the grader report, allowing you to edit many grades at once. You can then click the Update button to perform all these changes at once, instead of one at a time.';
$string['configquickgrading'] = 'Quick Grading adds a text input element in each grade cell on the grader report, allowing you to edit the feedback for many grades at once. You can then click the Update button to perform all these changes at once, instead of one at a time.';
@@ -98,6 +100,7 @@ $string['full'] = 'Full';
$string['grade'] = 'Grade';
$string['gradebook'] = 'Gradebook';
$string['gradebookhiddenerror'] = 'The gradebook is currently set to hide everything from students.';
$string['gradeboundary'] = 'Letter grade boundary';
$string['gradecategoryhelp'] = 'Grade Category Help';
$string['gradedisplaytype'] = 'Grade display type';
$string['gradeexceptions'] = 'Grade Exceptions';
@@ -158,6 +161,7 @@ $string['items'] = 'Items';
$string['left'] = 'Left';
$string['lettergrade'] = 'Letter Grade';
$string['lettergradenonnumber'] = 'Low and/or High grade were non-numeric for';
$string['letter'] = 'Letter';
$string['letters'] = 'Letters';
$string['lock'] = 'Lock';
$string['locked'] = 'Locked';
@@ -262,6 +266,7 @@ $string['typetext'] = 'Text';
$string['typevalue'] = 'Value';
$string['uncategorised'] = 'Uncategorised';
$string['unlock'] = 'Unlock';
$string['unused'] = 'Unused';
$string['uploadgrades'] = 'Upload grades';
$string['useadvanced'] = 'Use Advanced Features';
$string['usenooutcome'] = 'Use no outcome';
+40
View File
@@ -427,6 +427,46 @@ class grade_grades extends grade_object {
$standardised_value = $factor * $diff + $target_min;
return $standardised_value;
}
/**
* Returns the grade letter this grade falls under, as they are set up in the given array.
* @param array $letters An array of grade boundaries with associated letters
* @param float $gradevalue The value to convert. If not given, will use instantiated object
* @param float $grademin If not given, will look up the grade_item's grademin
* @param float $grademax If not given, will look up the grade_item's grademax
* @return string Grade letter
*/
function get_letter($letters, $gradevalue=null, $grademin=null, $grademax=null) {
if (is_null($grademin) || is_null($grademax)) {
if (!isset($this)) {
debugging("Tried to call grade_grades::get_letter statically without giving an explicit grademin or grademax!");
return false;
}
$this->load_grade_item();
$grademin = $this->grade_item->grademin;
$grademax = $this->grade_item->grademax;
}
if (is_null($gradevalue)) {
if (!isset($this)) {
debugging("Tried to call grade_grades::get_letter statically without giving an explicit gradevalue!");
return false;
}
$gradevalue = $this->finalgrade;
}
// Standardise grade first
$grade = grade_grades::standardise_score($gradevalue, $grademin, $grademax, 0, 100);
// Sort the letters by descending boundaries (100-0)
krsort($letters);
foreach ($letters as $boundary => $letter) {
if ($grade >= $boundary) {
return $letter;
}
}
return '-';
}
}
?>
+11
View File
@@ -78,6 +78,7 @@ define('GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE', 1);
define('GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER', 2);
define('GRADE_REPORT_PREFERENCE_DEFAULT', 'default');
define('GRADE_REPORT_PREFERENCE_INHERIT', 'inherit');
define('GRADE_REPORT_PREFERENCE_UNUSED', -1);
require_once($CFG->libdir . '/grade/grade_category.php');
require_once($CFG->libdir . '/grade/grade_item.php');
@@ -708,4 +709,14 @@ function grade_oldgradebook_upgrade($courseid) {
}
}
/**
* Builds an array of percentages indexed by integers for the purpose of building a select drop-down element.
* @param int $steps The value between each level.
* @param string $order 'asc' for 0-100 and 'desc' for 100-0
* @param int $lowest The lowest value to include
* @param int $highest The highest value to include
*/
function build_percentages_array($steps=1, $order='desc', $lowest=0, $highest=100) {
// TODO reject or implement
}
?>
+1 -1
View File
@@ -6,7 +6,7 @@
// This is compared against the values stored in the database to determine
// whether upgrades should be performed (see lib/db/*.php)
$version = 2007071703; // YYYYMMDD = date
$version = 2007071801; // YYYYMMDD = date
// XY = increments within a single day
$release = '1.9 dev'; // Human-friendly version name