qXz IImaster@r $?8Fixedsys  MS Sans Serif c8 MS Sans Serif ]=Fixedsys l.Fixedsys MS Sans Serif XII3H* <+II prefs&J4 h(6!0Geneva $M7LANDmac edit (@liveOutlineData.outline, "Live Outline") e") ers.["Content-Type"] = 0Geneva u.C0&?LANDmac edit (@liveOutlineData.outline, "Live Outline") .I!\ =E 4P4P @ RJhX G@(. renderOutlineWith pikeRendereroGyT(@C?$(:X  methodfileurlCy.E+  $0 ; finalFilter firstFilter pageFilter VArial 62n -Arial zBNLANDwinon firstFilter (adrPageTable) return (true) tArial *B2LANDwinon finalFilter (pta) pta^.renderedText = string.replace (pta^.renderedText, "[[title]]", "") return (true) ������������������������� ��������Geneva���������������������������� ���������;���8���������;�� ��s��@����� ���R��J���h���X��� �����������2������J������I�7�������� ���� fileMenu�������p&��; ����@fileMenu������pike������ playlist������!user������M�����������J�������������� ���� viewInBrowser�������A���<��R������J���$���I�������� ������� ����prefs����X��Jwebsite����X������p�������rm������5$]������Arial����������������������������� ��v${���������������������������������������������p�����&����$��=����Arial����������������������������� ��������������*B������w�2-#LAND�������win������������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]]") return (true) ������������������������������� ����ctenabledscript����`�� O��� ������@����}����Geneva���������������������������� ��������������w�7���`����2 <LAND������mac ������������on finalFilter (adrPageTable) pta^.renderedText = string.replace (pta^.renderedText, "[[title]]", "<title>") return (true) ������������������������� ���-����Geneva���������������������������� ��������������Eu`Q�������2LAND������mac ������������on firstFilter (adrPageTable) return (true) ���������������������*��[����Geneva���������������������������� ��������������Eu7a���Z���L�3*lLAND������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) ������������������������������������̀� �������@���.���E7�������� ���� ��� ����$���0 ����; finalFilter������� firstFilter������� pagefilter���������VGeneva���������������������������� �����������P�E��$�������������������������Ӏ� !������@������7I�������� ����url���http://127.0.0.1/LiveOutline/���G��n������@����������8H������VArial����������������������������� ������������������������������������������������T����������������������������space���/GIFfGIF89a�������!����,�������D�;��VArial����������������������������� ����������������������������������������������������������V��������������� ������� �������"�������+ ����0���: ����C���L ����Q���[ ����aalink���008000bgcolor���FFFFFFflRenderlink���0000FFspaceGif���spacetext���000000vlink���800080��VArial����������������������������� ������������������������������������������������l�������<��������Geneva���������������������������� ��������������/7���(����nLAND������mac ������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>{title} {metaTags} {bodyTag ()} {bodytext} aG8>VArial nG000000060001001777AA00000000005D00000000100171-76FB6FFE18000004800480626200-10626222FFF Arial $22#LANDwinon responder (pta) Serve pages from the live outline. It renders the page at user.playlist.liveOutline.website.index. The rendering code is in playlist.liveOutline.renderPage. Initially, the file system responder had this feature added to it -- but it's much cleaner to use a separate responder. This responder serves from the Live Outline outline *only.* Everything in that outline is public. It does a directory listing if no summit is specified. Thu, Sep 7, 2000 at 10:55:18 AM by PBS pta^.responseHeaders.["Content-Type"] = "text/html" pta^.code = 200 //everything was OK local (path = pta^.path) path = string.delete (path, 1, sizeOf ("/liveOutline")) if path == "" //redirect to /liveOutline/ on redirect (url) pta^.code = 302 //non-permanent redirect pta^.responseBody = webserver.util.buildErrorPage ("302 FOUND", "Found the page.") pta^.responseHeaders.location = url pta^.responseHeaders.URI = url try {delete (@pta^.responseHeaders.["Content-Type"])} return (true) return (redirect (pta^.path + "/")) //add trailing slash pta^.responseBody = html.buildObject (@liveOutlineData.website.index, pta) return (true) $Geneva V!/>!LANDmac local (url = "http://" + tcp.dns.getMyDomainName ()) if user.inetd.config.http.port != 80 url = url + ":" + user.inetd.config.http.port url = url + "/liveOutline/" webBrowser.openUrl (url) webBrowser.bringToFront () P 8Geneva b2 LANDmac on GET (pta) return (liveOutlineSuite.responder (pta)) .# GET$VArial <9qnGeneva $!22LANDmac on responder (pta) Serve pages from the live lArial ϶-2##LANDwinThe Live Outline feature was a built-in -- now it's a tool. Move the user's data to the right places. In this case, we're just talking about the outline itself. 10/02/00; 11:21:26 AM by PBS if defined (user.playlist.liveOutline.outline) liveOutlineData.outline = user.playlist.liveOutline.outline table.rename (@user.playlist.liveOutline.outline, "outlineOld") .I# =E M condition/(string.lower (path) beginsWith "/liveoutline")enabledmethodsVV S2xArial !B &?LANDwincondition enabled methods GET  8Arial Bo\LANDwinon GET (pta) return (liveOutlineSuite.responder (pta)) er (pta)) .IA  1= NLiveOutlineDatauxLiveOutlineResponder"LiveOutlineSuiteq.VArial :8tArial BBXX LANDwinLiveOutlineData initialRootUpdatesPrefs outline website #filters #ftpSite method url #glossary #prefs #template #tools index LiveOutlineResponder LiveOutlineSuite 688866p p p p p p '''''''\'\'\(Arial F2B22#LANDwinon getHeadlineUrl () Return the URL of the currently selected headline in a live outline. The caller is responsible for setting the target to the liveOutline outline. Thu, Sep 7, 2000 at 1:19:02 PM by PBS local (origCursor = op.getCursor ()) local (path = "") loop //loop back to the summit, prepending to the path as we go local (s = op.getLineText ()) s = string.innerCaseName (s) s = string.dropNonAlphas (s) s = string.urlEncode (s) path = s + "/" + path if not (op.go (left, 1)) break path = string.popTrailing (path, "/") op.setCursor (origCursor) //restore cursor local (url = "http://" + tcp.dns.getMyDomainName ()) if user.inetd.config.http.port != 80 url = url + ":" + user.inetd.config.http.port url = url + "/liveOutline/" + path return (url) ( NGeneva R@O->!LANDmac local (url = liveOutlineSuite.getHeadlineUrl ()) clipboard.put ('TEXT', @url)  iGeneva *%&0&?LANDmac local (adrTemplate = @liveOutlineData.website.["#template"]) edit (adrTemplate, "Live Outline Template") bFW II6Arial pt|$0b ^F{P @ JhX  . Arial !22#LANDwinon renderPage () Render a live outline page. Either render the name sub-outline or render a directory page. 09/07/00; 1:15:29 PM by PBS Changes: 09/19/00; 11:08:20 AM by PBS International characters are now handled correctly -- they can be part of a path. A bug was fixed that sometimes prevented finding of a headline -- the outline (a copy of the original) is fully expanded before this script dives into it. local (pta = html.getPageTableAddress ()) local (path = pta^.path) path = string.delete (path, 1, sizeOf ("/liveOutline")) path = string.popLeading (path, '/') local (htmlText) on add (s) htmlText = htmlText + s local (localOutline = liveOutlineData.outline) //make a copy so your typing isn't disturbed local (adrOutline = @localOutline) local (oldTarget = target.set (adrOutline)) on getHeadlineName () //get the name of a headline local (name = op.getLineText ()) name = string.innerCaseName (name) name = string.dropNonAlphas (name) name = string.urlEncode (name) return (name) on listDirectory () pta^.title = "Live Outline List" op.firstSummit () loop local (name = getHeadlineName ()) local (link = html.getLink (op.getLineText (), name)) add (link) add ("

") if not (op.go (down, 1)) break return (true) if path == "" //do a directory listing listDirectory () else //find the headline and render the page on findHeadline (requestedName) //leave the cursor pointing to the named headline local (lowerRequestedName = string.lower (requestedName)) local (flFound = false) loop local (name = getHeadlineName ()) if string.lower (name) == lowerRequestedName flFound = true break if not (op.go (down, 1)) break return (flFound) local (flFirstSummitFound = false) local (flDeepHeadlineFound = false) op.firstSummit () op.fullExpand () //PBS 09/19/00: expand the entire outline while (sizeOf (path) > 0) //dive into the outline if flFirstSummitFound if not (op.go (right, 1)) break local (name = string.nthField (path, '/', 1)) path = string.delete (path, 1, sizeOf (name)) path = string.popLeading (path, '/') name = string.urlDecode (name) //PBS 09/19/00: a bug that prevented international characters from working correctly as part of the path if not findHeadline (name) break if flFirstSummitFound flDeepHeadlineFound = true flFirstSummitFound = true if flFirstSummitFound local (outlineToRender) new (outlineType, @outlineToRender) op.getSelectedSubOutlines (@outlineToRender) pta^.title = op.getLineText () oldTarget = target.set (@outlineToRender) op.firstSummit () op.promote () op.deleteLine () try {target.set (oldTarget)} if flDeepHeadlineFound //if not a top-level summit, use cadillac renderer pta^.renderOutlineWith = "cadillac" add (html.tenderRender (@outlineToRender)) else //summit not found, do a directory listing; there are no file not found errors listDirectory () try {target.set (oldTarget)} return (htmlText) JLI  %1 6B NZ eq { callbacks getHeadlineUrl*menu S openOutline renderPage1 responderP1 responderP63Geneva .'F;LANDmac on viewInBrowser (adrItem) Called when View in Browser is chosen from the File menu. 09/07/00; 1:38:19 PM by PBS if adrItem != @liveOutlineData.outline return (false) //not consumed local (url = liveOutlineSuite.getHeadlineUrl ()) webBrowser.openUrl (url) webBrowser.bringToFront () return (true) -0Arial *}B b%LANDwin{title} {bodyTag ()}

{title}

{bodytext}
-(Arial (Br~LANDwinreturn (liveOutlineSuite.renderPage ()) BV(z*  * 4@ GS ]i p| #filters#ftpSite| #glossary|H#prefs{ #templateC#tools{(indexDVArial [:?nw5yB{$I$  outlinedSwebsiteET+Geneva ϵ 6&?gLANDmac The Live Outline feature was a built-in -- now it's a tool. Move the user's data to the right places. In this case, we're just talking about the outline itself. 10/02/00; 11:21:26 AM by PBS if defined (user.playlist.liveOutline.outline) liveOutlineData.outline = user.playlist.liveOutline.outline TFLI.G  %1 6B MY co } callbacks getHeadlineUrl*menu S renderPage1 responder upgradeToTool  upgradeToTool IF Geneva 6omLANDmac Which Renderer? bold 1.5 Headline These are some words. Which renderer? I'm using pikeRenderer. It's the default. If you want, you can put a #renderOutlineWith directory in a sub-outline. It's flexible. Test Another Renderer #renderOutlineWith "prettyOutline" Here I'm testing another renderer. This outline is rendered with prettyOutline. Is it pretty? OutlineDocument 1.5 bold Timeline Outlines have been a popular way to organize information on computers for a long time. While the history of outlining software is unclear, a rough timeline is possible. Probably the first outliner was developed by Doug Engelbart, as part of the Augment system in the 1960s. Living Videotext, 1981-87, developed several popular outliners for personal computers. They are archived on a UserLand website, outliners.com. Frontier, first shipped in 1992, is built around outlining. The text, menu and script editors in Frontier are outliners, as is the object database browser. About this document This document describes a format and simple protocol for sharing outlines in XML. outlineDocuments play a central role in Radio UserLand. It's the main file format. When you create a new file it's saved as an outlineDocument. Examples of outlineDocuments Radio UserLand can be used to write any kind of hierarchic document, not just music playlists. Outlines are great for specifications, legal briefs, product plans, presentations, screenplays, diaries, discussion groups, chat systems and stories. Hierarchies are all over the Internet, outlines are great for creating and browsing hierarchies. Examples of outlineDocuments created with Radio UserLand: play list, specification, presentation. We also think outlines, and outline authoring tools like Radio UserLand, are important for next-generation Internet directories, putting the organizing power in the hands of users is key to making systems like Yahoo and DMOZ really work. What is an ? An is an XML element, containing optional attributes, an optional element and a element. What is a ? A contains zero or more optional elements, described below. is the title of the document. <dateCreated> is a date-time, indicating when the document was created. <dateModified> is a date-time, indicating when the document was last modified. <ownerName> is a string, the creator of the document. <ownerEmail> is a string, the email address of the creator of the document. <expansionState> is a comma-separated list of line numbers that are expanded. <vertScrollState> is a number, saying which line of the outline is displayed on the top line of the window. This number is calculated with the expansion state already applied. <windowTop> is a number, the pixel location of the top edge of the window. <windowLeft> is a number, the pixel location of the left edge of the window. <windowBottom> is a number, the pixel location of the bottom edge of the window. <windowRIght> is a number, the pixel location of the right edge of the window. <head> notes All the sub-elements of <head> may be ignored by the processor. If an outline is opened within another outline, the processor <i>must</i> ignore the windowXxx elements, those elements only control the size and position of outlines that are opened in their own windows. What is a <body>? A <body> contains zero or more <outline> elements. What is an <outline>? An <outline> is an XML element, possibly containing one or more attributes, and containing any number of <outline> sub-elements. All attributes are optional and have default values. Easy attributes text is the string of characters that's displayed when the outline is being browsed or edited. There is no specific limit on the length of the text attribute. name is a string of characters that, like the name attribute on the anchor tag in HTML, marks this spot so it can be pointed to as a separate entity. isComment is a string, either true or false, indicating whether the outline is commented or not. By convention if an outline is commented, all subordinate outlines are considered to be commented as well. If it's not present, the value is false. isBreakpoint is a string, either true or false, indicating whether a breakpoint is set on this outline. This attribute is mainly necessary for outlines used to edit scripts that execute. If it's not present, the value �}�������dS���.���I9�������� �������$ ����,���8 ����@initialRootUpdatesPrefs���� ��aoutline����� ��cwebsite���� ��E��VGeneva���������������������������� �����������U�;�TJ������������������������,���i���Geneva���������������������������� ������������89�����&?LAND������mac ������������initialRootUpdatesPrefs outline website #filters #ftpSite #glossary #prefs #template #tools index �����,J,ID�������������������,J,ID�������������������,J,ID������������������,J,������������������,J,������������������,J,������������������,J,�������������������,J,�������������������,J,�������������������,J,������������������������dS���B���*8:5�������� ���� ���, ����3���Y����P���^ ����e���} ���� lastUpdate���Mon, 02 Oct 2000 19:15:18 GMTmethod���"mainResponder.subscriptions.updateportserver���updates.userland.comurl�����{���`������J��I��F��������������P���������� �� ��@����� ���R��J���h���X��� �����������`� ������F������66���������������J���.���I*8�������� �������$ ����,���8 ����@initialRootUpdatesPrefs����P��coutline�����P��dSwebsite����P��E�����;������J���B���*8,�������� ���� ���, ����3���P����P���U ���������b��������Geneva���������������������������� �������������� .������LAND������mac ������������ ���������������b��������Geneva���������������������������� �������������� .������LAND������mac ������������ �����enderer? <rules> <rule level="1" to="1"><textStyle>bold</textStyle></rule> <rule><outlineSpacing>1.5</outlineSpacing></rule> </rules> Headline These are some words. Which renderer? I'm using pikeRenderer. It's the default. If you want, you can put a #renderOutlineWith directory in a sub-outline. It's flexible. Test Another Renderer #renderOutlineWith "prettyOutline" Here I'm testing another renderer. This outline is rendered with prettyOutline. Is it pretty? OutlineDocument <rules> <rule><outlineSpacing>1.5</outlineSpacing></rule> </rules> <rules> <rule level="1" to="1"> <textStyle>bold</textStyle> </rule> </rules> Timeline Outlines have been a popular way to organize information on computers for a long time. While the history of outlining software is unclear, a rough timeline is possible. Probably the first outliner was developed by Doug Engelbart, as part of the Augment system in the 1960s. Living Videotext, 1981-87, developed several popular outliners for personal computers. They are archived on a UserLand website, <a href="http://www.outliners.com/">outliners.com</a>. Frontier, first shipped in 1992, is built around outlining. The text, menu and script editors in Frontier are outliners, as is the object database browser. About this document This document describes a format and simple protocol for sharing outlines in XML. outlineDocuments play a central role in <a href="http://radio.userland.com/">Radio UserLand</a>. It's the main file format. When you create a new� ����������6��3����Arial����������������������������� ��������������9A������Y�(KLAND�������win������������on viewInBrowser (adrItem) Called when View in Browser is chosen from the File menu. 09/07/00; 1:38:19 PM by PBS if adrItem != @liveOutlineData.outline return (false) //not consumed local (url = liveOutlineSuite.getHeadlineUrl ()) webBrowser.openUrl (url) webBrowser.bringToFront () return (true) �������������������������������������������������Y�������3������I�7�������� ���� fileMenu�������p&��V�����������������������������������������������9�9��g�������������������������<�������Arial����������������������������� ��������������Z¶Z�����i=1LAND�������win������������fileMenu viewInBrowser ������������������������ ����������������Y�������t|�6��3���� MS Sans Serif��������������������� ���������������������1LAND�������win������������on viewInBrowser (adrItem) Called when View in Browser is chosen from the File menu. 09/07/00; 1:38:19 PM by PBS if adrItem != @liveOutlineData.outline return (false) //not consumed local (url = liveOutlineSuite.getHeadlineUrl ())�e���p������n9��e��t|�����0����b�� ��F��{������������P��������� �� ��@����J���h���X��� ���������������j���8������9�������� ���� viewInBrowser�������j��VArial����������������������������� ����������s�9�T��a����������������������lV��������������������������������������������������� ������������2lV���������������������������3����������L���I.G�������� ���� ��� ����%���1 ����6���B ����M���Y ����c���o ����} callbacks�������lgetHeadlineUrl�������*menu������� S renderPage�������1 responder������� upgradeToTool������� ��VArial����������������������������� ����������v�9�O�z�b*������������������������3��J���5����F���W����Arial����������������������������� ��������������Ig���y��&?LAND�������win������������LiveOutline Open Outline View Top Level in Browser Copy Headline URL Edit Template ��������� ������������ ����Y�������� ����.�������� ����/�������� ����.�������� ����/������������� ����s������J������.�����������Arial����������������������������� �������������� VN�������eLAND�������win������������ �����/REX:81/liveOutline/ ����������X��� �������������������0������g]�������� ���� v��$�������������5���Arial����������������������������� �����������������t���p��|���h������t|���|��0����b�� ��F��{������������P��������� �� ��@����J���h���X��� �����������������~���.���If�������� �������$ ����,���8 ����@initialRootUpdatesPrefs�������}goutline��������swebsite�������E��VArial����������������������������� �����������:�?��P�������������������������������Geneva���������������������������� �������������89�����&?LAND������mac ������������initialRootUpdatesPrefs lastUpdate method pasted wp text port server url outline website #filters #ftpSite #glossary #prefs #template #tools index �����,J,ID�������������������,J,!��������������������,J,!��������������������,J,!��������������������,J,!��������������������,J,!��������������������,J,!��������������������,J,ID�������������������,J,ID������������������,J,������������������,J,������������������,J,������������������,J,�������������������,J,�������������������,J,�������������������,J,����������������Ѐ�<������n9���B���*8A�������� ���� ���, ����3���Y����P���^ ����e���} ���� lastUpdate���Mon, 02 Oct 2000 19:15:18 GMTmethod���"mainResponder.subscriptions.updateportserver���updates.userland.comurl����erver���updates.userland.comurl��������8������n9000000060001001777AA00000000005800000000100171-7F7F�<���������q�����yT��<��n9����t|�����0����b�� ��F��{������������P��������� �� ��@����J������X��� ��������������n�������������(B������VArial����������������������������� ����������M�2�d��p�������������������������n����������@������(.�������� ����renderOutlineWith��� pikeRenderer��VArial����������������������������� �����������[�S��E����������������������������n�������������(B������VArial����������������������������� ����������M�2�}��c�������������������������n����������?���$���(:X�������� ������� ����method���fileurl������VArial����������������������������� ����������M�2�p��j���������������������������%����������B���*8A�������� ���� ���, ����3���Y����P���^ ����e���} ���� lastUpdate���Mon, 02 Oct 2000 19:15:18 GMTmethod���"mainResponder.subscriptions.updateportserver���updates.userland.comurl������VArial����������������������������� ����������j��I�� ������������������������%