--- /dev/null
+<P ALIGN=CENTER><B>Allow review once quiz is closed</B></P>
+
+<P>If you enable this option, then students will be able to
+ review their past attempts at this quiz.</P>
+
+<P>This is only enabled once the quiz is closed.</P>
#------------------------------------------------------------
$string['addselectedtoquiz'] = "Add selected to quiz";
+$string['allowreview'] = "Allow review";
$string['alwaysavailable'] = "Always available";
$string['alreadysubmitted'] = "It is likely that you have already submitted this attempt";
$string['answer'] = "Answer";
$string['noattempts'] = "No attempts have been made on this quiz";
$string['nomoreattempts'] = "No more attempts are allowed";
$string['noquestions'] = "No questions have been added yet";
+$string['noreview'] = "You are not allowed to review this quiz";
+$string['noreviewuntil'] = "You are not allowed to review this quiz until \$a";
$string['publish'] = "Publish";
$string['question'] = "Question";
$string['questioninuse'] = "The question '\$a' is currently being used:";
$answer = $answers[$answerid];
$qnum = $key + 1;
- if ($feedback and $response[$answerid]) {
- $checked = "CHECKED";
- } else {
+ if (empty($feedback) or empty($response[$answerid])) {
$checked = "";
+ } else {
+ $checked = "CHECKED";
}
echo "<TR><TD valign=top>";
if ($options->single) {
echo "<INPUT $checked TYPE=CHECKBOX NAME=q$question->id"."a$answer->id VALUE=\"$answer->id\">";
}
echo "</TD>";
- if ($feedback and $correct[$answer->id]) {
- echo "<TD valign=top CLASS=highlight>$qnum. $answer->answer</TD>";
- } else {
+ if (empty($feedback) or empty($correct[$answer->id])) {
echo "<TD valign=top>$qnum. $answer->answer</TD>";
+ } else {
+ echo "<TD valign=top CLASS=highlight>$qnum. $answer->answer</TD>";
}
- if ($feedback) {
+ if (!empty($feedback)) {
echo "<TD valign=top> ";
- if ($response[$answerid]) {
+ if (!empty($response[$answerid])) {
quiz_print_comment($feedback[$answerid]);
}
echo "</TD>";
function quiz_print_quiz_questions($quiz, $results=NULL) {
// Prints a whole quiz on one page.
- if (!$quiz->questions) {
+ if (empty($quiz->questions)) {
notify("No questions have been defined!", "view.php?id=$cm->id");
return false;
}
$response = NULL;
$actualgrades = NULL;
$correct = NULL;
- if ($results) {
- $feedback = $results->feedback[$questionid];
- $response = $results->response[$questionid];
- $actualgrades = $results->grades[$questionid];
+ if (!empty($results)) {
+ if (!empty($results->feedback[$questionid])) {
+ $feedback = $results->feedback[$questionid];
+ }
+ if (!empty($results->response[$questionid])) {
+ $response = $results->response[$questionid];
+ }
+ if (!empty($results->grades[$questionid])) {
+ $actualgrades = $results->grades[$questionid];
+ }
if ($quiz->correctanswers) {
- $correct = $results->correct[$questionid];
+ if (!empty($results->correct[$questionid])) {
+ $correct = $results->correct[$questionid];
+ }
}
}
echo "<BR>";
}
- if (!$results) {
+ if (empty($results)) {
echo "<CENTER><INPUT TYPE=submit VALUE=\"".get_string("savemyanswers", "quiz")."\"></CENTER>";
}
echo "</FORM>";
if (empty($form->correctanswers)) {
$form->correctanswers = "";
}
+ if (empty($form->review)) {
+ $form->review = "";
+ }
if (empty($form->grade)) {
$form->grade = "";
}
?>
</TD>
</TR>
+<TR valign=top>
+ <TD align=right><P><B><? print_string("allowreview", "quiz") ?>:</B></P></TD>
+ <TD>
+ <?
+ $options = array();
+ $options[0] = get_string("no");
+ $options[1] = get_string("yes");
+ choose_from_menu($options, "review", "$form->review", "");
+ helpbutton("review", get_string("allowreview","quiz"), "quiz");
+ ?>
+ </TD>
+</TR>
<TR valign=top>
<TD align=right><P><B><? print_string("maximumgrade") ?>:</B></P></TD>
<TD>
optional_variable($q); // quiz ID
optional_variable($attempt); // A particular attempt ID
+ optional_variable($review); // A particular attempt ID for review by student
optional_variable($regrade); // Regrade all attempts
if ($id) {
require_login($course->id);
+
if (!isteacher($course->id)) {
- error("Only teachers can see this page");
+ if (!$quiz->review) {
+ error(get_string("noreview", "quiz"));
+ }
+ if (time() < $quiz->timeclose) {
+ error(get_string("noreviewuntil", "quiz", userdate($quiz->timeclose)));
+ }
+ if (empty($review)) {
+ error("You are using this script wrongly.");
+ }
+ }
+
+ if (!empty($review)) {
+ $attempt = $review;
}
add_to_log($course->id, "quiz", "report", "report.php?id=$cm->id", "$quiz->id");
print_heading($quiz->name);
- if ($attempt) { // Show a particular attempt
+ if (!empty($attempt)) { // Show a particular attempt
if (! $attempt = get_record("quiz_attempts", "id", $attempt)) {
error("No such attempt ID exists");
}
+ if (!isteacher($course->id)) {
+ if ($attempt->userid != $USER->id) {
+ error("This is not your attempt!");
+ }
+ }
+
if (! $questions = quiz_get_attempt_responses($attempt)) {
error("Could not reconstruct quiz results for attempt $attempt->id!");
}
$table->data[] = array("$strgrade:", "$result->grade/$quiz->grade");
print_table($table);
- print_continue("report.php?q=$quiz->id");
+ if (empty($review)) {
+ print_continue("report.php?q=$quiz->id");
+ } else {
+ print_continue("view.php?q=$quiz->id");
+ }
$quiz->feedback = true;
$quiz->correctanswers = true;
quiz_print_quiz_questions($quiz, $result);
- print_continue("report.php?q=$quiz->id");
+ if (empty($review)) {
+ print_continue("report.php?q=$quiz->id");
+ } else {
+ print_continue("view.php?q=$quiz->id");
+ }
print_footer($course);
exit;
}
- if ($regrade) {
+ if (!empty($regrade)) {
if (!$attempts = get_records("quiz_attempts", "quiz", $quiz->id)) {
print_header(get_string("noattempts", "quiz"));
print_continue("report.php?id=$cm->id");
$strgrade = get_string("grade");
$strbestgrade = get_string("bestgrade", "quiz");
+ $mygrade = quiz_get_best_grade($quiz->id, $USER->id);
+
if ($numattempts) {
$table->head = array($strattempt, $strtimetaken, $strtimecompleted, "$strgrade / $quiz->grade");
$table->align = array("CENTER", "CENTER", "LEFT", "RIGHT");
} else {
$timetaken = "-";
}
+ $attemptgrade = format_float(($attempt->sumgrades/$quiz->sumgrades)*$quiz->grade);
+ if ($attemptgrade == $mygrade) {
+ $attemptgrade = "<SPAN class=highlight>$attemptgrade</SPAN>";
+ }
+ if (!$available and $quiz->review) {
+ $attemptgrade = "<A HREF=\"report.php?q=$quiz->id&review=$attempt->id\">$attemptgrade</A>";
+ }
$table->data[] = array( $attempt->attempt,
format_time($attempt->timefinish - $attempt->timestart),
userdate($attempt->timefinish),
- format_float(($attempt->sumgrades/$quiz->sumgrades)*$quiz->grade) );
+ $attemptgrade);
}
print_table($table);
}
echo "<P ALIGN=CENTER>".get_string("quizclosed", "quiz", userdate($quiz->timeclose));
}
- $mygrade = quiz_get_best_grade($quiz->id, $USER->id);
if (!$quiz->questions) {
print_heading(get_string("noquestions", "quiz"));