From de3b803deade5f74bd7a38e6fc39b474617d3755 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Sat, 6 Feb 2016 17:31:02 +0000 Subject: [PATCH] MDL-49338 quiz stats: preview urls wrong for question variants --- mod/quiz/classes/output/edit_renderer.php | 5 +++-- mod/quiz/locallib.php | 15 +++++++++------ mod/quiz/report/statistics/statistics_table.php | 3 ++- mod/quiz/upgrade.txt | 4 ++++ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/mod/quiz/classes/output/edit_renderer.php b/mod/quiz/classes/output/edit_renderer.php index 00afad9314a..179b69ae889 100644 --- a/mod/quiz/classes/output/edit_renderer.php +++ b/mod/quiz/classes/output/edit_renderer.php @@ -703,10 +703,11 @@ class edit_renderer extends \plugin_renderer_base { * @param \stdClass $quiz the quiz settings from the database. * @param \stdClass $question data from the question and quiz_slots tables. * @param bool $label if true, show the preview question label after the icon + * @param int $variant which question variant to preview (optional). * @return string HTML to output. */ - public function question_preview_icon($quiz, $question, $label = null) { - $url = quiz_question_preview_url($quiz, $question); + public function question_preview_icon($quiz, $question, $label = null, $variant = null) { + $url = quiz_question_preview_url($quiz, $question, $variant); // Do we want a label? $strpreviewlabel = ''; diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php index fea6e997c98..0417dca10f5 100644 --- a/mod/quiz/locallib.php +++ b/mod/quiz/locallib.php @@ -1230,11 +1230,12 @@ function quiz_attempt_state_name($state) { * @param int $cmid the course_module object for this quiz. * @param object $question the question. * @param string $returnurl url to return to after action is done. + * @param int $variant which question variant to preview (optional). * @return string html for a number of icons linked to action pages for a * question - preview and edit / view icons depending on user capabilities. */ -function quiz_question_action_icons($quiz, $cmid, $question, $returnurl) { - $html = quiz_question_preview_button($quiz, $question) . ' ' . +function quiz_question_action_icons($quiz, $cmid, $question, $returnurl, $variant = null) { + $html = quiz_question_preview_button($quiz, $question, false, $variant) . ' ' . quiz_question_edit_button($cmid, $question, $returnurl); return $html; } @@ -1291,9 +1292,10 @@ function quiz_question_edit_button($cmid, $question, $returnurl, $contentafteric /** * @param object $quiz the quiz settings * @param object $question the question + * @param int $variant which question variant to preview (optional). * @return moodle_url to preview this question with the options from this quiz. */ -function quiz_question_preview_url($quiz, $question) { +function quiz_question_preview_url($quiz, $question, $variant = null) { // Get the appropriate display options. $displayoptions = mod_quiz_display_options::make_from_quiz($quiz, mod_quiz_display_options::DURING); @@ -1305,22 +1307,23 @@ function quiz_question_preview_url($quiz, $question) { // Work out the correcte preview URL. return question_preview_url($question->id, $quiz->preferredbehaviour, - $maxmark, $displayoptions); + $maxmark, $displayoptions, $variant); } /** * @param object $quiz the quiz settings * @param object $question the question * @param bool $label if true, show the preview question label after the icon + * @param int $variant which question variant to preview (optional). * @return the HTML for a preview question icon. */ -function quiz_question_preview_button($quiz, $question, $label = false) { +function quiz_question_preview_button($quiz, $question, $label = false, $variant = null) { global $PAGE; if (!question_has_capability_on($question, 'use', $question->category)) { return ''; } - return $PAGE->get_renderer('mod_quiz', 'edit')->question_preview_icon($quiz, $question, $label); + return $PAGE->get_renderer('mod_quiz', 'edit')->question_preview_icon($quiz, $question, $label, $variant); } /** diff --git a/mod/quiz/report/statistics/statistics_table.php b/mod/quiz/report/statistics/statistics_table.php index 778ed467759..348532fb839 100644 --- a/mod/quiz/report/statistics/statistics_table.php +++ b/mod/quiz/report/statistics/statistics_table.php @@ -169,7 +169,8 @@ class quiz_statistics_table extends flexible_table { * @return string contents of this table cell. */ protected function col_actions($questionstat) { - return quiz_question_action_icons($this->quiz, $this->cmid, $questionstat->question, $this->baseurl); + return quiz_question_action_icons($this->quiz, $this->cmid, + $questionstat->question, $this->baseurl, $questionstat->variant); } /** diff --git a/mod/quiz/upgrade.txt b/mod/quiz/upgrade.txt index f317e4c62be..299f877a8e3 100644 --- a/mod/quiz/upgrade.txt +++ b/mod/quiz/upgrade.txt @@ -19,6 +19,10 @@ This files describes API changes in the quiz code. argument. If you have overridden this method (it's hard to believe anyone ever would) you will need to update your renderer. +* Several methods relating to preview links/buttons/urls have a new optional + argument to make the preview be of a particular variant. + + === 2.9 === * There have been changes in classes/output/edit_renderer.php for MDL-40990.