Tricking a SumTotal system

331 views
Skip to first unread message

bentspoon Media

unread,
Nov 18, 2009, 2:48:29 PM11/18/09
to eLearning Technology and Development
I've been charged with converting a prior vendor's SWF-based online
courses into a format that will play on my client's SumTotal LMS.

OK. Done.

I was first under the assumption that they had built these to
communicate with an LMS. No such luck. There's no SCORM class or any
variable passing of any sort going on with their SWF files.

So...

Am I smoking crack when I think that I can hard-code a few of the LMS
variables within the HTML file that I ripped off from a prior Adobe
Captivate project (which I've modified to play quite nicely with the
LMS thanks to some other boards out there), in order to fool the LMS
that the SWF is passing a "complete" data point upon unLoad(ing) the
course window?

Would I be hard-coding the LMSCommit, or LMSFinish variables, or
neither? My thought is that not only would I have to hard-code those
two variables, but also write some JS to handle LMSSetValue and
LMSGetValue just in case the user had come into the course for a
second time.

Help?!?!

Philip Hutchison

unread,
Nov 18, 2009, 3:44:40 PM11/18/09
to elearning-technolo...@googlegroups.com
If all you want to do is tell the LMS the course has completed when the window closes, you should use the pipwerks JavaScript SCORM wrapper.

After linking to the JS file in your <head>, you can do something as simple as this:

<script type="text/javascript">

//Set up variables
var scorm = pipwerks.SCORM; //shortcut

var completed = false;
var connected = false;

function connect(){
   scorm.version = "1.2"; //Specify SCORM version
   connected = scorm.init(); //Connect to LMS
   //Tiny bit of error-checking to be safe:
   if(!connected){ alert("Hey, LMS connection failed!"); }
}

function setCourseToComplete(){
   //Tiny bit of error-checking to be safe:
   if(!connected){
     
//Exit this function without trying to set
      //completion since we know it won't work.
     
return false;
   }

  
   if(!completed){

    completed = scorm.set("cmi.core.lesson_status", "completed");
    scorm.save();
    scorm.quit(); //Disconnect from LMS
  }
}

window.onload = connect;
window.onunload = setCourseToComplete;

window.onbeforeunload = setCourseToComplete; //For IE

</script>

That's literally all the code you'd need to write -- the wrapper takes care of everything else, including setting the initial status to "incomplete" when launching the course. If you're using SCORM 2004, change cmi.core.lesson_status to cmi.completion_status and specify "2004" for scorm.version.

Bear in mind that this example will set a course to "completed" simply by closing the course window. For obvious reasons, that's usually not such a great idea. :)

Also, you need a valid imsmanifest.xml file for your package. If you're not familiar with packaging, there are great packing examples at http://www.scorm.com/scorm-explained/technical-scorm/content-packaging/

- philip

PS: If you want to integrate SCORM code into your Flash files, the pipwerks ActionScript wrappers makes it pretty straightforward. It's easier than trying to rewrite someone else's wrapper (and to be honest Captivate's wrapper is more than a bit kludgy/outdated).






--

You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To post to this group, send email to elearning-technolo...@googlegroups.com.
To unsubscribe from this group, send email to elearning-technology-and...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/elearning-technology-and-development?hl=en.



Raymond Sugel Sr

unread,
Nov 18, 2009, 3:54:04 PM11/18/09
to elearning-technolo...@googlegroups.com

You can accomplish what you are looking to do, but not in the way you’re asking.  LMSCommit and LMSFinish are methods (functions) of the SCORM 1.2 API.  You’d have to write a function called from the onunload event of the htm page performing a LMSSetValue(“cmi.core.lesson_status”,”completed”) and then an LMSFinish(“”).  LMSFinish performs the equivalent of the LMSCommit(“”) before it terminates communications with the LMS, so no real need to explicitly call LMSCommit(“”).

 

The issue with this type of action is, I launch the course, view the first page, close the course and I get a completed status.  Not very good from a training perspective.

 

Raymond Sugel Sr

eLearning Consultant
847.370.6163
rsug...@pivotpointelearning.com
www.pivotpointelearning.com

--

image001.png

bentspoon Media

unread,
Nov 18, 2009, 4:16:50 PM11/18/09
to eLearning Technology and Development
Oh, there are SO many problems with the scenario I've been presented
with, but I tried to get down to basics of what I need to accomplish.
Philip, I've read a lot of your content on other sites too. Brilliant.
Such a great mastery of simplifying what has become an unruly sector
of technology. You'd think that standards would mean everything plays
nice together!

Also, it's easy to see how Captivate has become so kludgy, given that
it was originally RoboHelp, and then they decided to try to weave this
variable passing functionality into it. Yuck.

But, you work with the tools into which your client has already sunk
an investment, right?

And yes, your assumption was correct; it's in SCORM 1.2.

Thanks!!!

-RJ

bentspoon Media

unread,
Nov 18, 2009, 4:19:24 PM11/18/09
to eLearning Technology and Development
Raymond

Thank you for the explanation of the call order / use of these
JavaScript methods; invaluable information, and not necessarily the
direction I want to go.

How true about the problems associated with the Open Course /
immediately close course / registered as complete scenario. Client
understands the ramifications. Backstory is far greater than is
necessary to get into in this thread.

Thanks for your feedback!

bentspoon Media

unread,
Nov 18, 2009, 4:21:41 PM11/18/09
to eLearning Technology and Development
One other thing...

I appreciate the thoughts regarding the guidance on the manifest file:
already had that one worked out.

-RJ

On Nov 18, 12:44 pm, Philip Hutchison <platelu...@gmail.com> wrote:
> If all you want to do is tell the LMS the course has completed when the
> window closes, you should use the pipwerks JavaScript SCORM
> wrapper<http://pipwerks.com/lab/scorm/wrapper/index.html>
> .
> familiar with packaging, there are great packing examples athttp://www.scorm.com/scorm-explained/technical-scorm/content-packaging/
>
> - philip
>
> PS: If you want to integrate SCORM code into your Flash files, the
> pipwerks ActionScript
> wrappers <http://pipwerks.com/lab/scorm/wrapper/flash/index.html> makes it
> > elearning-technology-and...@googlegroups.com<elearning-technology-and-development%2Bunsu...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/elearning-technology-and-development?h....

Ryan Meyer

unread,
Nov 19, 2009, 9:19:48 AM11/19/09
to elearning-technolo...@googlegroups.com
If you only have the output swf files from the existing courses, and not the original FLA's, you could always use a Flash decompiler to get back the original source and modify it to add in SCORM tracking capabilities (maybe using the pipwerks or any other number of SCORM wrappers available.)
I use the Sothink SWF Decompiler regularly for this sort of thing. It works well and is quite inexpensive.

-Ryan

To unsubscribe from this group, send email to elearning-technology-and...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/elearning-technology-and-development?hl=en.



Cathy C

unread,
Nov 19, 2009, 11:50:20 AM11/19/09
to eLearning Technology and Development
RJ, SumTotal's LMS has a built in "SumTotal Player" that provides
navigation. When uploading courses built in Captivate or Artilculate
etc.. additional code needs to be added to prevent this player from
appearing. If you checkout the Yahoo User group for SumTotal Users
(http://tech.groups.yahoo.com/group/sumtotal_users/) and do a search,
you should be able to find all the details.

I posted the sample files I downloaded from the Yahoo group into this
Group's Files section. (customized manifest_SumTotal.zip)

Also, I use SumTotal's LCMS to generate courses "optimized" for
SumTotal LMS's. A sample of the JS files created via their system can
also be found in the Files section of this group. (Sample SumTotal JS
Files.zip)

PS. I know nothing about javascript but I thought these files might
help you. Good luck.

bentspoon Media

unread,
Nov 19, 2009, 1:26:49 PM11/19/09
to eLearning Technology and Development
I was just about to play with that, Ryan. Thanks for bringing it up.

bentspoon Media

unread,
Nov 19, 2009, 1:31:49 PM11/19/09
to eLearning Technology and Development
I've already been playing with Captivate and modifying the imsmanifest
to take advantage of certain elements of the SumTotal skin, and
disable others. I had gotten hold of a SumTotal white paper on
manipulating those elements when we first started build out of our own
courses. It was the incorporation of another vendor's course that
became my responsibility to incorporate that really threw me.
Particularly when I found out that the other vendor -- "experts" with
their own proprietary "LMS -- was not having their SWF files pass ANY
variables at all, and that they were monitoring completion of course
by having users select an HTML checkbox embedded within their HTML
wrapper before the closing of the pop-up window playing the SWF file
(s).

Huge resource on the SumTotal User group, though.

Thanks!

-RJ

emcod

unread,
Nov 25, 2009, 9:56:01 PM11/25/09
to eLearning Technology and Development
Here's another twist on this:

I have a multi-SCO course developed in Cp4 that I'm trying to get to
track correctly in SumTotal (7.2 I think, but I'm not completely
sure). Right now, using only the default SCORM 1.2 output files
generated by Captivate (and of course some modifications to the
manifest file to add the extra SCOs), everything works perfectly
*except* when a learner re-enters a SCO that they previously
completed, the status reverts back to 'Incomplete'.

Any ideas what's causing this? I've set the publish settings in
Captivate so the course tracks Slide Views Only, with 90% as the
completion percentage. I've tried both selecting and not selecting
'Escape Version and Session ID' in the LMS Customization Settings
dialog. I'm reluctant to make any drastic changes to the code in the
publish files because, like I said, everything is working fine except
for the issue above.

Seems like this should be a fairly common issue ... really hoping
someone knows the fix.

Thanks,

- Steve

On Nov 18, 12:44 pm, Philip Hutchison <platelu...@gmail.com> wrote:
> If all you want to do is tell the LMS the course has completed when the
> window closes, you should use the pipwerks JavaScript SCORM
> wrapper<http://pipwerks.com/lab/scorm/wrapper/index.html>
> .
> familiar with packaging, there are great packing examples athttp://www.scorm.com/scorm-explained/technical-scorm/content-packaging/
>
> - philip
>
> PS: If you want to integrate SCORM code into your Flash files, the
> pipwerks ActionScript
> wrappers <http://pipwerks.com/lab/scorm/wrapper/flash/index.html> makes it
> > elearning-technology-and...@googlegroups.com<elearning -technology-and-development%2Bunsu...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/elearning-technology-and-development?h....

emcod

unread,
Nov 25, 2009, 9:56:42 PM11/25/09
to eLearning Technology and Development
Here's another twist on this:

I have a multi-SCO course developed in Cp4 that I'm trying to get to
track correctly in SumTotal (7.2 I think, but I'm not completely
sure). Right now, using only the default SCORM 1.2 output files
generated by Captivate (and of course some modifications to the
manifest file to add the extra SCOs), everything works perfectly
*except* when a learner re-enters a SCO that they previously
completed, the status reverts back to 'Incomplete'.

Any ideas what's causing this? I've set the publish settings in
Captivate so the course tracks Slide Views Only, with 90% as the
completion percentage. I've tried both selecting and not selecting
'Escape Version and Session ID' in the LMS Customization Settings
dialog. I'm reluctant to make any drastic changes to the code in the
publish files because, like I said, everything is working fine except
for the issue above.

Seems like this should be a fairly common issue ... really hoping
someone knows the fix.

Thanks,

- Steve

On Nov 18, 12:44 pm, Philip Hutchison <platelu...@gmail.com> wrote:
> If all you want to do is tell the LMS the course has completed when the
> window closes, you should use the pipwerks JavaScript SCORM
> wrapper<http://pipwerks.com/lab/scorm/wrapper/index.html>
> .
> familiar with packaging, there are great packing examples athttp://www.scorm.com/scorm-explained/technical-scorm/content-packaging/
>
> - philip
>
> PS: If you want to integrate SCORM code into your Flash files, the
> pipwerks ActionScript
> wrappers <http://pipwerks.com/lab/scorm/wrapper/flash/index.html> makes it
> > elearning-technology-and...@googlegroups.com<elearning -technology-and-development%2Bunsu...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/elearning-technology-and-development?h....

Philip Hutchison

unread,
Dec 2, 2009, 1:22:17 PM12/2/09
to elearning-technolo...@googlegroups.com
If the course was completed on a previous launch, SumTotal treats the re-launch as a new attempt and therefore treats the course as incomplete.

There is no Captivate setting that can change this behavior.

Some versions of SumTotal allow you to specify whether re-launching a previously completed course should count as a new attempt, but those are administrator-level settings.

- philip
Reply all
Reply to author
Forward
0 new messages