Creating buttons

March 3rd, 2010

It seems like everyone wants a different look for navigation buttons used in a course. Usually authors have to turn to a graphic artist to create these buttons. If you do not have immediate access to a graphic artist, you can use one of the sites that creates buttons for you for free – here is a good choice – http://cooltext.com/

Creating a good user interface

February 27th, 2010

One of the biggest challenges in creating a good e-Learning Authoring Tool is to create a user interface that is both easy to use for new authors and efficient for experienced authors. You can see a demonstration of our e-Learning Authoring Tool user interface on YouTube. In the demo, you can see the authoring tool makes it easy to construct the structure of the course. The structure of the course is a hierarchy of individual pages that provide the instructional interactions. The built-in interactions include information pages (HTML pages), questions, quizzes, tests and a summary page. The user interface provides a built-in HTML editor for the information pages. There are also built-in editors for the questions, quizzes, tests and summary page. You comments are welcome – are there ways we can improve the user interface?

Getting ready to launch the e-Learning Authoring Tool

February 25th, 2010

We have been working on a new e-Learning Authoring Tool for quite a while. Our goal was to create a tool that makes it very easy to create the most common types of courses and also allowing power-authors to extend to tool to create all types of courses. You can learn more about the new tool at the e-Learning Authoring Tool product page.

Our goal with the authoring tool was to provide all of the features you would expect in a clean, easy to use interface. The features include information pages, questions, quizzes and tests. The information pages are created with a built-in HTML editor so your course can contain all of the elements from a good web site including rich text, multimedia, tables and more. There are also built-in editors for questions, quizzes and tests.

We very interested in your feedback on this new authoring tool. Please comment in the blog or send us your comments by email.

Articulate QuizMaker fix

November 21st, 2008

Articulate recently shipped a new version of its QuizMaker product. The new version sent non-ASCII data to the LMS (for example our столовеLearning Management System) for SCORM 1.2 communications. This was a problem for most LMSs so Articulate quickly offered a free update to their software.

Flash problem fix for Articulate

November 1st, 2008

Articulate presenter is a popular course authoring tool for the people who use our Learning Management System (LMS) Hosting Service. Learners who use the 10.0 version of the Flash plug-in will not be able to view the content within an Articulate course. Articulate released a program to patch existing courses. The patch program is easy to use and works nicely to fix the problem.

Aligning movies in the Flash Toolkit

October 1st, 2008

Our Flash Course Development Toolkit uses a JavaScript function to insert the Flash movie into the HTML page. This function is currently set to center the Flash movie in the HTML page. You can pass the salign:”L” parameter to left-align the movie:

var FO = { movie:”player.swf”, width:”100%”, height:”100%”, salign:”L”, majorversion:”8″, build:”0″, id:”ufoCom”, name:”ufoCom”, swliveconnect:”true”, allowscriptaccess:”always”, setcontainercss:”true” };

SCORM 2.0

August 14th, 2008

LETSI is a new organization working on the future of SCORM. LETSI had a call for white papers that asked members of the e-learning community for the best ideas for a future version of SCORM called SCORM 2.0. I submitted a paper called SCO 2.0: The Lucas Proposal – SCO-based Sequencing. The white paper proposes that we eliminate simple sequencing and replace it with SCO-based sequencing.

Simple sequencing sound simple but its not. Simple sequencing is the SCORM 2004 way to define how a learners interaction will the SCOs in the course will affect navigation, completion, success (pass/fail) and the score of the course. Simple sequencing is described in a 250 page specification. The specification is a tough read and it is difficult for most developers to use to create real courses.

I am proposing a much simpler solution called SCO-based sequencing. The LMS launches just one SCO for a course. That SCO can launch child SCOs if needed. The parent provides a SCORM runtime API to the child SCOs so it can receive all of the information provided by the child. For example, the child tells the parent that the learner has completed the SCO with a passing score of 90. The parent SCO can use the information provided by the child to make sequencing decisions.

SCO-based sequencing allows a course to be in full control over its user interface. Course developers will not have to worry how their multi-SCO will look and behave in different LMSs. Learners will not be confused by 2 sets of navigation (one provided within a SCO and another by the LMS).

SCO-based sequencing has other advantages. It allows a multi-SCO course to be developed in other web languages such Flash and Silverlight.

Please post comments to the white paper on the LETSI web site.

IE patch eliminates click to activate

May 16th, 2008

Microsoft has released a patch for Internet Explorer that eliminates the click to activate message that you used to get when you clicked on an ActiveX control (examples: Flash and Windows media). The patch has been available for several months so it all of that ActiveX insertion code can finally go the way of the dinosaur.

Philip Dodds

October 13th, 2007

Philip Dodds passed away last week. I enjoyed working with Philip over the years. I first met Philip many years ago when he founded Visage a company that made products for Interactive video. I worked with Philip from time to time while he worked to create SCORM. Philip was such a delightful person to know. I will miss him.

Automatically scrolling a div containing divs

August 17th, 2007

I have a table-of-contents in  a course. The table of contents is a <div> that contains other <div>s. The table of contents can have so many items that it requires scrolling. I also have previous/next buttons that can switch from one item in the table-of-contents to the next. I had to make sure the current-item is always scrolled into view.

 The first part of this solution is to find the Y position of an item within the table of contents. I found a great public-domain function from firetree (the original code is from quirksmode).

Now, I had to write the scrolling code:

 // get the id of the TOC container
 var oSections = document.getElementById(‘tocContainer’);
 
 // get the y position of the TOC section container
 var nSectionsY = findPosY(oSections);
 
 // get the y position of the selected item
 var nItemY = findPosY(document.getElementById(sItem)); 
 
 // adjust the item height to be in the coordinate space of the container
 nItemY -= nSectionsY;
 
 // get the height of the container and pull off the “px” part on the end
 var nHeight = parseInt(oSections.style.height);
 
 // see if the complete item is greater than the height of the container
 if ((nItemY+21) > nHeight) {
  // it is, scroll the selected page into view
  oSections.scrollTop = nItemY;
 } else {
  // see if the item is showing given the current scroll position
  if (oSections.scrollTop > nItemY) {
   // it is not, scroll the item into view
   oSections.scrollTop = nItemY;
  }

Using Flash V2 Components in a Course

January 15th, 2007

Flash 8 provides a set of components that make it easy to create interactivity in an e-learning course (the newer set of components in Flash are the version 2 or V2 components). One of the things you will need to know to use V2 components is the way Flash loads components and when ActionScript is called from listeners and frames. Here is a scenario that will give you an insight on the use of components in a course:

Scenario: Your course provides “next” and “previous” buttons that let the learner move forward and backward in the course. In Flash, you would have listener functions that process the click events for the ”next” and “previous” buttons. In the listener function for the “next” button you may want to load another part of the user interface in the course (for example, you may want to load a multiple choice question). A good way to load the user interface is to call gotoAndStop(name-of-frame). This frame would contain the components that  present a multiple choice question to the learner.

To make sure your course works correctly you should NOT set or get any of the properties of the components immediately after your call to the gotoAndStop() function. However, your components are not fully loaded until the frame with those components is loaded. So, if you need to get or set properties on those components you should do so in code executed from the loaded frame. You should not get or set the properties inside the listener of your “next” button.

Running JavaScript on your local computer

January 15th, 2007

Windows XP SP2 and Windows Vista will not let you run JavaScript from your local hard drive or CD-ROM. This restriction can make it difficult to distribute interactive web pages for use on a local computer. When you launch a HTML page with JavaScript on your computer, Internet Explorer 6 and 7 will tell you that the page contains Active Content. You have to authorize the page to run “Active Content” each time it is loaded or you have to change the default settings in “Internet Options…”

Microsoft has provided a work around for this problem. The HTML author can add the “Mark of the Web” (MOTW) to each HTML document. The MOTW is a comment line included in the HTML code. Here is a sample:

<!-- saved from url=(0014)about:internet -->

Creating a SCO with a HTML Frameset

January 4th, 2007

Here is the general way to create a SCO using a HTML frameset.

Your frameset will contain some or all of the code for your SCO. Your frameset will have the code to get and set the bookmark. Your frameset can also have the code to set the completion status, success status, score and other SCORM data items. Your frameset will contain at least one frame. You will display the content (HTML pages) of your SCO in a frame.

The frameset will initially display a blank page when it is loaded. Your frameset displays a blank page because it has to find out if this is the first time the learner has launched the SCO. If this is the first time the SCO is launched, the frameset will load the first page in the SCO into the frame. If the SCO has been launched at least once, your frameset will get the bookmark (previously saved by your SCO) and then use that bookmark to load the correct page.

In a SCORM 2004 SCO, your frameset can save the bookmark information in cmi.location or cmi.suspend_data. In a SCORM 1.2 SCO, your frameset can save the bookmark information in cmi.core.lesson_location or cmi.suspend_data. You will decide what kind of information to store in the bookmark. For example, you could store the name of the file that was previously viewed by the learner. You could also store a number that could be an index to an array of pages that you load when the SCO is launched.

We have created an e-learning toolkit that uses a frameset to manage bookmarks within a SCO. The toolkit comes with source code that you can use “as is” or modify to meet your specific needs.

Creating a course with a single SCO in SCORM 2004

November 12th, 2006

SCORM 2004 lets you create a course with multiple SCOs. However, many people prefer to create a their courses with a single SCO. One advantage of creating a course with a single SCO is that you do not have to spend much time learning how SCORM 2004 sequencing and navigation rules work. Unfortunately, your single-SCO course still gets the default sequencing and navigation rules if you like it or not. The defaults are usually not what you want so here is a tiny bit of SCORM manifest code that you may want to use in your single-SCO course. I’ll show the code first and then explain how it works.

<organizations default=”crs_hello”>
  <organization identifier=”crs_hello”>
  <title&rt;Hello World Course</title>
  <item identifier=”sco_hello” identifierref=”sco_hello_ref”>
  <title>Hello World SCO</title>
  </item>
  <imsss:sequencing>
  <imsss:controlMode choiceExit=”true” flow=”true” />
  <imsss:deliveryControls completionSetByContent=”true” objectiveSetByContent=”true” />
  </imsss:sequencing>
  </organization>
</organizations>

The <organizations> section defines a course with a single activity. The activity is linked to a SCO with the identifierref = “sco_hello_ref” (this SCO is defined in the <resources> section not shown in this example). The course has some sequencing rules shown in bold type. Here are the rules:

  • choiceExit = true – this means the learner can exit from the activity. This is not really needed here because there is only one activity but a good thing to have if you will add more SCOs to this course
  • flow = true – this tells the LMS to flow automatically navigate to the first SCO in the course. This means that the learner will not have to take some action to launch the SCO.
  • completionSetByContent = true – the SCO will tell the LMS when it is complete by setting cmi.completion_status
  • objectiveSetByContent = true – the SCO will tell the LMS the status of its primary objective by setting cmi.success_status.

Flash 8 security settings

October 18th, 2006

I do quite a bit of course development with Flash. Flash 8 has some additional security. By default, it will not let you run content from your local hard drive that communicates between SWFs and JavaScript and between SWFs. This makes it seem like your course is suddenly broken. You can change thes default securlty settings of Flash with the Flash Settings Manager. You enable the communications by adding the folder to the list.

Active Directory

October 16th, 2006

I have been working with Active Directory today. I am writing some VBScript code that will automatically login a user to our Learning Management System using their Windows login managed by Active Directory. I needed to find all of the groups that a user belongs to. The LMS uses these groups to make course assignments. I found some excellent code examples from Richard Mueller. The samples help you see that ADSI (the library used to access Active Directory and other things) uses two different methods to get the user’s primary group and other groups.

I ran into one problem when getting the list of groups with VBScript. The memberof function usually returns a collection. However, this collection will be empty if ther user does not belong to any groups. In VbScript, you need to use the IsNull() function to see if a collection is empty. All of the ADSI examples that I found on the web used IsEmpty() – a function that will work fine in VB but will not work correctly in VBScript.

Hello world!

October 16th, 2006

I help people create e-learning tools and courses. I often run into technical challenges. This blog describes those challenges and provides the answers I have found. I hope these blog pages save you time in your work.