From 6c83959e33ddd8978aa2a88af4f47bfeb97af5d4 Mon Sep 17 00:00:00 2001 From: moodler Date: Thu, 16 Dec 2004 08:05:23 +0000 Subject: [PATCH] Quizzes can now be opened in a popup window. Javascript must be enabled. An attempt has been made to make the popup as secure as possible by disabling various browser capabilities through javascript. --- mod/quiz/attempt.php | 43 ++++++++++++++++++++++++++--------- mod/quiz/attempt_close_js.php | 25 ++++++++++++++++++++ mod/quiz/mod.html | 17 ++++++++++++-- mod/quiz/protect_js.php | 36 +++++++++++++++++++++++++++++ mod/quiz/view.php | 9 +++----- mod/quiz/view_js.php | 20 ++++++++++++---- 6 files changed, 126 insertions(+), 24 deletions(-) create mode 100644 mod/quiz/attempt_close_js.php create mode 100644 mod/quiz/protect_js.php diff --git a/mod/quiz/attempt.php b/mod/quiz/attempt.php index 700e4dbeb7..6dddfec32a 100644 --- a/mod/quiz/attempt.php +++ b/mod/quiz/attempt.php @@ -54,13 +54,17 @@ // Print the page header - $strquizzes = get_string("modulenameplural", "quiz"); - $strquiz = get_string("modulename", "quiz"); - - print_header_simple("$quiz->name", "", + if (!empty($quiz->popup)) { + print_header("$course->shortname: $quiz->name", '', '', '', '', false, '', '', false, ''); + + } else { + $strquizzes = get_string("modulenameplural", "quiz"); + $strquiz = get_string("modulename", "quiz"); + print_header_simple("$quiz->name", "", "id\">$strquizzes -> id\">$quiz->name -> $strattemptnum", "", "", true); + } echo ''; // for overlib @@ -99,7 +103,9 @@ print_simple_box_end(); echo "\n"; - print_footer(); + if (empty($quiz->popup)) { + print_footer(); + } exit; } else { @@ -187,7 +193,9 @@ "review.php?id=$cm->id&attempt=$attempt->id", "$quiz->id", $cm->id); } else { notice(get_string("alreadysubmitted", "quiz"), "view.php?id=$cm->id"); - print_footer($course); + if (empty($quiz->popup)) { + print_footer($course); + } exit; } @@ -203,15 +211,19 @@ print_heading("$strgrade: $result->grade/$quiz->grade"); } - print_continue("view.php?id=$cm->id"); + /// continue button - use javascript to close down child window if in popup + include('attempt_close_js.php'); if ($quiz->feedback) { $quiz->shuffleanswers = false; // Never shuffle answers in feedback quiz_print_quiz_questions($quiz, $questions, $result, $shuffleorder); - print_continue("view.php?id=$cm->id"); + /// continue button - use javascript to close down child window if in popup + include('attempt_close_js.php'); } - print_footer($course); + if (empty($quiz->popup)) { + print_footer($course); + } exit; } @@ -221,7 +233,9 @@ if (isguest()) { print_heading(get_string("guestsno", "quiz")); - print_footer($course); + if (empty($quiz->popup)) { + print_footer($course); + } exit; } @@ -258,6 +272,11 @@ include("jsclock.php"); } +/// Include Javascript protection for this page if required + + if (!empty($quiz->popup)) { + include("protect_js.php"); + } /// Print all the questions @@ -289,6 +308,8 @@ require('jstimer.php'); } - print_footer($course); + if (empty($quiz->popup)) { + print_footer($course); + } ?> diff --git a/mod/quiz/attempt_close_js.php b/mod/quiz/attempt_close_js.php new file mode 100644 index 0000000000..013ebc32c8 --- /dev/null +++ b/mod/quiz/attempt_close_js.php @@ -0,0 +1,25 @@ + + +
+popup)) { +?> + + + + + $cm->id ), get_string('continue')); +} +?> +
diff --git a/mod/quiz/mod.html b/mod/quiz/mod.html index 330f05f589..ebb5496191 100644 --- a/mod/quiz/mod.html +++ b/mod/quiz/mod.html @@ -55,6 +55,9 @@ if (!isset($form->timelimit)) { $form->timelimit = 0; } + if (!isset($form->popup)) { + $form->popup = 0; + } ?> @@ -117,7 +120,6 @@ ?> - : @@ -127,7 +129,6 @@ ?> - : @@ -246,6 +247,18 @@ ?> + + : + + popup", ""); + helpbutton("popup", get_string("popup","quiz"), "quiz"); + ?> + + : diff --git a/mod/quiz/protect_js.php b/mod/quiz/protect_js.php new file mode 100644 index 0000000000..df9612bb48 --- /dev/null +++ b/mod/quiz/protect_js.php @@ -0,0 +1,36 @@ + + + diff --git a/mod/quiz/view.php b/mod/quiz/view.php index b50f8f08bb..2f44df763d 100644 --- a/mod/quiz/view.php +++ b/mod/quiz/view.php @@ -163,13 +163,10 @@ echo "
"; echo "

"; echo "
"; - if ($quiz->timelimit) { - include("view_js.php"); - } else { - print_single_button("attempt.php", $options, get_string("attemptquiznow","quiz")); - } + + include("view_js.php"); + echo "
\n"; - //echo "

"; } } else { print_heading(get_string("nomoreattempts", "quiz")); diff --git a/mod/quiz/view_js.php b/mod/quiz/view_js.php index 3f99b4fc66..46c7ae02e7 100644 --- a/mod/quiz/view_js.php +++ b/mod/quiz/view_js.php @@ -1,9 +1,19 @@ +popup)) ? 'quizpopup' : '_self'; +$windowoptions = ($window == '_self') ? '' : "left=0, top=0, height='+window.screen.height+', width='+window.screen.width+', channelmode=yes, fullscreen=yes, scrollbars=yes, resizeable=no, directories=no, toolbar=no, titlebar=no, location=no, status=no, menubar=no"; + +?> + - \ No newline at end of file + + -- 2.39.5