diff --git a/mod/quiz/view.php b/mod/quiz/view.php index 642e8bf5d84..d28e011ed71 100644 --- a/mod/quiz/view.php +++ b/mod/quiz/view.php @@ -98,7 +98,16 @@ if ($unfinishedattempt = quiz_get_user_attempt_unfinished($quiz->id, $USER->id)) $numattempts = count($attempts); // Work out the final grade, checking whether it was overridden in the gradebook. -$mygrade = quiz_get_best_grade($quiz, $USER->id); +if (!$canpreview) { + $mygrade = quiz_get_best_grade($quiz, $USER->id); +} else if ($lastfinishedattempt) { + // Users who can preview the quiz don't get a proper grade, so work out a + // plausible value to display instead, so the page looks right. + $mygrade = quiz_rescale_grade($lastfinishedattempt->sumgrades, $quiz, false); +} else { + $mygrade = null; +} + $mygradeoverridden = false; $gradebookfeedback = ''; @@ -143,7 +152,7 @@ if ($attempts) { $viewobj->gradecolumn = $someoptions->marks >= question_display_options::MARK_AND_MAX && quiz_has_grades($quiz); $viewobj->markcolumn = $viewobj->gradecolumn && ($quiz->grade != $quiz->sumgrades); - $viewobj->overallstats = $alloptions->marks >= question_display_options::MARK_AND_MAX; + $viewobj->overallstats = $lastfinishedattempt && $alloptions->marks >= question_display_options::MARK_AND_MAX; $viewobj->feedbackcolumn = quiz_has_feedback($quiz) && $alloptions->overallfeedback; } else {