Introduction Welcome to The EnterPage newsletter. We've been building reports for months for our new Tracker Reports product. For our existing Tracker.Net customers, we think you'll be amazed at the useful information you can provide your users. If you haven't yet decided on Tracker.Net, this might be the reason to take the plunge. Speaking of Tracker, we also created a whole solution for locating your content on another web server. We call this new product Remote Tracker. We are glad both these products are out of the way, though, as the 2010 e-Learning Authoring Conference is just around the corner. We can still get you in and prices are very low, so sign up today. We've got a great lineup of ToolBook, Flash, Flex, Silverlight, JavaScript, instruction design, and e-Learning Management sessions on tap. What will also be on tap are a great microbrew and a good choice of wine and other refreshments while you share ideas with developers from around the world. ToolBook 10.5 and Captivate 5 are just around the corner while Flash CS5, Flash Builder 4, and Visual Studio 2010 have recently shipped. This is the best place to get the inside scoop. Beyond Tracker, conference, and ToolBook news, this issue has the normal assortment of ToolBook, Flash, and .NET news, tips, and tricks. Enjoy! |
Two Weeks Until The e-Learning Authoring Conference - Sign Up Now We're up to 40 attendees. But we still have plenty of room and will be happy to fit you in, even if it is at the last minute. We'll have another great lineup of 18 one-hour session blocks over three days, with each block containing four sessions to choose from. We will be repeating many sessions twice so that you are not stuck with multiple "must attend" sessions in a single block. We'll have our usual strong lineup of ToolBook content as well as great sessions on Flash, Flex, Captivate, JavaScript, and other technologies. The sessions will be grouped into these subject areas: Flash/Flex/Silverlight, Management, ToolBook (Intermediate/Advanced), ToolBook (Introduction), and Web Technologies. There are many sessions for beginners, so don't feel like you need to be an experienced developer. If that isn't enough, we have an excellent lineup of preconference workshops. In addition to all the scheduled learning, there will be some great receptions, numerous networking opportunities, and the Help Desk where you can get answers to your individual questions. Frontier Airlines is also offering nice prices into Denver when you purchase by June 4th. Dates June 14 - 16, 2010 Preconference Training June 12 - 13, 2010 Conference Rates (Based on Your Choice of Lodging)
Register Rates Sessions Faculty Daily Schedule Preconference Workshops In addition to great information in the conference, you can participate in these outstanding preconference workshops: Saturday Morning, June 12, 2010
Preconference Rates (Does Not Include Meals or Lodging)
Register Preconference Workshops |
Tracker Reports Offers 164 Reports/Charts via Reporting Services
We are pleased to announce the availability of Tracker Reports, which offers 70 reports and 94 charts for use in SQL Server 2008 Reporting Services. Each report and chart includes its own database access as well as the ability to select some or all students, courses, lessons, classes, or organization. Many reports include "drill-down" capabilities where users can click on a parent item like a course and see child (lesson) information. Deployment is a matter of uploading to Report Manager and connecting to your Platte Canyon® Tracker.Net database. Within Report Manager, users can be given permissions to particular folders or reports, set up reports for a pre-selected organization or other items, email reports daily/weekly/monthly, and much more. Ad-hoc reporting using the Tracker Model and the SQL Server Report Builder is also included. More Information Tracker Reports Documentation Order Tracker Reports |
Introducing Remote Tracker We are also happy to tell you about Remote Tracker. This innovative product allows e-Learning content to be hosted on a different web site than your Tracker.Net learning management system (LMS). Without Remote Tracker, security restrictions within all browsers prevent the necessary SCORM communication when the content is on a different domain/web site than the LMS. With Remote Tracker, the remote content communicates directly with the Remote Tracker instance on the remote server. Remote Tracker then communicates the data back to the source LMS - all transparently to the user. More Information Remote Tracker Documentation Order Remote Tracker |
ToolBook 10.5 Preview Available If you aren't already working with the ToolBook 10.5 preview version, we recommend trying it out today. Some of the exciting new features include:
Note that Denny Dedmore of SumTotal Systems (as well as other faculty members) will be showing off 10.5 at the upcoming e-Learning Authoring Conference. ToolBook 10.5 Preview Information Download ToolBook 10.5 Preview |
Expert Information from the Learning & Mastering ToolBook Series By Jeff Rhodes, Platte Canyon Multimedia Software Corporation Using Resources of Another Book Question: I want to use a system book as a source of my images. Is this possible? Answer: This is definitely possible. I have included some code from our Plug-In Pro below that should help. The main idea is that you want to check to see if the resource is already there. If so, either use it or call replace resource. If not, you want to use import bitmap resource. In the code below, callingBookId would refer to your system book. You could get your hands on that by using sysBooks. For example: callingBookId = book (item 1 of sysBooks)Here is the code I mentioned. shortName = chars max(1, maxChars - 31) to maxChars of fullImageFile tempRef = "bitmap" && quote & shortName & quote && "of" && callingBookId oldImageRef = normalGraphic of placeholderId if isObject (tempRef) replace resource tempRef with imageFile normalGraphic of placeholderId = tempRef errString = ASYM_RestoreSuspend(blkSus) else import bitmap resource imageFile as shortName normalGraphic of placeholderId = bitmap shortName errString = ASYM_RestoreSuspend(blkSus) end if |
OpenScript Tip from the Learning & Mastering ToolBook Series
By Jeff Rhodes, Platte Canyon Multimedia Software Corporation Aligning Objects within Groups I was doing a demo of the Plug-In Pro awhile back and we got into a discussion of how it is a hassle if objects within a group (such as a multiple choice question) have gotten moved around slightly. I came up with the script to the left to deal with that. You figure out the desired left coordinate (4403 page units in this example), select the group, and then press Enter in the Command Window. The getObjectList function grabs all the objects within the selected object (group). We then pop each item from the list into a separate variable and set the x coordinate (item 1 of position) to the desired value. Note that passing FALSE to getObjectList means that all matching objects are included, regardless of whether they have a script. leftVal = 4403 objList = getObjectList(selection, "", FALSE) while objList <> null pop objList into objId item 1 of position of objId = leftVal end while |
Web Hint from the Learning & Mastering ToolBook Series
By Peter Jackson, ToolBookDeveloper.com Determining SkipNavigation via JavaScript Question: Does anyone know how to get the "skipNavigation" (DHTML) property of a page using either the Actions Editor or JavaScript? Answer: Take a look at the global.js file in the export folders e.g., ...\WebExport\{bookname}\ie7\ You will see close to the top: TBK._Gc.__b[TBK._Gc.__b.length]=new _wz(0,false,new Array("p0","p1","p2","p12","p3","p11","p4","p6","*p7","*p8","*p9","*p10")); Note that the above shows that page IDs 7, 8, 9 and 10 have skipNavigation set to true. |
ActionScript Tip
By Jeff Rhodes, Platte Canyon Multimedia Software Corporation Converting a Value to Boolean In a typical week, I'll work with ActionScript, Visual Basic, OpenScript, JavaScript, and perhaps even InstallScript. One of the possible traps of moving between languages is making assumptions that similar functions in different languages will in fact operate the same way. One recent example that bit me was in working with a Boolean (true/false) value in Flex and ActionScript. The issue as in a simple confirmation as to whether it was OK to exit the lesson. The design was to call this JavaScript function in order to get a standard "confirmation" dialog from the browser: confirmClose = function (message) { return window.confirm(message); } Here is how we called it from ActionScript: var returnString:String = ExternalInterface.call("confirmClose", exitMessage); So far, so good. But how do we convert the string returnString into a Boolean value? In other words, returnString will be either "true" or "false." My mistake was to use the syntax: var okToExit:Boolean = Boolean(returnString);You would this would work since the ActionScript Number() function will take a numeric string and convert it to a number. Similarly, the Visual Basic CBool() function will take "true" or "True" and convert it to the Boolean True. However, this "casting" function returns true for both "true" and "false!" So the user exited even if she clicked the "Cancel" button in the dialog. This is NOT what we wanted. If I had read the Flex documentation, this behavior is clearly stated: Casting to Boolean from a String value returns false if the string is either null or an empty string (""). Otherwise, it returns true. So what was the fix? Easiest for me was to create a ConvertToBoolean function that operated like I expected. The new syntax plus the function is shown below. var okToExit:Boolean = ConvertToBoolean(returnString); public function ConvertToBoolean(inputVal:String):Boolean { var returnVal:Boolean; if (inputVal == "true") { // need to check string since Boolean() looks for 1 or 0 returnVal = true; } else { returnVal = false; } return returnVal; } |
VBTrain.Net Nugget
By Jeff Rhodes, Platte Canyon Multimedia Software Corporation Visual Basic in Reports As I mentioned in the introduction to this newsletter, I've been spending a great deal of time building reports in Visual Studio for our new Tracker Reports product. While SQL Server Reporting Services has a number of great features, one of my favorites is the fact that you can embed Visual Basic code in the report itself. This can be extremely helpful with complex logic. For example, the completion status of a lesson or course can be expired, critical, or alert when it has an expiration date. Here is what the function looks like: Public Function DetermineCompletionStatus(ByVal completionStatusObj As Object, _ ByVal expirationDateObj As Object, ByVal currentDays_CriticalObj As Object, _ ByVal currentDays_AlertObj As Object, Optional ByVal isCourse as Boolean = True) As String Dim completionStatus As String Dim expirationDateId, currencyCriticalDate, currencyAlertDate As DateTime Dim currencyCriticalDays, currencyAlertDays As Integer Dim checkExpiration As Boolean = isCourse Dim defaultStatus as String = "Not Started" If isCourse = False Then defaultStatus = "not attempted" End If If IsDBNull(completionStatusObj) = True Then completionStatus = defaultStatus Else completionStatus = CStr(completionStatusObj) If completionStatus = "" completionStatus = defaultStatus End If End If Dim returnString As String = completionStatus If IsDBNull(expirationDateObj) = True OrElse expirationDateObj Is String.Empty OrElse _ IsNothing(expirationDateObj) = True OrElse expirationDateObj.ToString = "" Then expirationDateId = DateTime.MinValue Else Try expirationDateId = Convert.ToDateTime(expirationDateObj) Catch ex As Exception expirationDateId = DateTime.MinValue End Try If expirationDateId > DateTime.MinValue Then If IsDBNull(currentDays_CriticalObj) = True OrElse IsNothing(currentDays_CriticalObj) = True OrElse _ currentDays_CriticalObj.ToString = "" OrElse currentDays_CriticalObj.ToString = "-10" Then currencyCriticalDays = 0 currencyCriticalDate = expirationDateId Else currencyCriticalDays = CInt(currentDays_CriticalObj) currencyCriticalDate = expirationDateId.AddDays(-(currencyCriticalDays)) End If If IsDBNull(currentDays_AlertObj) = True OrElse IsNothing(currentDays_AlertObj) = True OrElse _ currentDays_AlertObj.ToString = "" OrElse currentDays_AlertObj.ToString = "0" OrElse _ currentDays_AlertObj.ToString = "-10" Then currencyAlertDays = 0 currencyAlertDate = expirationDateId Else currencyAlertDays = CInt(currentDays_AlertObj) currencyAlertDate = expirationDateId.AddDays(-(currencyAlertDays)) End If End If End If Select Case completionStatus.ToLower Case "completed", "passed" ' expiration Date checkExpiration = True End Select If checkExpiration = True Then If expirationDateId <> DateTime.MinValue Then If (expirationDateId <= Now) Then Dim expiredString As String = "Expired" returnString = expiredString ElseIf (currencyCriticalDate <= Now) Then returnString = "Critical" ElseIf (currencyAlertDate <= Now) Then returnString = "Alert" End If End If End If returnString = StrConv(returnString, VbStrConv.ProperCase) Return returnString End FunctionWithin the report itself, we can use an expression for the value for the "status" rather than linking to just a single column from our query. For example, here is an expression for the course status: =Code.DetermineCompletionStatus(Fields!CompletionStatus.Value, Fields!ExpirationDate.Value, _ Fields!CurrencyDaysFlag_Critical.Value, Fields!CurrencyDaysFlag_Alert.Value) Notice how we begin the expression with Code to denote that we are using our own code rather than built-in operators. |
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 |