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.
The string used to prompt the user for their name comes from the Generic
Runtime System Prompts for
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
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