MDL-13778 Added 6 "composite" grade display types for the grader report Merged from MOODLE_19_STABLE

This commit is contained in:
nicolasconnault
2009-01-08 08:53:20 +00:00
parent 927eaa036d
commit 7d10995c86
5 changed files with 116 additions and 44 deletions
+16 -9
View 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,
+18 -4
View 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) {
+9
View 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';
+6
View 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);
+67 -31
View 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