From 802f8d2af4b405e2855707ac5cd6caf55b104a31 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Mon, 14 May 2012 18:53:30 +0100 Subject: [PATCH 1/4] MDL-32087 question preview: make more technical info available. ... but hide it in a collapsible region. --- lang/en/question.php | 7 ++++++- question/preview.php | 21 ++++++++++++++++++--- theme/base/style/question.css | 4 ++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lang/en/question.php b/lang/en/question.php index 74edbbc52e9..1bbfa939cb3 100644 --- a/lang/en/question.php +++ b/lang/en/question.php @@ -298,7 +298,7 @@ $string['answer'] = 'Answer'; $string['answersaved'] = 'Answer saved'; $string['attemptfinished'] = 'Attempt finished'; $string['attemptfinishedsubmitting'] = 'Attempt finished submitting: '; -$string['behaviourbeingused'] = 'behaviour being used: {$a}'; +$string['behaviourbeingused'] = 'Behaviour being used: {$a}'; $string['cannotloadquestion'] = 'Could not load question'; $string['cannotpreview'] = 'You can\'t preview these questions!'; $string['category'] = 'Category'; @@ -403,6 +403,11 @@ $string['submissionoutofsequencefriendlymessage'] = "You have entered data outsi $string['submit'] = 'Submit'; $string['submitandfinish'] = 'Submit and finish'; $string['submitted'] = 'Submit: {$a}'; +$string['technicalinfo'] = 'Technical information'; +$string['technicalinfominfraction'] = 'Minimum fraction: {$a}'; +$string['technicalinfoquestionsummary'] = 'Question summary: {$a}'; +$string['technicalinforightsummary'] = 'Right answer summary: {$a}'; +$string['technicalinfostate'] = 'Question state: {$a}'; $string['unknownbehaviour'] = 'Unknown behaviour: {$a}.'; $string['unknownquestion'] = 'Unknown question: {$a}.'; $string['unknownquestioncatregory'] = 'Unknown question category: {$a}.'; diff --git a/question/preview.php b/question/preview.php index 8b62e43f66c..e81a101f9dc 100644 --- a/question/preview.php +++ b/question/preview.php @@ -220,6 +220,16 @@ if (!$previewid) { $restartdisabled = ' disabled="disabled"'; } +// Prepare technical info to be output. +$qa = $quba->get_question_attempt($slot); +$technical = array(); +$technical[] = get_string('behaviourbeingused', 'question', + question_engine::get_behaviour_name($qa->get_behaviour_name())); +$technical[] = get_string('technicalinfominfraction', 'question', $qa->get_min_fraction()); +$technical[] = get_string('technicalinfoquestionsummary', 'question', s($qa->get_question_summary())); +$technical[] = get_string('technicalinforightsummary', 'question', s($qa->get_right_answer_summary())); +$technical[] = get_string('technicalinfostate', 'question', '' . $qa->get_state()); + // Output $title = get_string('previewquestion', 'question', format_string($question->name)); $headtags = question_engine::initialise_js() . $quba->render_question_head_html($slot); @@ -238,9 +248,6 @@ echo ''; // Output the question. echo $quba->render_question($slot, $options, $displaynumber); -echo '

' . get_string('behaviourbeingused', 'question', - question_engine::get_behaviour_name( - $quba->get_question_attempt($slot)->get_behaviour_name())) . '

'; // Finish the question form. echo '
'; echo ''; echo '
'; echo ''; +// Output the technical info. +print_collapsible_region_start('', 'techinfo', get_string('technicalinfo', 'question'), + 'core_question_preview_techinfo_collapsed', true); +foreach ($technical as $info) { + echo '

' . $info . '

'; +} +print_collapsible_region_end(); + // Display the settings form. $optionsform->display(); diff --git a/theme/base/style/question.css b/theme/base/style/question.css index 91e847c0729..d974e50196f 100644 --- a/theme/base/style/question.css +++ b/theme/base/style/question.css @@ -87,6 +87,10 @@ body.jsenabled #qtypechoicecontainer {display: block;} .importerror {margin-top: 10px;border-bottom: 1px solid #555;} .mform .que.comment .fitemtitle {width: 20%;} +#page-question-preview #techinfo { + margin: 1em 0; +} + /** Overide for RTL layout **/ .dir-rtl #qtypechoicecontainer #chooseqtype .instruction, .dir-rtl #qtypechoicecontainer #chooseqtype .qtypesummary {right: 60%;left: 0%; border-left:0;border-right: 1px solid grey;} From a2b4d8968cdce89967f4854ea494f128c892fd16 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Mon, 14 May 2012 18:54:37 +0100 Subject: [PATCH 2/4] MDL-32087 question preview: add a Save button. Without this, there are some interactions with the question that could only be tested by adding the question to a quiz, which was a pain. --- lang/en/question.php | 1 + question/preview.php | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lang/en/question.php b/lang/en/question.php index 1bbfa939cb3..2352b44ecc1 100644 --- a/lang/en/question.php +++ b/lang/en/question.php @@ -269,6 +269,7 @@ $string['questiontype'] = 'Question type'; $string['questionuse'] = 'Use question in this activity'; $string['questionvariant'] = 'Question variant'; $string['reviewresponse'] = 'Review response'; +$string['save'] = 'Save'; $string['saveflags'] = 'Save the state of the flags'; $string['selectacategory'] = 'Select a category:'; $string['selectaqtypefordescription'] = 'Select a question type to see its description.'; diff --git a/question/preview.php b/question/preview.php index e81a101f9dc..15e369eb13b 100644 --- a/question/preview.php +++ b/question/preview.php @@ -252,6 +252,8 @@ echo $quba->render_question($slot, $options, $displaynumber); echo '
'; echo '', "\n"; +echo '', "\n"; echo '', "\n"; echo ' Date: Mon, 14 May 2012 19:07:37 +0100 Subject: [PATCH 3/4] MDL-32087 question preview: update the code to use html_writer. --- question/preview.php | 56 ++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/question/preview.php b/question/preview.php index 15e369eb13b..4ecf93fd04c 100644 --- a/question/preview.php +++ b/question/preview.php @@ -132,7 +132,7 @@ $optionsform->set_data($options); // Process change of settings, if that was requested. if ($newoptions = $optionsform->get_submitted_data()) { - // Set user preferences + // Set user preferences. $options->save_user_preview_options($newoptions); if (!isset($newoptions->variant)) { $newoptions->variant = $options->variant; @@ -205,19 +205,19 @@ if ($question->length) { } else { $displaynumber = 'i'; } -$restartdisabled = ''; -$finishdisabled = ''; -$filldisabled = ''; +$restartdisabled = array(); +$finishdisabled = array(); +$filldisabled = array(); if ($quba->get_question_state($slot)->is_finished()) { - $finishdisabled = ' disabled="disabled"'; - $filldisabled = ' disabled="disabled"'; + $finishdisabled = array('disabled' => 'disabled'); + $filldisabled = array('disabled' => 'disabled'); } // If question type cannot give us a correct response, disable this button. if (is_null($quba->get_correct_response($slot))) { - $filldisabled = ' disabled="disabled"'; + $filldisabled = array('disabled' => 'disabled'); } if (!$previewid) { - $restartdisabled = ' disabled="disabled"'; + $restartdisabled = array('disabled' => 'disabled'); } // Prepare technical info to be output. @@ -230,7 +230,7 @@ $technical[] = get_string('technicalinfoquestionsummary', 'question', s($qa->get $technical[] = get_string('technicalinforightsummary', 'question', s($qa->get_right_answer_summary())); $technical[] = get_string('technicalinfostate', 'question', '' . $qa->get_state()); -// Output +// Start output. $title = get_string('previewquestion', 'question', format_string($question->name)); $headtags = question_engine::initialise_js() . $quba->render_question_head_html($slot); $PAGE->set_title($title); @@ -238,35 +238,35 @@ $PAGE->set_heading($title); echo $OUTPUT->header(); // Start the question form. -echo '
', "\n"; -echo '
'; -echo '', "\n"; -echo '', "\n"; -echo '
'; +echo html_writer::start_tag('form', array('method' => 'post', 'action' => $actionurl, + 'enctype' => 'multipart/form-data', 'id' => 'responseform')); +echo html_writer::start_tag('div'); +echo html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'sesskey', 'value' => sesskey())); +echo html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'slots', 'value' => $slot)); +echo html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'scrollpos', 'value' => '', 'id' => 'scrollpos')); +echo html_writer::end_tag('div'); // Output the question. echo $quba->render_question($slot, $options, $displaynumber); // Finish the question form. -echo '
'; -echo '', "\n"; -echo '', "\n"; -echo '', "\n"; -echo '', "\n"; -echo ''; -echo '
'; -echo '
'; +echo html_writer::start_tag('div', array('id' => 'previewcontrols', 'class' => 'controls')); +echo html_writer::empty_tag('input', $restartdisabled + array('type' => 'submit', + 'name' => 'restart', 'value' => get_string('restart', 'question'))); +echo html_writer::empty_tag('input', $finishdisabled + array('type' => 'submit', + 'name' => 'save', 'value' => get_string('save', 'question'))); +echo html_writer::empty_tag('input', $filldisabled + array('type' => 'submit', + 'name' => 'fill', 'value' => get_string('fillincorrect', 'question'))); +echo html_writer::empty_tag('input', $finishdisabled + array('type' => 'submit', + 'name' => 'finish', 'value' => get_string('submitandfinish', 'question'))); +echo html_writer::end_tag('div'); +echo html_writer::end_tag('form'); // Output the technical info. print_collapsible_region_start('', 'techinfo', get_string('technicalinfo', 'question'), 'core_question_preview_techinfo_collapsed', true); foreach ($technical as $info) { - echo '

' . $info . '

'; + echo html_writer::tag('p', $info, array('class' => 'notifytiny')); } print_collapsible_region_end(); From 18056cd8dd3417a435a68ca4a4848432bf7cbdda Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Mon, 14 May 2012 19:24:35 +0100 Subject: [PATCH 4/4] MDL-32087 question preview: add a help icon to the technical info. --- lang/en/question.php | 1 + question/preview.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lang/en/question.php b/lang/en/question.php index 2352b44ecc1..d0cf1a45189 100644 --- a/lang/en/question.php +++ b/lang/en/question.php @@ -405,6 +405,7 @@ $string['submit'] = 'Submit'; $string['submitandfinish'] = 'Submit and finish'; $string['submitted'] = 'Submit: {$a}'; $string['technicalinfo'] = 'Technical information'; +$string['technicalinfo_help'] = 'This technical information is probably only useful for developers working on new question types. It may also be helpful when trying to diagnose problems with questions.'; $string['technicalinfominfraction'] = 'Minimum fraction: {$a}'; $string['technicalinfoquestionsummary'] = 'Question summary: {$a}'; $string['technicalinforightsummary'] = 'Right answer summary: {$a}'; diff --git a/question/preview.php b/question/preview.php index 4ecf93fd04c..56513e79ab1 100644 --- a/question/preview.php +++ b/question/preview.php @@ -263,7 +263,8 @@ echo html_writer::end_tag('div'); echo html_writer::end_tag('form'); // Output the technical info. -print_collapsible_region_start('', 'techinfo', get_string('technicalinfo', 'question'), +print_collapsible_region_start('', 'techinfo', get_string('technicalinfo', 'question') . + $OUTPUT->help_icon('technicalinfo', 'question'), 'core_question_preview_techinfo_collapsed', true); foreach ($technical as $info) { echo html_writer::tag('p', $info, array('class' => 'notifytiny'));