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

	<<12/1/01; 5:36:12 PM by JES
		<<Expand the node in a try, so errors can be presented to the user. If the file has no URL attribute, display an error.
	<<12/1/01; 5:10:00 PM by JES
		<<Set display to false, to make the outline update look smoother.
	<<8/10/01; 7:10:51 PM by JES
		<<Call, which is the bottleneck for the File->Open URL command. If the file can be inserted as a sub-outline, it will be, otherwise it's opened in the web browser.
	<<12/31/00; 5:34:31 PM by JES
		<<On Macs, convert opml to Mac text before converting to an outline.
		<<Sat, Dec 2, 2000 at 5:53:29 PM by JES
			<<Properly handle URLs that don't end in .html, and URLs that start with file:///.
		<<Thursday, September 28, 2000 at 2:09:40 AM by JES
			<<Bring the web browser to the front when opening html files.
		<<Wednesday, September 20, 2000 at 2:15:14 PM by PBS
			<<Call playlist.httpClient so the script can accept OPML documents.
		<<Friday, August 25, 2000 at 12:10:27 PM by DW
			<<Open HTML files in the Web browser.
		<<Friday, August 18, 2000 at 5:40:48 PM by DW
			<<Undo workaround for op.insertoutline.
		<<Saturday, August 12, 2000 at 9:36:47 PM by DW
			<<Called when the user 2clicks on a user node. We fill in the contents of their directory outline, in the indicated folder.
local (oldTarget = target.set (window.frontmost ()));
local (oldDisplay = op.getDisplay ());
op.setDisplay (false);
local (url, xmlText);
url = string.replaceall (url, " ", "%20");
if op.attributes.getOne ("url", @url) {
	try { (url, true)} //true means open as a sub-outline
	else {
		dialog.alert (tryError)}}
else {
	dialog.alert ("Can't expand the file because its URL is unknown.")};
op.setDisplay (oldDisplay);
try {target.set (oldTarget)}
<<bundle //old code
	<<case true
		<<string.lower (url) endswith ".opml"
			<<local (urllist = string.urlsplit (url))
			<<if string.lower (urllist[1]) beginsWith "file:" //12/02/00 JES: the URL may be to a local opml file.
				<<xmlText = file.readWholeFile (file.urlToFile (url))
				<<xmltext = string.httpResultSplit (tcp.httpClient (server:urllist [2], path:urllist [3], flAcceptOpml:true))
			<<local (localoutline)
			<<wp.newtextobject (xmltext,
			<<if system.environment.isMac
				<<xmlText = string.latinToMac (xmlText)
			<<op.xmltooutline (xmltext, @localoutline)
			<<op.deletesubs ()
			<<op.insertoutline (@localoutline, right)
			<<if date.versionLessThan (Frontier.version (), "7.0b13")
				<<op.go (left, 1)
		<<webbrowser.openUrl (url)
		<<webbrowser.bringToFront ()

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.