Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.discuss.openRoot
on openRoot (pta=nil) {
<<Adds another level to mainResponder.discuss.openFile.
<<We return the address of the root of the discussion group referenced by rootname. This is the central routine for allowing multiple discussion roots.
<<1/10/99; 9:50:54 AM by DW
<<Changes
<<Wed, 03 Mar 1999 21:19:08 GMT by AR
<<Fixed scriptError message to use the correct variable name.
<<Mon, Aug 2, 1999 at 2:14:13 PM by PBS
<<Optional pta parameter allows us to circumvent the try statement if pta is passed. Try statements should be avoided when possible. (mainResponder profiling showed that this verb was a minor performance bottleneck in its previous state.)
<<Removed local declaration of f -- it was unused.
<<Added several comments to the script.
<<10/2/99; 10:38:00 PM by PBS
<<Addresses (and strings that can be coerced to addresses) are allowed in discuss.root. These addresses point to discussion group storage. This was implemented to allow for greater portability: a website guest database can contain its discussion group.
local (rootName = config.mainResponder.prefs.defaultDiscussRoot, adr);
if pta == nil { //if the address of the page table wasn't passed...
try {pta = html.getPageTableAddress ()}}; //...get the address of the page table
if defined (pta^.discussionRoot) { //is the name of dg in the page table?
rootName = pta^.discussionRoot}; //get the name of the dg from the page table
adr = @[system.temp.mainResponder.discussRootFile].[rootName]; //get the address of the discussion group
on error () {
scriptError ("There is no discussion root named \"" + rootName + "\".")}; //It doesn't exist: generate a script error
if not defined (adr^) { //does this discussion group exist?
error ()};
if typeOf (adr^) == addressType or typeOf (adr^) == stringType { //PBS 10/2/99: handle addresses in discuss.root
if not defined (adr^^) { //make sure this address points somewhere
error ()};
adr = adr^}; //de-reference the address
return (adr)} //return the address of the discussion group
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.