MDL-37153 - assign: Obey grade display settings in submission status
The assignment submission status screen was ignoring the grade item's display setting, showing scores even if it's set to display letters only.
This commit is contained in:
+33
-5
@@ -77,6 +77,9 @@ class assign {
|
||||
/** @var stdClass the assignment record that contains the global settings for this assign instance */
|
||||
private $instance;
|
||||
|
||||
/** @var stdClass the grade_item record for this assign instance's primary grade item. */
|
||||
private $gradeitem;
|
||||
|
||||
/** @var context the context of the course module for this assign instance
|
||||
* (or just the course if we are creating a new one)
|
||||
*/
|
||||
@@ -1085,6 +1088,29 @@ class assign {
|
||||
return $this->instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the primary grade item for this assign instance.
|
||||
*
|
||||
* @return stdClass The grade_item record
|
||||
*/
|
||||
public function get_grade_item() {
|
||||
if ($this->gradeitem) {
|
||||
return $this->gradeitem;
|
||||
}
|
||||
$instance = $this->get_instance();
|
||||
$params = array('itemtype' => 'mod',
|
||||
'itemmodule' => 'assign',
|
||||
'iteminstance' => $instance->id,
|
||||
'courseid' => $instance->course,
|
||||
'itemnumber' => 0);
|
||||
$this->gradeitem = grade_item::fetch($params);
|
||||
if (!$this->gradeitem) {
|
||||
throw new coding_exception('Improper use of the assignment class. ' .
|
||||
'Cannot load the grade item.');
|
||||
}
|
||||
return $this->gradeitem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the context of the current course.
|
||||
*
|
||||
@@ -1200,13 +1226,15 @@ class assign {
|
||||
$o .= '<input type="hidden" name="grademodified_' . $userid . '" value="' . $modified . '"/>';
|
||||
if ($grade == -1 || $grade === null) {
|
||||
$o .= '-';
|
||||
return $o;
|
||||
} else {
|
||||
$o .= format_float($grade, 2) .
|
||||
' / ' .
|
||||
format_float($this->get_instance()->grade, 2);
|
||||
return $o;
|
||||
$item = $this->get_grade_item();
|
||||
$o .= grade_format_gradevalue($grade, $item);
|
||||
if ($item->get_displaytype() == GRADE_DISPLAY_TYPE_REAL) {
|
||||
// If displaying the raw grade, also display the total value.
|
||||
$o .= ' / ' . format_float($this->get_instance()->grade, 2);
|
||||
}
|
||||
}
|
||||
return $o;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user