Monday, November 08, 2010 at 12:00 AM.
scripting2Suite.server.getOutlineFromUrl
on getOutlineFromUrl (username, url) {
<<Changes
<<7/14/10; 7:04:33 PM by DW
<<Add new outline -- "instantOutline"
<<6/27/10; 9:30:16 AM by DW
<<This url business was a mistake, but I don't want to unwind it all the way right now (getting ready for a hand-off).
<<So... if it begins with http:// treat it as a url and assume it points to a story, get the story and return its opml text.
<<If it doesn't begin with http://, it's blogroll, hometemplate or one of the other special outlines.
<<6/11/10; 10:26:02 PM by DW
<<Factored into urlToStory so we could share code with the save routine.
<<on getOutlineFromUrl (username, url)
<<Changes
<<6/10/10; 1:53:02 PM by DW
<<Added special cases for blogroll, hometemplate and storytemplate.
<<6/10/10; 11:29:23 AM by DW
<<Get the OPML text for stories. Later we'll add special cases for the other outlines we work with, like templates and the blogroll.
<<http://scripting.com/stories/2010/06/10/myScripting2Todo.html
<<local (adrdata = scripting2suite.inituser (username), adrsystemdata = scripting2suite.init (), baseurl)
<<bundle //get baseurl
<<if adrdata^.prefs.ftp.enabled
<<baseurl = adrdata^.prefs.ftp.url
<<else
<<baseurl = adrsystemdata^.prefs.baseurl + username + "/"
<<local (s = string.delete (url, 1, sizeof (baseurl)), type) //now it's stories/2010/06/10/myScripting2Todo.html
<<type = string.nthfield (s, "/", 1)
<<s = string.delete (s, 1, sizeof (type) + 1)
<<case string.lower (type)
<<"stories"
<<local (year, month, day, adrday, adrstory)
<<year = string.nthfield (s, "/", 1)
<<month = string.nthfield (s, "/", 2)
<<day = string.nthfield (s, "/", 3)
<<adrday = @adrdata^.calendar.[year].[month].[day]
<<for adrstory in adrday
<<if string.lower (adrstory^.url) == string.lower (url)
<<return (adrstory^.opmltext)
<<"blogroll"
<<return (op.outlinetoxml (@adrdata^.prefs.blogroll))
<<"hometemplate"
<<return (op.outlinetoxml (@adrdata^.prefs.homeTemplate))
<<"storytemplate"
<<return (op.outlinetoxml (@adrdata^.prefs.storyTemplate))
<<scripterror ("Can't get the outline identified by the url \"" + url + "\" because it doesn't exist.")
<<6/10/10; 1:53:02 PM by DW
<<Added special cases for blogroll, hometemplate and storytemplate.
<<6/10/10; 11:29:23 AM by DW
<<Get the OPML text for stories. Later we'll add special cases for the other outlines we work with, like templates and the blogroll.
<<http://scripting.com/stories/2010/06/10/myScripting2Todo.html
local (adrdata = scripting2suite.inituser (username), type, adrstory, lowerurl = string.lower (url));
if lowerurl beginswith "http://" {
scripting2Suite.server.urlToStory (username, url, @type, @adrstory);
return (adrstory^.opmltext)}
else {
case lowerurl {
<<"stories"
<<return (adrstory^.opmltext)
"blogroll" {
return (op.outlinetoxml (@adrdata^.prefs.blogroll))};
"hometemplate" {
return (op.outlinetoxml (@adrdata^.prefs.homeTemplate))};
"storytemplate" {
return (op.outlinetoxml (@adrdata^.prefs.storyTemplate))};
"stylesheet" {
return (op.outlinetoxml (@adrdata^.prefs.stylesheet))}; //6/11/10 by DW
"instantoutline" {
local (s = adrdata^.prefs.instantOutline.opmltext);
if sizeof (s) == 0 {
local (instantOutline);
new (outlinetype, @instantOutline);
s = op.outlinetoxml (@instantOutline)};
return (s)}}}}; //7/14/10 by DW
bundle { //test code
local (tc = clock.ticks (), opmltext);
for i = 1 to 1 {
opmltext = getOutlineFromUrl ("davewiner", "http://scripting.com/stories/2010/06/10/myScripting2Todo.html")};
dialog.alert (clock.ticks () - tc)}
<<op.xmltooutline (opmltext, @scratchpad.storyoutline)
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.