diff --git a/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-coverage.js b/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-coverage.js
index b0ac14d1dbd..15406462199 100644
--- a/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-coverage.js
+++ b/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-coverage.js
@@ -26,10 +26,10 @@ _yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"]
path: "build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js",
code: []
};
-_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].code=["YUI.add('moodle-mod_quiz-autosave', function (Y, NAME) {","","// This file is part of Moodle - http://moodle.org/","//","// Moodle is free software: you can redistribute it and/or modify","// it under the terms of the GNU General Public License as published by","// the Free Software Foundation, either version 3 of the License, or","// (at your option) any later version.","//","// Moodle is distributed in the hope that it will be useful,","// but WITHOUT ANY WARRANTY; without even the implied warranty of","// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the","// GNU General Public License for more details.","//","// You should have received a copy of the GNU General Public License","// along with Moodle. If not, see .","","","/**"," * Auto-save functionality for during quiz attempts."," *"," * @package mod_quiz"," * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}"," * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later"," */","","M.mod_quiz = M.mod_quiz || {};","M.mod_quiz.autosave = {"," /** Delays and repeat counts. */"," TINYMCE_DETECTION_DELAY: 500,"," TINYMCE_DETECTION_REPEATS: 20,"," WATCH_HIDDEN_DELAY: 1000,",""," /** Selectors. */"," SELECTORS: {"," QUIZ_FORM: '#responseform',"," VALUE_CHANGE_ELEMENTS: 'input, textarea',"," CHANGE_ELEMENTS: 'input, select',"," HIDDEN_INPUTS: 'input[type=hidden]'"," },",""," /** Script that handles the auto-saves. */"," AUTOSAVE_HANDLER: M.cfg.wwwroot + '/mod/quiz/autosave.ajax.php',",""," /** The delay between a change being made, and it being auto-saved. */"," delay: 120000,",""," /** The form we are monitoring. */"," form: null,",""," /** Whether the form has been modified since the last save started. */"," dirty: false,",""," /** Timer object for the delay between form modifaction and the save starting. */"," delay_timer: null,",""," /** Y.io transaction for the save ajax request. */"," save_transaction: null,",""," /** Properly bound key change handler. */"," editor_change_handler: null,",""," hidden_field_values: {},",""," /**"," * Initialise the autosave code."," * @param delay the delay, in seconds, between a change being detected, and"," * a save happening."," */"," init: function(delay) {"," this.form = Y.one(this.SELECTORS.QUIZ_FORM);"," if (!this.form) {"," return;"," }",""," this.delay = delay * 1000;",""," this.form.delegate('valuechange', this.value_changed, this.SELECTORS.VALUE_CHANGE_ELEMENTS, this);"," this.form.delegate('change', this.value_changed, this.SELECTORS.CHANGE_ELEMENTS, this);"," this.form.on('submit', this.stop_autosaving, this);",""," this.init_tinymce(this.TINYMCE_DETECTION_REPEATS);",""," this.save_hidden_field_values();"," this.watch_hidden_fields();"," },",""," save_hidden_field_values: function() {"," this.form.all(this.SELECTORS.HIDDEN_INPUTS).each(function(hidden) {"," var name = hidden.get('name');"," if (!name) {"," return;"," }"," this.hidden_field_values[name] = hidden.get('value');"," }, this);"," },",""," watch_hidden_fields: function() {"," this.detect_hidden_field_changes();"," Y.later(this.WATCH_HIDDEN_DELAY, this, this.watch_hidden_fields);"," },",""," detect_hidden_field_changes: function() {"," this.form.all(this.SELECTORS.HIDDEN_INPUTS).each(function(hidden) {"," var name = hidden.get('name'),"," value = hidden.get('value');"," if (!name) {"," return;"," }"," if (!(name in this.hidden_field_values) || value !== this.hidden_field_values[name]) {"," this.hidden_field_values[name] = value;"," this.value_changed({target: hidden});"," }"," }, this);"," },",""," /**"," * @param repeatcount Because TinyMCE might load slowly, after us, we need"," * to keep trying every 10 seconds or so, until we detect TinyMCE is there,"," * or enough time has passed."," */"," init_tinymce: function(repeatcount) {"," if (typeof tinymce === 'undefined') {"," if (repeatcount > 0) {"," Y.later(this.TINYMCE_DETECTION_DELAY, this, this.init_tinymce, [repeatcount - 1]);"," }"," return;"," }",""," this.editor_change_handler = Y.bind(this.editor_changed, this);"," tinyMCE.onAddEditor.add(Y.bind(this.init_tinymce_editor, this));"," },",""," /**"," * @param repeatcount Because TinyMCE might load slowly, after us, we need"," * to keep trying every 10 seconds or so, until we detect TinyMCE is there,"," * or enough time has passed."," */"," init_tinymce_editor: function(notused, editor) {"," editor.onChange.add(this.editor_change_handler);"," editor.onRedo.add(this.editor_change_handler);"," editor.onUndo.add(this.editor_change_handler);"," editor.onKeyDown.add(this.editor_change_handler);"," },",""," value_changed: function(e) {"," if (e.target.get('name') === 'thispage' || e.target.get('name').match(/_:flagged$/)) {"," return; // Not interesting."," }"," this.start_save_timer_if_necessary();"," },",""," editor_changed: function(editor) {"," this.start_save_timer_if_necessary();"," },",""," start_save_timer_if_necessary: function() {"," this.dirty = true;",""," if (this.delay_timer || this.save_transaction) {"," // Already counting down or daving."," return;"," }",""," this.start_save_timer();"," },",""," start_save_timer: function() {"," this.cancel_delay();"," this.delay_timer = Y.later(this.delay, this, this.save_changes);"," },",""," cancel_delay: function() {"," if (this.delay_timer && this.delay_timer !== true) {"," this.delay_timer.cancel();"," }"," this.delay_timer = null;"," },",""," save_changes: function() {"," this.cancel_delay();"," this.dirty = false;",""," if (this.is_time_nearly_over()) {"," this.stop_autosaving();"," return;"," }",""," this.save_transaction = Y.io(this.AUTOSAVE_HANDLER, {"," method: 'POST',"," form: {id: this.form},"," on: {complete: this.save_done},"," context: this"," });"," },",""," save_done: function() {"," this.save_transaction = null;",""," if (this.dirty) {"," this.start_save_timer();"," }"," },",""," is_time_nearly_over: function() {"," return M.mod_quiz.timer && M.mod_quiz.timer.endtime &&"," (new Date().getTime() + 2*this.delay) > M.mod_quiz.timer.endtime;"," },",""," stop_autosaving: function() {"," this.cancel_delay();"," this.delay_timer = true;"," if (this.save_transaction) {"," this.save_transaction.abort();"," }"," }","};","","","}, '@VERSION@', {\"requires\": [\"base\", \"node\", \"event\", \"event-valuechange\", \"node-event-delegate\", \"io-form\"]});"];
-_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].lines = {"1":0,"27":0,"28":0,"71":0,"72":0,"73":0,"76":0,"78":0,"79":0,"80":0,"82":0,"84":0,"85":0,"89":0,"90":0,"91":0,"92":0,"94":0,"99":0,"100":0,"104":0,"105":0,"107":0,"108":0,"110":0,"111":0,"112":0,"123":0,"124":0,"125":0,"127":0,"130":0,"131":0,"140":0,"141":0,"142":0,"143":0,"147":0,"148":0,"150":0,"154":0,"158":0,"160":0,"162":0,"165":0,"169":0,"170":0,"174":0,"175":0,"177":0,"181":0,"182":0,"184":0,"185":0,"186":0,"189":0,"198":0,"200":0,"201":0,"206":0,"211":0,"212":0,"213":0,"214":0};
-_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].functions = {"init:70":0,"(anonymous 2):89":0,"save_hidden_field_values:88":0,"watch_hidden_fields:98":0,"(anonymous 3):104":0,"detect_hidden_field_changes:103":0,"init_tinymce:122":0,"init_tinymce_editor:139":0,"value_changed:146":0,"editor_changed:153":0,"start_save_timer_if_necessary:157":0,"start_save_timer:168":0,"cancel_delay:173":0,"save_changes:180":0,"save_done:197":0,"is_time_nearly_over:205":0,"stop_autosaving:210":0,"(anonymous 1):1":0};
-_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].coveredLines = 64;
+_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].code=["YUI.add('moodle-mod_quiz-autosave', function (Y, NAME) {","","// This file is part of Moodle - http://moodle.org/","//","// Moodle is free software: you can redistribute it and/or modify","// it under the terms of the GNU General Public License as published by","// the Free Software Foundation, either version 3 of the License, or","// (at your option) any later version.","//","// Moodle is distributed in the hope that it will be useful,","// but WITHOUT ANY WARRANTY; without even the implied warranty of","// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the","// GNU General Public License for more details.","//","// You should have received a copy of the GNU General Public License","// along with Moodle. If not, see .","","","/**"," * Auto-save functionality for during quiz attempts."," *"," * @package mod_quiz"," * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}"," * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later"," */","","M.mod_quiz = M.mod_quiz || {};","M.mod_quiz.autosave = {"," /** Delays and repeat counts. */"," TINYMCE_DETECTION_DELAY: 500,"," TINYMCE_DETECTION_REPEATS: 20,"," WATCH_HIDDEN_DELAY: 1000,",""," /** Selectors. */"," SELECTORS: {"," QUIZ_FORM: '#responseform',"," VALUE_CHANGE_ELEMENTS: 'input, textarea',"," CHANGE_ELEMENTS: 'input, select',"," HIDDEN_INPUTS: 'input[type=hidden]'"," },",""," /** Script that handles the auto-saves. */"," AUTOSAVE_HANDLER: M.cfg.wwwroot + '/mod/quiz/autosave.ajax.php',",""," /** The delay between a change being made, and it being auto-saved. */"," delay: 120000,",""," /** The form we are monitoring. */"," form: null,",""," /** Whether the form has been modified since the last save started. */"," dirty: false,",""," /** Timer object for the delay between form modifaction and the save starting. */"," delay_timer: null,",""," /** Y.io transaction for the save ajax request. */"," save_transaction: null,",""," /** Properly bound key change handler. */"," editor_change_handler: null,",""," hidden_field_values: {},",""," /**"," * Initialise the autosave code."," * @param delay the delay, in seconds, between a change being detected, and"," * a save happening."," */"," init: function(delay) {"," this.form = Y.one(this.SELECTORS.QUIZ_FORM);"," if (!this.form) {"," return;"," }",""," this.delay = delay * 1000;",""," this.form.delegate('valuechange', this.value_changed, this.SELECTORS.VALUE_CHANGE_ELEMENTS, this);"," this.form.delegate('change', this.value_changed, this.SELECTORS.CHANGE_ELEMENTS, this);"," this.form.on('submit', this.stop_autosaving, this);",""," this.init_tinymce(this.TINYMCE_DETECTION_REPEATS);",""," this.save_hidden_field_values();"," this.watch_hidden_fields();"," },",""," save_hidden_field_values: function() {"," this.form.all(this.SELECTORS.HIDDEN_INPUTS).each(function(hidden) {"," var name = hidden.get('name');"," if (!name) {"," return;"," }"," this.hidden_field_values[name] = hidden.get('value');"," }, this);"," },",""," watch_hidden_fields: function() {"," this.detect_hidden_field_changes();"," Y.later(this.WATCH_HIDDEN_DELAY, this, this.watch_hidden_fields);"," },",""," detect_hidden_field_changes: function() {"," this.form.all(this.SELECTORS.HIDDEN_INPUTS).each(function(hidden) {"," var name = hidden.get('name'),"," value = hidden.get('value');"," if (!name) {"," return;"," }"," if (!(name in this.hidden_field_values) || value !== this.hidden_field_values[name]) {"," this.hidden_field_values[name] = value;"," this.value_changed({target: hidden});"," }"," }, this);"," },",""," /**"," * @param repeatcount Because TinyMCE might load slowly, after us, we need"," * to keep trying every 10 seconds or so, until we detect TinyMCE is there,"," * or enough time has passed."," */"," init_tinymce: function(repeatcount) {"," if (typeof tinyMCE === 'undefined') {"," if (repeatcount > 0) {"," Y.later(this.TINYMCE_DETECTION_DELAY, this, this.init_tinymce, [repeatcount - 1]);"," } else {"," }"," return;"," }",""," this.editor_change_handler = Y.bind(this.editor_changed, this);"," tinyMCE.onAddEditor.add(Y.bind(this.init_tinymce_editor, this));"," },",""," /**"," * @param repeatcount Because TinyMCE might load slowly, after us, we need"," * to keep trying every 10 seconds or so, until we detect TinyMCE is there,"," * or enough time has passed."," */"," init_tinymce_editor: function(notused, editor) {"," editor.onChange.add(this.editor_change_handler);"," editor.onRedo.add(this.editor_change_handler);"," editor.onUndo.add(this.editor_change_handler);"," editor.onKeyDown.add(this.editor_change_handler);"," },",""," value_changed: function(e) {"," if (e.target.get('name') === 'thispage' || e.target.get('name') === 'scrollpos' ||"," e.target.get('name').match(/_:flagged$/)) {"," return; // Not interesting."," }"," this.start_save_timer_if_necessary();"," },",""," editor_changed: function(editor) {"," this.start_save_timer_if_necessary();"," },",""," start_save_timer_if_necessary: function() {"," this.dirty = true;",""," if (this.delay_timer || this.save_transaction) {"," // Already counting down or daving."," return;"," }",""," this.start_save_timer();"," },",""," start_save_timer: function() {"," this.cancel_delay();"," this.delay_timer = Y.later(this.delay, this, this.save_changes);"," },",""," cancel_delay: function() {"," if (this.delay_timer && this.delay_timer !== true) {"," this.delay_timer.cancel();"," }"," this.delay_timer = null;"," },",""," save_changes: function() {"," this.cancel_delay();"," this.dirty = false;",""," if (this.is_time_nearly_over()) {"," this.stop_autosaving();"," return;"," }",""," if (typeof tinyMCE !== 'undefined') {"," tinyMCE.triggerSave();"," }"," this.save_transaction = Y.io(this.AUTOSAVE_HANDLER, {"," method: 'POST',"," form: {id: this.form},"," on: {complete: this.save_done},"," context: this"," });"," },",""," save_done: function() {"," this.save_transaction = null;",""," if (this.dirty) {"," this.start_save_timer();"," }"," },",""," is_time_nearly_over: function() {"," return M.mod_quiz.timer && M.mod_quiz.timer.endtime &&"," (new Date().getTime() + 2*this.delay) > M.mod_quiz.timer.endtime;"," },",""," stop_autosaving: function() {"," this.cancel_delay();"," this.delay_timer = true;"," if (this.save_transaction) {"," this.save_transaction.abort();"," }"," }","};","","","}, '@VERSION@', {\"requires\": [\"base\", \"node\", \"event\", \"event-valuechange\", \"node-event-delegate\", \"io-form\"]});"];
+_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].lines = {"1":0,"27":0,"28":0,"71":0,"72":0,"73":0,"76":0,"78":0,"79":0,"80":0,"82":0,"84":0,"85":0,"89":0,"90":0,"91":0,"92":0,"94":0,"99":0,"100":0,"104":0,"105":0,"107":0,"108":0,"110":0,"111":0,"112":0,"123":0,"124":0,"125":0,"128":0,"131":0,"132":0,"141":0,"142":0,"143":0,"144":0,"148":0,"150":0,"152":0,"156":0,"160":0,"162":0,"164":0,"167":0,"171":0,"172":0,"176":0,"177":0,"179":0,"183":0,"184":0,"186":0,"187":0,"188":0,"191":0,"192":0,"194":0,"203":0,"205":0,"206":0,"211":0,"216":0,"217":0,"218":0,"219":0};
+_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].functions = {"init:70":0,"(anonymous 2):89":0,"save_hidden_field_values:88":0,"watch_hidden_fields:98":0,"(anonymous 3):104":0,"detect_hidden_field_changes:103":0,"init_tinymce:122":0,"init_tinymce_editor:140":0,"value_changed:147":0,"editor_changed:155":0,"start_save_timer_if_necessary:159":0,"start_save_timer:170":0,"cancel_delay:175":0,"save_changes:182":0,"save_done:202":0,"is_time_nearly_over:210":0,"stop_autosaving:215":0,"(anonymous 1):1":0};
+_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].coveredLines = 66;
_yuitest_coverage["build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js"].coveredFunctions = 18;
_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 1);
YUI.add('moodle-mod_quiz-autosave', function (Y, NAME) {
@@ -189,19 +189,20 @@ this.value_changed({target: hidden});
init_tinymce: function(repeatcount) {
_yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "init_tinymce", 122);
_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 123);
-if (typeof tinymce === 'undefined') {
+if (typeof tinyMCE === 'undefined') {
_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 124);
if (repeatcount > 0) {
_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 125);
Y.later(this.TINYMCE_DETECTION_DELAY, this, this.init_tinymce, [repeatcount - 1]);
+ } else {
}
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 127);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 128);
return;
}
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 130);
-this.editor_change_handler = Y.bind(this.editor_changed, this);
_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 131);
+this.editor_change_handler = Y.bind(this.editor_changed, this);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 132);
tinyMCE.onAddEditor.add(Y.bind(this.init_tinymce_editor, this));
},
@@ -211,85 +212,91 @@ tinyMCE.onAddEditor.add(Y.bind(this.init_tinymce_editor, this));
* or enough time has passed.
*/
init_tinymce_editor: function(notused, editor) {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "init_tinymce_editor", 139);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 140);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "init_tinymce_editor", 140);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 141);
editor.onChange.add(this.editor_change_handler);
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 141);
-editor.onRedo.add(this.editor_change_handler);
_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 142);
-editor.onUndo.add(this.editor_change_handler);
+editor.onRedo.add(this.editor_change_handler);
_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 143);
+editor.onUndo.add(this.editor_change_handler);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 144);
editor.onKeyDown.add(this.editor_change_handler);
},
value_changed: function(e) {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "value_changed", 146);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 147);
-if (e.target.get('name') === 'thispage' || e.target.get('name').match(/_:flagged$/)) {
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 148);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "value_changed", 147);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 148);
+if (e.target.get('name') === 'thispage' || e.target.get('name') === 'scrollpos' ||
+ e.target.get('name').match(/_:flagged$/)) {
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 150);
return; // Not interesting.
}
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 150);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 152);
this.start_save_timer_if_necessary();
},
editor_changed: function(editor) {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "editor_changed", 153);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 154);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "editor_changed", 155);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 156);
this.start_save_timer_if_necessary();
},
start_save_timer_if_necessary: function() {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "start_save_timer_if_necessary", 157);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 158);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "start_save_timer_if_necessary", 159);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 160);
this.dirty = true;
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 160);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 162);
if (this.delay_timer || this.save_transaction) {
// Already counting down or daving.
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 162);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 164);
return;
}
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 165);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 167);
this.start_save_timer();
},
start_save_timer: function() {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "start_save_timer", 168);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 169);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "start_save_timer", 170);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 171);
this.cancel_delay();
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 170);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 172);
this.delay_timer = Y.later(this.delay, this, this.save_changes);
},
cancel_delay: function() {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "cancel_delay", 173);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 174);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "cancel_delay", 175);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 176);
if (this.delay_timer && this.delay_timer !== true) {
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 175);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 177);
this.delay_timer.cancel();
}
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 177);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 179);
this.delay_timer = null;
},
save_changes: function() {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "save_changes", 180);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 181);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "save_changes", 182);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 183);
this.cancel_delay();
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 182);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 184);
this.dirty = false;
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 184);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 186);
if (this.is_time_nearly_over()) {
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 185);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 187);
this.stop_autosaving();
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 186);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 188);
return;
}
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 189);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 191);
+if (typeof tinyMCE !== 'undefined') {
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 192);
+tinyMCE.triggerSave();
+ }
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 194);
this.save_transaction = Y.io(this.AUTOSAVE_HANDLER, {
method: 'POST',
form: {id: this.form},
@@ -299,33 +306,33 @@ this.save_transaction = Y.io(this.AUTOSAVE_HANDLER, {
},
save_done: function() {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "save_done", 197);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 198);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "save_done", 202);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 203);
this.save_transaction = null;
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 200);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 205);
if (this.dirty) {
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 201);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 206);
this.start_save_timer();
}
},
is_time_nearly_over: function() {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "is_time_nearly_over", 205);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 206);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "is_time_nearly_over", 210);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 211);
return M.mod_quiz.timer && M.mod_quiz.timer.endtime &&
(new Date().getTime() + 2*this.delay) > M.mod_quiz.timer.endtime;
},
stop_autosaving: function() {
- _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "stop_autosaving", 210);
-_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 211);
+ _yuitest_coverfunc("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", "stop_autosaving", 215);
+_yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 216);
this.cancel_delay();
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 212);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 217);
this.delay_timer = true;
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 213);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 218);
if (this.save_transaction) {
- _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 214);
+ _yuitest_coverline("build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js", 219);
this.save_transaction.abort();
}
}
diff --git a/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-debug.js b/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-debug.js
index 76a2f50f521..043c560b3e4 100644
--- a/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-debug.js
+++ b/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-debug.js
@@ -121,9 +121,11 @@ M.mod_quiz.autosave = {
* or enough time has passed.
*/
init_tinymce: function(repeatcount) {
- if (typeof tinymce === 'undefined') {
+ if (typeof tinyMCE === 'undefined') {
if (repeatcount > 0) {
Y.later(this.TINYMCE_DETECTION_DELAY, this, this.init_tinymce, [repeatcount - 1]);
+ } else {
+ Y.log('Gave up looking for TinyMCE.');
}
return;
}
@@ -147,7 +149,8 @@ M.mod_quiz.autosave = {
},
value_changed: function(e) {
- if (e.target.get('name') === 'thispage' || e.target.get('name').match(/_:flagged$/)) {
+ if (e.target.get('name') === 'thispage' || e.target.get('name') === 'scrollpos' ||
+ e.target.get('name').match(/_:flagged$/)) {
return; // Not interesting.
}
Y.log('Detected a value change in element ' + e.target.get('name') + '.');
@@ -193,6 +196,9 @@ M.mod_quiz.autosave = {
}
Y.log('Doing a save.');
+ if (typeof tinyMCE !== 'undefined') {
+ tinyMCE.triggerSave();
+ }
this.save_transaction = Y.io(this.AUTOSAVE_HANDLER, {
method: 'POST',
form: {id: this.form},
diff --git a/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-min.js b/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-min.js
index 5960b4871c1..64d9bad04b1 100644
--- a/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-min.js
+++ b/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave-min.js
@@ -1 +1 @@
-YUI.add("moodle-mod_quiz-autosave",function(e,t){M.mod_quiz=M.mod_quiz||{},M.mod_quiz.autosave={TINYMCE_DETECTION_DELAY:500,TINYMCE_DETECTION_REPEATS:20,WATCH_HIDDEN_DELAY:1e3,SELECTORS:{QUIZ_FORM:"#responseform",VALUE_CHANGE_ELEMENTS:"input, textarea",CHANGE_ELEMENTS:"input, select",HIDDEN_INPUTS:"input[type=hidden]"},AUTOSAVE_HANDLER:M.cfg.wwwroot+"/mod/quiz/autosave.ajax.php",delay:12e4,form:null,dirty:!1,delay_timer:null,save_transaction:null,editor_change_handler:null,hidden_field_values:{},init:function(t){this.form=e.one(this.SELECTORS.QUIZ_FORM);if(!this.form)return;this.delay=t*1e3,this.form.delegate("valuechange",this.value_changed,this.SELECTORS.VALUE_CHANGE_ELEMENTS,this),this.form.delegate("change",this.value_changed,this.SELECTORS.CHANGE_ELEMENTS,this),this.form.on("submit",this.stop_autosaving,this),this.init_tinymce(this.TINYMCE_DETECTION_REPEATS),this.save_hidden_field_values(),this.watch_hidden_fields()},save_hidden_field_values:function(){this.form.all(this.SELECTORS.HIDDEN_INPUTS).each(function(e){var t=e.get("name");if(!t)return;this.hidden_field_values[t]=e.get("value")},this)},watch_hidden_fields:function(){this.detect_hidden_field_changes(),e.later(this.WATCH_HIDDEN_DELAY,this,this.watch_hidden_fields)},detect_hidden_field_changes:function(){this.form.all(this.SELECTORS.HIDDEN_INPUTS).each(function(e){var t=e.get("name"),n=e.get("value");if(!t)return;if(!(t in this.hidden_field_values)||n!==this.hidden_field_values[t])this.hidden_field_values[t]=n,this.value_changed({target:e})},this)},init_tinymce:function(t){if(typeof tinymce=="undefined"){t>0&&e.later(this.TINYMCE_DETECTION_DELAY,this,this.init_tinymce,[t-1]);return}this.editor_change_handler=e.bind(this.editor_changed,this),tinyMCE.onAddEditor.add(e.bind(this.init_tinymce_editor,this))},init_tinymce_editor:function(e,t){t.onChange.add(this.editor_change_handler),t.onRedo.add(this.editor_change_handler),t.onUndo.add(this.editor_change_handler),t.onKeyDown.add(this.editor_change_handler)},value_changed:function(e){if(e.target.get("name")==="thispage"||e.target.get("name").match(/_:flagged$/))return;this.start_save_timer_if_necessary()},editor_changed:function(e){this.start_save_timer_if_necessary()},start_save_timer_if_necessary:function(){this.dirty=!0;if(this.delay_timer||this.save_transaction)return;this.start_save_timer()},start_save_timer:function(){this.cancel_delay(),this.delay_timer=e.later(this.delay,this,this.save_changes)},cancel_delay:function(){this.delay_timer&&this.delay_timer!==!0&&this.delay_timer.cancel(),this.delay_timer=null},save_changes:function(){this.cancel_delay(),this.dirty=!1;if(this.is_time_nearly_over()){this.stop_autosaving();return}this.save_transaction=e.io(this.AUTOSAVE_HANDLER,{method:"POST",form:{id:this.form},on:{complete:this.save_done},context:this})},save_done:function(){this.save_transaction=null,this.dirty&&this.start_save_timer()},is_time_nearly_over:function(){return M.mod_quiz.timer&&M.mod_quiz.timer.endtime&&(new Date).getTime()+2*this.delay>M.mod_quiz.timer.endtime},stop_autosaving:function(){this.cancel_delay(),this.delay_timer=!0,this.save_transaction&&this.save_transaction.abort()}}},"@VERSION@",{requires:["base","node","event","event-valuechange","node-event-delegate","io-form"]});
+YUI.add("moodle-mod_quiz-autosave",function(e,t){M.mod_quiz=M.mod_quiz||{},M.mod_quiz.autosave={TINYMCE_DETECTION_DELAY:500,TINYMCE_DETECTION_REPEATS:20,WATCH_HIDDEN_DELAY:1e3,SELECTORS:{QUIZ_FORM:"#responseform",VALUE_CHANGE_ELEMENTS:"input, textarea",CHANGE_ELEMENTS:"input, select",HIDDEN_INPUTS:"input[type=hidden]"},AUTOSAVE_HANDLER:M.cfg.wwwroot+"/mod/quiz/autosave.ajax.php",delay:12e4,form:null,dirty:!1,delay_timer:null,save_transaction:null,editor_change_handler:null,hidden_field_values:{},init:function(t){this.form=e.one(this.SELECTORS.QUIZ_FORM);if(!this.form)return;this.delay=t*1e3,this.form.delegate("valuechange",this.value_changed,this.SELECTORS.VALUE_CHANGE_ELEMENTS,this),this.form.delegate("change",this.value_changed,this.SELECTORS.CHANGE_ELEMENTS,this),this.form.on("submit",this.stop_autosaving,this),this.init_tinymce(this.TINYMCE_DETECTION_REPEATS),this.save_hidden_field_values(),this.watch_hidden_fields()},save_hidden_field_values:function(){this.form.all(this.SELECTORS.HIDDEN_INPUTS).each(function(e){var t=e.get("name");if(!t)return;this.hidden_field_values[t]=e.get("value")},this)},watch_hidden_fields:function(){this.detect_hidden_field_changes(),e.later(this.WATCH_HIDDEN_DELAY,this,this.watch_hidden_fields)},detect_hidden_field_changes:function(){this.form.all(this.SELECTORS.HIDDEN_INPUTS).each(function(e){var t=e.get("name"),n=e.get("value");if(!t)return;if(!(t in this.hidden_field_values)||n!==this.hidden_field_values[t])this.hidden_field_values[t]=n,this.value_changed({target:e})},this)},init_tinymce:function(t){if(typeof tinyMCE=="undefined"){t>0&&e.later(this.TINYMCE_DETECTION_DELAY,this,this.init_tinymce,[t-1]);return}this.editor_change_handler=e.bind(this.editor_changed,this),tinyMCE.onAddEditor.add(e.bind(this.init_tinymce_editor,this))},init_tinymce_editor:function(e,t){t.onChange.add(this.editor_change_handler),t.onRedo.add(this.editor_change_handler),t.onUndo.add(this.editor_change_handler),t.onKeyDown.add(this.editor_change_handler)},value_changed:function(e){if(e.target.get("name")==="thispage"||e.target.get("name")==="scrollpos"||e.target.get("name").match(/_:flagged$/))return;this.start_save_timer_if_necessary()},editor_changed:function(e){this.start_save_timer_if_necessary()},start_save_timer_if_necessary:function(){this.dirty=!0;if(this.delay_timer||this.save_transaction)return;this.start_save_timer()},start_save_timer:function(){this.cancel_delay(),this.delay_timer=e.later(this.delay,this,this.save_changes)},cancel_delay:function(){this.delay_timer&&this.delay_timer!==!0&&this.delay_timer.cancel(),this.delay_timer=null},save_changes:function(){this.cancel_delay(),this.dirty=!1;if(this.is_time_nearly_over()){this.stop_autosaving();return}typeof tinyMCE!="undefined"&&tinyMCE.triggerSave(),this.save_transaction=e.io(this.AUTOSAVE_HANDLER,{method:"POST",form:{id:this.form},on:{complete:this.save_done},context:this})},save_done:function(){this.save_transaction=null,this.dirty&&this.start_save_timer()},is_time_nearly_over:function(){return M.mod_quiz.timer&&M.mod_quiz.timer.endtime&&(new Date).getTime()+2*this.delay>M.mod_quiz.timer.endtime},stop_autosaving:function(){this.cancel_delay(),this.delay_timer=!0,this.save_transaction&&this.save_transaction.abort()}}},"@VERSION@",{requires:["base","node","event","event-valuechange","node-event-delegate","io-form"]});
diff --git a/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js b/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js
index b8b072dcf63..b884cf2ec9e 100644
--- a/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js
+++ b/mod/quiz/yui/build/moodle-mod_quiz-autosave/moodle-mod_quiz-autosave.js
@@ -120,9 +120,10 @@ M.mod_quiz.autosave = {
* or enough time has passed.
*/
init_tinymce: function(repeatcount) {
- if (typeof tinymce === 'undefined') {
+ if (typeof tinyMCE === 'undefined') {
if (repeatcount > 0) {
Y.later(this.TINYMCE_DETECTION_DELAY, this, this.init_tinymce, [repeatcount - 1]);
+ } else {
}
return;
}
@@ -144,7 +145,8 @@ M.mod_quiz.autosave = {
},
value_changed: function(e) {
- if (e.target.get('name') === 'thispage' || e.target.get('name').match(/_:flagged$/)) {
+ if (e.target.get('name') === 'thispage' || e.target.get('name') === 'scrollpos' ||
+ e.target.get('name').match(/_:flagged$/)) {
return; // Not interesting.
}
this.start_save_timer_if_necessary();
@@ -186,6 +188,9 @@ M.mod_quiz.autosave = {
return;
}
+ if (typeof tinyMCE !== 'undefined') {
+ tinyMCE.triggerSave();
+ }
this.save_transaction = Y.io(this.AUTOSAVE_HANDLER, {
method: 'POST',
form: {id: this.form},
diff --git a/mod/quiz/yui/src/autosave/js/autosave.js b/mod/quiz/yui/src/autosave/js/autosave.js
index 4f5dafb8b0e..feb80548af7 100644
--- a/mod/quiz/yui/src/autosave/js/autosave.js
+++ b/mod/quiz/yui/src/autosave/js/autosave.js
@@ -119,9 +119,11 @@ M.mod_quiz.autosave = {
* or enough time has passed.
*/
init_tinymce: function(repeatcount) {
- if (typeof tinymce === 'undefined') {
+ if (typeof tinyMCE === 'undefined') {
if (repeatcount > 0) {
Y.later(this.TINYMCE_DETECTION_DELAY, this, this.init_tinymce, [repeatcount - 1]);
+ } else {
+ Y.log('Gave up looking for TinyMCE.');
}
return;
}
@@ -145,7 +147,8 @@ M.mod_quiz.autosave = {
},
value_changed: function(e) {
- if (e.target.get('name') === 'thispage' || e.target.get('name').match(/_:flagged$/)) {
+ if (e.target.get('name') === 'thispage' || e.target.get('name') === 'scrollpos' ||
+ e.target.get('name').match(/_:flagged$/)) {
return; // Not interesting.
}
Y.log('Detected a value change in element ' + e.target.get('name') + '.');
@@ -191,6 +194,9 @@ M.mod_quiz.autosave = {
}
Y.log('Doing a save.');
+ if (typeof tinyMCE !== 'undefined') {
+ tinyMCE.triggerSave();
+ }
this.save_transaction = Y.io(this.AUTOSAVE_HANDLER, {
method: 'POST',
form: {id: this.form},