Forum Discussion
"Choose Your Own Adventure" Page Numbering
I've started implementing 'choose your own adventure' style sections into our courses so that users can visit the subsections in whichever order they'd like but it's led to some issues with page numbering.
- We've traditionally had page numbers aligned with the page in the project (Page %Project.SlideNumber% of %Project.TotalSlides%), but this is confusing for students when they jump from 23 to 48 and then back to 30.
- We changed it to the number of slides viewed in the project (Page %Project.SlidesViewed% of %Project.TotalSlides%), but this is still confusing for some when they navigate backward and has created an issue where the course is not marking as complete because the numbering skips around a little.
- Our finishing 'requirement' is 100% of slides viewed
- We now have it set to a percentage (%Project.Progress% Complete) but would prefer to use page numbers.
Any tips on the best way to mark the number of pages viewed, even when students move backward in the course (very common for our students).
(We're also soft launching the percentage thing with a group of students to see if they prefer it to page numbers anyway, they might.)
- SamHillSuper Hero
Hi HannahWright-70 I don't think there is a simple solution for you, with the navigation being dynamic and the page number not being consistent.
The only way to manage this would be to use JavaScript. If you have JS skills or have access to a JS programmer, the Storyline file would just need to track each slide it has been to (I think each slide has a unique ID), and then assign a page number to that slide (incrementing based on navigation), these slide IDs would be added to an array, for example:
userNavigation = [ { 'slide-id': 'abcd123', 'slide-number' : 1 }, { 'slide-id': 'abcd456', 'slide-number' : 2 } ]
Each time a slide is navigate to, the userNavigation array could be queried to see if the slide-id already exists, if it does, it means the user has been there already and there will be a slide number to display, if not, it means it's a new slide, and the new slide will be added to userNavigation array, and the 'slide-number' incremented. This is a very basic description of the requirement, and there is some passing of data between Storyline and JS, but this is the only way I can see it being possible. I'm sure it cannot be completed using native Storyline triggers, and if it can, it will be hundreds of triggers and a nightmare to maintain.
- HannahWright-70Community Member
Oooof, no JS skills here :(
My initial thought for a workaround would be to change the 'completion' to a trigger that appears on the last page of the course but that doesn't alleviate the confusion when students go back and forth and the numbers change.
- SamHillSuper Hero
Yes, agree with the completion. Just add to a slide you can guarantee cannot be accessed until you want the user to access it.
- JudyNolletSuper Hero
Some options to consider:
- Number the slides in each subsection separately. In other words, each subsection always starts with 1.
- Show a progress bar instead of a number or percentage. That would give the user a sense of how far they've come and far they have to go, without getting distracted by actual numbers. (If you search the community, you should be able to find some great examples.)
- NedimCommunity Member
A while ago, we had a similar request from a client to implement custom slide order numbering, allowing learners to navigate through all slides freely. Completion would be triggered once all slides were viewed, regardless of the order in which they were accessed.
The process starts with the learner beginning at Slide 1. From there, they jump to Project Slide 10, which is labeled as Slide 2 in our custom numbering system, and then to Project Slide 5, labeled as Slide 3. This continues, with completion tracked based on the learners visiting all slides according to the custom numbering system, regardless of the order in which they navigate.
The JavaScript was primarily designed for use in another authoring tool, but I have adjusted it to work similarly in Storyline. I also incorporated—well, at least attempted—what Sam suggested regarding capturing and storing Slide IDs to ensure visited slides are not repeated, based on their unique Slide IDs.
I just wanted to share this demonstration without knowing how it aligns with your requirements or if it is even close to what you're looking for.
Demo: https://streamable.com/0tely4