The EnterPage 11-03
September 15, 2008

In this issue:

ToolBook Instructor 9.5 Release and Pricing Information

Tracker.Net Version 4 Now Available

ToolBook 9.5 Review

Learning & Mastering ToolBook Instructor 9.5 Released

TBCON 2008 Report

Plug-In Pro Spotlight - Sticky Notes

Expert Information from the Learning & Mastering ToolBook Series

OpenScript Tip from the Learning & Mastering ToolBook Series

Web Hint from the Learning & Mastering ToolBook Series

Flash ActionScript Tip


Lots is happening with this "Ides of September" version of The EnterPage Newsletter. ToolBook Instructor 9.5 is now shipping but SumTotal is giving you an extra week to get your support agreement in place to get this nice new version. We review 9.5 and explain all your upgrade options. "Learning & Mastering ToolBook Instructor 9.5" is ready to roll as well. But that's not even all the new releases. Our popular Tracker.Net Learning Management System (LMS) is now up to version 4. We explain all the new features. Add in a report about TBCON 2008 and our normal full load of ToolBook, Flash, and .NET tips, and you've got a jam-packed newsletter.

ToolBook Instructor 9.5 Release and Pricing Information

ToolBook Instructor 9.5 is now shipping. If you currently have a support or maintenance contract, you'll receive an email from SumTotal Systems with download instructions. If not, there is still time to get on the 9.5 bandwagon. We review this new release below, but suffice it to say that this is very nice version.

The upgrade price from Instructor 9.0 to 9.5 is $1,595. If you are currently on 9.0 and don't already have a support or maintenance contract, you can still do so at the normal price of $995 for support or $795 for maintenance only. As long as you do this by September 19, 2008, you will receive 9.5 along with everyone else. This would be cheaper than buying the upgrade and give you updates for the next twelve months.

If you are on an older version of Instructor, it is important to understand that SumTotal is no longer offering upgrades for customers more than one version back. So once ToolBook gets to version 9.5, users of 2004 or older versions will have to pay full price to get to the current version. A cheaper option would be to upgrade to 9.0 before the 19th of September ($1,545 from Platte Canyon) and get a support or maintenance contract at the same time. This will get you to 9.5 cheaper than starting from scratch AND you'll get the twelve month's worth of upgrades for free. If you buy support, you'll be able to get help from Denny Dedmore and his team of experts as well:).

If you are in the U.S. or Canada, you can buy ToolBook itself, support, or maintenance from Platte Canyon. There is a link below for our online store. Or you can call us at 888-866-5251 (888-ToolBk1) or 719-548-1110. Otherwise, contact your local reseller or SumTotal directly.

Platte Canyon ToolBook Store

Tracker.Net Version 4 Now Available

We are excited to announce that the Tracker.Net LMS version 4 is now available. Here are just some of the new features:
  • Set course and lesson status via Administrator
  • Support of offline lessons
  • My Courses screen updates status without the need to refresh
  • Optional "Lesson Update Message" when lessons information successfully received
  • New Report Viewer reports in addition to standard reports
  • 14 New Reports
  • Ability to email and save certificates to HTML
  • New Scheduler application for sending course/class emails based on student status
  • Dramatically faster Administrator operations
  • New Tracker Store e-Commerce site for courses and classes
  • Improved Student Import Utility
  • ability to set students, courses, and lessons to inactive
  • Support for Windows Authentication
  • Various new settings like the ability to match graphics to organizations, the ability to set email credentials, the option to count failed lessons toward course completion, and more
  • Support of up to 10 simultaneous languages
  • Ability to discard interaction data and lock lesson status once completed
  • Downloadable trial version
Pricing remains at $5,995 for up to 500 users on a single site. There is a new "2000 users" level at $7,995. Unlimited users on a single site is $9,995. The new Tracker Scheduler is $495 per user and the new Tracker Store is $995 per site.

Tracker.Net Information

ToolBook 9.5 Review

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

I have been working with Instructor 9.5 for months now. I have been quite impressed with both its new features and its stability. Some of the "big ticket" items include:
  • Importing of Content from PowerPoint 2007
  • PNG Graphic Support
  • Apple iPhone/iPod Touch Support
  • Safari Browser Support
  • Voice Recordings
  • Built In Certificates
  • Enhanced Right-Click Menus
  • Ability to Hide the Universal Media Player
  • XML Support

For those of you with lots of PowerPoint content, the ability to import the bulk of the content into ToolBook will be more than worth the price of admission to 9.5 on its own. If you are using an older version of PowerPoint, be sure to upgrade it to 2007 so you can use the import feature. PNG support is quite handy, particularly as it now makes it more feasible to use graphic resources within DHTML projects. And there is no need to come up with the "Chromakey" color as transparency is built into the PNG file and support by ToolBook! The ability to support Safari in general and the iPhone/iPod Touch in particular opens up the Macintosh and mobile markets for your ToolBook content. I like the Voice Recording feature but think that the most useful part is the automatic playback of the narration (without needing to use a Universal Media Player (UMP)). I think most high-end applications will re-record or edit the voice recording files themselves. We explain where to find them in the new Learning & Mastering ToolBook Instructor 9.5 CD. The Certificates work great as does the ability to hide the UMP. No longer do you have to move the UMP off the page to keep the user from seeing it. The new right-click menu is cool. Rather than a toolbar and menu items, it is all menu items (with graphics to make it easier to see what you want). If you right-click on an "extended object" group like a multiple choice question, the right-click menu will give you an option for its editor as well as the settings for the individual object. On the technical side, one of things I'm most excited about going forward is the XML support. See the OpenScript Tip article later in this newsletter for an example of how to write an entire book into "XML Book" format with a single line of OpenScript. Even rich text formatting is supported with a special markup. More on this in the Expert Information article below. There are not many changes in the Actions Editor, OpenScript, or Simulations, but all the good stuff is still there of course. Nice job!

Platte Canyon ToolBook Instructor Information

ToolBook 9.5 New Features Document

ToolBook Web Site

Learning & Mastering ToolBook Instructor 9.5 Released

We have completely updated this popular training CD for Instructor 9.5. We have added new content on PowerPoint importing, Voice Recordings, iPhone support, XML, Certificates, and much more. Learning & Mastering ToolBook Instructor contains over 30 hours of training with:
  • 79 Show Me Demonstrations
  • 62 Let Me Try simulations
  • 391 Expert Information topics
  • 148 Web Hints
  • 170 OpenScript Tips
Learning & Mastering ToolBook Instructor 9.5 also includes extensive content on SmartPages/SmartStyles, Actions Editor, OpenScript, Flash™, HTTP Post, ADO, Automation, and more. Pricing remains at $595. You can upgrade from version 9 for $195 or from 2004 or older for $385.



TBCON 2008 Report

The tenth year of The ToolBook User's Conference and the third year of The e-Learning Authoring Conference (June 13 - 18, 2008) was quite an event. Overseas attendance was at an all-time high, with developers from South Africa, Israel, Denmark, Australia, and the UK all in attendance. They joined developers from around the U.S. to see previews of ToolBook 9.5, learn ToolBook and Flash tips, get introduced to Silverlight, pick up some management tips, meet fellow members of the ToolBook List, and much more.

Congratulations to these SumTotal Systems ToolBook Design award winners:
  • Best Content in Healthcare - Ian Minderman, Humana, Inc.
  • Best Content in Manufacturing / Hi-Tech – Margie Grande, Malt-O-Meal / Iris Peceny, Goodrich 
  • Best Mobile Learning Content - Tom Hall, TCC Publishing Inc.
All teams won an Apple iPod Touch®, courtesy of SumTotal Systems. You can see many of the award-winning content at

The "Hack Ack" topic this year was Olympics. Mauro Rech and Lee Jay Karns (aka Mr. Peabody) incorporated some old video by Andrew Gould into a funny "blast from the past." Dane Williams created a hilarious Olympic showcase with special events from below the Mason-Dixon Line. Lucy McKain chimed in with an excellent Olympic animation. Despite two rounds of audience judging led by Bob Culver, there was no clear winner. So we all agreed that all three entries tied for 1st!

Jeff Rhodes got things started with TBCON Olympic winners for attendance at TBCON: Bliss Bignall and Tomas Lund (7); Tom Hall, Peter Hoyt, Jamy Krulikowski, and Simon Price (8); Denny Dedmore (9); Tim Barham, Lee Jay Karns, Mauro Rech, and Jeff Rhodes (11 including TBCON Europe in 2001). This was followed by SumTotal Olympics with prizes given for correctly answering Asymetrix/click2learn/SumTotal questions. A highlight was Brad Crain knocking over a water pitcher when tossing a T-shirt to a "lucky" winner:).

Be sure to mark your calendars for TBCON 2009: August 3 - 5, 2009 with preconference training August 1st and 2nd.

TBCON 2008 Resources

TBCON 2008 Archives for Attendees Application ($50)

Plug-In Pro Spotlight - Sticky Notes 

Completion of a ToolBook project at Platte Canyon is defined in large part by all the "Sticky Notes" being removed from the book. Sticky Notes are yellow fields that we "paste" onto the page for "to do lists," errors, testing comments, and other reminders. We use them extensively in our internal development. On my custom Plug-In Pro palette, I have the "create sticky note" and "go to next sticky note" tools. The first tool draws a small yellow field on the top left part of the page. You can customize the color, size, location, font, etc. of sticky notes with the Plug-In Pro's Field Styles tool, but I like the default. I then type in the reminder to myself or other developers. We also have tools in the Plug-In Pro to "hide all sticky notes" (great when you need to show an interim release to a customer) and then show them again (when you are ready to begin real work again). There are even tools for tiling them, sizing them to show all content, etc.

To learn more, you can follow these links.

Help topic

Plug-In Pro web page

Expert Information from the Learning & Mastering ToolBook Series 

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Representing ToolBook Rich Text in XAML

ToolBook Rich Text Format (RTF) is not that same as the RTF currently used in Word and other word processors and is quite different than HTML markup. As Tim Barham explained to me at the most recent TBCON, one of the big distinctions is that formatting in ToolBook RTF continues until it is altered. For example if you bold a word in HTML, it looks like this:

This word is <b>bold</b> but not this one.

The start and the end are marked. In ToolBook RTF, the concept (not actual markup) looks like this:

This word is <bold>bold and so is this one.

When Tim and Drew Gillies of SumTotal needed to represent ToolBook RTF in XAML (pronounced zammel) for importing PowerPoint content into ToolBook, they need to take this formatting paradigm into account. Here is an example of what they came up with:

<EnhancedField IDNumber="1" Hyperlink="" Name="Field 1" AutoSize="false" BorderStyle="none" Bounds="360,2640,13815,10200" 
DrawDirect="false" FontFace="Arial" FontSize="28" FontStyle="regular" Layer="2" RgbFill="255,255,255" RgbStroke="0,0,0" 
Spacing="1" TabSpacing="720" TabType="left" Text=".NET Windows Forms - Visual Basic .NET {size:24}Use {style:italic}
AddHandler{style:regular} to dynamically associate handlers with events Similar to {style:italic}Listeners{style:regular} 
in Flash {default} ASP.NET - Visual Basic .NET {size:24}Dynamically inject JavaScript" TextAlignment="left" 
Transparent="true" UseWindowsColors="false" /> 

They first take the dominant or default formatting and set its properties:
FontFace="Arial" FontSize="28" FontStyle="regular" RgbFill="255,255,255" RgbStroke="0,0,0" TextAlignment="left"

The text itself starts with these characteristics and then any changes are represented within brackets {}:
Text=".NET Windows Forms - Visual Basic .NET {size:24}Use {style:italic}AddHandler{style:regular} to dynamically 
associate handlers with events Similar to {style:italic}Listeners{style:regular} in Flash {default} ASP.NET - 
Visual Basic .NET {size:24}Dynamically inject JavaScript"

Notice how the size increases to 24 point with the word "Use." Then italics are added for "AddHandler." The text returns to regular style (but stays at 24 point) until the word "Listeners." The {default} attribute means that all the settings go back to that set for the field.

For one more example, let's look at some XAML that has hyperlinks. I've pulled out the attributes that are not relevant here:
<EnhancedField IDNumber="0" Text="Info
{size:24}Instructor: {hotword-start:1} {hotword-end:1}
Assistant: {hotword-start:2} {hotword-end:2}
{hotword-start:3} {hotword-end:3}
        <Hotword IDNumber="1" Name="Hotword 1" Hyperlink="Jump" 
        HotwordStyle="BookDefault"  />

Notice how the hotword beginning and ending are marked. The number after "start" corresponds with the IDNumber of the hotword object itself. This is a good example of how XAML works. If there are objects within the <EnhancedField> object, they are represented by the <EnhancedField.Objects> collection. Within the hotword object, the hyperlink type (jump) and URL ( are represented within the Hyperlink attribute.

OpenScript Tip from the Learning & Mastering ToolBook Series

By Tim Barham, SumTotal Systems, Inc.

ASYM_PrintWindow for Printing a Viewer

The standard print command only supports printing the main window. However, there is a handler, ASYM_PrintWindow, which will let you print any viewer. This is used by the Print action in the Actions Editor. If you add a Print action to an action sequence, then look at the generated OpenScript code, you will see the following call:

send ASYM_PrintWindow clientHandle32 of targetWindow, 1, 1, 3, null, null, 
    null, false, false, null

Editor note: Digging into the system book code directly (this method is undocumented), gives this syntax and description:

ASYM_TextToPrinter [window handle],[printArea], [printOptions], [xScale], 
    [yScale], [jobName], [bringToTop], [updateWindow], [showStatusBar]

The printArea parameter is 1 for the complete window and 2 for just the client area. The printOptions is 1 for "Best Fit," 2 for "Stretch to Page," and 3 for "Scale." The xScale and yScale parameters are only relevant for the "Scale" print option. Otherwise, they should be 0. Passing null for these values makes them 0 for "Best Fit" or "Stretch to Page" and calculates the proper scale based on the printer and screen resolution for "Scale." jobName is the optional name that shows up in Print Manager. If you don't specify it, the handler will use the caption of the window you are printing. bringToTop defaults to TRUE if you pass null to it. When it is true, the handler hides various ToolBook windows like the Command Window and brings the window you are printing to the front. If updateWindow is null, it default to TRUE. Updating the window means that the handler invalidates the window and forces the computer to redraw it. showStatusBar reflects whether to show or hide the status bar before printing the window. Passing null means that the status bar remains visible if it is already showing.

Web Hint from the Learning & Mastering ToolBook Series

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Certificate Actions

There are a number of elegant pieces of Actions Editor scripting related to certificates. Three that I wanted to point out are related to the student name, control panel, and book title.

Adding a certificate adds this global variable:

-- Global variables ------------------------------------------------------------
Certificate_StudentName (Initial value: ""; Current value: "Happy Gilmore")

When the ToolBook DHTML runtime detects that the user is running under a Learning Management System (LMS), then it automatically requests the user name from the LMS and sets the Certificate_StudentName variable. Note that for a SCORM LMS, the format will normally be lastName, firstName.

If you put a Student Name Prompt onto a page of your book, then this action gets added:

-- On unload page... -----------------------------------------------------------
Set Certificate_StudentName to text of self

The Student Name Placeholder then has this action:

-- On load page... -------------------------------------------------------------
Comment: Use Certificate_StudentName global variable if it has a value
Comment: Else ask LMS for Student Name if available
Comment: Else Prompt the user to enter their name
Comment: And regardless of how we get the name, once gotten, put into the 
Comment: Certificate_StudentName variable for future use
Comment: But skip this process IF we are actively editing the catalog file
If title of this book <> "Certificates Catalog Category"
  If Certificate_StudentName = ""
    Set Certificate_StudentName to studentName of this book
    If Certificate_StudentName contains ","
      Set Certificate_StudentName to item 2 of Certificate_StudentName && 
        item 1 of Certificate_StudentName
      Loop while Certificate_StudentName = ""
        Display query: "Enter your name so that it can be inserted into the certificate."
            ; store response in Certificate_StudentName
      End conditional loop
    End if
  End if
  Set text of Self to uppercase ( Certificate_StudentName )
End if

The first "if" statement skips the logic while the page is still in the Catalog. The code then looks to see if the Certificate_StudentName global variable has been set. If so, it looks for a comma (which will occur if the LMS is SCORM) and reorders into firstName lastName format. If not, it will ask for the student name in a while loop, meaning that it will continue until the user enters something in the box. Finally, the code its text to the uppercase, likely to avoid issues when the user did not use correct casing.

The certificate Control Panel (consisting of a Print button and a Close button) has these actions:

Actions for Button "Print Certificate" of Page "Default Certificate"

-- On click... -----------------------------------------------------------------
Set visible of Group "Certificate Control Panel" to false
Print current page
Delay 500 ms
Set visible of Group "Certificate Control Panel" to true

Actions for Button "Close Certificate" of Page "Default Certificate"

-- On click... -----------------------------------------------------------------
Go to the previous page in the history list

Notice how the Print button hides the control panel group, prints the page, and then shows the group again.

The interesting thing about the Close button is that it accesses the "History List" in order to go back to the previous page. I couldn't find a way to build this expression in the Actions Editor, but typing it in passes the syntax checker (and obviously works).

Finally, the Book Title field has this action to get the title property of the book. This is not something I've used before. It is hard to get the Expression Builder to show "this Book" so you can get a list of these special properties, but one way is to go to "on load book" and then use the Expression Builder with "Self." title and studentName are particularly useful properties that can be accessed this way.

Actions for Auto-Sizing Field "Book Title" of Page "Default Certificate"

-- On load page... -------------------------------------------------------------
Set text of Self to title of this book

Flash ActionScript Tip

By Jeff Rhodes, Platte Canyon Multimedia Software Corporation

Using External Interface to Check Flash Version

An attendee at the 2008 ToolBook User's Conference / e-Learning Authoring conference came to both Dan Carr ( and me with a problem she had been having with users having an old Flash version, despite the fact that the correct version had supposedly been installed on their machines. Dan helped her with this ActionScript to ensure that the user is at least at Flash version 8:

var versionNumber:Number = Number(System.capabilities.version.charAt(4));
if( versionNumber >= 8 ){
	if( ExternalInterface.available == true ){
		version_txt.text = "Click the 'Run Test' button, if the 'next' 
		button on this page is available, you have the right Flash player 
		version and may continue to the next page."
		isFlashOk = true;
		logo._visible = true;
		version_txt.text = "Click the 'Run Test' button, if the 'next' button 
		is still unavailable, your Flash player is not behaving correctly and 
		you will not be able to take this CBT.  Please call the IT help desk 
		and ask for a Flash player update.  You must exit now.";
		logo._visible = false;
	version_txt.text = "You don't have Flash Player 8 or higher, please call 
	the IT help desk and ask for the latest Flash player.  You will not be 
	able to take this CBT until you get a Flash player update.  You must exit now.";
	logo._visible = false;

Note that the code checks the version both by making sure the version number is at least 8 AND by checking if the External Interface capabilities (which were added in Flash 8) are available. It uses that information to give notification and to set the isFlashOk variable. From there, I helped the customer communicate with ToolBook using the ActionScript below:

var methodName:String = "goHome";
var instance:Object = null;
var method:Function = getFlashOK;
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);

function getFlashOK():String {
	return isFlashOk.toString();

The key line is the addCallback method. It registers the "goHome" method to be called from the container control (e.g., ToolBook). It then calls the getFlashOK function and returns the string version of the isFlashOk variable. From ToolBook, we then call this method of the Flash movie via the Actions Editor code below. Note how we pass the name of the method to be called (goHome) as the parameter to the extCallFunction.

-- On click... -----------------------------------------------------------------
Execute extCallFunction() of ShockwaveFlash "FlashTest"; store return value in hasFlash8
-- Editor note: here is the parameter of the extCallFunction action: ""
Comment: Notifying user to click 'Run Test' button in Flash movie, to uncover the next button
Comment: If user's machine thinks its Flash 8 or above and if ExtCallFunction works, then they can continue
If hasFlash8 contains "true"
  Set FlashTest_visited to true
  Set visible of Button "NextCover" to false
  Set visible of Field "warning" to false
  Set visible of Field "continue" to true
End if

A nice team effort! Here's part of a follow-up email from the attendee:

I just successfully really tested this by uninstalling the newest version of Flash Player nine on a machine and installing Flash Player 7. The test worked perfectly. I also tested the module with 6 different machines that all should have updated players on them - and it worked as it should.

The CBT (with the older flash player) also behaved like our users have been experiencing: missing some graphics and a lot of text from my Flash 8 movies.

I am thrilled! Thanks so much for your help!

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 Back issues of the EnterPage are available at:

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