Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

MDL-35792 question preview: way to update options without restarting.

It is useful, and possible, to update the display options without
restarting the question. You now only have to restart if you are
changing the maximum mark or the behaviour.
  • Loading branch information...
commit 599cc731e360993672dba702740d8aef4a6109e9 1 parent 0dc5a53
@dtle dtle authored timhunt committed
View
3  lang/en/question.php
@@ -306,6 +306,8 @@
$string['cannotpreview'] = 'You can\'t preview these questions!';
$string['category'] = 'Category';
$string['changeoptions'] = 'Change options';
+$string['attemptoptions'] = 'Attempt options';
+$string['displayoptions'] = 'Display options';
$string['check'] = 'Check';
$string['clearwrongparts'] = 'Clear incorrect responses';
$string['closepreview'] = 'Close preview';
@@ -384,6 +386,7 @@
$string['responsehistory'] = 'Response history';
$string['restart'] = 'Start again';
$string['restartwiththeseoptions'] = 'Start again with these options';
+$string['updatedisplayoptions'] = 'Update display options';
$string['rightanswer'] = 'Right answer';
$string['rightanswer_help'] = 'an automatically generated summary of the correct response. This can be limited, so you may wish to consider explaining the correct solution in the general feedback for the question, and turning this option off.';
$string['saved'] = 'Saved: {$a}';
View
6 question/preview.php
@@ -124,7 +124,7 @@
$options->maxmark = $quba->get_question_max_mark($slot);
// Create the settings form, and initialise the fields.
-$optionsform = new preview_options_form(question_preview_form_url($question->id, $context),
+$optionsform = new preview_options_form(question_preview_form_url($question->id, $context, $previewid),
array('quba' => $quba, 'maxvariant' => $maxvariant));
$optionsform->set_data($options);
@@ -135,7 +135,9 @@
if (!isset($newoptions->variant)) {
$newoptions->variant = $options->variant;
}
- restart_preview($previewid, $question->id, $newoptions, $context);
+ if (isset($newoptions->saverestart)) {
+ restart_preview($previewid, $question->id, $newoptions, $context);
+ }
}
// Prepare a URL that is used in various places.
View
20 question/previewlib.php
@@ -44,7 +44,7 @@ public function definition() {
question_display_options::VISIBLE => get_string('shown', 'question'),
);
- $mform->addElement('header', 'optionsheader', get_string('changeoptions', 'question'));
+ $mform->addElement('header', 'optionsheader', get_string('attemptoptions', 'question'));
$behaviours = question_engine::get_behaviour_options(
$this->_customdata['quba']->get_preferred_behaviour());
@@ -56,6 +56,11 @@ public function definition() {
array('size' => '5'));
$mform->setType('maxmark', PARAM_FLOAT);
+ $mform->addElement('submit', 'saverestart',
+ get_string('restartwiththeseoptions', 'question'));
+
+ $mform->addElement('header', 'optionsheader', get_string('displayoptions', 'question'));
+
if ($this->_customdata['maxvariant'] > 1) {
$variants = range(1, $this->_customdata['maxvariant']);
$mform->addElement('select', 'variant', get_string('questionvariant', 'question'),
@@ -88,8 +93,8 @@ public function definition() {
$mform->addElement('select', 'history',
get_string('responsehistory', 'question'), $hiddenofvisible);
- $mform->addElement('submit', 'submit',
- get_string('restartwiththeseoptions', 'question'));
+ $mform->addElement('submit', 'saveupdate',
+ get_string('updatedisplayoptions', 'question'));
}
}
@@ -286,10 +291,10 @@ function question_preview_action_url($questionid, $qubaid,
/**
* The the URL to use for actions relating to this preview.
* @param int $questionid the question being previewed.
- * @param int $qubaid the id of the question usage for this preview.
- * @param question_preview_options $options the options in use.
+ * @param context $context the current moodle context.
+ * @param int $previewid optional previewid to sign post saved previewed answers.
*/
-function question_preview_form_url($questionid, $context) {
+function question_preview_form_url($questionid, $context, $previewid = null) {
$params = array(
'id' => $questionid,
);
@@ -298,6 +303,9 @@ function question_preview_form_url($questionid, $context) {
} else if ($context->contextlevel == CONTEXT_COURSE) {
$params['courseid'] = $context->instanceid;
}
+ if ($previewid) {
+ $params['previewid'] = $previewid;
+ }
return new moodle_url('/question/preview.php', $params);
}
Please sign in to comment.
Something went wrong with that request. Please try again.