MDL-27747 Missing information and errors on the quiz view page. #720

This commit is contained in:
Tim Hunt
2011-06-07 16:05:17 +01:00
parent f57d75bdf8
commit adf7fe2148
2 changed files with 29 additions and 20 deletions
+18 -10
View File
@@ -352,7 +352,7 @@ class mod_quiz_renderer extends plugin_renderer_base {
return '';
}
return $this->box($this->heading(get_string('accessnoticesheader', 'quiz'), 3) .
$this->access_messages($messages), 'quizaccessnotices');
$this->access_messages($messages), 'quizaccessnotices');
}
/**
@@ -538,17 +538,22 @@ class mod_quiz_renderer extends plugin_renderer_base {
* @param array $quiz Array conting quiz data
* @param int $cm Course Module ID
* @param int $context The page context ID
* @param array $messages Array contining any maeeages
* @param array $infomessages information about this quiz
* @param mod_quiz_view_object $viewobj
* @param string $buttontext
* @param string $buttontext text for the start/continue attempt button, if
* it should be shown.
* @param array $infomessages further information about why the student cannot
* attempt this quiz now, if appicable this quiz
*/
public function view_page($course, $quiz, $cm, $context, $messages, $viewobj, $buttontext) {
public function view_page($course, $quiz, $cm, $context, $infomessages, $viewobj,
$buttontext, $preventmessages) {
$output = '';
$output .= $this->view_information($course, $quiz, $cm, $context, $messages);
$output .= $this->view_information($course, $quiz, $cm, $context, $infomessages);
$output .= $this->view_table($quiz, $context, $viewobj);
$output .= $this->view_best_score($viewobj);
$output .= $this->view_result_info($quiz, $context, $cm, $viewobj);
$output .= $this->view_attempt_button($course, $quiz, $cm, $context, $viewobj, $buttontext);
$output .= $this->view_attempt_button($course, $quiz, $cm, $context, $viewobj,
$buttontext, $preventmessages);
return $output;
}
@@ -610,9 +615,7 @@ class mod_quiz_renderer extends plugin_renderer_base {
'intro');
}
$output .= $this->box_start('quizinfo');
$this->access_messages($messages);
$output .= $this->box_end();
$output .= $this->box($this->access_messages($messages), 'quizinfo');
// Show number of attempts summary to those who can view reports.
if (has_capability('mod/quiz:viewreports', $context)) {
@@ -855,7 +858,8 @@ class mod_quiz_renderer extends plugin_renderer_base {
* @param mod_quiz_view_object $viewobj
* @param string $buttontext
*/
public function view_attempt_button($course, $quiz, $cm, $context, $viewobj, $buttontext) {
public function view_attempt_button($course, $quiz, $cm, $context, $viewobj,
$buttontext, $preventmessages) {
$output = '';
// Determine if we should be showing a start/continue attempt button,
// or a button to go back to the course page.
@@ -866,6 +870,10 @@ class mod_quiz_renderer extends plugin_renderer_base {
$output .= quiz_no_questions_message($quiz, $cm, $context);
}
if ($preventmessages) {
$output .= $this->access_messages($preventmessages);
}
if ($buttontext) {
$output .= $viewobj->accessmanager->print_start_attempt_button($viewobj->canpreview,
$buttontext, $viewobj->unfinished);
+11 -10
View File
@@ -162,14 +162,15 @@ $viewobj->unfinished = $unfinished;
$viewobj->lastfinishedattempt = $lastfinishedattempt;
// Display information about this quiz.
$messages = $viewobj->accessmanager->describe_rules();
$infomessages = $viewobj->accessmanager->describe_rules();
if ($quiz->attempts != 1) {
$messages[] = get_string('gradingmethod', 'quiz',
$infomessages[] = get_string('gradingmethod', 'quiz',
quiz_get_grading_option_name($quiz->grademethod));
}
// This will be set something if as start/continue attempt button should appear.
$buttontext = '';
$preventmessages = array();
if (!quiz_clean_layout($quiz->questions, true)) {
$buttontext = '';
@@ -183,10 +184,10 @@ if (!quiz_clean_layout($quiz->questions, true)) {
} else {
if ($viewobj->canattempt) {
$messages = $viewobj->accessmanager->prevent_new_attempt($viewobj->numattempts,
$preventmessages = $viewobj->accessmanager->prevent_new_attempt($viewobj->numattempts,
$viewobj->lastfinishedattempt);
if ($messages) {
$this->access_messages($messages);
if ($preventmessages) {
$buttontext = '';
} else if ($viewobj->numattempts == 0) {
$buttontext = get_string('attemptquiznow', 'quiz');
} else {
@@ -204,8 +205,7 @@ if (!quiz_clean_layout($quiz->questions, true)) {
if (!$viewobj->moreattempts) {
$buttontext = '';
} else if ($viewobj->canattempt
&& $messages = $viewobj->accessmanager->prevent_access()) {
$this->access_messages($messages);
&& $preventmessages = $viewobj->accessmanager->prevent_access()) {
$buttontext = '';
}
}
@@ -215,13 +215,14 @@ echo $OUTPUT->header();
// Guests can't do a quiz, so offer them a choice of logging in or going back.
if (isguestuser()) {
echo $output->view_page_guest($course, $quiz, $cm, $context, $messages, $viewobj);
echo $output->view_page_guest($course, $quiz, $cm, $context, $infomessages, $viewobj);
} else if (!isguestuser() && !($viewobj->canattempt || $viewobj->canpreview
|| $viewobj->canreviewmine)) {
// If they are not enrolled in this course in a good enough role, tell them to enrol.
echo $output->view_page_notenrolled($course, $quiz, $cm, $context, $messages, $viewobj);
echo $output->view_page_notenrolled($course, $quiz, $cm, $context, $infomessages, $viewobj);
} else {
echo $output->view_page($course, $quiz, $cm, $context, $messages, $viewobj, $buttontext);
echo $output->view_page($course, $quiz, $cm, $context, $infomessages, $viewobj,
$buttontext, $preventmessages);
}
echo $OUTPUT->footer();