Forum Discussion

CassiePfister's avatar
CassiePfister
Community Member
3 years ago

Disable Next Button Until All Layers are visited

I'm working on a course where I need the next button to be disabled once the user has selected all of the layers.  The layers are set up to go back to the base layer once the audio has completed.  But I'm not sure how to set it up for the next button to appear once all layers have been clicked and viewed. 

Unfortunately I cannot post the project on this due NDAs...   

Any help would be greatly appreciated.  

  • There are a couple of ways to do this, but my preferred way is to set a true/false variable on a slide. Let's call it V (for variable). The default value for V is "False."

    On the slide you set a trigger that says "Change the state of the NEXT button to disabled when the timeline starts on this slide unless variable V is TRUE."

    You set an additional trigger that says "Change the state of the NEXT button to normal when variable V changes if the state of V is TRUE."

    Then you set the variable to change to True once the participant views all the information. If you are just having them go from one layer to the next, then I'd set a variable on the last layer that says "Adjust variable V to TRUE when timeline starts on this layer."

    Sometimes I have a slide with several buttons, and a user has to click through each button to view the layer. You could have the variable change to true once the state of all of the buttons is "visited," but in this scenario I prefer a number variable. I would add a trigger to each slide layer "Add value 1 to V when the timeline starts on this layer,"

    Let's say there are 5 layers you want them to see. You set your NEXT button triggers to "Change the state of the NEXT button to disabled when the timeline starts on this slide unless variable V less than or equal to 4."

    and

    "Change the state of the NEXT button to normal when variable V changes if V is greater than or equal to 5."

    Does this help?

    • EdmondManning's avatar
      EdmondManning
      Community Member

      Yup. Definitely helps a lot, even  though you posted this 10 months ago. What I liked about your explanation is that you gave two ways of doing it, so I don't get trapped into thinking THERE'S ONE RIGHT WAY. Thanks!

  • Edmond,

    You want to be careful using the method that counts up to five. It's possible the learner could visit one layer five times, and then advance. The method James suggests is more reliable. Also, sometimes you can get away with changing the variable when the timeline starts, but if there is a way to leave the layer before it finishes, it opens the possibility that the learner can get credit for viewing only a few seconds of the layer.

  • I had to implement something similar just yesterday. Here's how I went about it. I hope it helps you. 

    In my case, there was a base layer with images. Clicking each of them would trigger a new layer with a video. The request was that people had to finish each video before moving on. 

    I created four variables. For reasons not worth discussing, they were called varWhyA, varWhyE, varWhyM, and varWhyR. They were true/false (i.e. boolean) variables with a default value of false. 

    In each of the layers containing a video (i.e. all but the base layer), there was a slide trigger which would adjust the value of the video's associated variable to true. I tried setting it to when "timeline ends" on "this layer," but it would never change the variable, so I went with setting it when "timeline starts" on "this layer." There's also an option for picking a certain point in the timeline that counts as complete. I might go back and try that. 

    Then you load up your Next button (on the base layer, in the Player, or both) with some object triggers to keep users from advancing until all of the vars are true. To improve the UX, I also have a warning layer (layerProgressWarning) that appears if they hit btnNext before all the conditions are true. Of course, you could also gray it out or make it not visible:  

    As an ID, I'm not a big fan of this sort of thing. I don't like learning to be a forced march. But I did like it as a problem to solve. 

    When you're doing this sort of thing, add a testing text box to your slide so you can see the status of the variables. You can drag it off the stage when you're done with it, which will keep it out of frame but still available, to you, if you need to do more testing later. Mine looks like this, in the editor: 

    • JasonNaumovski-'s avatar
      JasonNaumovski-
      Community Member

      Thanks, this helps a lot and is pretty easy to set up and doesn't allow them to 'cheat' the system. 

  • GeorginaWant's avatar
    GeorginaWant
    Community Member

    Hello, please can someone help me with this same issue? I am struggling to understand how I ensure the learner visits each layer before returning to base layer to continue onwards. I want to disable the next button until all layers have been visited. At the moment nothing i do seems to work. I have tried to follow the instructions with true/false variable triggers with no luck. 

    I have 1 base layer and 3 layers that then bring you back to the base layer before moving on. 

    • JudyNollet's avatar
      JudyNollet
      Super Hero

      Here's the image you attached:

      The highlighted variable trigger would automatically jump to the designated slide when Variable1 changes if all three variables are True. 

      • That could only happen if the user visits layers 2 and 3 first, so that those variables would already be True when Variable1 changes. 
      • Also, jumping to the other slide happens when Variable1 changes. Even if the variable changes when the timeline of layer 1 ends, the trigger wouldn't bring the user back to the base. It would just jump the user to the next slide without them having to click anything--and that could be very confusing.

      There are various ways to prevent the user from jumping to the next slide until they have visited/completed layers. Which method to use depends on what's on the layers and whether they're Dialog layers or not. Frankly, it also depends on personal preference. (After all, the users won't see how it's programmed. They'll only see how it plays.)

      This post might help: https://community.articulate.com/discussions/articulate-storyline/tip-controlling-the-next-button-101 

      I suggest you review that and/or the other instructions you've been trying to follow. Then, if you're still having problems, upload a .story file for troubleshooting. Here are the best practices for uploading a .story file:

      • Only include slides that are related to the problem.
      • Be sure objects, layers, motion paths, and variables have meaningful names.
      • If there is proprietary content, replace or delete it. For example, replace proprietary text with “ipsum lorem” text.
  • Nedim's avatar
    Nedim
    Community Member

    The attached example illustrates a classic and simple way to ensure all layers are visited before the Next button is enabled. To ensure the learner returns to the base layer, you need to provide a way for them to close the current layer (e.g., a close button) after all content is read or the interaction is complete. Here’s an example of the triggers to use on each layer (the order of triggers is important):

      

    As Judy says "There are various ways to prevent the user from jumping to the next slide until they have visited/completed layers. Which method to use depends on what's on the layers and whether they're Dialog layers or not. Frankly, it also depends on personal preference."

  • GeorginaWant's avatar
    GeorginaWant
    Community Member

    Thank you so much everyone - very helpful indeed & I have now completed my course.