Just got my CBT Edition and have questions:

  1. Am I correct in reading that the Course Management System (CMS) requires prior registering of students and only holds 500 names? If so, the CMS is not useful to sites with a large number of employees. Why not a simple system where a student can log on and a record is created?
  2. When using a template from the Book Specialist, an ask box pops up at reader level asking for my name. How do I turn this off? Most large sites can't go by name - we use employee number or SSN.
  3. If I use the "limit number of tries" function for a question, the reader gets an unfriendly and confusing message when the number of tries is exceeded - something like "This question is locked". How can I modify this so the user knows what is happening?
  4. In following the tutorial (page 25, step 4), I get a GPF every time I try to enter text for answer 4. It only happened for the question widget used in the tutorial, not others. Possible problem?
I'm disappointed that the whole CMS will not be useful; same maybe with Book Specialist if I can't modify some of the features. Widgets look great!
1a. Yes you are correct in reading that the CMS doesn't have an "auto login" feature. Hopefully next version (if there are sufficient requests...) The CMS is meant to be completely functional for what it does, and flexible enough to allow you power users to make it do what you want it to do. It was all written in OpenScript using the TB30PDX DLL so you can make it do anything. To add an auto login basically all you would have to do is copy the scripts to add users from the admin book into your new student module and modify the login page to ask for the information you want to store. Then set the asym_CMS_userID to the new ID and the asym_CMS_accessRights to 1 for student privileges. Let us know how it goes. Post your new student module (or the steps you took to modify it) if you are into freeware (it would be useless to anyone without the CBT DLLs and sysbooks so it shouldn't give anyone who doesn't have CBT anything free).

1b. The limit is due to the limit of 32,000 characters in a ToolBook field. Since the CMS is a ToolBook application in order to prevent the "String too long to fit" ES the limit of 500 courses and 500 users per database was imposed. 500 is picked because for a name there can be up to 32 characters for LastName, 32 for FirstName, and 1 for MiddleInitial. When a name is displayed in the UI each line contains LastName, FirstName MiddleInitial (32+2+32+ 1 + 1) followed by 10 TAB characters followed by the ID of the user. This comes out to a worst case estimate (the ID can be up to 10 characters but not likely more than 5) of 83 characters per line plus 2 for the CRLF and that's 85 per line 85 goes into 32,000 376 times. Since it is not likely EVERY user name will have all 32 characters for first and last name I picked 500 as safe. Course Names can be 32 characters in size + 10 TABS + course ID + CRLF which gives 680 as a max for worst case. 10 tabs is a little overkill in most cases and 5 might do which would give you a few more.

As in 1a, you can certainly write code to handle the case when the result of a query for a list of students or courses returns > 32 K of text or tweak the 500 limit to fit your know usage of the system. You could move the limit to 64 K of text since that is all that one variable can hold or you could come up with a scheme that did the query in "pages" where a set of variables held the result of the query.

The easier thing to do and the approach I would take myself is to break it up into multiple CMS databases with in initial dialog that allows the user to pick which "departments" courses to take and that dialog sets the asym_CMS_DataDir() to the directory where the database for that "departments" courses are located. Similar to breaking up post offices in mail or user accounts on multiple servers/machines. You could add a page to the admin to setup these multiple databases and maintain the INI items that stored the descriptions and paths an INI file everybody had access to.

Since the login doesn't require displaying a long list of anything, you could even have one central user database for tracking users and then allowed them to specify which database to look at so you wouldn't have to have multiple user accounts for one user.


2. This is for the log file option. If you don't care about the users name, set the s_ASYM_UserName system variable in the enterApplication script before you forward to some non-null value. If you start the book from the CMS this will be automatically set by the CMS to the value of the ASYM_CMS_UserName(). If you want to request some id other than name, put up your own dialog and set the s_ASYM_UserName system variable and that will be written to the log file instead of a name.

The string used to prompt the user for their name comes from the Generic Runtime System Prompts for . If you don't want to put up your own dialog but want to request some identification from the user you can change this string from the CBT Extensions to the book properties dialog (Ctrl + Shift + F8), go to the General Information tab and press the button at the bottom of the screen. You can change this string to ask for the users employee number or SSN. [You can change the login screen of the CMS to ask the user for an employee number or SSN also...]

The specialists are just ToolBook books that build other ToolBook books. You can modify them to do anything you want (provided you can write the OpenScript.) There are 2 (I believe there 2 there may only be 1) generic specialists that give a starting point to begin your own if you want to make a completely different one from the ones provided. The ones provided are again, fully functional for what they do and all the scripts are there for you to modify them to do anything custom you want them to do.

3. The string that gets displayed for "The question is Locked" is also a Generic Runtime System Prompt under the tag and you can change it right there in the dialog without writing any script (pretty cool huh) To keep any feedback from coming up you could put a get handler for ASYM_GetString(strgName,strgDefault) in your book script and watch for the "QuestionLocked" tag and return null which will keep anything from popping up. There are many other possibilities that could work too but I won't go into them right now because I may have already answered your concern.

4. I'm not sure why your getting a GPF. You might want to trace into the widget in the debugger to see where you are specifically GP Faulting. If it is reproducible, get in touch with Technical Support and get the repro case to them so they can get a bug filed and we can fix it.

One of the goals of the CBT edition is to provide a framework and an protocol for ToolBook authors to customize to their specific needs. (We really don't like to hold back release of a product implementing features 5% to 10% of users will be using so we tried to leave enough flexibility for the user to make whatever widgets they wanted so they work with the protocol for scoring and tracking.)

 
Jeffrey Ayars
Asymetrix Corporation

Revised 5/5/95
brianp@u.washington.edu (Brian Parkhurst)
University of Washington
Box 357260
Seattle, WA 98195-7260
206/543-9175