MDL-13778 Added 6 "composite" grade display types for the grader report Merged from MOODLE_19_STABLE
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user