#CX +p+p 84V+p  #9 Eg s +p author David Davies authorEmaildaviesda@gmail.com descriptionA few tools for outliner users homePageUrl2http://david.davies.name/categories/outlinertools/name outlinerTools releaseDateversion0.18  VGeneva R@LANDmac on any (pta) //boilerplate for your responder pta^.responseHeaders.["Content-Type"] = "text/html" pta^.code = 200 //everything was OK pta^.responseBody = "" //build response return (true) V2. any2. @H P condition2(string.lower (path) beginsWith "/outlinertools/")enabledmethodsV   Geneva R@LANDmac This script runs every hour. Geneva R@LANDmac This script runs every minute. Geneva R@LANDmac This script runs every night. {w.  ". 9 everyHour everyMinute1 everyNight{    nj.  ' ,fileMenu radio5useranArial ?'I_LLANDmac Changes 2/2/02; 0:13:00 AM by DAD Shamelessly stole Dave's code freshener script! 1/15/02; 5:21:20 PM by DW Runs on the user's machine, when refreshing. local (adrtable = @system.temp.outlinerToolsSnapshot) outlinerToolsInfo = adrtable^.info outlinerToolsSuite = adrtable^.suite outlinerToolsThread = adrtable^.thread outlinerToolsWebsite = adrtable^.website outlinerToolsRpcHandlers = adrtable^.rpchandlers outlinerToolsSoapHandlers = adrtable^.soaphandlershandlers outlinerToolsNodeTypes = adrtable^.NodeTypes filemenu.savemyroot (@outlinerToolsSuite) local (x = string.parseAddress (@outlinerToolsSuite), f = x [1]) frontier.tools.install (f) dialog.notify ("Thanks for updating to version " + outlinerToolsInfo.version) NArial ?+e/fLANDmac 2/2/02; 0:13:00 AM by DAD Shamelessly stole Dave's code freshener script! 1/15/02; 5:18:06 PM by DW This is the Refresh menu command. local (url = "http://david.davies.name/weblog/publictools/outlinertools/outlinerTools.fttb") local (urllist = string.urlsplit (url)) local (s = tcp.httpclient (server:urllist [2], path:urllist [3])) local (f = frontier.pathstring + "outlinerTools.fttb") file.writewholefile (f, s) fatpages.importfatfile (f) thread.callscript (@system.temp.outlinerToolsSnapshot.loader, {}) UArial =92LANDmac Changes 2/2/02; 0:13:00 AM by DAD Shamelessly stole Dave's code freshener script! 1/15/02; 5:08:55 PM by DW Created. I run this on my machine to create a package for refreshCode to load. Talk about a Mobius Strip. It's really simple code, but it's fun to walk your mind through it. local (oldoutlinerToolsData) bundle //get outlinerToolsData ready for ship oldoutlinerToolsData = outlinerToolsData new (tabletype, @outlinerToolsData) outlinerToolsThread.enabled = true outlinerToolsInfo.releaseDate = clock.now () local (adrtable = @system.temp.outlinerToolsSnapshot) new (tabletype, adrtable) adrtable^.info = outlinerToolsInfo adrtable^.suite = outlinerToolsSuite adrtable^.thread = outlinerToolsThread adrtable^.website = outlinerToolsWebsite adrtable^.rpchandlers = outlinerToolsRpcHandlers adrtable^.soaphandlershandlers = outlinerToolsSoapHandlers adrtable^.NodeTypes = outlinerToolsNodeTypes adrtable^.loader = outlinerToolsSuite.codeFreshener.loadNewCode local (f = "Macintosh HD:Applications:OPML:toolsdev:outlinerTools:outlinerTools.fttb") file.surefilepath (f) export.sendobject (adrtable, f) f = "Macintosh HD:Applications:OPML:toolsdev:outlinerTools:outlinerTools.root" target.set (this) fileMenu.saveCopy (f) outlinerToolsData = oldoutlinerToolsData dialog.alert (file.filefrompath (f) + " is " + string.megabytestring (file.size (f))) }.R?RG  $0 ? loadNewCode refreshCode releaseNewCodeVArial 3x1-Geneva ӿH&?LANDmac outlinerToolsSuite.rightClickmenu.install () 0Arial R{J_'-LANDmac outlinerToolsSuite.codeFreshener.refreshCode () &AGeneva R@LANDmac OutlinerTools Install right-click menus... Update this tool... N pa \Geneva 48 p}Geneva T''?LANDmac bundle // script to add a buddy by right-clicking if not op.attributes.getOne ("type", @type) dialog.notify ("No buddy to subscribe to here, bud!") return (false) case type "buddyOutlineElement" name = op.getLineText () What follows is essentially Jake's code from radio.outliner.menuCommands.subscribeToOutline () local (url = "http://") if dialog.yesno ("Subscribe to " + name + "'s outline?") op.attributes.getOne ("url", @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 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) else dialog.notify ("No buddy to subscribe to here, bud!") return (false) $datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl$datatabl+Geneva ظ:'?LANDmac Buddies Add this buddy to Buddies list... &p'56$YGeneva d|p Geneva 袸:#'?LANDmac bundle // Search using Google local htmlText itemStruct text xmlText starttext on add (s) htmlText = htmlText + s + cr on makeRssFile () bundle //build xmltext local (indentlevel = 0) on add (s) xmltext = xmltext + string.filledstring ("\t", indentlevel) + s + "\r\n" on encode (s) if system.environment.isMac //02/22/2001 JES: convert to Latin text return (xml.entityEncode (latinToMac.macToLatin (s), true)) else return (xml.entityEncode (s, true)) add ("") add ("") add (""); indentlevel++ add (""); indentlevel++ add ("" + encode ("Google Search Results") + "") add ("" + encode ("http://www.google.com/") + "") add ("" + encode ("Results of a Google search") + "") if language != "none" add ("" + language + "") add ("" + "Copyright " + date.year () + " " + "Probably Google" + "") add ("" + date.netstandardstring (clock.now ()) + "") add ("http://backend.userland.com/rss092") add ("" + encode (user.prefs.name) + "") add ("" + encode (user.prefs.name) + "") bundle //add cloud element if flCloud with user.radio.prefs.rssCloud add ("") add (itemStruct) add (""); indentlevel-- add (""); indentlevel-- on addRSSitem (title, link, description) title = searchengine.stripmarkup (title) description = searchengine.stripmarkup (description) bundle //build xmltext local (indentlevel = 2) on add (s) itemStruct = itemStruct + string.filledstring ("\t", indentlevel) + s + "\r\n" on encode (s) if system.environment.isMac //02/22/2001 JES: convert to Latin text return (xml.entityEncode (latinToMac.macToLatin (s), true)) else return (xml.entityEncode (s, true)) add (""); indentlevel++ add ("" + encode (title) + "") add ("" + link + "") add ("" + encode (description) + "") add (""); indentlevel-- bundle // ask for what to search for dialog.run (@dialog.cards.moreinfo) starttext = text dialog.ask ("Enter Google search term", @text) if starttext == text or text == "" return system.temp.googleSearch = google.search (text) if system.temp.googleSearch.endIndex == 0 dialog.notify ("Sorry, nothing found at Google.") for n = 1 to system.temp.googleSearch.endIndex title = system.temp.googleSearch.resultElements [n].title if title == "" title = system.temp.googleSearch.resultElements [n].summary snippet = system.temp.googleSearch.resultElements [n].snippet url = system.temp.googleSearch.resultElements [n].url add ("

" + n + ". " + title + "

") addRSSitem (title, url, snippet) makeRssFile () op.rssToOutline (xmlText, @system.temp.googleRSSResults) edit (@system.temp.googleRSSResults) datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata\r rGeneva 薸 '?LANDmac bundle // Search using Google local htmlText itemStruct text = op.getLineText () xmlText on add (s) htmlText = htmlText + s + cr on makeRssFile () bundle //build xmltext local (indentlevel = 0) on add (s) xmltext = xmltext + string.filledstring ("\t", indentlevel) + s + "\r\n" on encode (s) if system.environment.isMac //02/22/2001 JES: convert to Latin text return (xml.entityEncode (latinToMac.macToLatin (s), true)) else return (xml.entityEncode (s, true)) add ("") add ("") add (""); indentlevel++ add (""); indentlevel++ add ("" + encode ("Google Search Results") + "") add ("" + encode ("http://www.google.com/") + "") add ("" + encode ("Results of a Google search") + "") if language != "none" add ("" + language + "") add ("" + "Copyright " + date.year () + " " + "Probably Google" + "") add ("" + date.netstandardstring (clock.now ()) + "") add ("http://backend.userland.com/rss092") add ("" + encode (user.prefs.name) + "") add ("" + encode (user.prefs.name) + "") bundle //add cloud element if flCloud with user.radio.prefs.rssCloud add ("") add (itemStruct) add (""); indentlevel-- add (""); indentlevel-- on addRSSitem (title, link, description) title = searchengine.stripmarkup (title) description = searchengine.stripmarkup (description) bundle //build xmltext local (indentlevel = 2) on add (s) itemStruct = itemStruct + string.filledstring ("\t", indentlevel) + s + "\r\n" on encode (s) if system.environment.isMac //02/22/2001 JES: convert to Latin text return (xml.entityEncode (latinToMac.macToLatin (s), true)) else return (xml.entityEncode (s, true)) add (""); indentlevel++ add ("" + encode (title) + "") add ("" + link + "") add ("" + encode (description) + "") add (""); indentlevel-- if text == "" return system.temp.googleSearch = google.search (text) if system.temp.googleSearch.endIndex == 0 dialog.notify ("Sorry, nothing found at Google.") for n = 1 to system.temp.googleSearch.endIndex title = system.temp.googleSearch.resultElements [n].title if title == "" title = system.temp.googleSearch.resultElements [n].summary snippet = system.temp.googleSearch.resultElements [n].snippet url = system.temp.googleSearch.resultElements [n].url add ("

" + n + ". " + title + "

") addRSSitem (title, url, snippet) makeRssFile () op.rssToOutline (xmlText, @system.temp.googleRSSResults) edit (@system.temp.googleRSSResults) datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata\O ;Geneva 袸$'?LANDmac bundle // Search using Google local htmlText itemStruct text = op.getLineText () xmlText starttext on add (s) htmlText = htmlText + s + cr on makeRssFile () bundle //build xmltext local (indentlevel = 0) on add (s) xmltext = xmltext + string.filledstring ("\t", indentlevel) + s + "\r\n" on encode (s) if system.environment.isMac //02/22/2001 JES: convert to Latin text return (xml.entityEncode (latinToMac.macToLatin (s), true)) else return (xml.entityEncode (s, true)) add ("") add ("") add (""); indentlevel++ add (""); indentlevel++ add ("" + encode ("Google Search Results") + "") add ("" + encode ("http://www.google.com/") + "") add ("" + encode ("Results of a Google search") + "") if language != "none" add ("" + language + "") add ("" + "Copyright " + date.year () + " " + "Probably Google" + "") add ("" + date.netstandardstring (clock.now ()) + "") add ("http://backend.userland.com/rss092") add ("" + encode (user.prefs.name) + "") add ("" + encode (user.prefs.name) + "") bundle //add cloud element if flCloud with user.radio.prefs.rssCloud add ("") add (itemStruct) add (""); indentlevel-- add (""); indentlevel-- on addRSSitem (title, link, description) title = searchengine.stripmarkup (title) description = searchengine.stripmarkup (description) bundle //build xmltext local (indentlevel = 2) on add (s) itemStruct = itemStruct + string.filledstring ("\t", indentlevel) + s + "\r\n" on encode (s) if system.environment.isMac //02/22/2001 JES: convert to Latin text return (xml.entityEncode (latinToMac.macToLatin (s), true)) else return (xml.entityEncode (s, true)) add (""); indentlevel++ add ("" + encode (title) + "") add ("" + link + "") add ("" + encode (description) + "") add (""); indentlevel-- if text == "" return bundle // ask for what to search for dialog.run (@dialog.cards.moreinfo) starttext = text dialog.ask ("Enter Google search term", @text) if starttext == text or text == "" return system.temp.googleSearch = google.search (text) if system.temp.googleSearch.endIndex == 0 dialog.notify ("Sorry, nothing found at Google.") for n = 1 to system.temp.googleSearch.endIndex title = system.temp.googleSearch.resultElements [n].title if title == "" title = system.temp.googleSearch.resultElements [n].summary snippet = system.temp.googleSearch.resultElements [n].snippet url = system.temp.googleSearch.resultElements [n].url add ("

" + n + ". " + title + "

") addRSSitem (title, url, snippet) makeRssFile () op.rssToOutline (xmlText, @system.temp.googleRSSResults) edit (@system.temp.googleRSSResults) datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datata datataO6GGeneva ؿ:'?LANDmac Google Search for... Search for this... Search for parts of this... (v : Lp^\6$YGeneva d|prGeneva 9 LANDmac menu.addSubMenu (@user.tools.menus.rightclickmenu, "Outliner Tools", @outlinerToolsSuite.rightClickmenu.googleRightClickmenu) menu.addSubMenu (@user.tools.menus.rightclickmenu, "Outliner Tools", @outlinerToolsSuite.rightClickmenu.manilaRightClickmenu) menu.addSubMenu (@user.tools.menus.rightclickmenu, "Outliner Tools", @outlinerToolsSuite.rightClickmenu.buddiesRightClickmenu) dialog.notify ("Right-click menus installed. Have fun!") edit (@user.tools.menus.rightclickmenu) rlGeneva T;>'?LANDmac bundle // script to add stuff to Manila on init () if not defined (user.manilasite) new (tabletype, @user.manilasite) user.manilasite.url = "" user.manilasite.username = "" user.manilasite.password = "" dialog.ask ("Manila server IP address e.g. mysite.weblogs.com", @user.manilasite.manilaServer) dialog.ask ("Manila site URL e.g. http://mysite.weblogs.com/manilaSite", @user.manilasite.url) dialog.ask ("Manila site username - usually your email", @user.manilasite.username) dialog.ask ("Manila site password", @user.manilasite.password) filemenu.save () on addToManila (maniladata) local manilasite = user.manilasite.url manilaServer = user.manilasite.manilaServer manilausername = user.manilasite.username manilapassword = user.manilasite.password params ={manilausername, manilapassword, manilasite, maniladata} betty.rpc.client (manilaServer, 80, "manila.homepage.addtohomepage", @params) local type = "" adrtable init () if not op.attributes.getOne ("type", @type) bundle // probably a regular outline, ask the user what to do local s = "" sendToManila = dialog.threeWay ("What should I send to Manila?", "This Outline", "This line", "Nothing") case sendToManila "1" manilaData = op.getSubOutline () op.newOutlineObject (manilaData, @scratchpad.outline) s = s + html.getOutlineHtml (@scratchpad.outline, "\r", "\r", "") op.go (left,infinity) s = "" + op.getLineText () + " said: " + s addToManila (s) dialog.notify ("The selected text has been added to your Manila site!") "2" s = s + op.getLineText () op.go (left,infinity) s = "" + op.getLineText () + " said: " + s addToManila (s) dialog.notify ("The selected text has been added to your Manila site!") return (false) name = op.getLineText () case type "user" op.attributes.getOne ("url", @url) bundle // add to Manila maniladata = "A user from Radio Userland: " maniladata = maniladata + "" + name + "" addToManila (maniladata) dialog.alert (name + " has been added to your Manila home page") "link" op.attributes.getOne ("url", @url) bundle // add to Manila op.go (left,infinity) s = "" + op.getLineText () + " said: " s = s + "" + name + "" addToManila (s) dialog.alert (name + " has been added to your Manila home page") "file" op.attributes.getOne ("url", @url) op.go (left, op.level () - 2) owner = op.getLineText () bundle // add to Manila maniladata = "A file belonging to " + owner + ": " maniladata = maniladata + "" + name + "" addToManila (maniladata) dialog.alert (owner + "'s file has been added to your Manila home page") "remoteSong" op.attributes.getOne ("song", @song) op.attributes.getOne ("artist", @artist) op.go (left, 2) name = op.getLineText () bundle // add to Manila maniladata = name + " likes \"" + song + "\" by \"" + artist + "\"" addToManila (maniladata) dialog.alert (name + "'s song choice has been added to your Manila home page") "song" songname = op.getLineText () bundle // add to Manila maniladata = "I like the song \"" + songname + "\"" addToManila (maniladata) dialog.alert ("My song choice has been added to my Manila home page") "buddyOutlineElement" op.attributes.getOne ("url", @url) bundle // add to Manila maniladata = "A user from Radio Userland: " maniladata = maniladata + "" + name + "" addToManila (maniladata) dialog.alert (name + " has been added to your Manila home page") return (false) $datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl.-.$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...$datatabl...Geneva ظ 9'?LANDmac Manila Add this to Manila... bWp6$YGeneva d|p8Ǹ " 7C KW lbuddiesRightClickmenu'googleRightClickmenu_]install_manilaRightClickmenuVGeneva 2< }Geneva R@LANDmac This script returns a string which appears in the Status Center on the Radio UserLand home page. return ("I'm a cool Tool!") =L  !- ;G LX gs background callbacks codeFreshenerkmenurightClickmenu$statusCenterMessage>VGeneva j=kH=Geneva R@LANDmac This script runs in its own thread. loop //loop until the application quits Add your code here. thread.sleepFor (10) //sleep for ten seconds TP.+p ctenabledscriptTtGeneva F 2 LANDmac on finalFilter (pta) pta^.renderedText = string.replace (pta^.renderedText, "[[title]]", "") return (true) ����������������������������� ���-����Geneva���������������������������� ��������������Eu �������2 LAND������mac ������������on firstFilter (adrPageTable) return (true) �����������������������*��[����Geneva���������������������������� ��������������Eu ���u���}�2'LAND������mac ������������on pageFilter (pta) if typeOf (pta^.template) == outlineType or typeOf (pta^.template) == wpTextType table.assign (@pta^.template, string (pta^.template)) if typeOf (pta^.template) == stringType and not pta^.indirectTemplate pta^.template = string.replace (pta^.template, "<title>", "[[title]]") html.addPageToGlossary (pta) return (true) �����������������������������������������������y���.���EF�������� ���� ��� ����$���0 ����; finalFilter������� firstFilter�������) pagefilter���������VGeneva���������������������������� �����������G�N��)�����������������������������������E������7�������� ����url���http://127.0.0.1/outlinerTools/��VGeneva���������������������������� ������������A��'����������������������������n�����������������8H������VArial����������������������������� ������������������������������������������������n����������W����������������������space���/GIFfGIF89a�������!����,�������D�;��VArial����������������������������� ������������������������������������������������������������V��������������� ������� �������"�������+ ����0���: ����C���L ����Q���[ ����aalink���008000bgcolor���FFFFFFflRenderlink���0000FFspaceGif���spacetext���000000vlink���800080��VArial����������������������������� �������������������������������������������������d��������<��������Geneva���������������������������� ��������������F ������z�*LAND������mac ������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>{title} {metaTags ()} {bodyTag ()} {bodytext} dn8>VArial nFFFF000000060001001777AA000000000063000000001001710000001-76FF6FFE18000004800480626200-10626222FFFF01030000100000031000000010E840626222E048E000166266000020000001200000000E,#title "Home" 000400000009000000020100000500000009000000020100000600000032000000010C310FFFF0C00000 20 000700000019000000010201600008000000A50000000140,Geneva40,1040304E40101000090000001500000002393174393174000A0000001500000002626222626222000B00000005000000020000C00000013000000010369AF101000F0000005200000000400 10 4,appn4,send4,84,&4,84,34,800130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAPĵ7 6%``7F  * 4@ HT [g q} #filters#ftpSite #glossaryy#images#prefs #template#toolsKindexVGeneva vOx?+`  $t+p  0< S_ v  !- FoutlinerToolsDataXoutlinerToolsInfooutlinerToolsNodeTypesoutlinerToolsResponderoutlinerToolsRpcHandlers2outlinerToolsSoapHandlers^outlinerToolsSuiteKoutlinerToolsThreadoutlinerToolsWebsite[outlinerToolsWindowTypesVGeneva "H?$kHChicago? Lucida Grande =Geneva CChicago? RChicago? Lucida Grande