diff --git a/mod/quiz/edit.php b/mod/quiz/edit.php
index a930a19565c..ac00408967a 100644
--- a/mod/quiz/edit.php
+++ b/mod/quiz/edit.php
@@ -38,6 +38,15 @@
$streditingquestions = get_string('editquestions', "quiz");
$streditingquiz = get_string("editinga", "moodle", $strquiz);
+ // We might get here after editing a question in a popup window.
+ // In which case we will want to close the window automatically.
+ //
+ // Unfortunately, we can only detect this condition at the top of
+ // this file, but we should only output the JavaScript after print_header,
+ // which has to happen lower down the file. Therefore, we cache
+ // any necessary JavaScript in this variable.
+ $scripttooutputafterprint_header = '';
+
if ($modform = data_submitted() and !empty($modform->course)) { // data submitted
$SESSION->modform = $modform; // Save the form in the current session
@@ -70,24 +79,17 @@
error('cmunknown');
}
} else {
- // we might get here after editing a question in
- // a popup window. So close window automatically.
- //
- // But we certainly should not be doing this before
- // print_header, since it throws browsers into quirks mode.
- // Unfortunately there is no easy fix. Bug #5811 covers this.
-?>
-
-modform)) {
$modform = $SESSION->modform;
@@ -317,6 +319,7 @@ if (self.name == 'editquestion') {
" -> instance\">".format_string($modform->name).''.
" -> $streditingquiz", "", "",
true, $strupdatemodule);
+ echo $scripttooutputafterprint_header;
$currenttab = 'edit';
$mode = 'editq';
@@ -354,6 +357,7 @@ if (self.name == 'editquestion') {
" -> instance\">".format_string($modform->name).''.
" -> $streditingquiz",
"", "", true, $strupdatemodule);
+ echo $scripttooutputafterprint_header;
$currenttab = 'edit';
$mode = 'editq';