} else {
print_heading(format_string($quiz->name));
}
+ if ($isteacher and $attempt->userid == $USER->id) {
+ // the teacher is at the end of a preview. Print button to start new preview
+ unset($buttonoptions);
+ $buttonoptions['q'] = $quiz->id;
+ $buttonoptions['forcenew'] = true;
+ echo '<div class="controls">';
+ print_single_button($CFG->wwwroot.'/mod/quiz/attempt.php', $buttonoptions, get_string('startagain', 'quiz'));
+ echo '</div>';
+ } else { // print number of the attempt
+ print_heading(get_string('reviewofattempt', 'quiz', $attempt->attempt));
+ }
+
+ // print javascript button to close the window, if necessary
+ if (!$isteacher) {
+ include('attempt_close_js.php');
+ }
/// Print infobox
} else {
$timetaken = get_string('unfinished', 'quiz');
}
-
- $table->align = array("right", "left");
+ echo '<table class="generaltable generalbox quizreviewsummary"><tbody>';
if ($attempt->userid <> $USER->id) {
- $student = get_record('user', 'id', $attempt->userid);
- $picture = print_user_picture($student->id, $course->id, $student->picture, false, true);
- $table->data[] = array($picture, '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$student->id.'&course='.$course->id.'">'.fullname($student, true).'</a>');
+ $student = get_record('user', 'id', $attempt->userid);
+ $picture = print_user_picture($student->id, $course->id, $student->picture, false, true);
+ echo '<tr><th scope="row" class="cell">', $picture, '</th><td class="cell"><a href="', $CFG->wwwroot,
+ '/user/view.php?id=', $student->id, '&course='.$course->id.'">',
+ fullname($student, true), '</a></td></tr>';
}
- if (has_capability('mod/quiz:grade', $context) and count($attempts = get_records_select('quiz_attempts', "quiz = '$quiz->id' AND userid = '$attempt->userid'", 'attempt ASC')) > 1) {
+ if (has_capability('mod/quiz:grade', $context) and
+ count($attempts = get_records_select('quiz_attempts', "quiz = '$quiz->id' AND userid = '$attempt->userid'", 'attempt ASC')) > 1) {
// print list of attempts
$attemptlist = '';
foreach ($attempts as $at) {
? '<strong>'.$at->attempt.'</strong>, '
: '<a href="review.php?attempt='.$at->id.($showall?'&showall=true':'').'">'.$at->attempt.'</a>, ';
}
- $table->data[] = array(get_string('attempts', 'quiz').':', trim($attemptlist, ' ,'));
+ echo '<tr><th scope="row" class="cell">', get_string('attempts', 'quiz'), '</th><td class="cell">',
+ trim($attemptlist, ' ,'), '</td></tr>';
}
- $table->data[] = array(get_string('startedon', 'quiz').':', userdate($attempt->timestart));
+ echo '<tr><th scope="row" class="cell">', get_string('startedon', 'quiz'), '</th><td class="cell">',
+ userdate($attempt->timestart), '</td></tr>';
if ($attempt->timefinish) {
- $table->data[] = array("$strtimecompleted:", userdate($attempt->timefinish));
- $table->data[] = array("$strtimetaken:", $timetaken);
+ echo '<tr><th scope="row" class="cell">', $strtimecompleted, '</th><td class="cell">',
+ userdate($attempt->timefinish), '</td></tr>';
+ echo '<tr><th scope="row" class="cell">', $strtimetaken, '</th><td class="cell">',
+ $timetaken, '</td></tr>';
}
if (!empty($overtime)) {
- $table->data[] = array("$stroverdue:", $overtime);
+ echo '<tr><th scope="row" class="cell">', $stroverdue, '</th><td class="cell">',$overtime, '</td></tr>';
}
//if the student is allowed to see their score
if ($options->scores) {
$a->grade = $grade;
$a->maxgrade = $quiz->grade;
$rawscore = round($attempt->sumgrades, $CFG->quiz_decimalpoints);
- $table->data[] = array("$strscore:", "$rawscore/$quiz->sumgrades ($percentage %)");
- $table->data[] = array("$strgrade:", get_string('outof', 'quiz', $a));
+ echo '<tr><th scope="row" class="cell">', $strscore, '</th><td class="cell">',
+ "$rawscore/$quiz->sumgrades ($percentage %)", '</td></tr>';
+ echo '<tr><th scope="row" class="cell">', $strgrade, '</th><td class="cell">',
+ get_string('outof', 'quiz', $a), '</td></tr>';
}
}
if ($options->overallfeedback && $feedback) {
- $table->data[] = array(get_string('feedback', 'quiz'), $feedback);
- }
- if ($isteacher and $attempt->userid == $USER->id) {
- // the teacher is at the end of a preview. Print button to start new preview
- unset($buttonoptions);
- $buttonoptions['q'] = $quiz->id;
- $buttonoptions['forcenew'] = true;
- echo '<div class="controls">';
- print_single_button($CFG->wwwroot.'/mod/quiz/attempt.php', $buttonoptions, get_string('startagain', 'quiz'));
- echo '</div>';
- } else { // print number of the attempt
- print_heading(get_string('reviewofattempt', 'quiz', $attempt->attempt));
- }
- print_table($table);
-
- // print javascript button to close the window, if necessary
- if (!$isteacher) {
- include('attempt_close_js.php');
+ echo '<tr><th scope="row" class="cell">', get_string('feedback', 'quiz'), '</th><td class="cell">',
+ $feedback, '</td></tr>';
}
+ echo '</tbody></table>';
/// Print the navigation panel if required
$numpages = quiz_number_of_pages($attempt->layout);
$options->validation = QUESTION_EVENTVALIDATE === $states[$i]->event;
$options->history = ($isteacher and !$attempt->preview) ? 'all' : 'graded';
// Print the question
- if ($i > 0) {
- echo "<br />\n";
- }
print_question($questions[$i], $states[$i], $number, $quiz, $options);
$number += $questions[$i]->length;
}
// Print table with existing attempts
if ($attempts) {
+ print_heading('Summary of your previous attempts');
+
// Work out which columns we need, taking account what data is available in each attempt.
list($someoptions, $alloptions) = quiz_get_combined_reviewoptions($quiz, $attempts, $context);
$overallfeedback = $feedbackcolumn && $alloptions->overallfeedback;
// prepare table header
+ $table->class = 'generaltable quizattemptsummary';
$table->head = array($strattempt, $strtimecompleted);
$table->align = array("center", "left");
$table->size = array("", "");
if ($markcolumn) {
$table->head[] = "$strmarks / $quiz->sumgrades";
- $table->align[] = 'right';
+ $table->align[] = 'center';
$table->size[] = '';
}
if ($gradecolumn) {
$table->head[] = "$strgrade / $quiz->grade";
- $table->align[] = 'right';
+ $table->align[] = 'center';
$table->size[] = '';
}
if ($feedbackcolumn) {
$row = array();
// Add the attempt number, making it a link, if appropriate.
- $row[] = make_review_link('#' . $attempt->attempt, $quiz, $attempt);
+ $row[] = make_review_link($attempt->attempt, $quiz, $attempt);
// prepare strings for time taken and date completed
$timetaken = '';
if ($gradecolumn) {
if ($attemptoptions->scores) {
+ $formattedgrade = $attemptgrade;
// highlight the highest grade if appropriate
- if ($overallstats && !is_null($mygrade) && $attemptgrade == $mygrade && $quiz->grademethod == QUIZ_GRADEHIGHEST) {
- $formattedgrade = "<span class='highlight'>$attemptgrade</span>";
- } else {
- $formattedgrade = $attemptgrade;
+ if ($overallstats && $numattempts > 1 && !is_null($mygrade) && $attemptgrade == $mygrade && $quiz->grademethod == QUIZ_GRADEHIGHEST) {
+ $table->rowclass[$attempt->attempt] = 'bestrow';
}
$row[] = make_review_link($formattedgrade, $quiz, $attempt);
$row[] = $timetaken;
}
- $table->data[] = $row;
+ $table->data[$attempt->attempt] = $row;
} // End of loop over attempts.
print_table($table);
}
.que {
text-align: left;
- margin: 10px auto 15px auto;
+ margin: 0 auto 1.8em auto;
border: 1px solid;
clear: both;
}
.que .info {
float: left;
- margin: 5px 0 5px 5px;
+ margin: 0.5em 0 0.5em 1.2em;
width: 8%;
}
-.que .grade {
- margin-top: 0.5em;
-}
.que .content {
float: left;
- margin: 5px 0 5px 5px;
- width: 88%;
+ margin: 0.5em 1.2em 0.5em 0;
+ width: 85%;
+}
+.que.description .info {
+ display: none;
+}
+.que.description .content {
+ margin-left: 1.2em;
+ float: none;
+ width: auto;
}
.que .qtext {
margin-bottom: 1.5em;
}
.calculated .answer,
.numerical .answer,
-.shortanswer .answer,
-.truefalse .answer {
- padding: 0.3em 0 0.3em 0.3em;
-}
-.calculated .answer input,
-.numerical .answer input,
-.shortanswer .answer input {
- width: 85%;
+.shortanswer .answer {
+ padding: 0.3em;
+ width: auto;
}
.truefalse .answer span {
float: left;
clear: left;
- padding: 0.2em 0;
+ padding: 0.3em;
+ width: 100%;
}
.que .grading,
.que .comment,
.que .history {
margin-top: 0.5em;
}
+.que .grade {
+ margin-top: 0.5em;
+}
.importerror {
margin-top: 10px;
*** Modules: Quiz
***/
+#mod-quiz-view .quizinfo {
+ text-align: center;
+}
+#mod-quiz-view #page .quizgradefeedback,
+#mod-quiz-view #page .quizattempt
+{
+ text-align: center;
+}
#mod-quiz-attempt #page {
text-align: center;
}
+#mod-quiz-attempt .pagingbar {
+ margin: 1.5em auto;
+}
+
+body#question-preview .quemodname,
+body#question-preview .controls
+{
+ text-align: center;
+}
+body#question-preview .quemodname, body#question-preview .controls {
+ text-align: center;
+}
+
+#mod-quiz-review #page .controls {
+ text-align: center;
+ margin: 1.5em auto;
+}
+#mod-quiz-review .pagingbar {
+ margin: 1.5em auto;
+}
+#mod-quiz-review .pagingbar {
+ margin: 1.5em auto;
+}
+table.quizreviewsummary {
+ margin-bottom: 1.8em;
+ width: 100%;
+}
+table.quizreviewsummary tr {
+}
+table.quizreviewsummary th.cell {
+ padding: 1px 0.5em 1px 1em;
+ font-weight: bold;
+ text-align: right;
+ width: 10em;
+}
+table.quizreviewsummary td.cell {
+ padding: 1px 1em 1px 0.5em;
+}
+
#mod-quiz-edit #page .controls,
#mod-quiz-edit #page .attemptsnotice
{
#mod-quiz-edit #showbreaks {
margin-top: 0.7em;
}
-body#question-preview .quemodname,
-body#question-preview .controls
-{
+.quizquestionlistcontrols {
text-align: center;
}
+
body#mod-quiz-report table#attempts,
body#mod-quiz-report table#commands,
body#mod-quiz-report table#itemanalysis
body#mod-quiz-report .controls {
text-align: center;
}
-#mod-quiz-review #page .controls {
- text-align: center;
-}
-#mod-quiz-view .quizinfo {
- text-align: center;
-}
-#mod-quiz-view #page .quizgradefeedback,
-#mod-quiz-view #page .quizattempt
-{
- text-align: center;
-}
-.quizquestionlistcontrols {
- text-align: center;
-}
-body#question-preview .quemodname, body#question-preview .controls {
- text-align: center;
-}
/***
*** Modules: Resource