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:
Paul Nicholls
2013-10-09 16:03:50 +13:00
parent 9844660858
commit 3e2821e6f5
+33 -3
View File
@@ -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) */
private $context;
@@ -950,6 +953,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
* @return mixed context|null The course context
@@ -1046,11 +1072,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) .'&nbsp;/&nbsp;'. 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 .= '&nbsp;/&nbsp;' . format_float($this->get_instance()->grade, 2);
}
}
return $o;
}
} else {