Skip to main content
Inspiring
July 23, 2017
Question

Limit the use of learning applications

  • July 23, 2017
  • 2 replies
  • 751 views

Thinking since a few weeks about this constellations and try some things whenever finding time for it. And surely also searched here and in the web in general for the issue. Perhaps time to ask the community?

Principle scenario: A learning-application build with Captivate (for background-compatibility with colleagues in Captivate 8). As anybody here know this can be exported in different Formats. Let's forget all but
a. HTML5 for direct use on a Webserver or even local and
b. the same Version as SCORM-Export for use in LMS.

Thinking about two features that counts access of a unique export, regardless if used on different browsers on different computers or in an LMS or not.

Detail scenario 1: Users enter their name (or are set via LMS) when starting the learn-application. Every user gets a personal certificate with his name at the end. The application has to work only with a given number of named users. For example 20 persons with 20 different names can use it; if person 21 tries, it has to break up.

Detail scenario 2: Just count any access of the application. Means if a unique user start it 5 times (and get only 1 certificate) this counts as 5, if another one gets his certificate at first time this counts 1. When a given number of access is reached the application shows a message and breaks up (or even not start at all).

I know this is far behind of standard-features of captivate. And I even know that it is tricky and even suspect perhaps impossible.

Anyway, solutions, in every working form, are welcome.

Myself tried httprequests for a counter on a server. So far this works: Captivate (i mean the export from it) sends Data including a unique ID of the export via javascript to a php-file on a server wich sets an counter down. NOT working is getting this value back to captivate to check if it is still >= 0. Obvious a problem of same-origin-policy. I try to understand to work with JSON now. But nethertheless, even if i get this working, it only solves scenario 2 above.

So again: Perhaps someone with advance skills has an idea ore even solved one ore both describes constellations.

    This topic has been closed for replies.

    2 replies

    Inspiring
    August 1, 2017

    Thanks Jim. It is already used in a constellation you describe as "more secure". But in this case an already available LMS of a customer can not be used.
    The unsolved question is if it is possible to give away SCORM or HTML5 - Files for use in an enviroment wich you are not able to control with any - if not perfect - limitation on it. You think it should work in a not-really-secure way wich I outlined. OK, so I will again "fight"* with the code and try to make it work ...

    * I'm no real programmer, that's why I use authoring tools

    Inspiring
    August 2, 2017

    OK, on the same server it works now. Downward the code on the button described above for everyone who is interested.

    http://example.de/example.php sends back "teststudendname|8" - just for a test for future handle names and counters - wich is indeed showed in the HTML5-Export when it's on the same server.

    countid is the ID of the individual Test-Export for one customer. Send to the php for the database

    cpQuizInfoStudentName is the captivate/SCORM-Variable for the User-Name. If there are licences left or the user is known in the database (to come) as used the app before it will be the same as transmitted to the php, else it will be "no licence" e.g. given back from the php in his 1st data.

    lizenzok will be the number on licences left or just a boolean transmittet by the php in his 2nd data.

    It goes on slow - because of lack of knownledge and time of mine, but it goes on! And it goes better with the feedback signals in this forum than with someone I wanted to pay for a solution who said "no problem!" ... and never heard again.

    More (for a different server) when I made it working.
    Help to force this outcome or hints to "bad ideas" in the code below still gladly accepted!

    //check if window.cpAPIInterface is available

    if(window.cpAPIInterface)

    {

        //check if window.cpAPIEventEmitter is available

        if(window.cpAPIEventEmitter)

        {

            //add a listener to CPAPI_INTERACTIVEITEMSUBMIT event

            window.cpAPIEventEmitter.addEventListener("CPAPI_INTERACTIVEITEMSUBMIT",function(e)

                                                                        {

    // Eigentliche Funktion ANFANG

    function createReqObj() {

      brws = navigator.appName; 

      if(brws == "Microsoft Internet Explorer"){

          rq = new ActiveXObject("Microsoft.XMLHTTP");

      } else {

          rq = new XMLHttpRequest();

          return rq; }

    }

    rqo = createReqObj();

    function PostRequest() {

       var cp= document.Captivate;

       cp.cpEIGetValue("m_VarHandle");

       result1 = m_VarHandle.countid;

       result2 = m_VarHandle.cpQuizInfoStudentName;

        rqo.open ('POST', 'http://example.de/example.php', true);

                    rqo.onreadystatechange = receive;

        rqo.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');

        Feld1 = "licence_id=" ;

        Feld2 = "test_Name=" ;

        rqo.send (Feld1 + result1 + "&" + Feld2  + result2);

    }

    function receive() {

        if(rqo.readyState == 4 && rqo.status == 200){

              var ergeb = rqo.responseText;

            var WHATtoDO = ergeb.indexOf("|");

            if (WHATtoDO > 1) {       

                  elements = ergeb.split("|");

                                          m_VarHandle.cpQuizInfoStudentName = elements[0];

                                          m_VarHandle.lizenzok = parseInt(elements[1]);

                                          cp.cpEISetValue("m_VarHandle");

                                          document.Captivate = cp;

            }

        }

    }

    PostRequest();

    // Eigentliche Funktion ENDE

                                                                        });

        }

    }

    Inspiring
    July 28, 2017

    Perhaps let's make this question a bit clearer:

    A learning-application build with captivate. It's use has to be limited regardless if used on different browsers on different computers or in an LMS or not. Export in HTML5.

    Scenario 1: Users enter their name (or are set via LMS) when starting the learn-application. Every user gets a personal certificate with his name at the end. The application has to work only with a given number of named users. After this number is reached, it has not be used by another user more.

    Scenario 2: Just count any access of the application. When a given number of access is reached the application shows a message and breaks up.

    I look forward to ideas to one ore both of this scenarios.

    Lilybiri
    Legend
    July 29, 2017

    I doubt you'll get an answer in the Captivate forum. Both scenarios have to happen outside of Captivate. To me the easiest way would be by using a LMS, because it is a typical LMS functionality.

    Inspiring
    July 30, 2017

    That such things are only part of an lms was my first - and second - thought too.

    But there are companies wich sells HTML5 or SCORM-Exports to use stand alone or in the lms of their clients with tiered pricing for the number of users.
    I would wonder if the limitation is not controlled in a way.