Forum Discussion

StephenTaylor's avatar
StephenTaylor
Community Member
6 months ago

How does Storyline 360 identify whether it is published to an LMS or the web?

Hi there,

As per the title, is there a way that Storyline can identify whether it has been published to an LMS or to the web?

I am creating some content that will be available on an LMS but some users may access a web based version. I would like those users to see some additional slides before they view the actual content. A simplified version of the opening slides is attached.

There is a Splash screen which would automatically move to either the title slide or to an intermediary slide depending upon whether the learner is viewing the content on an LMS or not. If is the latter case they would be taken to another slide where they would be asked if they have an LMS account. If they choose No they would continue, after confirmation, to the same title slide and complete the content.

I was wondering whether there is a specific built-in variable that I could use to get the Storyline title to identify how it has been deployed and so do the appropriate branching for me? Or is it a question of dipping my toes into the world of Javascript?

I hope this makes sense and thanks ever so much in advance for assistance. I have had a look through the Articulate support pages but I have not been able to find the relevant information. If someone could point me in the direction of it, that would be great.

Stephen

  • JHauglie's avatar
    JHauglie
    Community Member

    I'm not sure that a scripting effort would not do this, but based on my experience, you are basically going to be publishing two versions of the course: one for the LMS (a standard SCORM package, for example) and a second for web access. And since you are publishing two separate versions, you should be able to readily add the supplemental materials to the web-only version.

    You might consider keeping the second slide (after the splash) in both versions, and require the user to confirm that they are indeed completing the course in the correct delivery environment (accessing via LMS? click here, accessing via web? click here), with the "incorrect" selection resulting in a second screen that requires the user to either exit the course and then start it in the alternate environment.

    Keep in mind that completing the course via the web will not provide the reporting data that the LMS version does.

    • Nathan_Hilliard's avatar
      Nathan_Hilliard
      Community Member

      To detect the LMS, you can try this short piece of JavaScript. It will assign true or false to some Storyline variables if the LMS or the LMS API is found. You can publish it to LMS/SCORM and run it as a local webpage or on your LMS to see the results. In my environment, I get false  outside my LMS, and true inside my LMS.

      Code:

      //Create reference to LMSAPI, either in current or parent windows, it it exists
      //May cause CORS errors outside of LMS if not trapped
      //https://docs.rusticisoftware.com/driver/Function-List.html

      //-Function to connect with LMSAPI---------------------------------------------
      function findLMSAPI(win) {
          if (win.hasOwnProperty("GetStudentID")) {
              return win;
          }
          else if (win.parent == win) {
              return null;
          }
          else {
              return findLMSAPI(win.parent);
          }
          
          // see also window.LMSStandardAPI and scormdriver.js for list of available functions
      }

      //-Main Routine----------------------------------------------------------------

      let player = GetPlayer();
       
      let lmsAPI = findLMSAPI(this);
       
      player.SetVar("foundLMSAPI", !(lmsAPI == null));
      player.SetVar("foundLMS", (lmsAPI) ? lmsAPI.IsLmsPresent() : false);

  • Maybe I'm confused here, but like Joe says, you have described creating and publishing two versions, one for the LMS, and a web version. If you have a true LMS, and not just a web server you are calling an LMS, it will take care of the problem. The function of an LMS is to store, deliver, and track eLearning.  The way your mockup describes it is that the learner will start using a web version (probably from a local file server), and if they have an account on the LMS, be asked to log in there (exiting from the web version), and start over with the version the LMS gives them to complete the training.

    I'm not clear on what your are trying to accomplish, but I'm pretty sure you can trust the system: if they download it from the LMS, it is the LMS version, otherwise, it is the web version.  There really is no way a learner can start with a version opened from a web server, then go to the LMS to log in, and continue with the original version, and have the LMS track and report on them. The LMS will track and report only the version that it starts and sends out to them.

  • Thank you to everyone who has responded.

    Just to clarify - some users in the company will have access to the LMS and their usage will be tracked. However, other people in the company will not have access to the LMS (they are outside that section of the business). It was felt that it might be useful for them to view the content as well, albeit without their learning being tracked. In that case, an HTML version would be available on the company intranet. There is, though, the possibility that those with access to the LMS may come upon the intranet version and attempt to complete that one without it being tracked. Some method was needed to make sure they did the right version.

    Both Joe and Nathaniel's suggestions sound promising. I have tried out Nathaniel's idea and it appears to work perfectly. Thank you very much for your generous and prompt help.