I am using Captivate 2019 and SCORM Cloud to author a test. No learning, it's just a test.
What I want is, if the test was launched but the test taker quits before finished, then the test is marked Complete (and failed). I got that working.
Next, if the test taker re-launches the test, then the test taker should be taken to the Results page. This I can't get to work. The Test Taker is taken to where they quit from.
The only thing I can think of is to look for cmi.success_status and have that script used on every slide. But I'm not sure how to do that?
If there is an easier way, please let me know. Or if that is what is needed, any pointers for me to read a SCORM variable and act on it would be appreciated.
That is the normal behavior when bookmarking is turned on. You could turn it off, using the Advanced button in the Reporting dialog box, and checking 'Never Send Resume Data'.
You don't explain why you want to send them to the Results slide. You want to keep the score they already have and show it? In that case maybe creation of an advanced action to be launched On Enter for the first quiz slide coule help? Supposing they have at least a score, something like:
IF cpQuizInfoPointsscored is greater than 0
Jump to Results slide give here the number or label of that slide
The test is supposed to be timed. I'm using the timing widget.
What I'm seeing is that if the test taker quits mid test and then relaunches, the timer restarts, and then the remaining questions are scored.
So I would like the system to remember the partial score and then display it.
I've been trying a number of permutations.
It seems, when launched with "Never Send Resume Data", the cmi.score.raw is set to 0. I'm guessing the score is included somewhere in the cmi.suspend_data.
I'm guessing I need to play around with settings that adjust cmi.completion_status and cmi.success_status.
Or append something to the cmi.suspend_data?
Looking into what internal variable relates to cmi.completion_status.
Timing and Hourglass widget are very limited. It is normal that they will restart, and the assoiated variable doesn't even store the elapsed time, which means I don't see any possibility to retrieve the time. Why didn't you tell this in your question because this is a totally different situation.
You would need to use the system variables for elapsed time, and store their value with every possible event in a user variable. The content of that user variable could be retrieved. If the learner is always on a the same system you can use local session workflows to store and retrieve user variables. I use CpExtra for that purpose, but it is also possible with JS.
The supposed "default behavior" is not working for me. What I see is:
1. (with default settings) Student quits in the middle of the test, student resumes the test where they quit.
2. (with Never Send Resume Data checked) Student quits in the middle of the test, student restarts the test with cpQuizInfoPointsscored set to 0.
Is CpExtra a variable you define?
Default setup is with bookmarking (your 1). But the added problem (not mentioned in the original question) is your use of the timing interaction. That action cannot be 'bookmarked'.
Bookmarking is not the problem at all, it is your requirement for keeping data from timing.
I don't want to keep timing data. All I want is, if the test was attempted but not completed, the system goes to the result page. Timing is separate.
Supposedly, this is the default behavior, but that's not what I'm seeing.
I'm sorry but give up, it looks like it is impossible to understand what you want exactly.
I gave you a conditional action in a previous answer which will do what you now repeated. But then you answered that you wanted also the time to be bookmarked, now you tell me that you don't want that.
I tested that option.
In Scenerio 1 (sending resume data), the first slide is skipped, so the action is not seen.
In Scenerio 2 (with Never Send Resume Data checked), cpQuizInfoPointsscored is reset to 0. In fact, everything is reset.
Looking at the LMS logs, the Captivate SCORM package resets cpQuizInfoPointsscored (cmi.score.raw) to 0 (scenario 2) or to the score (Scenerio 1), presumably from what was read in cmi.suspend_data.
One thing I noticed: cpQuizInfoAttempts gets set on the first quiz slide but is not reset when the quiz starts in the middle. It seems risky to me to write a script based on something wonky that might get "fixed" by adobe.
by "not reset", I mean, at the first time it is set to 1, but on retry, the value is 0
How many attempts have you allowed on the quiz? If you allowed multiple attempts, and you have bookmarking turned on, check the value of the System Variable that tracks the attempts AFTER the learner resumes and completes the rest of the quiz. You may find that the number of attempts is shown correctly only when they reach the Quiz Results slide. That's where it really matters.
Only 1 attempt.
Funny thing I've noticed:
cpQuizInfoAttempts is set to 1 when the first Quiz Slide is seen by the student.
On relaunch, cpQuizInfoAttempts is set to 0
I'm testing an Advanced Action: if cpQuizInfoAttempts is 0, jump to end.
I swear I had this working back in 2012, but it was all Flash based.
Copy link to clipboard
I found my problem and have a solution.
It may not be necessary to use Advanced Options, I'm not 100% sure. In my set-up with SCORM Cloud, I think it is. So every question slide has a "On Enter: Execute Advanced Actions", the action being
If cpQuizInfoAttempts not equal to 1, Jump to Slide
But the problem turned out to be that at some point in the past, under Quiz: Settings, I had set Required setting to "Answer All - the user must answer every question". The default is "Optional". I fixed this setting, and it worked.