Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.outliner.menuCommands.subscribeToOutline
<<Changes <<3/25/02; 5:50:21 PM by JES <<Created. local (url = "http://"); if dialog.ask ("Enter the URL of an outline to subscribe to:", @url) { if not (url beginsWith "http://") { url = "http://" + url}; local (adrdata = radio.outliner.init ()); local (author = "Anonymous"); local (adrsubscription = @adrdata^.subscriptions.[url]); if defined (adrsubscription^) { frontier.bringtofront (); radio.outliner.openBuddies (true, true); return}; <<bundle //factored code <<local (localoutline) <<try <<try //to get the author from the OPML <<local (adrincache = radio.outliner.preCacheUrl (url)) <<local (xstruct) <<xml.compile (adrincache^.xmltext, @xstruct) <<local (nomad = xml.getAddress (@xstruct, "opml")) <<nomad = xml.getAddress (nomad, "head") <<nomad = xml.getAddress (nomad, "ownerName") <<author = nomad^ <<radio.outliner.read (url, @localoutline) <<else <<scriptError ("Can't subscribe to the outline because there was an error reading it. \"" + tryerror + "\".") <<new (tabletype, adrsubscription) <<adrsubscription^.author = author <<adrsubscription^.outline = localoutline <<adrsubscription^.whenCreated = clock.now () <<adrsubscription^.whenLastPoll = date (0) <<radio.outliner.openBuddies (true) radio.outliner.subscribeUrl (url, author)}
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.