The EnterPage 11-01
February 8, 2008

In this issue:

Sign Up for the ToolBook User's Conference / e-Learning Authoring Conference

Tim Barham, Dan Carr, Denny Dedmore, Tom Hall Among Featured TBCON Faculty

Tim Barham, Dan Carr, Tom Hall, Mark Henry, Simon Price, Jeff Rhodes, and Dane Williams Offer Preconference Training

ToolBook Subscription and Special Authorware Pricing Available

Plug-In Pro Spotlight - Validating and Updating Media

Expert Information from the Learning & Mastering ToolBook Series

OpenScript Tip from the Learning & Mastering ToolBook Series

Web Hint from the Learning & Mastering ToolBook Series

ToolBook Actions Editor Advice

Flash ActionScript Tip

VBTrain.Net Nugget



Introduction

Welcome to The EnterPage newsletter. Even after eleven years of creating the newsletter, it is nice once a quarter to crawl out of our "developer hole" to share some news, thoughts, and tips with our friends in the e-Learning community. With just over four months until The ToolBook User's Conference / e-Learning Authoring Conference (TBCON), we hope you will take a moment to review the great slate of sessions and preconference training available and then make plans to join us in Colorado Springs. We guarantee you won't find a better value anywhere!



Sign Up for the ToolBook User's Conference / e-Learning Authoring Conference

Here are just three of the many comments that we received from TBCON 2007:

TBCON was a terrific experience – the location, the sessions, the fun, the ambiance – loved just everything about it!

This year's TBCON was excellent. It was very productive for our team. You do a great job with this conference. A good balance between learning new things, connecting with peers, interfacing with SumTotal personnel, and discovering potential partners and future customers.

We've taken every available opportunity to point out to management the benefits of our attendance last year - a day doesn't go by that we are not glad we went!

You can see the whole list of attendee comments over the years on the web site.

We'll be celebrating the tenth anniversary of the conference with the usual great lineup of 18 one-hour session blocks over three days, with each block containing five sessions to choose from. Due to popular demand, we are once again repeating most sessions twice so that you are not stuck with multiple "must attend" sessions in a single block. Sessions will grouped into these subject areas: Flash/Silverlight, Management, ToolBook (Intermediate/Advanced), ToolBook (Introduction), and Web Technologies. And if that isn't enough, we have a great lineup of preconference workshops (including the first ever by Tim Barham and Simon Price) as discussed later in this newsletter. In addition to all the scheduled learning, there will be three great receptions, the always popular "Hack Ack" contest, the Help Desk where you can get answers to your individual questions, and the ability to meet with SumTotal's Brad Crain (Vice President, ToolBook) and Sheri Miller (Global Sales Director, ToolBook). We already have developers from Australia, Denmark, England, Israel, and the U.S. signed up. We hope you will join us as well!

Dates

June 16 - 18, 2008
Preconference Training June 14 - 15, 2008

Rates (All Options Include Three Meals Per Day Plus Snacks)
  • Off Campus ($780)
  • Windom House Double ($855)
  • Windom House Single ($925)
  • CC Inn Single ($975)
  • Apartment Multiple Occupancy ($975)
  • Apartment Single ($1,175)
Note that the above prices rise by $50 on May 15, 2008.

Preconference Training

  • One Preconference Session ($150)
  • Two Preconference Sessions ($285)
  • Three Preconference Sessions ($420)
  • Four Preconference Sessions ($555)

Links

Registration

Rates

Sessions

Faculty

Preconference

Tim Barham, Dan Carr, Denny Dedmore, Tom Hall Among Featured TBCON Faculty

A TBCON tradition is to fly the ToolBook Development Manager (aka [along with Tomas Lund] Aging Rock Star, Piano player, etc.) from his den in Brisbane, Australia to Colorado Springs for TBCON. This is your chance to meet and trade ideas with the force behind SmartStyles, the Actions Editor, Simulations, and more.

We're also extremely pleased that Dan Carr of Dan Carr Design will be joining us again. As one attendee last year put it, My favorite part was the opportunity to meet and talk w/ Dan Carr and gain insight into not only using Flash, but the architecture of the components of Flash. Dan is the creator of the Flash Learning Interactions and a leader in the Flash community.

Another popular TBCON faculty member is SumTotal's Senior Customer Support Engineer, Denny Dedmore. In addition to sharing his many years of ToolBook development and support experience, Denny is quick to meet with you to solve any ToolBook issues or questions as part of the conference Help Desk.

Expanding on his books and sharing expertise gleaned from years of consulting and training, Tom Hall is returning to share his insights on SmartStyles, Simulations, and the Actions Editor.

This is just a sample of our excellent faculty. Please check out the link below to see all the faculty (as well as one or two more to be added).

Faculty


Tim Barham, Dan Carr, Tom Hall, Mark Henry, Simon Price, Jeff Rhodes, and Dane Williams Offer Preconference Training

In addition to rapid-fire sessions, great networking, the Help Desk, etc., TBCON is also an excellent opportunity to receive in-depth training. We are pleased that Tim Barham of SumTotal and Simon Price of the University of Bristol will give their first ever preconference training sessions. They will cover ToolBook's SmartStyle and SmartPages. Dan Carr will also be doing his first preconference session on managing Flash projects and component frameworks. Tom Hall will show you the "ins and outs" of ToolBook Actions Editor and how to create simulations. Mark Henry will show you how to use the Adobe Flex authoring environment to create e-Learning as well as how to design games for e-Learning, which is always a treat. Jeff Rhodes will dig deep into introductory programming concepts, JavaScript, "Learning & Mastering ToolBook," and Training Studio. For those budding Flash developers, Dane Williams will teach you from the ground up how to build e-Learning in Flash. Here is the complete lineup:

Saturday, June 14, 2008: 8 AM - Noon

Flash for Beginners - Dane Williams, Buckman Laboratories
Programming 101 for e-Learning Developers - Jeff Rhodes, Platte Canyon Multimedia Software Corporation
Using the ToolBook Instructor Actions Editor - Tom Hall

Saturday, June 14, 2008: 1 - 5 PM

Using the ToolBook Instructor Actions Editor - Tom Hall
e-Learning with Flash - Dane Williams, Buckman Laboratories
JavaScript for ToolBook, ASP.NET, Flash, and Silverlight - Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Sunday, June 15, 2008: 8 AM - Noon

Introduction to Flex for e-Learning - Mark Henry
Learning & Mastering ToolBook Instructor: The Class - Jeff Rhodes, Platte Canyon Multimedia Software Corporation
Learning ToolBook SmartStyles and SmartPages I - Simon Price, University of Bristol


Sunday, June 15, 2008: 1 - 5 PM

Creating e-Learning with Training Studio - Jeff Rhodes, Platte Canyon Multimedia Software Corporation
Designing Games for e-Learning - Mark Henry
How to Manage Projects, Component Frameworks, and ActionScript Versioning in Flash CS3 - Dan Carr
Learning ToolBook SmartStyles and SmartPages II - Tim Barham, SumTotal Systems

Preconference Workshops

Rates


ToolBook Subscription and Special Authorware Pricing Available

Although many of you have already purchased (and upgraded) ToolBook many times over the years, you might still be interested to know that you can now buy a yearly ToolBook subscription instead. Some of the benefits include:
  • Lower Financial Commitment ($1,895 per year) Compared with Purchasing
  • Includes Upgrades and Support
  • Expense Item Instead of a Capital Purchase
Also, Authorware customers can still get a 33% discount on ToolBook purchases. Just include your Authorware serial number when checking out at our online store. Here are some links.

Instructor Subscription

Instructor Full Version

Plug-In Pro Spotlight - Validating and Updating Media 

Keeping track of all the media in your ToolBook applications can be quite a chore, particularly when a project moves to maintenance phase or when you use one book as the basis for a new application. As with many ToolBook challenges, the Plug-In Pro can help. You select which kind of players (Universal Media Players, Flash, RealPlayer, and/or Windows Media Player) and then click the "List Players" button. The tool will list all the players and their associated media. You can globally "replace paths" if all the files have moved or edit each one individually. Note that there is a similar tool for media clips if you are using the Clip system.

To learn more, you can follow these links.

Help topic

Plug-In Pro web page

Expert Information from the Learning & Mastering ToolBook Series 

By Tim Barham, SumTotal Systems, Inc.

Clearing an Array in the Actions Editor

Question: How can I go through an array that I have as global variable in the Actions Editor and clear all the values in it?

Here is a simple way to clear elements of an array in the Actions Editor:

on Click
For each element FOO in array myArray
  myArray[FOO] = ""
end for each loop
In native ToolBook, it actually removes the elements (in the native ToolBook implementation of associative arrays used by the Actions Editor, an empty element is the same as a non-existent element), however that's probably NOT the case when exported to DHTML, because of how arrays work in JavaScript.

There's an alternate approach that should work for both native ToolBook and HTML... Define a global variable as an array, and call it something like newArray[]. Never actually assign anything to this array. Then, whenever you want to clear an array (basically, you want to end up with an empty array), just say:

Set thisArray to newArray
(where "thisArray" is the name of the array you want to clear).


OpenScript Tip from the Learning & Mastering ToolBook Series

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Showing the Correct Answer in Question Objects

Sometimes when using the question objects in a learning situation, you want the user to have the ability to see the right answer. We have done this ourselves in the Review Questions at the end of each section in the Learning & Mastering ToolBook series. But how do we do this without having to "hard code" each one? We do it by reading the ASYM_WID_ansArray property of each question object. While a full solution is in the Platte Canyon Answer Key product, here is an example for the "Order Text" question named "question 1".

-- show the answers of an orderText object
to handle buttonClick
	local page pageID
	local string questionID, questionType
	local tempAnswerArray[][]

	pageID = this page
	questionID = group "question 1" of pageID
	tempAnswerArray = asym_wid_ansArray of questionID
	questionType = ASYM_WID_QType of questionID
	if questionType = "ORDERTEXT"
		text of field "dragText" of questionID = tempAnswerArray[1][1]
	end if
end buttonClick
Notice that we assign the array property to a local variable in order to work on it.


Web Hint from the Learning & Mastering ToolBook Series

By Denny Dedmore, SumTotal Systems, Inc.

Rasters, Vectors, and ToolBook Graphic Types

A PaintObject is a raster image (made from pixels).

A Picture Object is assumed to be a vector image (made of lines and curves but no pixels). Of course in the real world it is entirely possible to create a file (.WMF) for example that is presumed to hold vector data - but can also contain raster data too. Here is a real life example. I buy a 100,000 clip art collection where the seller advertises their collection is .WMF files. I assume they are all vector based files, and 95% of them are but they still sneak several images in that have both Raster and Vector data in them.

Raster/Vector - who cares? What is the difference?

Raster:
  • A Raster image (.JPG, .GIF, .PNG, .BMP ...) contains a pixel by pixel description of the file.
  • They look good only when sized to the original size of the image.
  • If you try to size it up or down by say...20% the resulting image looks distorted.
  • Using a Graphics Manipulation software package such as PaintShop Pro you can resize Raster images and come up with very acceptable results.
  • These files tend to be fairly large in size compared to Vector images.
Vector:
  • A Vector image (.WMP, .EPS, .CGM ... ) contains no pixel data but rather instructions that describe where to draw shapes like circles, lines, rectangles, what fillColor to give them, what strokeColor to give the lines, how thick each line should be, etc.
  • They resize great. You can shrink it down tiny, stretch it larger than your monitor and they will maintain their crisp look.
  • Note: if you size it very tiny the limitations of your monitor will make it look distorted, but only because there is not enough pixels per inch to give enough detail at that small size.
  • Since describing Shapes requires less data than describing pixels, Vector files tend to be much smaller than Raster.
Okay, how does this affect ToolBook? Paint Object:
  • If you (Insert Graphic or Paste) a Raster Type Image into ToolBook the resulting image will be a Paint Object.
  • Trying to resize this image in ToolBook will result in a Cropping effect but no resizing.
  • You can't convert a Paint Object to a Picture Object.
  • Paint Objects tend to render on the screen faster than Picture Objects.
  • Paint Objects tend to increase your book file size more than Picture Objects.
  • ToolBook will permit you to set a Chromakey (transparent) color.
  • If you want to resize (even though it will probably look bad) the image (not crop), you will have to add the image as a BITMAP RESOURCE of your book, at which point you can assign that image to be the NormalGraphic of a button you draw. The button when stretched will also resize the image.
Picture Object:
  • If you (Insert Graphic or Paste) a Vector Type Image into ToolBook the resulting image will be a PICTURE OBJECT.
  • Trying to resize this image in ToolBook should result in a nicely resized image assuming the file contained Vector information rather than Raster data. If it contained Raster data it will not look pretty when resized.
  • Printing a Picture Object from ToolBook should result in a 300dpi/600dpi (whatever the resolution of your printer) rendering of the vector data - which will look wonderful.
  • Picture Objects tend to take up less file storage space in your ToolBook file than Paint Objects.
  • Picture Objects tend to draw on the screen slower than a Paint Object.
  • You can't set a Chromakey value, but if the image internally holds a natural chromakey value (for example a GIF file can have a transparency color set), ToolBook will automatically make that color transparent in the imported image.
  • For some reason I don't understand myself, a GIF image added to ToolBook using Insert Graphic will be added as a Picture Object.
Bitmap Resource:
  • These are pretty much the same a Paint Objects.
  • They are Raster Images.
  • You can set the Chromakey value.
  • To use these images, you need to Insert them into a field or apply them as a image of a button.



ToolBook Actions Editor Advice

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Triggering a Question Object with the Actions Editor

I was doing an online demo for our Learning & Mastering ToolBook Instructor product the other day when an attendee asked an excellent "How To" question about ToolBook. Her requirement was to have a fill-in-the-blank question where the student needed to enter at least three of the following terms in order to get the question correct: Pig, Cow, Sheep, Fowl, Horse. Each of these had variations as well. For example, either Pig or Hog could be entered. The developer was not having any luck using a standard question object, as this much logic (particularly the part with any three answers being correct) was beyond what the fill-in-the-blank object was designed for. It is much more suited to a multiple-choice question object. But the instructional design specified that the user needed to come up with the answers rather than choose from the list. Another constraint was that deployment was DHTML and was via their Learning Management System. This precluded OpenScript and meant that we should stick with standard question objects as much as possible for their SCORM data and so forth.

Of course, we immediately dropped the demo and started to work on this problem instead:). We started with a simple field where the user could type in the desired answers. We then used a multiple-choice question object with these answers: Pig, Cow, Sheep, Fowl, Horse, and Other. We marked all but "Other" as correct and gave them a weight of 34% (so that three correct added up to over 100%). We marked "Other" as incorrect. We put answer-level feedback on the various answers as well delayed feed. Next, we hid the question as we did not want it visible to the user. Finally, we created a "Score" button and built this Action for its Click event.
-- On click... -----------------------------------------------------------------
Define local variable "answer" (Initial value: "")
Define local variable "triggeredQuestion" (Initial value: "false")

Set answer to text of field "answerField"
Reset Multiple Choice Question "Question"
If answer contains "pig" or answer contains "hog"
  Trigger Button "1"
  Set triggeredQuestion to true
End if
If answer contains "cow"
  Trigger Button "2"
  Set triggeredQuestion to true
End if
If answer contains "sheep"
  Trigger Button "3"
  Set triggeredQuestion to true
End if
If answer contains "fowl"
  Trigger Button "4"
  Set triggeredQuestion to true
End if
If answer contains "horse"
  Trigger Button "5"
  Set triggeredQuestion to true
End if
If triggeredQuestion = false
  Trigger Button "6"
End if
Score Multiple Choice Question "Question"

The idea is that we read the student's answer into our answer variable. We then used the contains method to check if that answer contained the words we were looking for. If so, we triggered the button of the question object corresponding to that answer. That took care of displaying the feedback and keeping track of the score for the overall question. If none of the correct answers was present, we triggered the "Other" button. We then scored the question itself, which displayed the delayed feedback and set us up for sending interaction data back to the LMS. Note that this data will contain which of the words they actually typed in, since that corresponds to the text of the answer buttons themselves.

If you want to learn more about unique ways to use the Question object, Lee Jay Karns will be doing a great session called "Events and Actions in the Life of a ToolBook Question Object" this year at TBCON. I'll also be handling challenges like this in my "Learning & Mastering ToolBook Instructor: The Class" preconference workshop.

Flash ActionScript Tip

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Using the ExternalInterface Class to Communicate with Wrapper Applications

The Flash ExternalInterface class is the recommended method for communicating with parent applications such as ToolBook or the browser itself, although FSCommand still works. For example, I have a TBCON session that shows how to use this class to call JavaScript functions to do SCORM communications. Here's an example.
var jsCall:String = scormCall + scormVersion;

switch (scormCall) {
	case "GetValue":
		elementId = this["GetValueSelection" + scormVersion];
		elementString = elementId.text;
		returnElementId = this["GetValueReturn" + scormVersion];

		returnVal =  String(ExternalInterface.call(jsCall, elementString));
		returnElementId.text = returnVal;
		break;
The ActionScript grabs the choice (such as "cmi.core.lesson_status" for SCORM 1.2) and sends this to a method ("GetValue12" in this case) in the container application. For SCORM, we can put this function in the HTML page holding the Flash movie:
function GetValue12(paramId) {
	if (apiPointer12 != null) {
		return apiPointer12.LMSGetValue(paramId);
	}
	else {
		alert("apiPointer has not been initialized.");
	}
}
We have previously found the SCORM "API" object and stored it in the apiPointer12 global variable.

We use this approach very successfully for all the SCORM communications for our Training Studio product. But we had customers ask if there was a way we could support non-SCORM, native tracking such as we do with ToolBook content with our TBK Tracker. We thought we would need to make a whole bunch of custom programming calls to make this work, but we then asked, "What if we just pretend we are running SCORM and handle the calls in our own "wrapper" rather than running within the browser?" It turned out that this worked great. We run the training in a .NET executable and handle the same SCORM calls (and return data in the same format) as when running via a web-based LMS. So Training Studio content does not need to be changed at all. Other Flash applications can make these ExternalInterface (or FSCommand) calls to work within TBK Tracker. Pretty cool!

Here is a sample (Visual Basic.NET).
Private Sub FlashPlayer_FlashCall(ByVal sender As Object, ByVal e As AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent)
	Dim functionName As String = ""
	Dim arguments As String = ""
	Dim argumentsNum As Integer = 0
	Dim foundFunction As Boolean = False
	Dim foundArguments As Boolean = False
	Dim stringReaderId As New StringReader(e.request)
	Dim xmlSettingsId As New XmlReaderSettings()
	Dim readerId As XmlReader = XmlReader.Create(stringReaderId, xmlSettingsId)

	While readerId.Read = True
		If readerId.HasAttributes = True And foundFunction = False Then
			functionName = readerId.GetAttribute("name")
			foundFunction = True
		End If
		If readerId.HasValue = True AndAlso foundArguments = False Then
			If arguments <> "" Then
				arguments = String.Format("{0}{1}{2}", arguments, argumentsSepChar, readerId.Value)
			Else
				arguments = readerId.Value
			End If
		End If
	End While

	ImplementFlashCall(functionName, arguments)
End Sub
Most of the work is in grabbing the data that we want from the XML passed from Flash. The browser takes care of this when we are using JavaScript, but we need to do it ourselves when running in .NET or ToolBook. Once we have the function name (GetValue12 in this case) and the arguments (cmi.core.lesson_status), we pass that to another function that looks up the data in TBK Tracker and returns it in XML format back to Flash.

VBTrain.Net Nugget

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Jazzed on Ajax

Ajax has been a buzzword in the web development community for some time, but I haven't done a whole lot with it until recently. To understand Ajax, think of a standard web-based shopping cart. You've added some items but now want to change the quantity. Typically, you edit a "quantity" field and click the "Update" button. That reloads the whole page which then shows your new total. But that reloading (posting back in technical jargon) can take a noticeable amount of time. But all that really needed to change was the total and perhaps the shipping cost and tax. Ajax is the name given to the technique of using JavaScript to query the web server for the data that is needed (new total cost, shipping cost, and tax in this example) and then updating those HTML elements without reloading the page. This significantly improves the user experience. A ToolBook analogy would be doing an HTTP Post (and this is what Ajax implementations do under the hood), getting a return value, and setting the text of one or more fields.

We've been going through our product line to see where we can add these capabilities and I think the customers of our web-based products will be pleased by what you see in future versions. I've even added a TBCON session on Ajax to share some tips and techniques. One of my favorites is the ability to call a web service (server) method directly from JavaScript to validate data, add items to a database, etc. Look for code samples and more information in future newsletters.



The EnterPage is distributed up to four times per year, with occasional special issues. Individuals who have expressed interest in Platte Canyon Multimedia Software Corporation or its products receive The EnterPage. Suggestions for articles or proposals for article submissions are welcome. Send information to ep@plattecanyon.com. Back issues of the EnterPage are available at:

http://www.plattecanyon.com/enterpage.aspx

Platte Canyon Multimedia Software Corporation, 8870 Edgefield Drive, Colorado Springs, CO 80920, (719) 548-1110