Details

    • Testing Instructions:
      Hide

      Some advice to help with testing this:

      A. Add

      $CFG->forced_plugin_settings = array(
          'quiz' => array('autosaveperiod' => 10),
      );
      

      in your config.php file. The shortest auto-save delay you can set in the admin settings is 60 seconds, and that is annoyingly slow. It is much easer to test at 10s.

      B. Run with the Firebug or Chrome console open (and in developer debug mode). The JavaScript outputs some useful log messages that make it clear what is going on.

      C. To make it easier to test some possible failure modes, you may want to add sleep(10); inside mod/quiz/autosave.php.

      Note that there are good unit tests for a lot of this.

      Finally, read the comment below, titled "Draft documentation" since that gives an overview of how this is supposed to work.

      Test steps (should be repeated in Firefox, Chrome, IE, Safari)

      1. Create a quiz with one of each sort of question in (within reason).

      2. Ensure that the auto-save admin setting is turned on.

      3. Attempt the quiz as a student.

      4. Do some input into one or more of the questions. After the configured delay after your first change, there should be an Ajax request to the server, to save your changes.

      5. Navigate away from the quiz by clicking the 'Home' link, and then clicking 'Leave page' in the warning dialogue. (Or, if you prefer, kill your web browser or pull the power lead out of your computer. How realistic a simulation do you want to do )

      6. Really you need to repeat 5. for each type of input (text box, HTML editor, radio button, checkbox, dropdown menu, can you be bothered to install the drag-and-drop qtype add-ons?)

      7. Navigate back to the quiz and continue attempt. Verify that the data that was autosaved is still there.

      8. Change some input again, and then click next, either before or after the autosave happens. In both cases it should just work as it has always worked before autosave was implemented.

      9. Change some data, and try to click next during the gap between the 'Doing a save' and 'Save completed' log messages. Go back to the page you were on, and verify that the outcome of that is sensible.

      10. Set a time-limit on your quiz. Wait until time has nearly expired and change something. It should not be auto-saved. (More specifically, if you set autosaveperiod to 10 seconds as recommended above, then there should be no auto-saves during the last 20 seconds.)

      11. Try to think up your own creative ways to make this break.

      12. Finally, turn off the admin setting (in config.php if that is where you turned in on). Verify that the autosave is disabled.

      Show
      Some advice to help with testing this: A. Add $CFG->forced_plugin_settings = array( 'quiz' => array('autosaveperiod' => 10), ); in your config.php file. The shortest auto-save delay you can set in the admin settings is 60 seconds, and that is annoyingly slow. It is much easer to test at 10s. B. Run with the Firebug or Chrome console open (and in developer debug mode). The JavaScript outputs some useful log messages that make it clear what is going on. C. To make it easier to test some possible failure modes, you may want to add sleep(10); inside mod/quiz/autosave.php. Note that there are good unit tests for a lot of this. Finally, read the comment below, titled "Draft documentation" since that gives an overview of how this is supposed to work. Test steps (should be repeated in Firefox, Chrome, IE, Safari) 1. Create a quiz with one of each sort of question in (within reason). 2. Ensure that the auto-save admin setting is turned on. 3. Attempt the quiz as a student. 4. Do some input into one or more of the questions. After the configured delay after your first change, there should be an Ajax request to the server, to save your changes. 5. Navigate away from the quiz by clicking the 'Home' link, and then clicking 'Leave page' in the warning dialogue. (Or, if you prefer, kill your web browser or pull the power lead out of your computer. How realistic a simulation do you want to do ) 6. Really you need to repeat 5. for each type of input (text box, HTML editor, radio button, checkbox, dropdown menu, can you be bothered to install the drag-and-drop qtype add-ons?) 7. Navigate back to the quiz and continue attempt. Verify that the data that was autosaved is still there. 8. Change some input again, and then click next, either before or after the autosave happens. In both cases it should just work as it has always worked before autosave was implemented. 9. Change some data, and try to click next during the gap between the 'Doing a save' and 'Save completed' log messages. Go back to the page you were on, and verify that the outcome of that is sensible. 10. Set a time-limit on your quiz. Wait until time has nearly expired and change something. It should not be auto-saved. (More specifically, if you set autosaveperiod to 10 seconds as recommended above, then there should be no auto-saves during the last 20 seconds.) 11. Try to think up your own creative ways to make this break. 12. Finally, turn off the admin setting (in config.php if that is where you turned in on). Verify that the autosave is disabled.
    • Affected Branches:
      MOODLE_24_STABLE
    • Fixed Branches:
      MOODLE_25_STABLE
    • Pull from Repository:
    • Pull Master Branch:
      MDL-38538_clean
    • Rank:
      48549

      Description

      This extends the work started in MDL-38537.

      As well as saving the data on the student's computer, we will also save it on the Moodle sever.

      Because this add extra load on the server, I think we need an option to control it, and I think this should be a site-wide admin setting

      Auto save quiz attempt data: No / Every minute / Every 2 minutes / Every 5 minutes

      When this option is on, the client-side JavaScript will automatically make an Ajax call to save the current state of the quiz attempt form with that frequency (if the student has changed any data since the last save).

      The Ajax call will go to a new script mod/quiz/autosave.php.

      This will call new code in the question engine: question_usage::auto_save(...) -> question_attempt::auto_save(...) -> question_behaviour_base::auto_save(...) which does the actual work.

      A question_attempt comprises a list of question_attempt_steps, each step has a state. During the attempt there are three states used: todo, complete and invalid. We will add a 4th state 'autosaved'. A step with that state will not be a real step, it will just hold the auto-saved data.

      We need to consider the following new cases:

      1. During an attempt which up until now has been 'normal' we get an auto-save action.
      2. With one auto-save on record, a second auto-save happens.
      3. With an auto-save on record, we then reveive a 'proper' submission, which should be processed as if the auto-saves had never happened.
      4. When displaying a quiz attempt, we find auto-save data on record which was never overwritten by a 'proper' submission.

        Issue Links

          Activity

          Hide
          Tim Hunt added a comment -

          Work in progress is on my MDL-38538 branch.

          Show
          Tim Hunt added a comment - Work in progress is on my MDL-38538 branch.
          Hide
          Tim Hunt added a comment -

          Adding Mahmoud as a watcher, in the hope that he has time to test this.

          Show
          Tim Hunt added a comment - Adding Mahmoud as a watcher, in the hope that he has time to test this.
          Hide
          Tim Hunt added a comment -

          I want to write some more unit tests for the edge cases, but I think this is ready for peer review now.

          Show
          Tim Hunt added a comment - I want to write some more unit tests for the edge cases, but I think this is ready for peer review now.
          Hide
          Andrew Nicols added a comment -

          Hi Tim,

          The feature looks great - this has been a much-desired request. Some initial comments for you

          Syntax

          JS:
          • Probably worth adding a call to Y.log when the form wasn't found to aid debugging.
          • Only a suggestion, but it may be worth splitting out CSS + SELECTORS into separate vars for future maintainability. See the WIP module doc at http://docs.moodle.org/dev/YUI/Modules#Separation_of_code_from_configuration_and_style_.28loose_coupling.29 for an example of what I mean
          • it would make sense to break out the setTimeout line in watch_hidden_fields into multiple lines - doing so would make future changes easier to view and determine, especially with the amount of this in it
          • Same goes for start_save_timer
          • Also, Y.later may be more appropriate and will save the Y.bind because you can supply context as the second arg http://yuilibrary.com/yui/docs/api/classes/YUI.html#method_later
          • is_time_nearly_over: Some brackets around the second line would make things a bit easier to read
          • typo in var this.editor_change_hander (handler)
          • Just an observation, and I fully understand why you aren't handling exception from the Y.io, but just worth noting. Is there any benefit in displaying an error when a user is unable to autosave - perhaps warning them that it was not possible to autosave and therefore it's likely that a true save will fail so they may want to make a note of their answers? maybe not… I shall leave it with you
          • detect_hidden_field_changes: In the if test, you check the current value versus the previous. Is there any potential circumstance where the previous doesn't exist? E.g. a form field added since init? If so, this will likely break. May be worth checking if the value exists - in which case, do you add it, or does the difference suggest a change?
          autosave.php
          • Again, only a suggestion, but may be worth renaming to autosave.ajax.php to make it clearer as to the purpose of the script
          • Only a suggestion, but should require_sesskey() be before the transaction? If the sesskey is invalid, no point starting a transaction?
          Other quiz code:
          • process_action - phpdoc s/use/used in existingstepid docs

          git

          Obviously, rebase + squash

          Testing

          I think it's worth asking the tester to install at least one ddmatch type question given they're the only type using hidden forms
          Also may be worth mentioning about testing quizzes spanning multiple pages? How does this work? I assume previous page are saved too.

          I'm not so familiar with the quiz side of things so I've not gone through that very much so far.

          Andrew

          Show
          Andrew Nicols added a comment - Hi Tim, The feature looks great - this has been a much-desired request. Some initial comments for you Syntax JS: Probably worth adding a call to Y.log when the form wasn't found to aid debugging. Only a suggestion, but it may be worth splitting out CSS + SELECTORS into separate vars for future maintainability. See the WIP module doc at http://docs.moodle.org/dev/YUI/Modules#Separation_of_code_from_configuration_and_style_.28loose_coupling.29 for an example of what I mean it would make sense to break out the setTimeout line in watch_hidden_fields into multiple lines - doing so would make future changes easier to view and determine, especially with the amount of this in it Same goes for start_save_timer Also, Y.later may be more appropriate and will save the Y.bind because you can supply context as the second arg http://yuilibrary.com/yui/docs/api/classes/YUI.html#method_later is_time_nearly_over: Some brackets around the second line would make things a bit easier to read typo in var this.editor_change_hander (handler) Just an observation, and I fully understand why you aren't handling exception from the Y.io, but just worth noting. Is there any benefit in displaying an error when a user is unable to autosave - perhaps warning them that it was not possible to autosave and therefore it's likely that a true save will fail so they may want to make a note of their answers? maybe not… I shall leave it with you detect_hidden_field_changes: In the if test, you check the current value versus the previous. Is there any potential circumstance where the previous doesn't exist? E.g. a form field added since init? If so, this will likely break. May be worth checking if the value exists - in which case, do you add it, or does the difference suggest a change? autosave.php Again, only a suggestion, but may be worth renaming to autosave.ajax.php to make it clearer as to the purpose of the script Only a suggestion, but should require_sesskey() be before the transaction? If the sesskey is invalid, no point starting a transaction? Other quiz code: process_action - phpdoc s/use/used in existingstepid docs git Obviously, rebase + squash Testing I think it's worth asking the tester to install at least one ddmatch type question given they're the only type using hidden forms Also may be worth mentioning about testing quizzes spanning multiple pages? How does this work? I assume previous page are saved too. I'm not so familiar with the quiz side of things so I've not gone through that very much so far. Andrew
          Hide
          Tim Hunt added a comment -

          Thanks Andrew. Great comments.

          Use of setTimeout is because I had just watched http://www.youtube.com/watch?v=8cTz73zdDuc.

          I think it is sufficient to only display autosave errors in tools like firebug. (Easy to change later if I am wrong.)

          The way the quiz has always worked: When you navigate to another page, everything on the page you left is saved. Autosave only has to cope with when you are sitting there with a single page open.

          Show
          Tim Hunt added a comment - Thanks Andrew. Great comments. Use of setTimeout is because I had just watched http://www.youtube.com/watch?v=8cTz73zdDuc . I think it is sufficient to only display autosave errors in tools like firebug. (Easy to change later if I am wrong.) The way the quiz has always worked: When you navigate to another page, everything on the page you left is saved. Autosave only has to cope with when you are sitting there with a single page open.
          Hide
          Tim Hunt added a comment -

          Right. Branch cleaned up and I am submitting this for integration.

          Show
          Tim Hunt added a comment - Right. Branch cleaned up and I am submitting this for integration.
          Hide
          Tim Hunt added a comment -

          Draft documentation

          Quiz auto-save

          The administrator can enable auto-saving in the quiz by going to Admin -> Plugins -> Activity modules -> Quiz and Setting Auto-save period.

          If this is set, then during a quiz attempt, the students current work will be saved that often. A save will only happen if the student has acutally changed some input. If the student's browser crashes, then when they go back in to the quiz, the data that was automatically saved will still be there. However, it is sitll expected that the student will submit the quiz in the normal manner. Most of the time, auto-save will make no visible difference.

          In a timed quiz, there will be no auto-save right at the end of the quiz. For example, if the quiz is set to auto-save every 2 minutes, then no auto-save will happen during the last 4 minutes. This is for two reasons: 1. The end of a timed quiz can already cause high server load; and 2. we do not want any chance of the quiz timer reaching zero and submitting the quiz while the auto-save is still being processed.

          Show
          Tim Hunt added a comment - Draft documentation Quiz auto-save The administrator can enable auto-saving in the quiz by going to Admin -> Plugins -> Activity modules -> Quiz and Setting Auto-save period. If this is set, then during a quiz attempt, the students current work will be saved that often. A save will only happen if the student has acutally changed some input. If the student's browser crashes, then when they go back in to the quiz, the data that was automatically saved will still be there. However, it is sitll expected that the student will submit the quiz in the normal manner. Most of the time, auto-save will make no visible difference. In a timed quiz, there will be no auto-save right at the end of the quiz. For example, if the quiz is set to auto-save every 2 minutes, then no auto-save will happen during the last 4 minutes. This is for two reasons: 1. The end of a timed quiz can already cause high server load; and 2. we do not want any chance of the quiz timer reaching zero and submitting the quiz while the auto-save is still being processed.
          Hide
          Dan Poltawski added a comment -

          This is my first shifter issue.. and I found the fact we were shipping -coverage.js kind of ugly, probably because it was the first thing I saw in the diff. It felt to me like we should add this to .gitingore and not ship this.. But perhaps I just need to get used to it..

          Show
          Dan Poltawski added a comment - This is my first shifter issue.. and I found the fact we were shipping -coverage.js kind of ugly, probably because it was the first thing I saw in the diff. It felt to me like we should add this to .gitingore and not ship this.. But perhaps I just need to get used to it..
          Hide
          Dan Poltawski added a comment -

          Hmm, there are two branches, MDL-38538 and MDL-38538_clean, but git diff tim/MDL-38538 tim/MDL-38538_clean shows them to be the same. Pheww.

          Show
          Dan Poltawski added a comment - Hmm, there are two branches, MDL-38538 and MDL-38538 _clean, but git diff tim/ MDL-38538 tim/ MDL-38538 _clean shows them to be the same. Pheww.
          Hide
          Dan Poltawski added a comment -

          Integrated to master. Thanks Tim.

          I have to say, i'm feel a little bit uneasy about the lack of autosave near the end of the timed quiz, it sounds a bit strange to have slightly inconsistent behaviour like that. But i'm probably over thinking and I trust your judgement.

          I created MDLSITE-2181 to get the CI servers to ignore built JS files when doing checks.

          Show
          Dan Poltawski added a comment - Integrated to master. Thanks Tim. I have to say, i'm feel a little bit uneasy about the lack of autosave near the end of the timed quiz, it sounds a bit strange to have slightly inconsistent behaviour like that. But i'm probably over thinking and I trust your judgement. I created MDLSITE-2181 to get the CI servers to ignore built JS files when doing checks.
          Hide
          Tim Hunt added a comment -

          Dan, the end of the two branches is the same code, but MDL-38538 has horrible commit history. You really don't want that mess in core.

          You will have to discuss the Shifter issue with the other integrators and Andrew.

          When time expires in the quiz, the quiz is automatically submitted, which saves all the data explicitly, so there is no need to do an implicit, behind the scenes, auto-save. We particularly don't want the server to be in the middle of processing an auto-save when Submit all and finish happens, even though I have some unit tests for concurrent processing.

          Also, towards the end of a timed quiz is often an occasion for a big peak in load, so adding extra auto-save load there might be a mistake (but I have not measured).

          Show
          Tim Hunt added a comment - Dan, the end of the two branches is the same code, but MDL-38538 has horrible commit history. You really don't want that mess in core. You will have to discuss the Shifter issue with the other integrators and Andrew. When time expires in the quiz, the quiz is automatically submitted, which saves all the data explicitly, so there is no need to do an implicit, behind the scenes, auto-save. We particularly don't want the server to be in the middle of processing an auto-save when Submit all and finish happens, even though I have some unit tests for concurrent processing. Also, towards the end of a timed quiz is often an occasion for a big peak in load, so adding extra auto-save load there might be a mistake (but I have not measured).
          Hide
          Tim Hunt added a comment -

          Grrr! found a bug. Fix in development.

          Show
          Tim Hunt added a comment - Grrr! found a bug. Fix in development.
          Hide
          Tim Hunt added a comment -
          Show
          Tim Hunt added a comment - Dan, one new commit, at the end of: https://github.com/timhunt/moodle/compare/master...MDL-38538_clean
          Hide
          Dan Poltawski added a comment -

          Integrated, thanks

          Show
          Dan Poltawski added a comment - Integrated, thanks
          Hide
          Aparup Banerjee added a comment -

          just noting the setting autosaveperiod has a nice twist in the sentence when it says "If you turn on this option, then the students will be automatically saved during quiz attempts." - the students are saved !

          Show
          Aparup Banerjee added a comment - just noting the setting autosaveperiod has a nice twist in the sentence when it says "If you turn on this option, then the students will be automatically saved during quiz attempts." - the students are saved !
          Hide
          Dan Poltawski added a comment -

          hehehe, hopefully Tim can patch that one

          Show
          Dan Poltawski added a comment - hehehe, hopefully Tim can patch that one
          Hide
          Tim Hunt added a comment -

          Oops! I will do another commit.

          Show
          Tim Hunt added a comment - Oops! I will do another commit.
          Show
          Tim Hunt added a comment - Here we go. https://github.com/timhunt/moodle/compare/master...MDL-38538_clean
          Hide
          Dan Poltawski added a comment -

          Integrated, thanks.

          Show
          Dan Poltawski added a comment - Integrated, thanks.
          Hide
          Rajesh Taneja added a comment -

          Thanks for adding this feature Tim,

          I am getting following JS error's.

          1. When clicked on "Attempt quiz", page loads with following JS error
            TypeError: method is undefined
            if (!method.apply) {
            
            http://rajesh.moodle.local/im/theme/yui_combo.php?3.9.0/build/simpleyui/simpleyui.js&3.9.0/build/loader/loader.js
            Line 5578
            
          2. After time elapsed, clicking next button gives following JS error and show leave page dialog
            TypeError: this.delay_timer.cancel is not a function
            this.delay_timer.cancel();
            
            http://rajesh.moodle.local/im/theme/yui_combo.php?moodle/1365055639/mod_quiz/autosave/autosave-debug.js
            Line 180
            
          3. Getting submissionoutofsequencefriendlymessage error when trying to reattempt question (Please refer attached video as student & as admin)
            • Quiz with one multichoice question and time limit of 5 min.
            • Select a choice and let it autosave
            • Click next and then click on "Return to attempt"
            • Change selection and let it autosave
            • Click next and you see this error
          4. Flagging a question starts throwing events in loop.
          5. As admin if you try attempt, it show submissionoutofsequencefriendlymessage more often as you have more options to re-attempt and preview.

          Failing this for now, as it seems to be breaking the current functionality of quiz.

          Show
          Rajesh Taneja added a comment - Thanks for adding this feature Tim, I am getting following JS error's. When clicked on "Attempt quiz", page loads with following JS error TypeError: method is undefined if (!method.apply) { http://rajesh.moodle.local/im/theme/yui_combo.php?3.9.0/build/simpleyui/simpleyui.js&3.9.0/build/loader/loader.js Line 5578 After time elapsed, clicking next button gives following JS error and show leave page dialog TypeError: this.delay_timer.cancel is not a function this.delay_timer.cancel(); http://rajesh.moodle.local/im/theme/yui_combo.php?moodle/1365055639/mod_quiz/autosave/autosave-debug.js Line 180 Getting submissionoutofsequencefriendlymessage error when trying to reattempt question (Please refer attached video as student & as admin ) Quiz with one multichoice question and time limit of 5 min. Select a choice and let it autosave Click next and then click on "Return to attempt" Change selection and let it autosave Click next and you see this error Flagging a question starts throwing events in loop. As admin if you try attempt, it show submissionoutofsequencefriendlymessage more often as you have more options to re-attempt and preview. Failing this for now, as it seems to be breaking the current functionality of quiz.
          Hide
          Tim Hunt added a comment -

          Raj, which web browser are you testing with (in case I have trouble reproducing this).

          Show
          Tim Hunt added a comment - Raj, which web browser are you testing with (in case I have trouble reproducing this).
          Hide
          Dan Poltawski added a comment -

          Its firefox (iirc). For 1) I also reproduced that in chrome.

          Show
          Dan Poltawski added a comment - Its firefox (iirc). For 1) I also reproduced that in chrome.
          Hide
          Rajesh Taneja added a comment -

          Just tried FF 18.0.2 (on ubuntu) and quiz with one multichoice question.

          Show
          Rajesh Taneja added a comment - Just tried FF 18.0.2 (on ubuntu) and quiz with one multichoice question.
          Hide
          Tim Hunt added a comment -

          1. I don't see this, and I am not using any simple YUI, so no idea. None of this new code uses simpleyui. More information on reproducing this would be good.

          2. Doh! fixed.

          3. I'm working on this.

          4. Doh! Fixed.

          4b. I was getting a broken image error, which turned out to be a regression from MDL-38209. Fixed.

          5. is really a duplicate of 3, I think.

          Show
          Tim Hunt added a comment - 1. I don't see this, and I am not using any simple YUI, so no idea. None of this new code uses simpleyui. More information on reproducing this would be good. 2. Doh! fixed. 3. I'm working on this. 4. Doh! Fixed. 4b. I was getting a broken image error, which turned out to be a regression from MDL-38209 . Fixed. 5. is really a duplicate of 3, I think.
          Hide
          Tim Hunt added a comment -

          Thanks for Dan's help in reproducing 1. Now I know where to look, my stupid typo was obvious.

          (1. only happened when there were no TinyMCEs.)

          Show
          Tim Hunt added a comment - Thanks for Dan's help in reproducing 1. Now I know where to look, my stupid typo was obvious. (1. only happened when there were no TinyMCEs.)
          Hide
          Tim Hunt added a comment -
          Show
          Tim Hunt added a comment - OK, all problems (found so far) fixed: https://github.com/timhunt/moodle/compare/master...MDL-38538_fixes
          Hide
          Dan Poltawski added a comment -

          Thanks Tim - sending back to testing.

          Show
          Dan Poltawski added a comment - Thanks Tim - sending back to testing.
          Hide
          Dan Poltawski added a comment -

          PS. great work Raj!!

          Show
          Dan Poltawski added a comment - PS. great work Raj!!
          Hide
          Rajesh Taneja added a comment -

          Thanks Tim and Dan,

          Testing again.

          Show
          Rajesh Taneja added a comment - Thanks Tim and Dan, Testing again.
          Hide
          Rajesh Taneja added a comment -

          Thanks Tim,

          All works as expected for all core question types and D-N-D image, except Essay (tinymce). Changes in tinymce is not saved/loaded. Probably can be handled as another issue.

          Few minor things which might be considered (Not affecting the behaviour of quiz.)

          1. While answering/changing answer an event is fired(Detected a value change in element q23:3_answer.), this event is again fired when user tries to navigate away from page (click on "My Home" link)
          2. Clicking check fires an event, "Detected a value change in element scrollpos". Not sure if this is intentional.
          3. On chrome while editing a quiz following JS error appears (Also in stable)
            Uncaught ReferenceError: require is not defined moment.min.js:6
            c.lang moment.min.js:6
            setMomentJsLanguage moment.lang-all.min.js:27
            (anonymous function)
            
            • Create a new quiz in chrome or open an existing one.
            • Click "Edit quiz" and you will see above error in chrome console.
          Show
          Rajesh Taneja added a comment - Thanks Tim, All works as expected for all core question types and D-N-D image, except Essay (tinymce). Changes in tinymce is not saved/loaded. Probably can be handled as another issue. Few minor things which might be considered (Not affecting the behaviour of quiz.) While answering/changing answer an event is fired(Detected a value change in element q23:3_answer.), this event is again fired when user tries to navigate away from page (click on "My Home" link) Clicking check fires an event, "Detected a value change in element scrollpos". Not sure if this is intentional. On chrome while editing a quiz following JS error appears (Also in stable) Uncaught ReferenceError: require is not defined moment.min.js:6 c.lang moment.min.js:6 setMomentJsLanguage moment.lang-all.min.js:27 (anonymous function) Create a new quiz in chrome or open an existing one. Click "Edit quiz" and you will see above error in chrome console.
          Hide
          Tim Hunt added a comment -

          0. Not saving essays: That is a serious problem. I created MDL-38935.

          1. Yes, valuechanged does seem to fire when a control loses focus. I don't think there is anything we can do about this.

          2. This will be easy to fix, I added a note to MDL-38935.

          3. That looks like a Chrome bug! I don't think we use http://momentjs.com/docs/ in Moodle.

          Show
          Tim Hunt added a comment - 0. Not saving essays: That is a serious problem. I created MDL-38935 . 1. Yes, valuechanged does seem to fire when a control loses focus. I don't think there is anything we can do about this. 2. This will be easy to fix, I added a note to MDL-38935 . 3. That looks like a Chrome bug! I don't think we use http://momentjs.com/docs/ in Moodle.
          Hide
          Dan Poltawski added a comment -

          Did you remember to call thankDevelopers() for 'this_weeks_work'? Defaulting to PARAM_SHODDY thanking.

          line 1289 of \lib\changes.php: call to debugging()
          line 281 of \lib\are.php: call to moodleform->detectMissingThanks()
          line 202 of \lib\now.php: call to moodleform->_is_poor_form()
          line 73 of \course\upstream.php: call to moodleform->forgetingToThank()

          Show
          Dan Poltawski added a comment - Did you remember to call thankDevelopers() for 'this_weeks_work'? Defaulting to PARAM_SHODDY thanking. line 1289 of \lib\changes.php: call to debugging() line 281 of \lib\are.php: call to moodleform->detectMissingThanks() line 202 of \lib\now.php: call to moodleform->_is_poor_form() line 73 of \course\upstream.php: call to moodleform->forgetingToThank()
          Hide
          Mary Cooch added a comment -

          Removing docs_required label as I have mentioned this in http://docs.moodle.org/25/en/Quiz_settings

          Show
          Mary Cooch added a comment - Removing docs_required label as I have mentioned this in http://docs.moodle.org/25/en/Quiz_settings

            People

            • Votes:
              6 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: