®K¼XV¹"Oūŗ#!—  !6 BF R „šŗ#!—¦ ®author Dave Winer authorEmaildave@userland.com description homePageUrl)http://radio.outliners.com/weblogOutlinernameMy Weblog Outliner releaseDateversion0.2 ¹"Ośŗ# ē l"Arial ·ī?'ŗ#!Ąq“¢LAND’’’’’’winChanges 10/23/02; 4:53:36 PM by DW Runs on the user's machine, when refreshing. local (adrtable = @system.temp.myWeblogOutlinerSnapshot) myWeblogOutlinerInfo = adrtable^.info myWeblogOutlinerNodeTypes = adrtable^.nodeTypes myWeblogOutlinerSuite = adrtable^.suite myWeblogOutlinerWebsite = adrtable^.website myWeblogOutlinerWindowTypes = adrtable^.windowTypes filemenu.savemyroot (@myWeblogOutlinerSuite) local (x = string.parseAddress (@myWeblogOutlinerSuite), f = x [1]) frontier.tools.install (f) dialog.notify ("Thanks for updating.") „„€€€€€€€€€€€€€€€€€BĘ Arial ·ī?޹܂õ]4“ąLAND’’’’’’win10/17/02; 8:22:08 AM by DW This is the Refresh menu command. local (url = "http://radio.weblogs.com/0001015/userland/publicTools/myWeblogOutliner/codeFreshener.fttb") local (urllist = string.urlsplit (url)) local (s = tcp.httpclient (server:urllist [2], path:urllist [3])) local (f = frontier.pathstring + "codeFreshener.fttb") file.writewholefile (f, s) fatpages.importfatfile (f) thread.callscript (@system.temp.myWeblogOutlinerSnapshot.loader, {}) „€€€€€€€€€€€iœUArial ·ī=÷ŗ#!Ę$eČ—ņLAND’’’’’’winChanges 10/23/02; 4:43:35 PM by DW Created. myWeblogOutlinerInfo.releaseDate = clock.now () local (adrtable = @system.temp.myWeblogOutlinerSnapshot) new (tabletype, adrtable) adrtable^.info = myWeblogOutlinerInfo adrtable^.nodeTypes = myWeblogOutlinerNodeTypes adrtable^.suite = myWeblogOutlinerSuite adrtable^.website = myWeblogOutlinerWebsite adrtable^.windowTypes = myWeblogOutlinerWindowTypes adrtable^.loader = myWeblogOutlinerSuite.codeFreshener.loadNewCode local (folder = "C:\\Program Files\\Radio UserLand\\www\\userland\\publicTools\\myWeblogOutliner\\") local (f = folder + "codeFreshener.fttb") file.surefilepath (f) export.sendobject (adrtable, f) f = folder + "myWeblogOutliner.root" target.set (this) fileMenu.saveCopy (f) radio.thread.wake () dialog.alert (file.filefrompath (f) + " is " + string.megabytestring (file.size (f))) „€€€€€€€€€€€€€€€€€€€€€€€€€i×}.øRŽ?øRŽG  $0 ? loadNewCode£ refreshCodeµreleaseNewCodeAVArial Ŗ‚3x¤1×Y6«Arial ¹Śąī¹Śī„ŸŠYŻLAND’’’’’’win 1.5 25 bold €€€€€€€€€Y:6¹Śąß¹ŚčT virginRules ™:ˆ Arial ¹ŚÄjŗ#Ó*ošsLAND’’’’’’winChanges 10/22/02; 9:01:37 AM by DW Created. Manages a windowType called weblogPost. Creates and edits posts using the MetaWeblog API. if not defined (Frontier.tools.data.windowTypes.blogPost) Frontier.tools.data.windowTypes.weblogPost = @weblogPost.windowType if not defined (user.myWeblogOutliner) new (tabletype, @user.myWeblogOutliner) bundle //prefs if not defined (user.myWeblogOutliner.prefs) new (tabletype, @user.myWeblogOutliner.prefs) if not defined (user.myWeblogOutliner.prefs.rules) user.myWeblogOutliner.prefs.rules = myWeblogOutlinerSuite.data.virginRules if not defined (user.myWeblogOutliner.prefs.currentSite) user.myWeblogOutliner.prefs.currentSite = "localRadio" bundle //archive prefs if not defined (user.myWeblogOutliner.prefs.archive) new (tabletype, @user.myWeblogOutliner.prefs.archive) if not defined (user.myWeblogOutliner.prefs.archive.folder) local (pc = file.getpathchar ()) user.myWeblogOutliner.prefs.archive.folder = frontier.pathstring + "My Weblog Outliner" + pc + "Archive" + pc if not defined (user.myWeblogOutliner.prefs.archive.count) user.myWeblogOutliner.prefs.archive.count = 0 if not defined (user.myWeblogOutliner.prefs.archive.flOpenFolder) user.myWeblogOutliner.prefs.archive.flOpenFolder = false bundle //sites if not defined (user.myWeblogOutliner.sites) new (tabletype, @user.myWeblogOutliner.sites) if not defined (user.myWeblogOutliner.sites.localRadio) new (tabletype, @user.myWeblogOutliner.sites.localRadio) if not defined (user.myWeblogOutliner.sites.localRadio.blogId) user.myWeblogOutliner.sites.localRadio.blogId = "home" if not defined (user.myWeblogOutliner.sites.localRadio.enabled) user.myWeblogOutliner.sites.localRadio.enabled = true if not defined (user.myWeblogOutliner.sites.localRadio.flUseMetaWeblogApi) user.myWeblogOutliner.sites.localRadio.flUseMetaWeblogApi = true if not defined (user.myWeblogOutliner.sites.localRadio.password) user.myWeblogOutliner.sites.localRadio.password = user.radio.prefs.security.remotePassword if not defined (user.myWeblogOutliner.sites.localRadio.port) user.myWeblogOutliner.sites.localRadio.port = 5335 if not defined (user.myWeblogOutliner.sites.localRadio.rpcPath) user.myWeblogOutliner.sites.localRadio.rpcPath = "/RPC2" if not defined (user.myWeblogOutliner.sites.localRadio.server) user.myWeblogOutliner.sites.localRadio.server = "127.0.0.1" if not defined (user.myWeblogOutliner.sites.localRadio.username) user.myWeblogOutliner.sites.localRadio.username = user.radio.prefs.security.remoteUsername bundle //settings if not defined (user.myWeblogOutliner.settings) new (tabletype, @user.myWeblogOutliner.settings) bundle //old old stuff bundle //Blogger prefs if not defined (user.myWeblogOutliner.prefs.blogger) new (tabletype, @user.myWeblogOutliner.prefs.blogger) if not defined (user.myWeblogOutliner.prefs.blogger.enabled) user.myWeblogOutliner.prefs.blogger.enabled = false if not defined (user.myWeblogOutliner.prefs.blogger.server) user.myWeblogOutliner.prefs.blogger.server = "plant.blogger.com" if not defined (user.myWeblogOutliner.prefs.blogger.port) user.myWeblogOutliner.prefs.blogger.port = 80 if not defined (user.myWeblogOutliner.prefs.blogger.rpcPath) user.myWeblogOutliner.prefs.blogger.rpcPath = "/api/RPC2" if not defined (user.myWeblogOutliner.prefs.blogger.blogid) user.myWeblogOutliner.prefs.blogger.blogid = "" if not defined (user.myWeblogOutliner.prefs.blogger.username) user.myWeblogOutliner.prefs.blogger.username = "" if not defined (user.myWeblogOutliner.prefs.blogger.password) user.myWeblogOutliner.prefs.blogger.password = "" if not defined (user.myWeblogOutliner.prefs.blogger.flUseMetaWeblogApi) user.myWeblogOutliner.prefs.blogger.flUseMetaWeblogApi = false bundle //Radio prefs if not defined (user.myWeblogOutliner.prefs.radio) new (tabletype, @user.myWeblogOutliner.prefs.radio) if not defined (user.myWeblogOutliner.prefs.radio.enabled) user.myWeblogOutliner.prefs.radio.enabled = false if not defined (user.myWeblogOutliner.prefs.radio.server) user.myWeblogOutliner.prefs.radio.server = "127.0.0.1" if not defined (user.myWeblogOutliner.prefs.radio.port) user.myWeblogOutliner.prefs.radio.port = 5335 if not defined (user.myWeblogOutliner.prefs.radio.rpcPath) user.myWeblogOutliner.prefs.radio.rpcPath = "/RPC2" if not defined (user.myWeblogOutliner.prefs.radio.blogid) user.myWeblogOutliner.prefs.radio.blogid = "home" if not defined (user.myWeblogOutliner.prefs.radio.username) user.myWeblogOutliner.prefs.radio.username = user.radio.prefs.security.remoteUsername if not defined (user.myWeblogOutliner.prefs.radio.password) user.myWeblogOutliner.prefs.radio.password = user.radio.prefs.security.remotePassword if not defined (user.myWeblogOutliner.prefs.radio.flUseMetaWeblogApi) user.myWeblogOutliner.prefs.radio.flUseMetaWeblogApi = true bundle //Movable Type prefs if not defined (user.myWeblogOutliner.prefs.movableType) new (tabletype, @user.myWeblogOutliner.prefs.movableType) if not defined (user.myWeblogOutliner.prefs.movableType.enabled) user.myWeblogOutliner.prefs.movableType.enabled = false if not defined (user.myWeblogOutliner.prefs.movableType.server) user.myWeblogOutliner.prefs.movableType.server = "www.myserver.com" if not defined (user.myWeblogOutliner.prefs.movableType.port) user.myWeblogOutliner.prefs.movableType.port = 80 if not defined (user.myWeblogOutliner.prefs.movableType.rpcPath) user.myWeblogOutliner.prefs.movableType.rpcPath = "/cgi-bin/mt-xmlrpc.cgi" if not defined (user.myWeblogOutliner.prefs.movableType.blogid) user.myWeblogOutliner.prefs.movableType.blogid = "1" if not defined (user.myWeblogOutliner.prefs.movableType.username) user.myWeblogOutliner.prefs.movableType.username = "" if not defined (user.myWeblogOutliner.prefs.movableType.password) user.myWeblogOutliner.prefs.movableType.password = "" if not defined (user.myWeblogOutliner.prefs.movableType.flUseMetaWeblogApi) user.myWeblogOutliner.prefs.movableType.flUseMetaWeblogApi = true „€€€„€€€€€€€€€€€€€€€€€€€€€€„±6Arial ¹ŪōŖŗ#‹ƒ}cLAND’’’’’’winon initAtts (adratts) Changes 10/23/02; 6:39:52 AM by DW Created. myWeblogOutlinerSuite.init () if not defined (adratts^.ctSaves) adratts^.ctSaves = 0 if not defined (adratts^.siteName) adratts^.siteName = user.myWeblogOutliner.prefs.currentSite €„€€€€€€€±²4Arial ¹"Oū¹Ü(?J„&LAND’’’’’’winmyWeblogOutlinerSuite.menuCommands.newWeblogItem () €²²$Arial ¹"Oūŗ#"eēJ„&LAND’’’’’’winMyWeblogOutliner New Weblog Post.. €€ +²p+ÓYŠ0Arial pIt%pČ2Arial ŗ"zIŗ#ē 8A‡öLAND’’’’’’winif dialog.ask ("URL for the site:", @user.myWeblogOutliner.prefs.urlNewServer) local (protocols) if metaweblog.utilities.getRsdSiteInfo (user.myWeblogOutliner.prefs.urlNewServer, @protocols) scratchpad.protocols = protocols; edit (@scratchpad.protocols) //debugging if defined (protocols.MetaWeblog) €€€€€Č. ŖArial ¹Üŗ# Ŗ¦‡õLAND’’’’’’winif dialog.ask ("Title for new weblog post?", @user.myWeblogOutliner.settings.newPostTitle) myWeblogOutlinerSuite.newWindow (user.myWeblogOutliner.settings.newPostTitle) €€.²X$¹Üŗ"zI  $ newServer- newWeblogItem.įVArial Ŗ‚3„ž+²D“Arial ¹Śč¹ī‘˜źæčÅLAND’’’’’’winon newWindow (title) return (Frontier.tools.windowTypes.newWindow ("weblogPost", false, title, outlineType, false, nil)) bundle //test code newwindow ("Testing a Local Outline") €€€€D¬2Arial ¹.F•¹.ró-ÅņÅ›LAND’’’’’’winon archive () Changes 6/13/02; 12:54:55 PM by DW Created. on breakUpOutline (adroutline, adrtable) local (copy1 = adroutline^, i, oldtarget = target.get ()) for i = 1 to op.countsummits () local (copy2 = copy1, j) target.set (@copy2) op.firstsummit () edit (@copy2) //debugging for j = 1 to i - 1 op.deleteline () op.go (down, 1) for j = 1 to op.countsummits () - 1 op.deleteline () op.go (down, 1) adrtable^.[op.getlinetext ()] = copy2 target.set (oldtarget) on replacenonalphas (s) local (i, sret = "") for i = 1 to sizeof (s) ch = s [i] if not string.isalpha (ch) ch = " " sret = sret + ch return (sret) local (oldtarget = target.set (@user.myWeblogOutliner.outline), outlinetable) new (tabletype, @outlinetable) breakUpOutline (@user.myWeblogOutliner.outline, @outlinetable) scratchpad.outlinetable = outlinetable local (adrsub, fname, f) for adrsub in @outlinetable fname = string.innercasename (replacenonalphas (searchengine.stripmarkup (nameof (adrsub^)))) f = user.myWeblogOutliner.prefs.archive.folder + fname + ".opml" if file.exists (f) local (ct = 1) loop f = user.myWeblogOutliner.prefs.archive.folder + fname + ct + ".opml" if not file.exists (f) break ct++ file.surefilepath (f) file.writetextfile (f, op.outlinetoxml (adrsub)) op.wipe () target.set (oldtarget) if user.myWeblogOutliner.prefs.archive.flOpenFolder file.openfolder (user.myWeblogOutliner.prefs.archiveFolder) bundle //test code archive () €„€€€€€€€€‚€€€€€‚€€€€€€€€€€¬›Arial ¹"Oū¹"OūJ„#LAND’’’’’’winThis script runs every hour. „›Arial ¹"Oū¹"OūJ„#LAND’’’’’’winThis script runs every minute. „œArial ¹"Oū¹"OūJ„#LAND’’’’’’winThis script runs every night. „œ{w.¹"Oū¹"Oū  ". 9 everyHour9į everyMinute:ˆ everyNight;1{ź fArial ¹(̹.LkJ„°WLAND’’’’’’winif dialog.confirm ("Archive current posts, and empty the outline?") myWeblogOutlinerSuite.archive () €€ź¶8Arial ¹"Q¹(ĢaJ„LAND’’’’’’winthread.callScript (@myWeblogOutlinerSuite.publish, {}) €¶½?Arial ¹&po¹&pŒJ„®WLAND’’’’’’winwebbrowser.openurl ("http://127.0.0.1:5335/myWeblogOutliner/") €½¶8Arial ¹*§y¹*«ōÕ>9ĄLAND’’’’’’winthread.callscript (@myWeblogOutlinerSuite.viewPost, {}) €¶ŽŠ8¹"Q¹*Ø  ( 1= BArchive<`Publish=VSettings>View>įŽ ¹"Oū¹"Oū ¹"Oū¹"Oū RN$¹"Oū¹"Oū  fileMenu@=user@iRŖ¶|Arial ¹"P¹.L=>’¾`LAND’’’’’’winif not defined (user.myWeblogOutliner) new (tabletype, @user.myWeblogOutliner) if not defined (user.myWeblogOutliner.outline) new (outlinetype, @user.myWeblogOutliner.outline) if not defined (user.myWeblogOutliner.prefs) new (tabletype, @user.myWeblogOutliner.prefs) bundle //archive prefs if not defined (user.myWeblogOutliner.prefs.archive) new (tabletype, @user.myWeblogOutliner.prefs.archive) if not defined (user.myWeblogOutliner.prefs.archive.folder) local (pc = file.getpathchar ()) user.myWeblogOutliner.prefs.archive.folder = frontier.pathstring + "My Weblog Outliner" + pc + "Archive" + pc if not defined (user.myWeblogOutliner.prefs.archive.count) user.myWeblogOutliner.prefs.archive.count = 0 if not defined (user.myWeblogOutliner.prefs.archive.flOpenFolder) user.myWeblogOutliner.prefs.archive.flOpenFolder = false bundle //Blogger prefs if not defined (user.myWeblogOutliner.prefs.blogger) new (tabletype, @user.myWeblogOutliner.prefs.blogger) if not defined (user.myWeblogOutliner.prefs.blogger.enabled) user.myWeblogOutliner.prefs.blogger.enabled = false if not defined (user.myWeblogOutliner.prefs.blogger.server) user.myWeblogOutliner.prefs.blogger.server = "plant.blogger.com" if not defined (user.myWeblogOutliner.prefs.blogger.port) user.myWeblogOutliner.prefs.blogger.port = 80 if not defined (user.myWeblogOutliner.prefs.blogger.rpcPath) user.myWeblogOutliner.prefs.blogger.rpcPath = "/api/RPC2" if not defined (user.myWeblogOutliner.prefs.blogger.blogid) user.myWeblogOutliner.prefs.blogger.blogid = "" if not defined (user.myWeblogOutliner.prefs.blogger.username) user.myWeblogOutliner.prefs.blogger.username = "" if not defined (user.myWeblogOutliner.prefs.blogger.password) user.myWeblogOutliner.prefs.blogger.password = "" if not defined (user.myWeblogOutliner.prefs.blogger.flUseMetaWeblogApi) user.myWeblogOutliner.prefs.blogger.flUseMetaWeblogApi = false bundle //Radio prefs if not defined (user.myWeblogOutliner.prefs.radio) new (tabletype, @user.myWeblogOutliner.prefs.radio) if not defined (user.myWeblogOutliner.prefs.radio.enabled) user.myWeblogOutliner.prefs.radio.enabled = false if not defined (user.myWeblogOutliner.prefs.radio.server) user.myWeblogOutliner.prefs.radio.server = "127.0.0.1" if not defined (user.myWeblogOutliner.prefs.radio.port) user.myWeblogOutliner.prefs.radio.port = 5335 if not defined (user.myWeblogOutliner.prefs.radio.rpcPath) user.myWeblogOutliner.prefs.radio.rpcPath = "/RPC2" if not defined (user.myWeblogOutliner.prefs.radio.blogid) user.myWeblogOutliner.prefs.radio.blogid = "home" if not defined (user.myWeblogOutliner.prefs.radio.username) user.myWeblogOutliner.prefs.radio.username = user.radio.prefs.security.remoteUsername if not defined (user.myWeblogOutliner.prefs.radio.password) user.myWeblogOutliner.prefs.radio.password = user.radio.prefs.security.remotePassword if not defined (user.myWeblogOutliner.prefs.radio.flUseMetaWeblogApi) user.myWeblogOutliner.prefs.radio.flUseMetaWeblogApi = true bundle //Movable Type prefs if not defined (user.myWeblogOutliner.prefs.movableType) new (tabletype, @user.myWeblogOutliner.prefs.movableType) if not defined (user.myWeblogOutliner.prefs.movableType.enabled) user.myWeblogOutliner.prefs.movableType.enabled = false if not defined (user.myWeblogOutliner.prefs.movableType.server) user.myWeblogOutliner.prefs.movableType.server = "www.myserver.com" if not defined (user.myWeblogOutliner.prefs.movableType.port) user.myWeblogOutliner.prefs.movableType.port = 80 if not defined (user.myWeblogOutliner.prefs.movableType.rpcPath) user.myWeblogOutliner.prefs.movableType.rpcPath = "/cgi-bin/mt-xmlrpc.cgi" if not defined (user.myWeblogOutliner.prefs.movableType.blogid) user.myWeblogOutliner.prefs.movableType.blogid = "1" if not defined (user.myWeblogOutliner.prefs.movableType.username) user.myWeblogOutliner.prefs.movableType.username = "" if not defined (user.myWeblogOutliner.prefs.movableType.password) user.myWeblogOutliner.prefs.movableType.password = "" if not defined (user.myWeblogOutliner.prefs.movableType.flUseMetaWeblogApi) user.myWeblogOutliner.prefs.movableType.flUseMetaWeblogApi = true €€€€€€€ŖŸbÅArial ¹&Lj¹&lż7÷ŠXźLAND’’’’’’winon main () local (pta = html.getpagetableaddress ()) pta^.title = myWeblogOutlinerInfo.name myWeblogOutlinerSuite.init () local (htmltext = "\r", indentlevel = 0) on add (s) htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r\n" if pta^.method == "POST" local (args = pta^.radioresponder.postargs) scratchpad.args = args; edit (@scratchpad.args) user.myWeblogOutliner.prefs.blogger.blogid = args.blogid user.myWeblogOutliner.prefs.blogger.flUseMetaWeblogApi = defined (args.flMetaWeblogApi) user.myWeblogOutliner.prefs.blogger.enabled = defined (args.flPublishToBlogger) user.myWeblogOutliner.prefs.radio.enabled = defined (args.flPublishToLocalRadio) user.myWeblogOutliner.prefs.blogger.password = binary (args.password) user.myWeblogOutliner.prefs.blogger.port = number (args.port) user.myWeblogOutliner.prefs.blogger.rpcPath = args.rpcPath user.myWeblogOutliner.prefs.blogger.server = args.server user.myWeblogOutliner.prefs.blogger.username = args.username add ("
"); indentlevel++ add (""); indentlevel++ on addrow (label, adrvalue, type="text") add ("") add ("") bundle //Radio prefs add ("") local (checked) if user.myWeblogOutliner.prefs.radio.enabled checked = "xxx checked" else checked = "xxx" add ("") bundle //Blogger prefs add ("") local (checked) if user.myWeblogOutliner.prefs.blogger.enabled checked = "xxx checked" else checked = "xxx" add ("") addrow ("Blog ID", @user.myWeblogOutliner.prefs.blogger.blogid) addrow ("Username", @user.myWeblogOutliner.prefs.blogger.username) addrow ("Password", @user.myWeblogOutliner.prefs.blogger.password, "password") addrow ("Server", @user.myWeblogOutliner.prefs.blogger.server) addrow ("Port", @user.myWeblogOutliner.prefs.blogger.port) addrow ("Path", @user.myWeblogOutliner.prefs.blogger.rpcPath) bundle //MetaWeblog API checkbox add ("") local (checked) if user.myWeblogOutliner.prefs.blogger.flUseMetaWeblogApi checked = "xxx checked" else checked = "xxx" add ("") add ("
" + label + ":

This page allows you to configure the My Weblog Outliner Tool The complete docs are here.


Radio Prefs

It's easy to publish from the outliner to your Radio weblog, just check the box, there's no more information to enter.


 Check this box to publish to your Radio weblog.

Blogger Prefs

It's just as easy to publish from your outline to Blogger, just check the box, enter your Blog ID, username, password, etc and when you click on the outliner Publish button your posts will appear on your Blogger site. Note, if you're publishing to another weblog tool that supports the Blogger API, such as Manila, check this box and fill in the prefs, according to the docs.


 Check this box to publish to your Blogger weblog.


MetaWeblog API

Some weblog tools support a more advanced interface called the MetaWeblog API. If your weblog tool supports this, we can send information about Titles and Links for each post.


 Check this box to publish using the MetaWeblog API.

"); indentlevel-- add ("

") add ("
"); indentlevel-- return (htmltext) €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ŸĄ <Arial ¹"fy¹"fŽن”LAND’’’’’’winmyWeblogOutlinerSuite.init () myWeblogOutlinerSuite.open () €€Ą:6¹"fm¹"fy openOutlineeT:F¼Arial ¹"P†¹"QA¼\6ćLAND’’’’’’winlocal (title = user.prefs.name + "'s Weblog Outline") myWeblogOutlinerSuite.init () edit (@user.myWeblogOutliner.outline, windowTitle:title, adrButtonTable:@myWeblogOutlinerSuite.buttons) €€€FäøArial ¹*—[¹éMub€i•LAND’’’’’’winMy Weblog Outliner preferences Movable Type Prefs <%radio.prefs.checkboxPref ("Check this box to publish to your Movable Type weblog.", @user.myWeblogOutliner.prefs.movableType.enabled)%>
<%radio.prefs.stringPref ("Username", @user.myWeblogOutliner.prefs.movableType.username)%> <%system.temp.radio.repeatedPassword = user.myWeblogOutliner.prefs.movableType.password; ""%> <%radio.prefs.stringPref ("Password", @system.temp.radio.repeatedPassword, type:"password")%> <%radio.prefs.stringPref ("Repeat password", @user.myWeblogOutliner.prefs.movableType.password, type:"password")%> <%try {delete (@system.temp.radio.repeatedPassword)}; ""%> <%radio.prefs.stringPref ("Server", @user.myWeblogOutliner.prefs.movableType.server)%> <%radio.prefs.stringPref ("Port", @user.myWeblogOutliner.prefs.movableType.port)%> <%radio.prefs.stringPref ("Path", @user.myWeblogOutliner.prefs.movableType.rpcPath)%> Radio UserLand Prefs It's easy to publish from the outliner to your Radio weblog, just check the box. The other settings are initialized to route posts to the copy of Radio running on this machine. If you want to use the Weblog Outliner to post to a copy of Radio on another machine, you will need to edit the settings below the checkbox.

<%radio.prefs.checkboxPref ("Check this box to publish to your Radio weblog.", @user.myWeblogOutliner.prefs.radio.enabled)%>
<%radio.prefs.stringPref ("Username", @user.myWeblogOutliner.prefs.radio.username)%> <%system.temp.radio.repeatedPassword = user.myWeblogOutliner.prefs.radio.password; ""%> <%radio.prefs.stringPref ("Password", @system.temp.radio.repeatedPassword, type:"password")%> <%radio.prefs.stringPref ("Repeat password", @user.myWeblogOutliner.prefs.radio.password, type:"password")%> <%try {delete (@system.temp.radio.repeatedPassword)}; ""%> <%radio.prefs.stringPref ("Server", @user.myWeblogOutliner.prefs.radio.server)%> <%radio.prefs.stringPref ("Port", @user.myWeblogOutliner.prefs.radio.port)%> <%radio.prefs.stringPref ("Path", @user.myWeblogOutliner.prefs.radio.rpcPath)%> Blogger Prefs It's just as easy to publish from your outline to Blogger, just check the box, enter your Blog ID, username, password, etc and when you click on the outliner Publish button your posts will appear on your Blogger site. Note, if you're publishing to another weblog tool that supports the Blogger API, such as Manila, check this box and fill in the prefs, according to the docs.

<%radio.prefs.checkboxPref ("Check this box to publish to your Blogger weblog.", @user.myWeblogOutliner.prefs.blogger.enabled)%>
<%radio.prefs.stringPref ("Blog ID", @user.myWeblogOutliner.prefs.blogger.blogid)%> <%radio.prefs.stringPref ("Username", @user.myWeblogOutliner.prefs.blogger.username)%> <%system.temp.radio.repeatedPassword = user.myWeblogOutliner.prefs.blogger.password; ""%> <%radio.prefs.stringPref ("Password", @system.temp.radio.repeatedPassword, type:"password")%> <%radio.prefs.stringPref ("Repeat password", @user.myWeblogOutliner.prefs.blogger.password, type:"password")%> <%try {delete (@system.temp.radio.repeatedPassword)}; ""%> <%radio.prefs.stringPref ("Server", @user.myWeblogOutliner.prefs.blogger.server)%> <%radio.prefs.stringPref ("Port", @user.myWeblogOutliner.prefs.blogger.port)%> <%radio.prefs.stringPref ("Path", @user.myWeblogOutliner.prefs.blogger.rpcPath)%> Archiving When you click on the Archive button in the Weblog Outline window, the outline is saved in the archive folder, specified below; and you start with a fresh outline with no posts in it. This helps unclutter your workspace, and makes sure you have a copy of all your posts. You can choose to have the folder open automatically when you archive.

<%radio.prefs.checkboxPref ("Check this box to open the archive folder after saving.", @user.myWeblogOutliner.prefs.archive.flOpenFolder)%>
<%radio.prefs.stringPref ("Archive folder", @user.myWeblogOutliner.prefs.archive.folder, size:75)%> €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ š XArial ¹"eÓ¹'ĮTMIüLAND’’’’’’winlocal (xmltext = op.outlinetoxml (@user.myWeblogOutliner.outline)) xml.compile (xmltext, @xstruct) scratchpad.xstruct = xstruct local (adropml = xml.getAddress (@xstruct, "opml")) local (adrbody = xml.getAddress (adropml, "body")) local (outlinelist = xml.getAddressList (adrbody, "outline"), adroutline, headnumber = 1) for adroutline in outlinelist local (link = "", title = "", description = "") local (textatt = xml.entitydecode (xml.getattributevalue (adroutline, "text"), true, true)) local (suboutlinelist = xml.getAddressList (adroutline, "outline"), adroutline) if sizeof (suboutlinelist) == 0 //no link-title description = textatt else local (s = textatt) //could contain a link local (ixopen = string.patternmatch (" 0 local (ixclose = string.patternmatch (">", s)) if ixclose > 0 try local (anchor = string.mid (s, ixopen, ixclose - ixopen + 1)) if not (anchor endswith "/>") anchor = string.replace (anchor, ">", "/>") xml.compile (anchor, @anchorstruct) link = xml.getattributevalue (xml.getAddress (@anchorstruct, "a"), "href") title = searchengine.stripmarkup (textatt) bundle //get the description from the suboutlines local (htmltext = "", indentlevel = 0) on add (s) htmltext = htmltext + (string.filledstring ("\t", indentlevel) + s + "\r\n"); on dolevel (outlinelist) local (adroutline) for adroutline in outlinelist add ("

" + xml.entitydecode (xml.getattributevalue (adroutline, "text"), true, true) + "

") local (suboutlinelist = xml.getAddressList (adroutline, "outline")) if sizeof (suboutlinelist) > 0 add ("
"); indentlevel++ dolevel (suboutlinelist) add ("
"); indentlevel-- dolevel (suboutlinelist) description = htmltext bundle //save off for debugging new (tabletype, @scratchpad.post) scratchpad.post.link = link scratchpad.post.title = title scratchpad.post.description = description scratchpad.post.headnumber = headnumber myWeblogOutlinerSuite.publishOneItem (link, title, description, headnumber) headnumber++ €€„€€€€€€€€€€€€€€€€€€€€‚€ š ¾Pö$Arial  ¹"zģ¹.UjkrvŠ|LAND’’’’’’winon publishOneItem (link, title, description, headnumber) local (oldtarget = target.set (@user.myWeblogOutliner.outline), atts) local (oldcursor = op.getcursor ()) op.firstsummit () op.go (down, headnumber - 1) if not op.attributes.getall (@atts) new (tabletype, @atts) new (tabletype, @atts.ids) bundle //don't save if nothing changed local (checksum = string.hashmd5 (link + title + description)) if defined (atts.checksum) if atts.checksum == checksum op.setcursor (oldcursor) target.set (oldtarget) return atts.checksum = checksum on flowto (adrtable) if adrtable^.enabled //flow out through Blogger API local (data, username, password) bundle //create data table, set username, password new (tabletype, @data) data.appKey = "E260BC1A1004B61C2DF853E73909E912897D0C" data.blogid = adrtable^.blogid data.port = adrtable^.port data.protocol = "xml-rpc" data.rpcPath = adrtable^.rpcPath data.server = adrtable^.server username = adrtable^.username password = string (adrtable^.password) local (adrid = @atts.ids.[nameof (adrtable^)]) if adrtable^.flUseMetaWeblogApi if defined (adrid^) metaWeblog.editPost (title, link, description, nil, adrid^, username, password, adrdata:@data) else adrid^ = metaWeblog.newPost (title, link, description, nil, username, password, blogid:data.blogid, adrdata:@data) else if title != "" description = "" + title + "

" + description if defined (adrid^) blogger.editPost (description, adrid^, username, password, adrdata:@data) else adrid^ = blogger.newPost (description, username, password, adrdata:@data) flowto (@user.myWeblogOutliner.prefs.blogger) flowto (@user.myWeblogOutliner.prefs.radio) flowto (@user.myWeblogOutliner.prefs.movableType) atts.type = "weblogPost" op.attributes.addgroup (@atts) op.setcursor (oldcursor) target.set (oldtarget) bundle //test code with scratchpad.post publishOneItem (link, title, description, headnumber) €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€€€ ¾ }Arial ¹"Oū¹"OūJ„ LAND’’’’’’winThis script returns a string which appears in the Status Center on the Radio UserLand home page. return ("I'm a cool Tool!") „€!ĘćArial ¹*«Š¹.Š F.Ž©LAND’’’’’’winon viewPost () local (atts) new (tabletype, @atts) op.attributes.getall (@atts) if sizeof (atts) == 0 dialog.alert ("Can't view the post because the outline cursor is not pointing at a post.") return if defined (atts.ids.radio) //only Radio supports the feature, for now local (adrtable = @user.myWeblogOutliner.prefs.radio) local (data, username, password) bundle //create data table, set username, password new (tabletype, @data) data.appKey = "E260BC1A1004B61C2DF853E73909E912897D0C" data.blogid = adrtable^.blogid data.port = adrtable^.port data.protocol = "xml-rpc" data.rpcPath = adrtable^.rpcPath data.server = adrtable^.server username = adrtable^.username password = string (adrtable^.password) local (struct) metaweblog.getPost (atts.ids.radio, username, password, adrstruct:@struct, adrdata:@data) if defined (struct.permalink) webbrowser.openurl (struct.permalink) else dialog.alert ("Can't view the post because the weblog tool \"" + nameof (adrtable^) + "\" did not return a permalink.") scratchpad.struct = struct edit (@scratchpad.struct) else dialog.alert ("Can't view the post because the weblog manager does not support the feature.") bundle //test code viewPost () €€€€€€€€€€!»·’¹Ü‡ŗ#!u  + 3? IU Zf nz ‡“ ˜¤ ±½ ÅŃ ąģ  archive2) background;Łbuttons?£ callbacks@•init@ómainOldS© menuCommandsf openff prefsOutlinegøpublishxŲpublishOneItem‚ŌstatusCenterMessageŒžviewPost«»KźéArial ¹ŚąM¹ī“8sÅéLAND’’’’’’winon outlineToHtml (adroutline) Changes 10/22/02; 11:00:55 AM by DW Created. local (outlinecopy = adroutline^, htmltext) local (oldtarget = target.set (@outlinecopy)) myWeblogOutlinerSuite.init () bundle //add if none present local (fladd = true) op.firstsummit () loop if op.getlinetext () beginswith "

" + description if defined (adrid^) blogger.editPost (description, adrid^, username, password, adrdata:@data) else adrid^ = blogger.newPost (description, username, password, adrdata:@data) flowto (@user.myWeblogOutliner.sites.[atts.sitename]) atts.ctSaves++ window.attributes.addGroup (@atts, adroutline) return (true) bundle //debugging saveWindow (@system.temp.windowTypes.windows.["0000002"].window, false) €„€€€€€€€€€€€€€€€€„€€€€€€€€€€€€€€€€€€€€€€€€€€€ ©Ot¹"Oūŗ#!u  + 0< EQ Vb o{ …‘ 𦠓Ą Ė codeFreshener ¶data žinitDinitAtts)Xmenu,‘ menuCommands0 newWindow0Łoldstuff“Ų outlineToHtml•Ÿ saveWindow›öVArial ®lE„ž+©ķ iArial ¹>½ė¹īšŲEµs.LAND’’’’’’winon save (adroutline, flClosing=false) return (myWeblogOutlinerSuite.saveWindow (adroutline, flClosing)) €€ķ0`Arial ¹Ü+h¹īšę ęł°·LAND’’’’’’winon saveAs (adroutline, adradrwindow=nil) local (title = window.gettitle (adroutline)) if dialog.ask ("New title for weblog post?", @title) window.settitle (adroutline, title) myWeblogOutlinerWindowTypes.weblogPost.save (adroutline) return (true) //command handled bundle //test code saveas (@system.temp.windowTypes.windows.["0000003"].window) €€€€€€„¦L$¹ŚÄd¹Ü+h  saveؾsaveAs©·VArial §6•3¦5¹"Oś¹ÜW weblogPost«ĖVArial Æ~2„ž+'Ķ8¹"Ośŗ#! ! ;G ]i …myWeblogOutlinerInfoXmyWeblogOutlinerNodeTypeswmyWeblogOutlinerSuite§ myWeblogOutlinerWindowTypes¬}VArial ŽA8mX÷Ż'ŗ­cžł.Arial ’’’’’’’’ MS Sans Serif œš,#Times New Roman £Ū)Arial ”Ģ8Arial ’’’’’’’’ MS Sans Serif ’’ŗ