Monday, November 08, 2010 at 12:03 AM.


local (adr, adrNewPage, title, titleString);
local (maxLength = html.getPref ("maxFileNameLength"));

try {adr = table.getCursorAddress ()};

if not defined (adr^) { //Prompt the user for the name of a website.
	local (websiteName);
	if not (dialog.ask ("Create new page in which website?", @websiteName)) {
		return (false)};
	adr = @websites.[websiteName];
	if not defined (adr^) { //Does the website exist?
		dialog.alert ("Can't create a new page because the website \"" + websiteName + "\" doesn't exist.");
		return (false)}};

if typeOf (adr^) != tableType { //We're creating the new page in a table.
	adr = parentOf (adr^)};

if not dialog.ask ("Title of new page?", @title) { //Get the title from the user.
	return (false)};
adrNewPage = @adr^.[string.dropNonAlphas (string.innerCaseName (title))]; //Get the address for the new page.
titleString = "#title \"" + title + "\"\r"; //This directive will appear at the top of the new page.

if defined (adrNewPage^) { //The page already exists!
	edit (adrNewPage); //Open the already-existing page for editing.
	return (false)}; //Return false to say that a new page wasn't created.

wp.newTextObject (titleString, adrNewPage); //Create the new page.
edit (adrNewPage); //Open the new page for editing.
return (true) //A new page was created.

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.