Update: you can find a new version, HTML compatible and using newer features in this post=µ:
Intro
Because this question "While in Review Quiz process, is it possible to review only the slides which have been answered incorrectly?" popped up already multiple times on the user forums, I thought it could be interesting to create an easy solution. The solution will not work with random question slides, because the On Enter Slide event is not available for such slides.
Example
Play this movie to see the result. It has 5 question slides of different types, some with partial scoring, most with penalties. Only one attempt on Question level but two attempts are allowed on Quiz level. I dragged the Review button under the Retake button on the Score slide, to avoid confusion After the second attempt you can click the Review button on the Score slide, and only the questions that have been answered incorrectly will be visible, the correctly answered questions are skipped automatically.
Slides and events
The movie has 8 slides: Title, Instruction, 5 Question slides and the Score slide. Here is a screenshot of the Advanced Interaction panel (F9):
Variables
In the actions I will use the system variable cpQuizInfoLastSlidePointScored that stores the score of the last Question slide, immediately after the two-step process to submit the answer. Because this variable is reused for every question, I have to copy its value to a user variable for each slide. For this purpose I created as many user variables as the number of questions, labeled:
v_quest1, v_quest2, .... v_quest5 with a default value of 0
Too bad that we do not have a system variable that indicates when the user enters Review mode. So I created another user variable, a boolean that has an initial value of 0 but will get the value 1 when in Review mode.
v_review boolean (0,1)
To check this mode I will use the system variable cpQuizInfoAttempts. This variable stores the number of the present attempt on Quiz level when the first question of that attempt is started. But I will check only on entering the score slide (see Advanced Actions, EnterScore).
Advanced actions
Quest1, Quest2, Quest3, Quest4, Quest5 (standard advanced actions)
Those actions are triggered both by the Success and Last Attempt events for the corresponding question slide. They have only two statements:
- will store the value of cpQuizInfoLastSlidePointScored in a user variable; this variable is the only word to be edited in the duplicates
- because a standard action is not releasing the play head, I preferred to add the statement 'Go to Next Slide' over 'Continue' to avoid waiting time for the user
You see two screenshots: the action accordion of the Quiz Properties panel for question slide 2 and the advanced action Quest2.
EnterQ1, EnterQ2, EnterQ3, EnterQ4, EnterQ5 (conditional advanced actions)
These are triggered by the On Slide Enter event for each Question slide. The condition (IF) to be checked is an AND combination of two:
- Is the user in Review mode? This is done by checking the value of the variable v_review.
- Has the user a positive score for this question? Done by checking the value of the corresponding variable v_questx (where x = number of the question). Since some questions have partial scoring, and there are also penalties, this doesn't mean that the question was answered totally correct. If you want to skip only for totally correct answers, you have to change this second condition, asking if the score was equal to the maximum score for that question (cpQuizInfoPointsPerQuestionSlide stores that information, so the condition would then be: IF v_quest(x) is equal to cpQuizInfoPointsPerQuestionSlide).
If both conditions result in True, the slide will be skipped ('Go to Next Slide'), else the play head just continues. Here the screenshots for the second question slide:
EnterScore (conditional advanced action)
This action is triggered on entering the Score slide and will store the value 1 in the user variable v_review when the last Quiz attempt has been taken. At that moment the system variable cpQuizInfoAttempts will be equal to the maximum number of attempts. There is no system variable for that maximum number, so you'll have to check it and type it in as a 'literal' in the condition.
Here is a screenshot of that action, only the IF/Then part. For Else a simple Continue statement is OK. You'll see I have also a second decision, used to show the correct feedback on the score slide. As I mentioned before, I'm a bit embarrassed by the fact that the default feedback message shifts always to Times New Roman font. So I replaced it by showing/hiding a smart shape used as text container.
Conclusion
The proposed work flow can also be used for versions 5 and 5.5. The actions are rather simple, and the only cumbersome work is the duplication, editing (although limited always to changing one variable name) and attribution to the correct event. One could create a template to avoid having to recreate at least one original action and variable.