MDL-30592 quiz statistics, ensure images in the question text appear.

This commit is contained in:
Tim Hunt 2011-12-05 18:46:25 +00:00
parent 8c03be8c71
commit fdb5bc03f5
3 changed files with 128 additions and 30 deletions

View file

@ -0,0 +1,46 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Standard plugin entry points of the quiz statistics report.
*
* @package quiz
* @subpackage statistics
* @copyright 2011 The Open University
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Serve questiontext files in the question text when they are displayed in this report.
* @param context $context the context
* @param int $questionid the question id
* @param array $args remaining file args
* @param bool $forcedownload
*/
function quiz_statistics_questiontext_preview_pluginfile($context, $questionid, $args, $forcedownload) {
global $CFG;
require_once($CFG->dirroot . '/mod/quiz/locallib.php');
list($context, $course, $cm) = get_context_info_array($context->id);
require_login($course, false, $cm);
// Assume only trusted people can see this report. There is no real way to
// validate questionid, becuase of the complexity of random quetsions.
require_capability('quiz/statistics:view', $context);
question_send_questiontext_file($questionid, $args, $forcedownload);
}

View file

@ -54,7 +54,7 @@ class quiz_statistics_report extends quiz_default_report {
public function display($quiz, $cm, $course) {
global $CFG, $DB, $OUTPUT, $PAGE;
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$this->context = get_context_instance(CONTEXT_MODULE, $cm->id);
// Work out the display options.
$download = optional_param('download', '', PARAM_ALPHA);
@ -94,7 +94,7 @@ class quiz_statistics_report extends quiz_default_report {
} else {
// All users who can attempt quizzes and who are in the currently selected group
$groupstudents = get_users_by_capability($context,
$groupstudents = get_users_by_capability($this->context,
array('mod/quiz:reviewmyattempts', 'mod/quiz:attempt'),
'', '', '', '', $currentgroup, '', false);
if (!$groupstudents) {
@ -160,7 +160,7 @@ class quiz_statistics_report extends quiz_default_report {
}
if (!quiz_questions_in_quiz($quiz->questions)) {
echo quiz_no_questions_message($quiz, $cm, $context);
echo quiz_no_questions_message($quiz, $cm, $this->context);
} else if (!$this->table->is_downloading() && $s == 0) {
echo $OUTPUT->notification(get_string('noattempts', 'quiz'));
}
@ -317,15 +317,33 @@ class quiz_statistics_report extends quiz_default_report {
echo $OUTPUT->heading(get_string('questionstatistics', 'quiz_statistics'));
echo html_writer::table($questionstatstable);
}
public function format_text($text, $format, $qa, $component, $filearea, $itemid,
$clean = false) {
$formatoptions = new stdClass();
$formatoptions->noclean = !$clean;
$formatoptions->para = false;
$text = $qa->rewrite_pluginfile_urls($text, $component, $filearea, $itemid);
return format_text($text, $format, $formatoptions);
}
/** @return the result of applying {@link format_text()} to the question text. */
public function format_questiontext($qa) {
return $this->format_text($this->questiontext, $this->questiontextformat,
$qa, 'question', 'questiontext', $this->id);
}
/**
* @param object $question question data.
* @return string HTML of question text, ready for display.
*/
protected function render_question_text($question){
protected function render_question_text($question) {
global $OUTPUT;
return $OUTPUT->box(format_text($question->questiontext, $question->questiontextformat,
array('overflowdiv' => true)),
$text = question_rewrite_questiontext_preview_urls($question->questiontext,
$this->context->id, 'quiz_statistics', $question->id);
return $OUTPUT->box(format_text($text, $question->questiontextformat,
array('noclean' => true, 'para' => false, 'overflowdiv' => true)),
'questiontext boxaligncenter generalbox boxwidthnormal mdl-align');
}