The EnterPage 9-01

The Source for ToolBook, VBTrain.Net, and FlashTrain news
from Platte Canyon Multimedia Software Corporation

 

April 11, 2006

 

In This Issue

 

Introduction

 

TOP STORIES

ToolBook User’s Conference / e-Learning Authoring Conference Update

TBCON/eLearnCon Faculty

TBCON/eLearnCon Sessions

Introducing FlashTrain™

Conference Reports: ASTD TechKnowledge and Training Spring

Announcing Training Studio™

Platte Canyon Web Demos

 

TOOLBOOK TIPS AND NEWS

Plug-In Pro Tool Spotlight: A Review of Past Favorites

Expert Information

OpenScript Tip

Web Hint

 

VBTRAIN.NET TIPS AND NEWS

Control Spotlight – Question

VBTrain.Net Nugget

 

FLASHTRain TIPS AND NEWS

ActionScript Tip

 

MORE NEWS AND INFORMATION

Come See Us: The Platte Canyon World Tour

Platte Canyon Products in the Pipeline

Coming in the Next Issue of The EnterPage

About The EnterPage

Information on Subscriptions

 

 

Welcome to the first edition of The EnterPage for 2006. This is the 9th year we have produced this newsletter and the 10-year anniversary of Platte Canyon itself. The EnterPage started life as an e-newsletter dedicated solely to ToolBook news and information. In 2002, we expanded it to add content on .NET. With this issue, we are expanding again into Flash. Our guiding principle at Platte Canyon has always been to use the best tool for the job. ToolBook, .NET, and Flash all have their relative strengths and we want to be your source of information and products on each. And their combination cannot be beat! You’ll see this expanded focus at the upcoming ToolBook User’s Conference / e-Learning Authoring Conference and in our new and updated products. Thanks for being part of our extended family.

 

 

Top Stories

 

ToolBook User’s Conference / e-Learning Authoring Conference Update

 

Preparations for these two co-located conferences are in full swing. Be sure to sign up by May 1st as prices go up by $50 after that. Here are the key details:

 

Dates

June 19, - 21, 2006

Preconference training June 17 and 18

 

Location

Colorado Springs, Colorado

 

Rates (all options include meals)

 

Off Campus ($750) 

Loomis Double ($825) 

Loomis Single ($895) 

Apartment Multiple Occupancy ($945) 

Apartment Single ($1,145)

 

Preconference Training (4-hour sessions)

 

One Session $150

Two Sessions $285

Three Sessions $420

Four Sessions $555

 

Saturday morning, June 17

Flash for Absolute Beginners - Chris Bell

Programming 101 - Jeff Rhodes

ToolBook for Absolute Beginners - Hands on - Lee Jay Karns

 

Saturday afternoon, June 17

e-Learning with Flash - Chris Bell

Introduction to .NET - Jeff Rhodes

ToolBook Question Objects and Media - Hands On - Lee Jay Karns

 

Sunday morning, June 18

Introduction to Scripting with Flash - Chris Bell

JavaScript for ToolBook, ASP.NET, and Flash - Jeff Rhodes

ToolBook Templates - Hands on - Lee Jay Karns

 

Sunday afternoon, June 18

Flash for Programmers - Jeff Rhodes

Introduction to the ToolBook Actions Editor - Hands on - Lee Jay Karns

Media and Flash - Chris Bell

 

Tracks

 

Flash

Management

ToolBook (Intermediate/Advanced)

ToolBook (Introduction)

Web Technologies/.NET

 

 

You can learn more and register at http://www.elearncon.net.

 

 

TBCON/eLearnCon Faculty

 

We are proud to have assembled another first class faculty for this year’s event. Here are the confirmed faculty members as of press time:

 

Barham, Tim - SumTotal Systems, Inc.

Bell, Chris - Platte Canyon Multimedia Software Corporation

Brown, Adam - Oncall Interactive

Chemey, Andrew - AEC Consulting

Dedmore, Denny - SumTotal Systems, Inc.

Dick, Robert - Humana Health Insurance

Hall, Tom - TCC Publishing Inc.

Hancock, Steven - Rapid Intake, Inc

Hess, Garin - Rapid Intake Inc

Hurley, Bill - American Signature, Inc.

Johnson, Dan - Lingo Systems

Karns, Lee Jay - Vertical View Software Associates

Lund, Tomas - SumTotal Systems, Inc.

Price, Simon - University of Bristol

Rhodes, Jeff - Platte Canyon Multimedia Software Corporation

Richards, Dan - Interactive Advantage Corporation

Ryan, William - Humana Health Insurance

Weller, Martha - CM & MH Weller Consultants 

 

You can see the most current faculty list at http://www.elearncon.net/tbconpresenters.aspx.

 

 

TBCON/eLearnCon Sessions

 

Here is a current list of sessions by track. Check the web site at http://www.elearncon.net/tbconsessions.aspx for the most updated list.

 

Flash

 

A New Approach to SCORM Communication with Flash using the ExternalInterface Class - Jeff Rhodes

ActionScript Object-Oriented Programming - Adam Brown

Case Study: Developing the Next Generation in e-Learning Engines - Adam Brown

"Case Study: Implementing the ""Army UI"" in Flash" - Jeff Rhodes

Creating e-Learning Games with Flash - Adam Brown

Database-Driven e-Learning with Flash - Jeff Rhodes

Delivery Options for Flash- Chris Bell

Flash Animation Basics- Chris Bell

Flash Animations Made Easy by Swish - Garin Hess

Flash for Programmers - Jeff Rhodes

Flash to AICC Communication Strategies and Techniques - Andrew Chemey

Graphics and Media in Flash - Chris Bell

Integrating Flash Content with an LMS - Andrew Chemey

Introduction to Scripting in Flash - Chris Bell

Product Showcase: Flexible Rapid eLearning Development Using Flash Companion eLearning Studio - Garin Hess & Steven Hancock

Simple Flash e-Learning Development Using Slides - Steven Hancock

Three Different Approaches to Creating Course Architecture Using Flash - Garin Hess

 

Management

 

A Systematic Approach to e-Learning Production - Dan Richards

Communicating with a SCORM LMS Using the Actions Editor - Chris Bell

Defining a Process for Better WBT Development - Garin Hess

e-Learning Development: An Open Discussion on Tools and Issues - Andrew Chemey

e-Learning Project Planning - Bill Hurley

Estimating Development and Pricing Products - Jeff Rhodes

Faster, Cheaper, Better - Get All Three - Bill Hurley

Focused Technology Solutions - a Learning Process - William Ryan & Robert Dick

Introduction to Software Testing and Quality Assurance - Simon Price

Product Showcase: Optimizing your Global Training Program: The Translation and Localization Process Explained – Dan Johnson

Product Showcase: ToolBook Rapid Development Suite (RDS) - Lee Jay Karns

Product Showcase: Tracker.Net - Chris Bell

Product Showcase: Training Studio and Exam Engine - Jeff Rhodes

SCORM - What the Flash Developer Needs to Know - Steven Hancock

SCORM for Managers - Jeff Rhodes

Show & Tell - Chris Bell

The Kirkpatrick-Deming Model for Performance Improvement - Bill Hurley

Usability Testing: Why, When, and How? - Steven Hancock

 

ToolBook (Intermediate/Advanced)

 

Actions Editor - A Look at the More Complex Features of the Actions Editor - Denny Dedmore

Actions Editor Q&A - Tim Barham

Ask the ToolBook Experts - Tim Barham & Denny Dedmore

Creating and Using System Books - Tim Barham

Creating Assessments in ToolBook - Tomas Lund

Creating Developer Exchange Tools - Denny Dedmore

Customizing the ToolBook Catalog - Denny Dedmore

Data Structures in OpenScript - Simon Price

Database-Driven e-Learning with ToolBook - Jeff Rhodes

Databases, ADO, and Native ToolBook Applications - Martha Weller

Enhancing Assessments with the Actions Editor - Lee Jay Karns

Incorporating Flash into ToolBook - Chris Bell

One Windows Media Player in the Whole Book Using ActiveX - Chris Bell

Product Showcase: Plug-In Pro - Chris Bell

Quiz Tricks: Feedback based on Attempt and Quiz Scoring with the Actions Editor - Chris Bell

Simulation Editor Q&A - Tim Barham

Simulation Editor Tips and Tricks - Lee Jay Karns

Synchronize Media with Events using the Universal Media Player - Chris Bell

The Art of the Template - Lee Jay Karns

 

ToolBook (Introduction)

 

Adding Interactivity with the Actions Editor - Chris Bell

An Introduction to HTTP Post in ToolBook Instructor 2004 - Tom Hall

An Introduction to the Actions Editor in ToolBook Instructor 2004 - Tom Hall

An Introduction to the Simulation Editor in ToolBook Instructor 2004 - Tom Hall

Creating Compliance Training with ToolBook - Tomas Lund

Custom Page Styles and Outlines in ToolBook - Tomas Lund

Delivery Options for ToolBook - Chris Bell

Denny's Top 10 List of ToolBook Problems Reported To Technical Support - Denny Dedmore

Getting the Most Out of ToolBook's Built-in Features - Dan Richards

Graphics and Media in ToolBook - Chris Bell

Graphics in ToolBook - You Can Please Even Snooty Graphic Artists - Chris Bell

Introduction to OpenScript Programming - Martha Weller

Key Concepts for Designing Interactive Training with ToolBook - Dan Richards

Product Showcase: The Platte Canyon ToolBook Product Line - Chris Bell

Testing ToolBook's SCORM Abilities - Tom Hall

ToolBook:  A Look Ahead - Tim Barham & Tomas Lund

Troubleshooting ToolBook HTML Runtime Errors - Denny Dedmore

 

Web Technologies/.NET

 

Building Online Tests with Exam Engine - Chris Bell

Communicating with .NET Web Services from Flash - Jeff Rhodes

Database-Driven e-Learning with .NET Windows Forms - Jeff Rhodes

Database-Driven e-Learning with ASP.NET - Jeff Rhodes

How Does Exam Engine Work? - Jeff Rhodes

HTTP Post with ToolBook and .NET - Jeff Rhodes

Interacting with Flash Using JavaScript - Chris Bell

JavaScript for ToolBook, ASP.NET, and Flash - Jeff Rhodes

Object-Oriented Programming with .NET and Flash - Jeff Rhodes

Powerful Applications with Flash and .NET - Adam Brown

Programming 101 for e-Learning Developers - Jeff Rhodes

Rapid ToolBook Authoring using HTML - Simon Price

Style Sheets for ToolBook - Simon Price

Talking SCORM with ASP.NET - Jeff Rhodes

Using JavaScript with ToolBook Instructor 2004 - Martha Weller

What's New with .NET 2.0? - Jeff Rhodes

 

 

Introducing FlashTrain™

 

As we mentioned in the introduction to this newsletter, Platte Canyon will be expanding from ToolBook and .NET into Flash. We came up with the VBTrain.Net product line a few years ago as a brand name for our .NET controls and products. Similarly, we will organize our Flash components and other products under the new FlashTrain moniker. This issue of The EnterPage introduces “FlashTrain Tips and News” with a new ActionScript column.

 

  

Conference Reports: ASTD TechKnowledge and Training Spring

 

It was a welcome change to attend a conference in our home state. ASTD TechKnowledge, held January 31 – February 2, 2006 in Denver, Colorado, was a good mix of technical and general sessions (including one by Jeff on ASP.NET and SCORM). We made some new friends and reconnected with some old ones on the Expo floor as well. Though not the best e-Learning Conference to be held in Colorado this year (that honor will go to TBCON/eLearnCon), it was a nice show.

 

Next up was a trip the Magic Kingdom for the Training Conference. Though much bigger than TechKnowledge, attendees and staff were still quite friendly. Jeff put on a session about database-driven e-Learning and we had quite a few visitors to the booth. This conference also marked the retirement of our booth. Check out our new look at the shows listed at the bottom of this newsletter. If you want to see Chris and Jeff putting their “bug hunting” skills to work at Universal Studios, check out this photo: http://www.plattecanyon.com/images/menInBlack.jpg.

 

 

Announcing Training Studio™

 

By Jeff Rhodes

 

Those of you who have seen me speak at TBCON or other conferences the last couple of years know that I’m big on database-driven e-Learning. The basic concept is that the subject matter expert (SME) puts the training content into a database rather than inside an authoring tool. At the same time, the SME selects an interaction type (Timed Bullets, Rollover Hotspots, Multiple Choice Question, etc.) from a supported list. Media and graphics are stored externally and referenced in the database. The e-Learning itself is then created at either runtime or, if necessary, development time by loading the database and the external media/graphics. Advantages of this approach include the ability to quickly update content, the reduced tool-specific training needed for SME’s, the ease of supporting multiple languages, and greatly reduced development time. Disadvantages include the amount of programming needed to pull it off and the reduced flexibility in the type of training pages that can be created. We’ve created full-fledged prototypes over the last couple of years in ToolBook and .NET but full implementations required quite a bit of programming expertise.

 

I go into all that detail to explain the origins of Training Studio. We’ve just completed another prototype in Flash and have come to the realization that we can build a tool with a common database format that can output to ToolBook, Flash, ASP.NET, or .NET Windows Forms. Once a SME has configured a database (using Training Studio’s editor) and assembled its associated media, the training can be output in the format of choice. And if the interaction types that come with the product are not sufficient, developers can add their own. ToolBook output will always require a development edition of Instructor or Assistant due to the need to publish to the web after configuring the content. The other formats will only require developer editions for the person editing existing interaction types or adding new ones.

 

I’ll be showing prototypes of Training Studio at the TBCON/eLearnCon and will let you know when an evaluation copy is ready for you to try out.

 

 

Platte Canyon Web Demos

 

Our free product demonstrations via Microsoft Live Meeting are in full swing. We do a demo most days at 9 AM Mountain time. You can see a complete list of upcoming demos at http://www.plattecanyon.com/productDemonstrations.aspx. If you want to join us, just click the link, fill in your name and email address, and you’ll automatically be sent an invitation. Included is a link for installing the Live Meeting client on your computer if you don’t already have it. Demos for particular products are also shown at the upper left of those web pages. As a general rule, demos are scheduled like this:

 

Monday: ToolBook or Learning & Mastering ToolBook

Tuesday: Exam Engine or SCORM Watch

Wednesday: Tracker.Net or SCORM Watch

Thursday: TBK Tracker or TB Connection

Friday: Plug-In Pro/Other ToolBook Add-ons or VBTrain.Net controls

 

We hope you will join us.

 

 

TOOLBOOK TIPS AND NEWS

 

Plug-In Pro Tool Spotlight – Button Graphics Editor

 

Many of you know that rollover buttons in ToolBook are typically made by having the main image as the Normal Graphic of the button, the down image as the Invert Graphic, the rollover image as the Checked Graphic, and the disabled image as the Disabled Graphic. You can see an example of this when you drag a Navigation Panel from the Catalog. You can edit these images on the Graphics tab of the Button Properties box. But an even quicker way to edit them is with the Button Graphics Editor in the Plug-In Pro. You just bring it up, select background or page, and then select the button you are interested from a drop-down list. A large version of each of its graphics is displayed. You can then click to select a replacement resource for any of them. While you are at it, you can set many other button properties such as Draw Direct, Exclude Tab, Transparent, Border Style, and Highlight. If the buttons are grouped or hidden, it is no problem. You can still see it on the list.

 

Here is a link to the help topic for this tool: http://www.plattecanyon.com/help/pluginpro/Editing_Button_Graphics.htm

 

More information Plug-In Pro and a free trial version are available at:

 

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

 

 

The following are all from the "Learning & Mastering ToolBook" series

 

Expert Information

 

By Tim Barham

 

textFragments Property

 

Tim Barham posted the following useful code in response to a ToolBook List question about how to change the color of individual text characters:

 

OK, you can check the strokeColor etc of individual characters, but that's very slow. A faster way is to use an undocumented property of fields called "textFragments." This property lists the character locations in a field that the formatting of text changes. So you don't have to check every character - just each fragment. For example, if a field contains the words:

 

         This is a test

 

And "is" is in italics and "test" is bold, the textFragments property of the field will return 1,6,8,11 - the points at which formatting changes. Note that the function returns the offset of the first character of each text fragment, so first item will always be 1, and the last item will be the beginning of the last fragment. So you could process a field with a handler like this:

 

to handle replaceTextColor fRef, oldColor, newColor

       frags = textFragments of fRef

       max = charCount(text of fRef)

       while frags <> null

              pop frags into fragStart

              if frags = null

                     fragEnd = max

              else

                     fragEnd = item 1 of frags - 1

              end

              if strokeColor of characters fragStart to fragEnd of text of fRef = oldColor

                     strokeColor of characters fragStart to fragEnd of text of fRef = newColor

              end

       end

end

 

Similar code would work for fontStyle etc. 

 

 

OpenScript Tip

 

By Peter Jackson (www.toolbookdeveloper.com)

 

Creating an Exit Action with OpenScript

 

These 18 lines of OpenScript will create a single line Action: Exit (LMS: make lesson as complete) (LMS: Student can resume) (LMS: no automatic navigation).

 

to get setMyAEcode

   local array actionArray[]

  

   if isObject(button "three" of this page)

          _targetButton = button "three" of this page

          _structureName = "exit"

          _structure = ""

          _structure = ASYM_SetStructureName(_structure, _structureName)

          _element = "confirm"

          _expression = true

          _target = "token"

          _targetWindow = focusWindow

          _event="name"

          _type = "<B>"

          _data = ASYM_EA_CompileExpression(_expression, _target, \

                _targetWindow, _event, _type)

          _structure = ASYM_SetDataElement(_structure,_element,_data)

          _element = "cmsCanResume"

          _data = "yes"

          _structure = ASYM_SetDataElement(_structure,_element,_data)

          actionArray[1] = _structure

          _event = "buttonClick"

          send ASYM_EA_ApplyActionArray _targetButton,_event,actionArray,true

   end if

  

   return true

end setMyAEcode

 

 

Web Hint

 

By Chris Bell

 

How to Replace the Neuron Logo

 

A number of ToolBook users have asked how to replace the Neuron logo graphic that shows when a Neuron book is loading.

 

Here's the link to a Knowledge Base article for details:

http://kb.sumtotalsystems.com/kbdisplay.asp?id=Q101571504027208

 

The main idea is that you replace the file "neuron.bmp" in the Neuron folder with your own "neuron.bmp."

 

Important Notes:

 

1. This must be done on every user's machine, not on the server, since Neuron is local.

 

2. Every Neuron application the user accesses from their machine will show the neuron.bmp from their Neuron directory.

 

Where is the Neuron folder? That depends on whether the user is running Netscape or IE.

 

The typical path for IE users is:

C:\Program Files\Common Files\click2learn\Neuron\

 

The typical path of Netscape users is:

C:\Program Files\Netscape\Communicator\Program\Plugins\ 

 

 

VBTRAIN.NET TIPS AND NEWS

 

Control Spotlight – Question

 

Question is the most powerful of the VBTrain controls. Based on its properties, it creates itself as a multiple choice, true & false, or fill-in-the-blank question. It also decides whether its distracters will but buttons, checkboxes, images, or more. At the same time, it supports unlimited levels of feedback by try, both SCORM 1.2 and SCORM 1.3/2004, limits on time and tries, and much more. A development license at $495 includes both ASP.NET and Windows Forms version. Here is some Visual Basic code from Exam Engine which shows how to set some key Question Properties:

 

' Answers property

Dim answersTable As New Hashtable

Dim answerText As String

 

For answerCounter = 1 To maxAnswers

       answerText = rowId(String.Concat("Answer", answerCounter, "Text")).ToString

       If IsNothing(answerText) = False AndAlso answerText <> "" Then

       answersTable.Add(answerCounter, answerText)

       End If

Next

 

' Set Question Properties

With WebQuestion1

       .Answers = answersTable

 

       ' Answers_Graphics

       If ansGraphic <> "" Then

              Dim graphicTable As New Hashtable

             

              For answerCounter = 1 To maxAnswers

                     If answersTable.ContainsKey(answerCounter) = True Then

                           graphicTable.Add(answerCounter, ansGraphic)

                     End If

              Next

              .Answers_Graphics = graphicTable

       Else

              If IsNothing(defaultGraphicTable) = False Then

                     .Answers_Graphics = defaultGraphicTable

              End If

       End If

       If IsNothing(Answers_RandomizedText) = False AndAlso Answers_RandomizedText <> "" Then

              .Answers_Randomized = Me.ConvertSettingToBoolean(Answers_RandomizedText)

       Else

              .Answers_Randomized = Me.ConvertSettingToBoolean(questionPropTable("Answers_Randomized"))

       End If

 

       ' other property settings omitted

 

       .Answers_Style = answersStyleSetting

       .Interaction_Type = intType

       .Interaction_Id = intId

       .Objective_Id = objectiveList

       .QuestionText = qText

       .Score_Max = maxScore

       .Score_Min = minScore

       .Test_Id = examList

       .LoadQuestion()

End With

 

Questions within a single application are grouped into exams based on the Test_Id property set in the code above. This collection of questions has methods for scoring the exam and generating the SCORM JavaScript needed to pass the interaction data back to a learning management system. Here is an example.

 

If Me.UsingSCORM = True AndAlso IsNothing(QCollectionId) = False Then

       ' Call Scorm

       scriptString = QCollectionId.GenerateScormTestJavaScript(Score_FormatOverrideEnum.UseDefault, False, scVersion, "", "apiPointer")

End If

 

With sb

       .Append(cr)

       .Append("function loadScore(){")

       .Append(cr)

       .Append(scriptString)

       .Append(cr)

       .Append("}</script>")

End With

 

scriptLiteral.Text = sb.ToString

 

Like all VBTrain.Net controls, Question has a free evaluation version complete with sample projects. You can learn more at http://www.vbtrain.net/productdisplay.aspx?id=9.

 

 

VBTrain.Net Nugget

 

by Jeff Rhodes

 

We mentioned above that we are doing daily product demonstrations via Microsoft Live Meeting. To make these easy to find, we wanted each of our product pages to have links to upcoming demonstrations. You can check out our TBK Tracker page at http://www.plattecanyon.com/tbkTracker.aspx if you want to see an example. Of course, we didn’t want to edit pages each day to update the list and take demonstrations that have passed off. Instead, we wanted to use the power of .NET to load the upcoming demonstrations from our SQL Server database. Since we wanted this capability to on multiple pages, it was a good fit for an ASP.NET user control. We started by creating the user control (livemeeting.ascx). Like other ASP.NET entities, it gives the markup page (.ascx) and the code-behind page (.ascx.vb). The markup page contains a Repeater which we can DataBind to display the meetings for the desired products. Here’s the main part of the .ascx file:

 

<asp:repeater id="liveMeetingRepeater" runat="server">

       <ITEMTEMPLATE>

              <tr class="navBarRow">

                     <td>

                           <img src="images/bullet.gif" class="listBullet">

                     </td>

                     <td class="navBarColumn">

                           <%# BuildHref(Container.DataItem("LiveMeetingId"), Container.DataItem("MeetingTitle"), Container.DataItem("MeetingDate")) %>

                     </td>

              </tr>

       </ITEMTEMPLATE>

</asp:repeater>

 

The BuildHref function return an anchor tag that when clicked opens up the scheduling window with all the relevant information passed as part of a query string. Here is an example tag:

 

<a class='leftnavheading' href="javascript:void window.open('meetingrequest.aspx?id=61&title=TBK Tracker and Progress Tracker&date=4/13/2006 9:00:00 AM', 'MeetingRequest', 'width=430,height=490,status=no,resizable=yes,scrollbars=yes,toolbar=no,menubar=no');">Thursday, April 13 - 9 AM (MST)</a>

 

The rest of the work is in the .ascx.vb page. The key code is shown below.

 

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

       If IsPostBack = False Then

              Dim meetId As Int32 = Me.MeetingId

              Dim tableId As DataTable = Me.LiveMeetingTable

              Dim viewId As DataView = tableId.DefaultView

 

              With viewId

                     .RowFilter = String.Format("MeetingId={0}", meetId)

                     .Sort = "MeetingDate"

              End With

 

              If viewId.Count > 0 Then

                     LiveMeetingPanel.Visible = True

 

                     With liveMeetingRepeater

                           .DataSource = viewId

                           .DataBind()

                     End With

                     ‘ Custom Anchor code omitted

              Else

                     LiveMeetingPanel.Visible = False

              End If

       End If

End Sub

 

Protected Function BuildHref(ByVal liveMeetingId As Int32, ByVal titleId As String, ByVal dateId As DateTime) As String

       Dim hrefString As String = String.Format("<a class='leftnavheading' href={3}javascript:void window.open('meetingrequest.aspx?id={0}&title={1}&date={2}', 'MeetingRequest', 'width=430,height=490,status=no,resizable=yes,scrollbars=yes,toolbar=no,menubar=no');{3}>{4} (MST)</a>", liveMeetingId, titleId, dateId, ControlChars.Quote, dateId.ToString("dddd, MMMM d - h tt"))

 

       Return hrefString

End Function

 

 

When the control loads, we grab our MeetingId property which tells us which product we are using (remember this control is shared among all products). We’ll show below how to set this property. We then grab a DataTable of all of our scheduled meetings either out of the server’s memory or by reading it from the database. From there, we filter it to only include meetings for the product of interest. We then DataBind our Repeater to this filtered list and we are done. For each meeting, the Repeater calls the BuildHref function, passing in the id, title, and date. The function returns a complete anchor tag like the one shown above.

 

Once this is all done, we drag the user control onto any page where we want this functionality. We then set the MeetingId property as shown. The number 4 corresponds to TBK Tracker in this case.

 

<uc1:livemeeting id="Livemeeting1" runat="server" MeetingId="4"></uc1:livemeeting>

 

 

 

 FLASHTRAIN TIPS AND NEWS

 

ActionScript Tip

 

By Jeff Rhodes

 

One of the first challenges to solve in creating database-driven e-Learning in Flash was reading the database in the first place. With ToolBook, using ADO to read the Access database is the easiest and fastest choice. With .NET, we can easily read the database in native (Access) or XML format. But with Flash, XML is the preferred method since it has built-in XML support and reading XML requires nothing to be installed on the web server (unlike Flash Remoting). But since we want the database to be the same for all the tools, we want to be able to easily go between Access and XML (and later SQL Server). Luckily, the .NET DataSet object makes that very easy. But how well does Flash work with a .NET DataSet represented in XML? Very well luckily! Here is an abbreviated version of a DataSet:

 

<NewDataSet>

       <Training>

              <templateId>1</templateId>

              <title>Introduction</title>

              <subheading>Introduction to the 150 TPH Rock Crushing Plant</subheading>

              <pageType>Content with Image and Media</pageType>

       </Training>

       <Training>

              <templateId>5</templateId>

              <title>Introduction</title>

              <subheading>Introduction to Rock Crushing Op</subheading>

              <pageType>Rollover Hotspot Show Graphics</pageType>

       </Training>

</NewDataSet>

 

Those of you who are familiar with XML will immediately notice that there are no attributes. Instead, there are just nodes. That’s because there is one table (Training) with multiple columns (templateId, title, subheading, pageType, and others not listed). This turns out to make reading the XML much easier. Here is the ActionScript function to read the XML file:

 

// following are global variables populated by this script

var masterContentArray:Array = new Array();

var numPages:Number;

 

function loadTrainingData(xmlPath:String):Void {

       var xmlId = new XML();

 

       xmlId.ignoreWhite = true;

       xmlId.owner = this;

       xmlId.onLoad = function() {

              var arrayCounter:Number = 0;

              var contentArray:Array = new Array();

              var root = this.firstChild; // NewDataSet

              var options = root.childNodes; // Training

 

              for(var n=0; n<options.length; n++){

                     // loops through each training page

                     var pageElements = options[n].childNodes; // templateId, etc.

                     var data = new Object();

 

                     for(var m=0; m<pageElements.length; m++){

                           data[pageElements[m].nodeName] = pageElements[m].firstChild; //templateId, title, etc. values

                     }

                     contentArray[arrayCounter] = data;

                     arrayCounter ++;

              }

              numPages = arrayCounter; // has an extra ++ but also starts with 0 so no -1

              masterContentArray = contentArray;

              loadInitialData();

       }

 

       xmlId.load(xmlPath);

}

 

The masterContentArray global variable is a single-dimension array (the only kind you have in Flash) with numeric indices. Each element of this array holds an associative array represented by the data variable. This associative array holds all of the information that represents the current page of content. When we are on page 1, data[“subheading”] has the value of “Introduction to the 150 TPH Rock Crushing Plant.” In the loadTrainingData function above, we first create a new the ActionScript XML object. Among its key properties is the function to call in response to the onLoad event, which occurs once the XML file is successfully loaded. Inside this function, we create a new contentArray (what will eventually become our masterContentArray global variable) and start parsing the XML file. Notice how the firstChild property gets us to the <NewDataSet> tag and its childNodes are the various <Training> nodes. From there we loop through its childNodes to get to the <templateId> and parallel tags. We create the data object and set its index to be the nodeName and the value to be the firstChild (e.g., the content between the tags). The beauty of this approach is 1) it is not dependent on the exact columns of the table, 2) it is flexible in that not all columns have to be in every table [the default behavior from the .NET side is not to include columns in the XML that have a null value], and 3) we can do a for-each loop with the data variable when it comes time to read the array and populate the Flash movie.

 

 

MORE NEWS AND INFORMATION

 

Come See Us: The Platte Canyon World Tour

 

Here are all of our currently-planned events for the rest of 2006. We definitely hope to see you at the ToolBook User's Conference / e-Learning Authoring Conference in June. If you happen to be at any of the others, please stop by our booth and say Hi.

 

e-Learning Producer (Boston, MA, April 17 – 20, 2006):

Booth: 10

Chris Bell will be presenting “Creating Advanced Interactions for e-Learning using ToolBook” on Thursday, April 20 at 10:45 AM.

Jeff Rhodes will be presenting “Beyond Templates: Creating Interactive Database Driven e-Learning Using ASP.Net and Flash” on Wednesday, April 19 at 1:15 PM and “Communication with .NET Web Services from Flash” on Thursday, April 20 at 3:30 PM.

 

http://www.elearningguild.com/pbuild/linkbuilder.cfm?selection=doc.1067&templateid=1

 

 

ASTD International (Dallas, TX, May 8 – 10, 2006):

Booth: 1146

 

http://www.astd.org/astd/Conferences/ICE/ICE06/ice06_home

 

 

ToolBook User's Conference / e-Learning Authoring Conference (Colorado Springs, CO, June 19 – 21)

Our favorite event of the year

Jeff Rhodes and Chris Bell will be presenting numerous sessions.

 

http://www.tbcon.com / http://www.elearncon.net

 

 

Training Fall (Denver, CO, October 23 - 26, 2006):

Booth: 712

 

http://www.trainingfall.com

 

 

Platte Canyon Products in the Pipeline

 

We are hard at work on Plug-In Pro version 7. The first major update of our flagship ToolBook product in four years, version 7 has a ton of new features including the ability to batch import JPEGs and GIFs, write Sticky Notes to a file, save Command Window scripts, list media played via the Universal Media Player, and much more. Also in development is the Training Studio mentioned above.

 

 

Coming in the Next Issue of The EnterPage

 

·         Another Plug-In Pro Tool Spotlight

·         More Expert Information, OpenScript Tips, and Web Hints from the "Learning & Mastering ToolBook" series

·         Another VBTrain Control Spotlight

·         Another VBTrain.Net Nugget

·         Another ActionScript Tip

·         More

 

About The EnterPage

 

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

 

Information on Subscriptions

 

To subscribe or unsubscribe, please send email to  HYPERLINK "mailto:ep@plattecanyon.com?subject=Subscription%20Change%20Request" ep@plattecanyon.com. Please include your name and company with new subscriptions.

 

 

All content Copyright Platte Canyon Multimedia Software Corporation, 2006.