Limiting tab interaction until tab is visited

Apr 21, 2015

Hi you lovely lot.

Hope all is well.

I've created a module based around tabs on the right hand side (like file dividers in a ring binder).

We only want the learners to have free interaction of what tabs they can visit, once they've gone through the module once in a particular order. (i.e. they can go back to the pages in tab 2 and return to tab 4 without going through tab 3 - as long as they've already visited tabs 2, 3, 4 already in the right order....does that make sense??? The order is locked the first time through, but once the pages in a tab have been viewed, it's then unlocked and they can go where they want)....

I just can't seem to think of a way to do it.

I've created the tab look in slide master for ease - as there are multiple slides in each tab....I'm thinking something with variables might work but I've never actually used them since my training course..... 

Would it be possible to  deactivate a tab interaction on the slide master until the variables on all pages in a tab are true (true being when a slide is visited?). I have no idea if that's even an option! If it is, would having the slides set as return to initial state when revisited mess with the variables? There's narration etc. on each page so if they want to revisit it, it has to start from the beginning. Or is there a trigger to 'replay' a slide or 'reset' a time line?


ANY help or ideas would be amazing.

Thanks in advance as always.



16 Replies
Lucy Hood

Hi Chris,
Thanks for that - hope this works...!
I've built a SUPER quick example layout using a putting a few slides in each scene. Each scene is essentially the equivalent of a 'Tab' that I was referring to.
The tab layout itself is in the slide master.
I've made it super simple here - in the actual file, a lot of the slides have different layers etc.
ANY advice or pointing in the right direction would be AMAZING.
Thank you so much.

Chris Cole

Hi Lucy -

I made some adjustments to your file and I think this will work. I'll use Section 2 (Overview) in my description below.

  • First, I noticed that you did not have any triggers for going to the next slide whenever the learner clicked Next button on a slide. So I added those.
  • Now we have to prevent the learner from clicking Next on the last slide of each section to go to the next section. So we disable the Next button on the last slide of each section via a trigger.
  • Now we need to check that all of the slides in the section have been visited and enable the Next button if that is true.
    • I created a variable called seg2done that is initially set to False.
    • I created a trapezoid shape that lives on each slide, but offscreen so the learner never sees it. The trapezoid does two things.
      • First, it sets a variable that indicates that that particular slide it is on has been visited.
      • Second, it contains the logic for checking if all slides in the section have been completed. If so, it sets the seg2done variable to True.
    • You can copy and paste the trapezoid to each slide in the segment, and just adjust the first variable it is setting in its triggers - on slide 2-1 it changes the value of variable 2_1_done, et cetera. The second trigger does not need to be adjusted on each slide.
  • So now you have this logic in place: the Next button takes the learner to the next slide in a section, except on the last slide in the section the Next button is disabled. The trapezoids are flagging each slide as visited when the learner hits the slide, and checking to see if ALL slides in a section have been visited, and adjusts a variable if that is true. On the last slide of the section, the Next button becomes enabled if the variable seg2done = true.
  • Now for the tab navigation... 
    • You don't really need a separate set of tab buttons for each of your layouts, so I moved them to the Master Slide. That makes updates and maintenance much easier. It looks like you need a separate layout for the Home Page (without the tabs) so I would create a new Master Slide for that one page.
    • I set the Initial state of the tab buttons to Disabled (except for the first tab, as we want them to access that section right away). I had to add a Disabled state for each of the buttons and then changed the Initial state of each button to the new Disabled state. When Storyline see Disabled state as the initial state, it automatically disables the buttons for you, you don't have to do anything else. 
    • I set the proper navigation for each button (jump to slide 3.1 for the Product Specification tab, for example). Of course, since the button is initially disabled, it won't do anything yet.
    • Then I added a trigger to the tab button that says to change the state of myself to Normal if my segDone variable is true. So remember the trapezoids on the slides in Segment 2 are flagging that each slide is visited, and then setting the Seg2done variable to true when all three slides are visited. Now the Product Specs tab button is checking the Seg2done variable and sets itself to Normal if the variable is true.

I only implemented the logic described above for Segment 2.

The only other issue I can see is your Menu. Right now it looks like you have it set to free navigation. You would need to change that to Restricted so the learner cannot use the Menu to jump ahead, but then that might cause problems with your Next button. Since you are using your own "Menu" aka the tabs buttons, you might consider not using the built in Storyline menu?

Hope this helps.

(My browser is not letting attach the attachment, so I will post this lengthy explanation first and then add the attachment to a separate post.)


Lucy Hood

CHRIS! You absolute STAR.

Thank you SO much for putting in the time to do this for me!

I'll have a play with this today/Monday and fingers crossed won't come back to you with annoying questions!

A couple of things you've mentioned are different in the actual build (storyline menu's etc.) but thank you for mentioning them - all worth double checking. The variables part is an absolute winner though!

One question - if you set a slide to return to initial state when re-visiting, (so the narration re-plays etc. does that mess with the 'visited' state? i.e will things return to disabled?

Thanks again,


Chris Cole

Hi Lucy -

Glad it helped Lucy.

If you set the slides to Reset to Initial State, everything will still work as intended, because we are using variables for our logic and the variables will not be reset. If we had been using object states - for example, if we had been setting and checking the state of the trapezoid to determine whether or not to make the tab button enabled, then we would have had a problem. This is a good example of why sometimes variables are a better choice than object states for slide logic. But there are other times when using object states make more sense.

I noticed, however, that the tab button is resetting to disabled when you click through all three slides (in the Product Specs section) and then revisit any of the slides. I checked all of the logic and there is no reason for this to happen. As a test, though, on the Master Slide I moved the enable / disable triggers ( Change state of Product Spec 1 to normal / Change state of Product Spec 1 to disabled) from the Product Spec button itself to the slide level (still on the Master Slide though). So now they are slide triggers instead of triggers on the button and everything works properly and the tab button does not get reset.

It should have worked the same when those triggers were button triggers, or regardless of where the triggers live really. We'll just have to chalk that one up as a Storyline idiosyncrasy. 



Lucy Hood

I'm sorry..,me again!

Desperately trying to get it to work but no joy!

I've put in the variables to make the next button disable until the slide is viewed (I've put this on all slides in each section as we need them to sit through every slide until it's finished) and that's working great, but the tabs aren't doing anything!! None of them are changing at any stage.

I've tried multiple things all morning but can't work out what I'm doing wrong....

Would you mind casting your expert eye over the full file?! Supposed to have this complete tomorrow - and I've got two modules to get working!! AGGH!


Chris Cole

Hi Lucy -

Looks like you added the triggers to disable the tab buttons, but forgot to add the triggers to enable the buttons at the appropriate time. I added one here, highlighted in blue:

I also noticed that you do not have a trigger to set the variable "overviewdone" to true. I think you want to add that to the Let's Begin button on 1.2?

Your gateway logic looks good, so I think the fix above should solve it for you.




This discussion is closed. You can start a new discussion or contact Articulate Support.