/** * Generates the table of summarydata * * @param quiz_attempt $attemptobj * @param mod_quiz_display_options $displayoptions */ public function summary_table($attemptobj, $displayoptions) { // Prepare the summary table header. $table = new html_table(); $table->attributes['class'] = 'generaltable quizsummaryofattempt boxaligncenter'; $table->head = array(get_string('question', 'quiz'), get_string('status', 'quiz')); $table->align = array('left', 'left'); $table->size = array('', ''); $markscolumn = $displayoptions->marks >= question_display_options::MARK_AND_MAX; if ($markscolumn) { $table->head[] = get_string('marks', 'quiz'); $table->align[] = 'left'; $table->size[] = ''; } $table->data = array(); // Get the summary info for each question. $slots = $attemptobj->get_slots(); foreach ($slots as $slot) { if (!$attemptobj->is_real_question($slot)) { continue; } $flag = ''; if ($attemptobj->is_question_flagged($slot)) { $flag = html_writer::empty_tag('img', array('src' => $this->pix_url('i/flagged'), 'alt' => get_string('flagged', 'question'), 'class' => 'questionflag')); } if ($attemptobj->can_navigate_to($slot)) { $row = array(html_writer::link($attemptobj->attempt_url($slot), $attemptobj->get_question_number($slot) . $flag), $attemptobj->get_question_status($slot, $displayoptions->correctness)); } else { $row = array($attemptobj->get_question_number($slot) . $flag, $attemptobj->get_question_status($slot, $displayoptions->correctness)); } if ($markscolumn) { $row[] = $attemptobj->get_question_mark($slot); } $table->data[] = $row; $table->rowclasses[] = $attemptobj->get_question_state_class( $slot, $displayoptions->correctness); } // Print the summary table. $output = html_writer::table($table); return $output; }
/** * Generates the table of summarydata * * @param quiz_attempt $attemptobj * @param mod_quiz_display_options $displayoptions */ public function summary_table($attemptobj, $displayoptions) { // Prepare the summary table header. $table = new html_table(); $table->attributes['class'] = 'generaltable quizsummaryofattempt boxaligncenter'; $table->head = array(get_string('question', 'quiz'), get_string('status', 'quiz')); $table->align = array('left', 'left'); $table->size = array('', ''); $markscolumn = $displayoptions->marks >= question_display_options::MARK_AND_MAX; if ($markscolumn) { $table->head[] = get_string('marks', 'quiz'); $table->align[] = 'left'; $table->size[] = ''; } $tablewidth = count($table->align); $table->data = array(); // Get the summary info for each question. $slots = $attemptobj->get_slots(); foreach ($slots as $slot) { // Add a section headings if we need one here. $heading = $attemptobj->get_heading_before_slot($slot); if ($heading) { $cell = new html_table_cell(format_string($heading)); $cell->header = true; $cell->colspan = $tablewidth; $table->data[] = array($cell); } // Don't display information items. if (!$attemptobj->is_real_question($slot)) { continue; } // Real question, show it. $flag = ''; if ($attemptobj->is_question_flagged($slot)) { $flag = html_writer::empty_tag('img', array('src' => $this->pix_url('i/flagged'), 'alt' => get_string('flagged', 'question'), 'class' => 'questionflag icon-post')); } if ($attemptobj->can_navigate_to($slot)) { $row = array(html_writer::link($attemptobj->attempt_url($slot), $attemptobj->get_question_number($slot) . $flag), $attemptobj->get_question_status($slot, $displayoptions->correctness)); } else { $row = array($attemptobj->get_question_number($slot) . $flag, $attemptobj->get_question_status($slot, $displayoptions->correctness)); } if ($markscolumn) { $row[] = $attemptobj->get_question_mark($slot); } $table->data[] = $row; $table->rowclasses[] = 'quizsummary' . $slot . ' ' . $attemptobj->get_question_state_class($slot, $displayoptions->correctness); } // Print the summary table. $output = html_writer::table($table); return $output; }