Lectora SCORM Pkg

160 views
Skip to first unread message

Andrew Robertson

unread,
Feb 25, 2016, 8:35:27 PM2/25/16
to eLearning Technology and Development
Hello all,

I have been requested to update a few courses our company has but sadly we don't have the raw files. The application loads and runs fine, but we need to send a Complete status once the user has hit the last page.

I was going to use the Pipwerks JavaScript and was in the process of adding the code but noticed that the course was developed in Lectora but published as a non SCORM package.

It has all the necessary JS files and everything loads fine when the index.html is launched. Just wondering what the best course of action would be to get this stuff loaded using a ZIP file.

Let me know if you need any other information.

Cheers
Andrew

ethan estes

unread,
Feb 25, 2016, 8:42:11 PM2/25/16
to andrew robertson, elearning technology and development
Odds are if you rummage around you'll find some js that, based on some vars the lectora code passes page to page, will decide if the user passed the course. This may be based on a test score or all pages viewed etc. you 'll will want to setup a call from this spot to pipwerks scorm object to set the status on the lms.

I had to do this a few years back and it took looking at the js and also running through the courses several times and viewing the js via developers tools in browsers to pull it off.

-EÆ
Sent from my mobile
--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Andrew Robertson

unread,
Feb 25, 2016, 8:45:17 PM2/25/16
to ethan estes, elearning technology and development
Good to know. I've just downloaded the files from Pipwerks website and I'll try a dummy course tomorrow to see how Lectora makes the calls based on var xy. 

Luckily were basing it on simply making it to the last page, but where to put the code properly is the kicker.

Cheers,
Andrew


Sent from my Galaxy Tab® A

ethan estes

unread,
Feb 25, 2016, 8:49:01 PM2/25/16
to elearning-technolo...@googlegroups.com
As i recall lectora generates stub pages for each screen in the authoring file. So find the html page that completes the course (the "congrats" page) and that should be your page.

Newer versions of lectora may build the course differently so uour milage may vary.

Andrew Robertson

unread,
Feb 25, 2016, 8:57:37 PM2/25/16
to elearning-technolo...@googlegroups.com
Oh ya, definitely found that page and I found the function that sets the AICC_Lesson_Status I just need to figure out how to call that function that sends complete to the LMS.

Would I use the Pipwerks IMSMANIFEST as the packager?

Sent from my iPhone
--
You received this message because you are subscribed to a topic in the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/elearning-technology-and-development/771tI6YSKOw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to elearning-technology-and...@googlegroups.com.

Philip Hutchison

unread,
Feb 25, 2016, 10:00:18 PM2/25/16
to elearning-technolo...@googlegroups.com
the manifests on my site aren't the best. I'd grab one from scorm.com (golf examples). 

you'll also need to figure out when to invoke the LMS initialize function. in theory you could wait until the end if the course (init, set complete, terminate). 
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.

Andrew Robertson

unread,
Feb 26, 2016, 7:18:55 AM2/26/16
to elearning-technolo...@googlegroups.com
Thanks Phillip for your response.

I was also leaning that way of doing all the LMS work on the last page seeing as though the only thing I need to push is a complete status.

I'll take a look at the golf examples. Is there a way to or software out there that can add a massive list of files to the IMSMANIFEST or is a manual labour of love? 🤔 Of course I could use some trickery with Excel and command prompt which I am also not opposed to.

Question to the community: Do I really need to add all the files to the Imsmanifest or can I get away with just the core files?

Thanks again,
Andrew

Sent from my iPhone

Ryan Meyer

unread,
Feb 26, 2016, 8:03:42 AM2/26/16
to elearning-technolo...@googlegroups.com
I've only run into a very few LMSs that actually require the file list. Most just unpack whatever is in the zip, and the only thing needed is the pointer to the main start page. If you want help building the manifest automatically you can use the Reload editor, but it can be a little tricky to get started with. http://www.reload.ac.uk/editor.html

With respect to your SCORM integration, I'd be wary of only putting it on the last page. Some LMSs (maybe all, I'm never sure if this is in the spec) will assume that if a course launches but never initializes, it doesn't have any SCORM code and will automatically mark it complete. You should probably have the minimal setup in your top-level frame page that Lectora creates that initializes the connection. Then you can put code in your last page to mark complete. 

-Ryan

ethan estes

unread,
Feb 26, 2016, 8:34:58 AM2/26/16
to ryan meyer, elearning-technolo...@googlegroups.com
To add to ryan its the lms job to set a course to complete under scorm 1.2 if it intializes and terminates but never sets lesson status. So if your going to intialize at the start of the couse make sure to set status to incomplete in case the user does not do it in one sitting. Then at the end set it to passed or completed.

Andrew Robertson

unread,
Feb 26, 2016, 7:24:23 PM2/26/16
to elearning-technolo...@googlegroups.com, ryan meyer
Great info guys! Much appreciate it.

So I had a chance to play with it today and here is what I got to.

1) IMSMANIFEST does not need to list all the files as Ryan said. I got lucky my just pointing to the index.html file and it runs perfectly fine.

2) I included the content from reference to the Pipwerks JS and used the calls/code from the HTML file on the last page, and it hasn't completed nor even initialized the DB connection. I'll put the initialize on the front page (index.html) and throw the complete call on the last and see what happens. I may even try to use an iframe call to keep it clean since Lectoras coding is messy.

I'll follow up what I find out next.

Cheers
Andrew

Sent from my iPhone
--

Andrew Robertson

unread,
Feb 26, 2016, 11:05:17 PM2/26/16
to eLearning Technology and Development
Well, I've tried it out and it did not work. 

2) I included the content from reference to the Pipwerks JS and used the calls/code from the HTML file on the last page, and it hasn't completed nor even initialized the DB connection. I'll put the initialize on the front page (index.html) and throw the complete call on the last and see what happens. I may even try to use an iframe call to keep it clean since Lectoras coding is messy.

Here are my observations from the actual file (a001_end_page.html) itself:
1. AICC_Lesson_Status is already being "Completed" in the file.
function action39373(fn){
    AICC_Lesson_Status.set('completed');
    if(fn) eval(fn);
}

2. action39373 is part of the init() call on the last page (a001_end_page.html) , but after looking at the call to init the course, i don't think init actually gets ran.
AICC_Lesson_Status = new Variable( 'AICC_Lesson_Status', '', 0, 0, null, null, 'myservice' )

onload = init
onunload = finish

function init() {
  findWH()
  if( is.min ){
    setTimeout( "preload( 'images/close_off.png','images/close_clicked.png','images/close_over.png','images/info_off.png','images/info_clicked.png','images/info_over.png','images/cc_over.png','images/toc_off.png','images/toc_clicked.png','images/toc_over.png','images/helppage.png','images/close_off_2.png','images/close_clicked_2.png','images/close_over_2.png','images/print_off.png','images/print_over.png','images/prev_off.png','images/prev_clicked.png','images/prev_over.png','images/back_off.png','images/back_over.png','images/toc_2.png','images/end_page.png','images/next_off_1.png','images/toc_1_new.jpg' )", 0 )
    pageLayer = new ObjLayer( 'pageDIV' );
    ReFlow();
    action39373(  );


Here is what i've attempted...
1. Putting the Pipwerks SCORM INIT and COMPLETED/INCOMPLETE in the first html file (index.html) that is called to run the course. However, it throws the error below...
An error occurred:Unable to get launch url. (150144) Content cannot be launched. Changes to either content or data in-progress. Please try after sometime. Please select a lesson from the table of contents to continue.
 
I launched the developer tools, and this is the error:
.../Saba/api/content/player/launchurl/context/ctct…/subscription/ctnsr000000000003577/activity/CourseItem01?_dc=1456545077912 500 (Internal Server Error) 
 

2. Putting the Pipwerks code on the last html file (a001_end_page.html) of the course and the LMS says that I still need to run the course to get it to record anything, even after running through the course.

3. Opening a published Lectora SCORM compliant module to see where/how the calls are made but I got lost fairly quickly.


Thoughts? Sorry, I am not very JavaScript savvy.

Philip Hutchison

unread,
Feb 26, 2016, 11:57:35 PM2/26/16
to elearning-technolo...@googlegroups.com
Hi Andrew

I see you're using Saba. How did you import the course into Saba? As a SCORM package?

HTML-based SCORM courses typically load in a frame. The parent frame handles communication with the LMS while the child frames display the content.

For your course, you could create a new HTML file to be the parent frame, then load your Lectora content into the child frame. When the parent frame loads (when the course is first launched), you would invoke scorm.init(). Then when you want to invoke a completion from the course, in the *child* frame you'd invoke your completion code. Something like:

Parent frame: 
function complete_course(){
   scorm.set("cmi.core.lesson_status", "passed");
   scorm.save();
   scorm.quit();
}

Child frame:
//Assuming "parent" reaches the parent frame... may need tweaking if you have nested frames.
parent.complete_course();

Here's an example of how to use my wrapper in an HTML course, but bear in mind it doesn't account for the frameset: http://pipwerks.com/2008/05/08/adding-scorm-code-to-an-html-file/

I suggest testing your SCORM package in SCORM Cloud first -- it will help you diagnose and ensure your issue is with your course, not with Saba, which has its own quirks. SCORM Cloud provides free accounts for testing purposes.

- philip




--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.

Andrew Robertson

unread,
Feb 27, 2016, 2:30:06 PM2/27/16
to eLearning Technology and Development

Philip,

Yessir, definitely importing as a SCORM pkg. I've also ran in the Reload Scorm 1.2 Player application. I'd like to run it on the SCORM Cloude, but the file is over 100mb (a lot of videos and audio).

I attempted your suggestion below and i encountered the exact same errors. I also tried to publish in Lectora, pull the necessary code out (AICC calls), Javascript inclusion calls, and the 3-4 introduction pages that do the hand offs with no success. However, I did get somewhere with some errors that may actually mean something to me/us. Please take a look at the error message below from the Reload Scorm 1.2 Player.


So what I had done is set the IMSMANIFEST to include only and point to the new index file (index.html), which has the Parent Frame code listed below in the header and used an iFrame to load the OldIndex.html file (the one that started the course). Included in the end_page.html file, I had included the Child Frame code to be loaded once the page loaded.


Should I try connecting/setting the cmi.core.lesson_status to incomplete on the first page and then connecting/setting it at the end for a complete?


Since I am not very strong in JavaScript and it's capabilities, is it wrong of me to think that I can put all this code inside of a JavaScript file and run the file upon page load? I am just trying to figure out how to keep stay out of the actual course content if necessary or only put one line to call the JavaScript code when required.

Cheers,
Andrew
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and-development+unsubscribe@googlegroups.com.

Philip Hutchison

unread,
Feb 27, 2016, 2:36:32 PM2/27/16
to elearning-technolo...@googlegroups.com
I'm not sure we can be of much help at this point. Your course already has other code in it (eg references to AICC), which might be causing problems. Without seeing your code, and the modifications you've made, there are many different approaches that could be taken.

Do you know what software was used to create the original course?



To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.

Andrew Robertson

unread,
Mar 2, 2016, 7:24:14 AM3/2/16
to eLearning Technology and Development
Well all, I've given up and moved to a more subtle solution of figuring out how long the videos are combined and setting the complete at that interval. For example, videos are ~45 minutes in length, I set the send complete status at 40min.

Time is money but I would have loved to make it work right, I still have a lot to learn.

Thanks again all for your suggestions and feedback.

Reply all
Reply to author
Forward
0 new messages