MDL-34733 quiz 'secure' mode: finish review link broken in previews
authorTim Hunt <T.J.Hunt@open.ac.uk>
Tue, 21 Aug 2012 11:05:52 +0000 (12:05 +0100)
committerTim Hunt <T.J.Hunt@open.ac.uk>
Tue, 21 Aug 2012 11:05:52 +0000 (12:05 +0100)
Here, we use a nasty hack to fix the problem on stable branches without
an API change.

mod/quiz/renderer.php

index 820e711..2d448b3 100644 (file)
@@ -229,7 +229,19 @@ class mod_quiz_renderer extends plugin_renderer_base {
      * @param $url contains a url for the review link
      */
     public function finish_review_link($url) {
-        if ($this->page->pagelayout == 'popup') {
+
+        // This is an ugly hack to fix MDL-34733 without changing the renderer API.
+        global $attemptobj;
+        if (!empty($attemptobj)) {
+            // I think that every page in standard Moodle that ends up calling
+            // this method will actually end up coming down this branch.
+            $inpopup = $attemptobj->get_access_manager(time())->attempt_must_be_in_popup();
+        } else {
+            // Else fall back to old (not very good) heuristic.
+            $inpopup = $this->page->pagelayout == 'popup';
+        }
+
+        if ($inpopup) {
             // In a 'secure' popup window.
             $this->page->requires->js_init_call('M.mod_quiz.secure_window.init_close_button',
                     array($url), quiz_get_js_module());