]˝đ.X Â€;Ae’—Geneva€/ďëV¸őşjšn*†  " .: GS ^j p| …abouth…úcssh‰ dayTemplatehÖÍ itemTemplatehÍe javascripth˘prefsh+qtemplatehł™€* kFFFF000000060001001777AA000000000068000000001001710000001-7FFB6FBE1800000‚‚48004806117200-1‚0Â6‚117222FFFF0‚‚10‚‚3‚283000010000003B0000000104B440840‚‚6‚1172224AE038E00010A61172500002000004BA000000004B4,#title "Thanks"
Home Preferences Register Help Faq

activeRenderer: registration

Thank you for registering your copy of activeRenderer.

You serial number is on its way to your mailbox.

Once you've received the registration message, copy the serial number and paste it into this form.

00040000000A0000000204B6000050000000F0000000301014B60000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 30ÂÁ ‚‚Á‚00070000002F000000020Â‚20180‚Á‚Á‚10160‚Á‚0008000000970000000140,Geneva40,4030 10000900000017000000023‚14E28C3‚14E28C000A00000017000000026‚1172226‚117222000B00000005000000020Â000C00000015000000012831F6‚757E0‚000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ4,77A4,“x4,Ąm 4,ŰĐ{4,t`k4,/RPC4,sŰ00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-.Śš°­­.'"ÔŐŇÓÉÉFFFF0FFFF0FFFE000000060001001777AAš=%ŢšIčj´3x”Ňôľ\ô˝D€ Ą€Ť„ô.¸ő–ęš*\ACG“ol1;GIFfGIF89a ń1˙˙˙ŢŢŢ­­­!ů, „ŠËíc+;ol2DGIFfGIF89a ‘ŢŢŢ­­­˙˙˙!ů, ”ŠË˘”Îx,EzAT;ol3FGIFfGIF89a ‘ŢŢŢ˙˙˙!ů, ”bЁšÜŒoJnȗKď€I;JnȗKď€I;€€„ô¸ô§ št €ŠđtśŇ˛ŹšR3 )1 <] dz€ X€‘ĹŰtŽGeneva š*\=š*\=TCŕOLAND˙˙˙˙˙˙mac on save ( adrItem, flClosing ) local ( atts ) local ( adr = window.frontmost () ) window.attributes.getAll ( @atts, adr ) if defined ( atts.type ) and atts.type == "outlinerFile" Frontier.tools.data.windowTypes.outlinerFile.save ( adr ) window.attributes.getAll ( @atts, adr ) // Update f attribute if defined ( atts.f ) if ( ( string.patternMatch ( "gems", atts.f ) > 0 ) || ( string.patternMatch ( "instantOutliner", atts.f ) > 0 ) ) local ( outlinesPath = user.radio.prefs.wwwfolder + "outlines" + file.getPathChar() ) local ( outlinesFile = file.fileFromPath ( atts.f ) ) file.copy ( atts.f, outlinesPath + outlinesFile ) return true else return false €€$datatabl.¸ţ¸.¸ţ¸.€€$datatabl.¸ţ¸.¸ţ¸.€WdatatablG¸ţ¸.¸ţ¸. createdSat, 04 May 2002 13:41:08 GMT€€$datatabl.¸ţ¸.¸ţ¸.€WdatatablG¸ţ¸.¸ţ¸. createdSat, 04 May 2002 13:41:22 GMT€€€€€€€š€ëĹŰ000000060001001777AA000000000068000000001001710000001-7FFF6FBE1800000‚‚4800480613E200-1‚0Â6‚13E222FFFF0‚‚10‚‚3‚1E0000010000003B0000000102D840840‚‚6‚13E2222AE038E000131613E250000200€ő€&źDďHC Geneva š úyš"ĽŰ™Ś LAND˙˙˙˙˙˙mac on register () if activeRendererSuite.utils.serialOk() dialog.notify(string.replace(activeRendererData.guichuncks.texts.regNumNotify, "##num##", user.rootUpdates.servers.activeRenderer.serialNum)) else case dialog.ThreeWay(activeRendererData.guichuncks.texts.askRegistrationCOnfirm, "Cancel", "Register", "Yes") 1 2 activeRendererSuite.utils.openUrl(activeRendererData.prefs.serialUrl+"$msg="+string.urlencode("activeRendererData.guichuncks.texts.serialPut")) 3 activeRendererSuite.utils.openUrl (activeRende€‘&‚l"žGeneva ť—’ť—’iDGÖLAND˙˙˙˙˙˙mac on update( procID = 0 ) Information 1/28/03; 10:33:50 PM by MB Added fixing of end of lines for Windows systems 1/15/03; 7:11:36 PM by MB Update external elements right after Frontier database update Do not wait for next Radio restart. 11/15/02; 2:25:22 PM by MB Only test system.temp.activeRenderer.instal' modification date if it is defined Set an updating semaphore in system.temp.activeRenderer before update, reset it when finished 11/14/02; 3:36:27 PM by MB Terminate calling thread before starting a new instance of the instal script 11/4/02; 3:11:46 PM by MB Corrected a bug in the calling thread waking process, reported by Doug Baron 22.10.02; 21:15:39 Uhr by AR/MB Code review with Andre Radke Suppressed the use of a scratchpad subtable Relaunch installation if instal script was updated 9/23/02; 2:30:40 PM by MB Removed call to Frontier.bringToFront 7/4/02; 1:51:55 PM by MB Added support for logging failure 6/29/02; 7:56:54 PM by MB Added support for installation thread wake up 6/28/02; 7:17:32 PM by MB Add logging with number of downloaded parts. local startTime = clock.ticks() // initialize time stamp ctParts = 0 // number of updated parts basePath = user.radio.prefs.wwwfolder + "gems" + file.getPathChar() + "activeRenderer" modCSS = timeModified ( @activeRendererData.texts.css ) modJavascript = timeModified ( @activeRendererData.texts.javascript ) modXslHtml = timeModified ( @activeRendererData.texts.xsl_html ) modXslJs = timeModified ( @activeRendererData.texts.xsl_js ) modRsLite = timeModified ( @activeRendererData.texts.rslite ) modPrefs = timeModified ( @activeRendererData.texts.prefs ) modTemplate = timeModified ( @activeRendererData.texts.template ) on getVersion ( txt ) // Returns a version number from the parameter string local matchList = {} pattern = "version[: ]+([0-9\.a-zA-Z]+)" version = "" regex.extract ( pattern, @txt, @matchList, {1} ) if sizeOf ( matchList ) > 0 version = matchList[1] return version on eolFix ( txt ) // Fixes end of line marker according to operating system regex.subst ( "[\r\n]+", "\r", @txt ) // Remove any \n marker and multiple \r markers if string.lower ( string.mid ( sys.os (), 1, 3 ) ) == "win" // Fix eol markers for Windows systems txt = string.replaceAll ( txt, "\r", "\r\n" ) return txt if ! defined ( system.temp.activeRenderer ) // create temporary table if needed new ( tabletype, @system.temp.activeRenderer ) system.temp.activeRenderer.updating = true // set updating semaphore radio.log.add ( "activeRenderer", "Checking \"" + user.rootUpdates.servers.activeRenderer.server + "\" for updates.", startTime ) window.about() // Bring Radio status window to the front try rootUpdates.update (@activeRendererSuite, true, @ctParts ) // check for updates if ctParts > 0 // if some parts were downloaded radio.log.add( "activeRenderer", ctParts +" new part(s) loaded from \"" + user.rootUpdates.servers.activeRenderer.server + "\".", startTime ) else // no available parts radio.log.add( "activeRenderer", "No new part(s) found on \"" + user.rootUpdates.servers.activeRenderer.server + "\".", startTime ) else // catch update errors msg ( tryError ) radio.log.add ( "activeRenderer", "Update failed: " + tryError, startTime ) if defined ( system.temp.activeRenderer.instal ) && timeModified ( @activeRendererSuite.instal ) > timeModified ( @system.temp.activeRenderer.instal ) // if update was launch at startup (autoupdate true) and the instal code was modified during update radio.log.add( "activeRenderer", "activeRendererSuite.instal was updated, re-launching installation.", startTime ) if procID > 0 && thread.exists ( procID ) // if called from a waiting parent thread thread.kill ( procID ) // terminate the calling thread before starting a new one. system.temp.activeRenderer.instal = activeRendererSuite.instal thread.callScript ( @system.temp.activeRenderer.instal, {} ) // Relaunch installation code in a separate thread else // no modification of instal code, check external elements instead if timeModified ( @activeRendererData.texts.css ) > modCSS // css stylesheet was modified local cssPath = basePath + file.getPathChar() + "outliner.css" currentVersion = getVersion ( file.readWholeFile ( cssPath ) ) updateVersion = getVersion ( string ( activeRendererData.texts.css ) ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile ( cssPath, eolFix ( string ( activeRendererData.texts.css ) ) ) radio.log.add ( "activeRenderer", "CSS file updated.", startTime ) if timeModified ( @activeRendererData.texts.javascript ) > modJavascript // javascript code was modified local jsPath = basePath + file.getPathChar() + "outliner.txt" js = eolFix ( string ( activeRendererData.texts.javascript ) ) currentVersion = getVersion ( file.readWholeFile ( jsPath ) ) updateVersion = getVersion ( js ) js = string.replaceAll ( js, "http://radio.weblogs.com/0104487/", radio.weblog.getUrl () ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile ( jsPath, js ) radio.log.add ( "activeRenderer", "outliner JavaScript code updated.", startTime ) if timeModified ( @activeRendererData.texts.xsl_html ) > modXslHtml // xsl/html renderer was modified local xslPath = basePath + file.getPathChar() + "outliner_xsl.txt" xsl = eolFix ( string ( activeRendererData.texts.xsl_html ) ) currentVersion = getVersion ( file.readWholeFile ( xslPath ) ) updateVersion = getVersion ( xsl ) xsl = string.replaceAll ( xsl, "http://radio.weblogs.com/0104487/", radio.weblog.getUrl () ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile (xslPath, xsl ) radio.log.add ( "activeRenderer", "outliner xsl/html code updated.", startTime ) if timeModified ( @activeRendererData.texts.xsl_js ) > modXslJs // xsl/javascript renderer was modified local xslPath = basePath + file.getPathChar() + "outliner_js_xsl.txt" xsl = eolFix ( string ( activeRendererData.texts.xsl_js ) ) currentVersion = getVersion ( file.readWholeFile ( xslPath ) ) updateVersion = getVersion ( xsl ) xsl = string.replaceAll ( xsl, "http://radio.weblogs.com/0104487/", radio.weblog.getUrl () ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile (xslPath, xsl ) radio.log.add( "activeRenderer", "outliner xsl/js code updated.", startTime ) if timeModified ( @activeRendererData.texts.rslite ) > modRsLite // rsLite code was modified local jsPath = basePath + file.getPathChar() + "rslite.txt" js = eolFix ( string ( activeRendererData.texts.rslite ) ) currentVersion = getVersion ( file.readWholeFile ( jsPath ) ) updateVersion = getVersion ( js ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile ( jsPath, js ) radio.log.add ( "activeRenderer", "rslite JavaScript code updated.", startTime ) basePath = user.radio.prefs.wwwfolder + "outlines" if timeModified ( @activeRendererData.texts.prefs ) > modPrefs // #prefs.txt was modified local prefPath = basePath + file.getPathChar() + "#prefs.txt" prefs = file.readWholeFile ( prefPath ) // get current content bundle // Fix any broken end of file, just in case regex.subst ( "[\r\n]+", "\r", @prefs ) // Remove any \n marker and multiple \r markers regex.subst ( "\r+\\Z", "", @prefs ) // Remove any trailing end of line markers if string.patternMatch ( "flDisplayHTMLWedge", prefs ) == 0 prefs = prefs + cr + "#flDisplayHTMLWedge true" // Add a new line marker and the flDisplayHTMLWedge directive file.writeWholeFile ( prefPath, prefs ) // Replace with updated copy radio.log.add ( "activeRenderer", "#prefs.txt file updated in outlines folder.", startTime ) if timeModified ( @activeRendererData.texts.template ) > modTemplate // #template.txt was modified local templatePath = basePath + file.getPathChar() + "#template.txt" currentVersion = getVersion ( file.readWholeFile ( templatePath ) ) updateVersion = getVersion ( string ( activeRendererData.texts.template ) ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile ( templatePath, eolFix ( string ( activeRendererData.texts.template ) ) ) radio.log.add ( "activeRenderer", "#template.txt file updated in outlines folder.", startTime ) if procID > 0 // If a a calling process id was passed along if thread.exists ( procID ) and thread.isSleeping ( procID ) // if the process is still there and paused thread.wake ( procID ) // Wake up the dozing thread system.temp.activeRenderer.updating = false // reset updating semaphore return true bundle // test code update () €„„€„„„€„€„„„€€€€€€€€€€€€€€€€;_.ťŻńLPš ol2DGIFfGIF89a ‘ŢŢŢ­­­˙˙˙!ů, ”ŠË˘”Îx,EzAT;ol3FGIFfGIF89a ‘ŢŢŢ˙˙˙!ů, ”bЁšÜŒoJnȗKď€I;space/GIFfGIF89a€˙˙˙!ů,D;VArial _€„ôB¸ô§ šůéˆ  * 0< LX ^ guichuncksŤ images–ŞprefsđŰrootupdatetableÔŻtextsôŤńvŞž€6„ôV¸ô§ ¸ö%  "4 @Y eŚ Ť˝¸ô§ É Ńauthor Marc Barrot authorEmailmba€‡Ł%Geneva TšÇľš"ő0,'ďLAND˙˙˙˙˙˙mac activeRendererSuite.utils.register() €€ ¸ô§ ¸öś VŔGeneva ¸ô§ ¸ô§ 'ďLAND˙˙˙˙˙˙mac 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.¸ô§ ¸ô§ any?&2“.¸ô§ ¸ô§ AI Q condition3(string.lower (path) beginsWith "/activerenderer/")enabledmethodsŘ@ˆ“€<îÚ ›Geneva (€; ŚFFFF00000006€Sże~śŇ˛Źš-=Ű )1 <Z e† ŁŤP° şž ĹŰ ß autobackupdbnameactiveRenderer.rootdialogs infomethodtoolsupdate.askUpdateParts lastupdateTue, 04 Jun 2002 14:54:02 GMTmethodtoolsupdate.updateopenLogport serialNumserverupdates.xml-rpc.itURLVGeneva ýżA(\6‡€T;V¸ô§ ťŻń  "4 @_ kŻ ´Ćş‰ipŇ Úauthor Marc Barrot authorEmailmbarrot@dig.fr descriptionOutline rendering for Radio homePageUrl@http://radio.weblogs.com/0104487/outlines/aR/activeRenderer.htmlnameactiveRenderer releaseDateversion1.4.61ion1.0rc2ubmitT€ cRôL¸€|š*\ź ~ ’ &† “Ä Ń@ JaskRe€Z€Ľ† ZGeneva Tš$Bš6 ö'ďLAND˙˙˙˙˙˙mac webbrowser.openURL ( "http://127.0.0.1:5335/activeRenderer/" ) webbrowser.bringtofront () €€Ţ€ť†~Ĺ Geneva š=cAš=cAŒ?<2LAND˙˙˙˙˙˙mac on nodeState ( day, tpl = "" ) header comments vs 1.02 last updated 6/21/02 by MB local ( imgPath = radio.weblog.getUrl () + "gems/activeRenderer/" ) wedgeImg = imgPath + "ol2.gif" wedgeTitle = "collapse" nodeClass = "expanded" titleWeight = "bold" if !flArchivePage and ( ( tpl == "day" and !activeRendererData.prefs.outlineItems ) or ( tpl == "item" ) ) local ( adrblog = radio.weblog.init () ) local ( adrposts = @adrblog^.posts ) local ( adr = @adrposts^ [ sizeOf ( adrposts^ ) ] ) local ( t = adr^ ) local ( d = date.shortString ( t.when ) ) if ( d != day ) wedgeImg = imgPath + "ol3.gif" wedgeTitle = "expand" nodeClass = "collapsed" titleWeight = "normal" return "" €„€—ŔFFFF000000060001001777AA000000000062000000001001710000001-7FFB6FBE1800000‚‚48004806200-1‚0Â6‚20222FFFF0‚‚10‚‚3‚F00001000000350000000103340840‚‚6‚202228038E00013620B600002000000380000000033,#title "update" {activeRendererSuite.gui.update ()}00040000000900000002035000050000000E000000030101350000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 20ÂÁ ‚‚Á‚00070000002F000000020Â‚20180‚Á‚Á‚10160‚Á‚0008000000970000000140,Geneva40,4030 10000900000015000000023‚9C17D3‚9C17D000A00000015000000026‚202226‚20222000B00000005000000020Â000C0000001300000001FE‚A5C04A‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ4,77A4,˙˙4,˙˙4,D@4,D@4,4,D@00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-.Śš°­­.'"ÔŐŇÓÉÉFFFF0FFFF0FFFE000000060001001777AAš´ż š´Ŕ33xâ<€ c›Geneva ¸ô§ ¸ô§ 'ďLAND˙˙˙˙˙˙mac This script runs every hour. „›Geneva ¸ô§ ¸ô§ 'ďLAND˙˙˙˙˙˙mac This script runs every minute. „€çX]Geneva š”#š”#€K€R‰/šeŐ Home@Ň4VArial €ç{w.¸ô§ š*\'  ". 9 everyHourĐN^ everyMinuteĐO everyNightĐR{€ÍĹŰ)Geneva T¸ô§ šR‘'ďLAND˙˙˙˙˙˙mac edit ( @activeRendererData.texts.about ) € local ( adr = window.frontmost () ) €Íç]Geneva š*\'š*\'˙_ÇŕLAND˙˙˙˙˙˙mac This script runs every night. window.about() rootUpdates.update (@activeRendererSuite, true) „€€ç€@Q(NzGeneva€+€Áf`f`6dyĚGeneva (E6p€Ef` ZGeneva Tš$B€ř<âLˇ͜šZd  *6 ?K Vb my † editPrefs˜UjsRegistrationAlertťpopUnder5ä registeredÖ} saveSerialƒ unRegisteredžÎVGeneva 4‡228–S€@3/¸ô§ ťŻń save0ÔË3€°€¨ ,Geneva ¸őcŒ¸ő}řŸBgĂLAND˙˙˙˙˙˙mac on startup () activeRendererSuite.instal() €€€°62¸ô§ ťŻń startup0“06RN$¸ô§ ¸ô§  fileMenuxU@userxV;R€$ź¤|5Geneva €;Z*¸Geneva šˆšˆ'ďLAND˙˙˙˙˙˙mac on openUrl (theUrl) try webbrowser.openurl (theUrl) else if !system.environment.isMac or !(tryError contains "Mac OS Error") scritpError(tryerror) webbrowser.bringtofront () €€€€€€€€Ąë ( +Geneva š9n–š9n–(_LAND˙˙˙˙˙˙mac on activeRenderer ( ol ) header comments vs 1.0 beta 3 - last updated 6/21/02 by MB Added title identifications with t + tree and nodeTitle name attribute vs 1.0 beta 2 - last updated 6/14/02 by MB Use '>' instead of 'wedge' as an alt attribute for wedge images target.set ( ol ) op.firstSummit () local level = 1 subsCnt = op.countSummits () cssClassName = "active" tree noSubsImg = ( radio.weblog.getUrl () + "gems/activeRenderer/ol1.gif" ) expandedImg = ( radio.weblog.getUrl () + "gems/activeRenderer/ol2.gif" ) collapsedImg = ( radio.weblog.getUrl () + "gems/activeRenderer/ol3.gif" ) wedgeImg s on visit ( siblings ) local ( node = 1 ) loop local ( u = "" ) local ( activeClass ) local ( subsCnt = op.countSubs ( 1 ) ) local ( hasSubs = ( subsCnt > 0 ) ) local ( isExpanded = op.subsExpanded () ) local ( hasUrl = op.attributes.getOne ( "url", @u ) ) s = s + ( "
" ); if level == 1 tree = node + ( "-" + siblings + "." ); else tree = tree + ( node + "-" + siblings + "." ); s = s + "
"; if hasSubs s = s + ( "" ); if ( isExpanded ) wedgeImg = expandedImg wedgeTitle = "collapse" else wedgeImg = collapsedImg wedgeTitle = "expand" else wedgeImg = noSubsImg wedgeTitle = "" s = s + ( "\">\"" ); if hasSubs s = s + "" s = s + ""; s = s + "" if hasUrl s = s + ( "" ); s = s + op.getLineText (); if hasUrl s = s + ""; s = s + "
"; if hasSubs if ( isExpanded ) activeClass = "expanded" else activeClass = "collapsed" op.expand (1) s = s + ( "
" ); if op.go ( right, 1 ) level++ visit ( subsCnt ) if level >1 regex.subst ( "[0-9][0-9]*-[0-9][0-9]*\.$", "", @tree ) level-- op.go ( left, 1 ) else s = s + "
"; if level >1 regex.subst ( "[0-9][0-9]*-[0-9][0-9]*\.$", "", @tree ) if node == siblings s = s + "
"; local ( lst = regex.split ( "\\.", @tree ) ) local ( coord = lst[ sizeOf ( lst ) - 1 ] ) lst = regex.split ( "-", @coord ) local ( rev = tree ) while ( rev != "" ) and ( lst[1] == lst[2] ) s = s + ""; regex.subst ( "[0-9][0-9]*-[0-9][0-9]*\.$", "", @rev ) if rev != "" lst = regex.split ( "\\.", @rev ) coord = lst[ sizeOf ( lst ) - 1 ] lst = regex.split ( "-", @coord ) if not op.go ( down, 1 ) break else node++ visit ( subsCnt ) return ( s ) €„€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€˜Í*+Geneva ¸ôľ+¸řo'eőLAND˙˙˙˙˙˙mac on activeRendererFunctions() local ( s = "" ) s = s + "

outline

\n"; s = s + "

collapse all

\n"; s = s + "

expand all

\n"; s = s + "

how this works

"; return ( s ) €€€€€€€€q€ …ú$4Geneva ¸ô´Ÿ¸řoD'&ôLAND˙˙˙˙˙˙mac on activeRendererHeader() local ( s = "" ) local ( packageRoot = radio.weblog.getUrl () + "gems/activeRenderer/" ) s = s + ( "\n" ); s = s + ( "" ); return ( s ) €€€€€€Ѐ-…úoGeneva€†€•rđ`šŁóîšËĹ  #/ 7C LX co ~Š ‘ ­ editBookmarks9śüeditPath9ŠUgetOpml9dÁinitPath9Żň restoreUrl9u¤synchBookmarks9ˆĎupdate9‰šupdateBookmarks9Źă!€hrđ`¸őşjšľ[†  " .: GS ^j p| ƒ ˜about9OTcss9‰ dayTemplate9ÖÍ itemTemplate9Íe javascript9˘prefs9+qrslite9ŒŹtemplate9ł™ €PrđfŻGeneva š¤8š¤8€'€ ‰<ü7šľ[†  * 4@ HT [g q} „ šŚ Ťˇ ˝É ĎŰ äđ ű  !#filtersŹs#ftpSiteŹ€R #glossaryŹ#Ę#imagesŹ;ƒ#prefsŹß #templateŹ9!#toolsŹ„z bookmarksŹóXhelpŹDÇindexʤăprefsŹŔÍregisterŹÖ saveSerialŹŻÔthanksŹ/uupdateŹťÚVVerdana ş“??8“ň1€ L<îVˇ͜šěşˆ  $0 DP Ye p| ‡“   editBookmarksc8 editPrefs˜UjsRegistrationAlertťpopUnder[Ö registeredÖ} saveSerialƒ unRegisteredžÎVGeneva 4‡228–S`€ŕ<î<ĺGeneva ¸ő‹*¸řoäU—ךLAND˙˙˙˙˙˙mac on storyBox() local ( s = "" ) local ( class="storybox" ) local ( d = clock.now () ) try s = s + ( "

" ); s = s + "\"OPML"; s = s + " opml 1.0
"; s = s + ( "
last updated: " + d + "
" ); return ( s ) €€€€€€€€€€™€;<î8¸őŠë¸ő‹ $ 9E Q] factiveRendererFunctionsxgactiveRendere€r€2€¨6bArial TˇWËŹš"ô,I?áŔLAND˙˙˙˙˙˙mac system.temp.update = activeRendererSuite.update thread.easyCall ("system.temp.update", {}) bundle if activeRendererSuite.utils.serialOk() system.temp.update = activeRendererSuite.update thread.easyCall ("system.temp.update", {}) else if dialog.YesNo(activeRendererData.guichuncks.texts.NotRegisteredAlert) activeRendererSuite.utils.register() €€„€€€€€€€¨ ‰Geneva ¸ô§ ¸ö<'ďLAND˙˙˙˙˙˙mac This script returns a string which appears in the Status Center on the Radio UserLand home page. return (activeRendererInfo.description) „€ €ý€¨V¸ô§ š­¨  &2 <H O[ bn s “activeRendererŮŠ‘ backgroundŮPĄ callbacksŮV}instalŮÖĽmacrosŮĐ×menuŮë”statusCenterMessageŮwö€°Geneva ¸ô§ ¸ô§ 'ďLAND˙˙˙˙˙˙mac 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.¸ô§ šH]˙˙˙ ctenabledscriptńz€$źţtArial śFűśFű 2ŽLAND˙˙˙˙˙˙mac on finalFilter (pta) pta^.renderedText = string.replace (pta^.renderedText, "[[title]]", "") return (true) €�����€�����€��������ţ���ą�������� ���-����Geneva���������������������������� ��������������­ÂEu´`ŢQ������ �2LAND˙˙˙˙˙˙������mac ������������on firstFilter (adrPageTable) return (true) €�����€��������ą��ý��������*��[����Geneva���������������������������� ��������������­ÂEuľü7a���m���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) €�����€�����€�����€�����€�����€�����€�������ý���Ó�������y���.���­ÂEźśFű�������� ���� ��� ����$���0 ����; finalFilter����(��{Ł firstFilter����(��|­ pagefilter����(��}j��VGeneva���������������������������� ����������č�P�E��$Ď�������������������������Ó���J�������F������ľü7¨¸ô§ �������� ����url��� http://127.0.0.1/activeRenderer/���J€�+������OŽ����������ľü8H������VArial��������€��*€��ő������Rô������š$@ýš045�������� ���� editPrefs����`�Ȗ���8€��ą������Rô����������´ž–������������space���/GIFfGIF89a��€��˙˙˙���!ů����,�������D�;��VArial����������������������������� ���������������������������������������������€�+���������Ĺ���V�������´ž†�������� ������� �������"�������+ ����0���: ����C���L ����Q���[ ����aalink���008000bgcolor���FFFFFFflRenderlink���0000FFspaceGif���spacetext���000000vlink���800080��VArial����������������������������� �����������������������������������������������€�d�����żw���.���¸ô§ ť—4������������������€��*���@�������<������şJTť—3�������� ����displayServerName����Ŕ�šÂ€��v���â�������� ���^����Geneva���������������������������� ����������T��š7eš7e#���L��'ď�LAND˙˙˙˙˙˙������mac ������������webbrowser.openURL ( "http://127.0.0.1:5335/activeRenderer/help" ) webbrowser.bringtofront () €�����€�����€�d���n�����������������ľü8>������VArial����������������������������� ������������������������������������������������n€� đ������’ś000000060001001777AA00000000005A000000001001710190490021800000‚‚6000600329200-1‚0Â3‚2921FFFFF0‚‚10ÂE0000100000031000000010E840‚‚3‚2921FE048E000163293000020000001200000000�E,#title "Home" 000400000009000000020100000500000009000000020100000600000032000000010ÁF310‚‚ÁFFFF0‚C00000 20ÂÁ ‚‚Á‚000700000019000000010Â‚201E0‚Á‚0008000000A900000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������10A0304E44000‚‚10Â10000900000015000000020‚961770‚96177000A00000015000000023‚2921F3‚2921F000B00000005000000020Â000C0000001200000001E36‚9AF10‚000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,appn�4,send�4,8óđ�4,&����4,8ô€�4,3Š�4,8ôđ00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��ś��ľ��•��ľ��Ľ��Ľ��.��'��"��‘��’��“��”��…��ƒ��FFFF0FFFF0FFFE000000060001001777AA�ą§PÄľü7¨�����������������������������������������������������}�5#ź�������������������������������������������������������������„€�Q������’ś���`���ľü7śFű�������� ���� ��� �������* ����4���@ ����H���T ����[���g ����q���} ����„��� ����–€��i€�Ü������ě���t���ľü7š,?Ž�������� ���� ��� �������* ����4���@ ����H���T ����[���g ����q���} ����„��� ����–���˘ ����¨���´ ����ż#filters����8��s#ftpSite����8��€R #glossary����8��P #images����8��"#prefs����8��ß #template�����8��ƒ #tools����8��„zindex����8��„ôprefs����8��ŔÍ saveSerial����8�av��VVerdana��������������������������� ����������ş�“�??8“ň������������������������€�3������ě�F���;���Geneva���������������������������� ��������������¸ô§ š"ňĆ��|��'ď�LAND˙˙˙˙˙˙������mac ������������activeRenderer About Update Register... Preferences... €�����€���� ����Q(����€���� ����uÚ����€���� ����>K����€���� ����Œ§�������ů€�=������ě����D����Geneva���������������������������� ����������T��š$Bš$B�����'ď�LAND˙˙˙˙˙˙������mac ������������webbrowser.openURL ( "http://127.0.0.1:5335/activeRenderer/prefs" ) €��������€�o������ě�„��s���Geneva���������������������������� ��������������š*\őš*\ő������D_ôRLAND˙˙˙˙€�á����������H��C� ��Geneva���������������������������� ��������������š úyš"Ľ�����Ű™Ś LAND˙˙˙˙˙˙������mac ������������on register () if activeRendererSuite.utils.serialOk() dialog.notify(string.replace(activeRendererData.guichuncks.texts.regNumNotify, "##num##", user.rootUpdates.servers.activeRenderer.serialNum)) else case dialog.ThreeWay(activeRendererData.guichuncks.texts.askRegistrationCOnfirm, "Cancel", "Register", "Yes") 1 2 activeRendererSuite.utils.openUrl(activeRendererData.prefs.serialUrl+"$msg="+string.urlencode("activeRendererData.guichuncks.texts.serialPut")) 3 activeRendererSuite.utils.openUrl (activeRendererData.prefs.regPageUrl) msg(register ()) €�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€� đ��ş������čŃ@xÖChicago��������������������������?˙� ���������������˙˙˙˙˙˙˙˙ Lucida Grande���������������������� �����������������A�š�čŕGeneva����������������������������� ����������������^}¸Chicago��������������������������?˙� ����������������mnŠChicago��������������������������?˙� ����������������˙˙˙˙˙˙˙˙ Lucida Grande���������������������� ����������������������˙˙����������������������������������������������������������ş€�������VŰž��z�0��Geneva���������������������������� ������������š�p†š�l?������D�K´ÎLAND˙˙˙˙˙˙������mac ������������on instal () if ( €��‹��2�����������œ���Geneva���������������������������� ��������������¸ĺ˜Ŕ¸ĺŹ�����'ď�LAND˙˙˙˙˙˙������mac ������������on buildPostArgs (theTableAdr) local pta=html.getpageTableAddress() new( tableType, theTableAdr ) webserver.parseArgs( pta^.requestBody, theTableAdr ) €�����€�����€�����€�����€�����€�ɀ�Ń������Ae����™���Geneva���������������������������� ��������������¸ĺ˜Ŕ¸ĺ™C��� ��'ď�LAND˙˙˙˙˙˙������mac ������������on buildPathArgs (theTableAdr) local pta=html.getpageTableAddress() new( tableType, theTableAdr ) webserver.parseArgs( pta^.pathArgs, theTableAdr ) €�����€�����€�����€�����€�������/€�–������Ae����u���Geneva���������������������������� ��������������š*\nš*\n������éĘđLAND˙˙˙˙˙˙������mac ������������on update() Frontier.bringToFront() window.about() rootUpdates.update (@activeRendererSuite, true) return (true) €�����€�����€�����€�����€������� €�������Ae����˛���Geneva���������������������������� ��������������š*\„š*\„������ÎWľőLAND˙˙˙˙˙˙������mac ������������This script returns a string which appears in the Status Center on the Radio UserLand home page. return (activeRendererInfo.description) + activeRendererSuite.utils.getHomeJS() „�����€�����„�������<€� ć������Ae000000060001001777AA000000000078000000001001710000001-7EFF6FBE1800000‚‚48004806715200-1‚7C67C77C67C70Â6‚715222FFFF0‚‚10‚‚3‚1040000100000038000000010CC6840‚‚6‚715222CC6038E000708671560000200000CCC00000000�CC6,/* Outliner functions version: 1.0b1 last€�Ś€� Ô������É���L���šˆjš9n–�������� ������� ����(���4 ����>���J ����R���^ ����g���s ����| buildPathArgs������ R buildPostArgs������  getHomeJS������\üopenUrl������ Žregister�������áserialOk�� Ď��R�����°������������!�������(�!������� ,€ ������� €&�������,€�������� �������,�"�������,����� �� ������������������&�������8,€���� �� �� �������7,�"�������,����� �������� ���� �������6,�"�������.,�������!��������.��#�������5,�������1��������4��&������� ,����� ���������� ��/�������4€ �������7,€���� ����"�������6,�"�������,,�"������� ,�"�������,������� �������������� �� ��'�������,����� ��+������ ��6���������8<€�������8,��������(,� �������,� �������,������� ������ ������������ �������(,�#������� ,����� ������������������%�� �������8,�#�������2,����� ��.��������1��������7�������� � ������ � �� ������ �€&������ �,€����� �������� ���&������ �,������ �������� ��� ������ �0,€���� � �������(� �/�� �������#,€���� ���� �������",�"�������,����� ���������������� ���€�������€������!�� �������$,€���� ���� �������#,�"�������,����� ���������������� ���€�������€������"�� �������,€�������� �������,�"�������,����� �� �������������� ���€�������€�������� �������%,€���� �� �� �������$,�"�������,����� ���������������� ���€������ �€������#��������� O€�������������� ���������� �������,€�������� �������,�"�������,����� �� ������ �������� ���€�������� �������!,€�������� ������� ,�"�������,����� �� ������ �������� ���€�������� �������!,€�������� ������� ,�"�������,����� �������������������€���� ���� �������!,€�������� ������� ,�"�������,����� �������������������€���� ���� �������,€���������������,����������������� ������� ,€�������� �������,������������������������ <€ �������,����������������� �������,�����������������/�������4�:�������,���������#�������,����� �������������������� �������,������� ����������������� ������� ���������(����� �� �� �������,��������� �������(����� �� ��TEXTxTEXTstringTEXTparseAddressTEXTthisTEXTtToolNameTEXTstringTEXTpopSuffixTEXTfileTEXTfilefrompathTEXTxlong���TEXTtheSNlong����TEXTtheSNTEXTuserTEXTrootUpdatesTEXTserversTEXTtToolNameTEXTserialNumtokn� TEXTtheSNlong���TEXTtheSNlong���TEXT-TEXTtheSNlong��� TEXT-bool�TEXTgen2TEXTTEXTgen3TEXTTEXTvectorTEXT0123456789abcdefghkjilmnopqrstuvwxyzTEXTtheToolTEXTstringTEXTmidTEXTtheSNlong����long���TEXTtheProgTEXTstringTEXTmidTEXTtheSNlong��� long���TEXTgenTEXTstringTEXTmidTEXTtheSNlong���long���TEXTrandomnumTEXTstringTEXTmidTEXTtheSNlong���long���long���long���TEXTiTEXTc1TEXTstringTEXTnthCharTEXTtheProgTEXTiTEXTc2TEXTstringTEXTnthCharTEXTrandomnumTEXTiTEXTxTEXTstringTEXTpatternmatchTEXTc1TEXTvectorTEXTzTEXTstringTEXTpatternmatchTEXTc2TEXTvectorTEXTdTEXTxTEXTzTEXTyTEXTabsTEXTdTEXTylong����TEXTylong��� TEXTgen2TEXTvectorTEXTyTEXTgenTEXTgen2bool�TEXTserialOkTEXTmsgTEXTserialOk�� Ł€�%������É000000060001001777AA000000000077000000001001710000001-7EFB6FBE1800000‚‚4800480673C200-1‚7C67C77C67C70Â6‚73C222FFFF0‚‚10‚‚3‚3B0000100000038000000010CC6840‚‚6‚73C222CC6038E00072F673C60000200000CCC00000000�CC6,/* Outliner functions ver€�†��€����FFFF000000060001001777AA000000000066000000001001710000001-7FFB6FBE1800000‚‚48004806FD200-1‚0Â6‚FD222FFFF0‚‚10‚‚3‚25F00001000000380000000103E240840‚‚6‚FD2223DC038E000F06FD2500002000003E800000000�3E2,#title "Thanks" <div style="text-align: center; margin-bottom: -30px; font-family: sans-serif;"> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/" title="Weblog local home page">Home</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/" title="activeRenderer's settings">Preferences</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/help/" title="activeRenderer's online help">Help</a></span> <span><a href="http://127.0.0.1:5335/activeRenderer/register/" title="activeRenderer's registration">Register</a></span> </div> <div style="border: #COCOCO solid 1px; padding: 30px; margin: 50px;"> <p>Thank you for registering your copy of activeRenderer.</p> <p>You serial number is on its way to your mailbox.</p> <p> Once you've received the registration message, copy the serial number and paste it into <a href="http://127.0.0.1:5335/activeRenderer/register/">this form</a>. </p> </div>00040000000A0000000203E4000050000000F0000000301013E40000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 20ÂÁ ‚‚Á‚00070000002F000000020Â‚20180‚Á‚Á‚10160‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000017000000023‚14E28C3‚14E28C000A00000015000000026‚FD2226‚FD222000B00000005000000020Â000C000000180000000125F1F4‚7535D83‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,“x���4,Ąm �4,�ŰĐ{�4,t`k�4,/RPC�4,�sŰ00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�š=%Ţš=(�����������������������������������������â����������3x”������ü����������������������������������������������������€���ů����FFFF000000060001001777AA000000000071000000001001710000001-7FFE6FBE1800000‚‚4800480623200-1‚314A314A0Â6‚23222FFFF0‚‚10‚‚3‚1E00001000000360000000103E40840‚‚6‚232221C038E00016623AF000020000004300000000�3E,#title "Save serial number" {activeRendererSuite.saveSerial()}00040000000F00000003011C0400000500000009000000020400000600000061000000020ÁA210‚‚ÁFFFF0‚A00000 30ÂÁ ‚‚Á‚ÁC310‚‚ÁFFFF0‚C00000 40ÂÁ ‚‚Á‚000700000019000000010Â‚20180‚Á‚00080000009C00000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030‚30Â10000900000015000000023‚9C17D3‚9C17D000A00000015000000026‚232226‚23222000B00000005000000020Â000C00000012000000011E1D‚‚B14‚1000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,D2@��4,D2@��4,�����4,D2@��4,D2Ŕ��4,����00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�š  š"§Ż������������������������������������������>����������Ç�#vł������u������������������������������������������������������ů€� č������Dď000000060001001777AA000000000076000000001001710000001-7FFB6FBE1800000‚‚4800480695200-1‚18618A18618A0Â6‚95222FFFF0‚‚10‚‚3‚1E7000010000003800000001023940840‚‚6‚95222210038E00088695BF000020000023F00000000�239,#title "Register" <div style="text-align: center; margin-bottom: -30px; font-family: sans-serif;"> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/" title="Weblog local home page">Home</a></span> <span style="ma€�ď�� í����FFFF000000060001001777AA000000000068000000001001710000001-7FFB6FBE1800000‚‚48004806131200-1‚0Â6‚131222FFFF0‚‚10‚‚3‚548000010000003B00000001054840840‚‚6‚131222542038E000124613125000020000054E00000000�548,#title "Thanks" <div style="text-align: center; margin-bottom: -30px; font-family: sans-serif;"> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/" title="Weblog local home page">Home</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/" title="activeRenderer's settings">Preferences</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/bookmarks/" title="Bookmarks synchronization">Bookmarks</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/register/" title="activeRenderer's registration">Register</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/help/" title="activeRenderer's online help">Help</a></span> <span><a href="http://radio.weblogs.com/0104487/outlines/aR/arFaq.html">Faq</a></span> </div> <div style="border: #COCOCO solid 1px; padding: 30px; margin: 50px;"> <p style="font-family: sans-serif; margin-top: 0px;">activeRenderer: <b>registration</b></p> <p>Thank you for registering your copy of activeRenderer.</p> <p>You serial number is on its way to your mailbox.</p> <p> Once you've received the registration message, copy the serial number and paste it into <a href="http://127.0.0.1:5335/activeRenderer/register/">this form</a>. </p> </div>00040000000A00000002054A000050000000F00000003010154A0000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 40ÂÁ ‚‚Á‚00070000002F000000020Â‚20180‚Á‚Á‚10160‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000017000000023‚14E28C3‚14E28C000A00000017000000026‚1312226‚131222000B00000005000000020Â000C00000018000000015481F6‚757251F‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,“x���4,Ąm �4,�ŰĐ{�4,t`k�4,/RPC�4,�sŰ00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�š=%Ţš¤Č��� ��������������������������������������H����������3x”������ i����������������������������������������������������€� č������FFFF000000060001001777AA00000000006F000000001001710000001-7FFF6FBE1800000‚‚480048061E200-1‚8168160Â6‚1E222FFFF0‚‚10‚‚3‚3B00001000000360000000103B40840‚‚6‚1E22215028E0001261EB2000020000004000000000�3B,#title "Preferences" {activeRendererSuite.gui.editPrefs ()}00040000000A00000002013D100050000000A00000002013D00006000000620000000210A210‚‚ÁFFFF0‚A00000 20ÂÁ ‚‚Á‚ÁA20‚‚ÁFFFF0‚900000 20ÂÁ ‚‚Á‚00070000002F000000020Â‚10180‚Á‚Á‚10160‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000015000000023‚9C17D3‚9C17D000A00000015000000026‚1E2226‚1E222000B00000005000000020Â000C00000012000000013B0‚7‚1AC‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,�‹Xë�4,e, r�4, Rad�4,Şh{�4,om ť�4,����00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�š$@iš+hR������������������������������������������;�����������Š,9ź������~������������������������������������������������������€� M������ҏ����.���Geneva���������������������������� ��������������š*\Hš*\H������ŸBpĚLAND˙˙˙˙˙˙������mac ������������on startup () activeRendererSuite.instal() €�����€�����€�������Šđ��ô��’ś��c��VŰ��˜�����������ـ� h������01�r��Ţ���Geneva���������������������������� ��������������šˆŹš€��H���§�����������)����Geneva���������������������������� ����������T��¸ô§ šR‘���)�'ď�LAND˙˙˙˙˙˙������mac ������������edit ( @activeRendererData.texts.about ) €�����€��ű€� a������€¨hČ������6dyĚ�����Geneva���������������������������� �(�E6��������������������������������������������������<form name="editPrefs" action="##���™€� ź������€¨����)����Geneva���������������������������� ����������T��¸ô§ šR‘���3�'ď�LAND˙˙˙˙˙˙������mac ������������edit ( @activeRendererData.texts.about ) €��������§€� ������€¨000000060001001777AA000000000065000000001001710000001-7FFF6FBE1800000‚‚4800480647200-1‚0Â6‚47222FFFF0‚‚10‚‚3‚6800001000000360000000107740840‚‚6‚4722268038E0003A64734000020000007C00000000�77,<script for=window event=onload> if ( confirm( "##text##" ) ) { window.open( "##url##" , "regWindow" ); } </script>000400000009000000020790000500000009000000020790000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 20ÂÁ ‚‚Á‚000700000019000000010Â‚20180‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000015000000023‚9C17D3‚9C17D000A00000015000000026‚472226‚47222000B00000005000000020Â000C00000016000000016867‚27FD5D1‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,˙˙�4,˙˙�4,D���4,�����4,�����4,D€�00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�šä}š03ƒ������������������������������������������w�����������.‡�Ý������l������������������������������������������������������đ€� ������€¨���$���ˇ̀¸€‚=�������� ������� ����objects����Ŕ��Ďätexts����Ŕ��Dď��VGeneva���������������������������� ����������§�‰�2@8ÖČ���������������������������This script runs every night.���ʀ�7������€¨����]���Geneva���������������������������� ��������������š)žš)ž�����˙_ÇŕLAND˙˙˙˙˙˙������mac ������������This script runs every night. window.about() rootUpdates.update (@activeRendererSuite, true) „�����€�����€�����€��ç€�D������OŽ���.���ˇ͜š04L�������� ���� ��� ����*���6 ����A editPrefs�������˜ŚjsRegistrationAlert������“Ş saveSerial��������H ��VGeneva���������������������������� ���������4�‡�228–S����������������������VŰ��˜�����������ç€�Q������OŽ���L���¸őŠëš,?§�������� �������$ ����9���E ����O���[ ����g���s ����}���‰ ����’activeRendererFunctions�������gactiveRendererHeader�������jX daySwitch�������ÚS espressoCup�������l4 nodeState�������ÖŘstoryBox�������rˇ���ň€��S������OŽ���)��OŽ���ç��ĹŰ���Ů���X��*��éJ��>��ˇN��×��Ae�� í��Q(�� ��w`���Š��ÖA���X��<€� M���O�������K���$���šeŐšeŐ�������� ���� ��� ����linetext���Homepath��� index.wsf���O€�" ������U�N��z���Geneva���������������������������� ������������šŞqšľN������e�¤*ĘLAND˙˙˙˙˙˙������mac ������������<b>activeRenderer</b> vs 1.0b1 An outline rendering tool for Radio and Manila. Created by ... Marc Barrot Copyright 2002 by Precision IT Management, Inc Feel free to use this code any way you like. Just keep the information in this 'about' outline intact. With the help of ... Simone Bettini Andre Radke Nicholas Riley Aaron Straup Cope Paolo Valdemarin €�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�@€�ž������u\��������Geneva���������������������������� ��������������¸ô§ šIj�� ��'ď�€�¤€�Y������b���’���ľü7šJ’�������� ���� ��� �������* ����4���@ ����H���T ����[���g ����q���} ����„��� ����•���Ą ����§���ł ����š���Ĺ ����Î���Ú ����ĺ���ń ����ř#filters����8��s#ftpSite����8��€R #glossary����8�#Ę#images����8��;ƒ#prefs����8��ß #template�����8��9!#tools����8��„zhelp����8�F‘index����8�zPprefs����8��ŔÍregister����8�rđ saveSerial����8��ŻÔthanks����8��Ž��VVerdana��������������������������� ����������ş�“�??8“ň������������������������ô€�Y������b���L���šˆjš=c@�������� ������� ����(���4 ����>���J ����R���^ ����g���s ����| buildPathArgs������bÄ buildPostArgs������av getHomeJS�������đ+openUrl�������ë¤register�������YserialOk�� Ď��R�����°������������!�������(�!������� ,€ ������� €&�������,€�������� �������,�"�������,����� �� ������������������&�������8,€���� �� �� �������7,�"�������,����� �������� ���� �������6,�"�������.,�������!��������.��#�������5,�������1��������4��&������� ,����� ���������� ��/�������4€ �������7,€���� ����"�������6,�"�������,,�"������� ,�"�������,������� �������������� �� ��'�������,����� ��+������ ��6���������8<€�������8,��������(,� �������,� �������,������� ������ ������������ �������(,�#������� ,����� ������������������%�� �������8,�#�������2,����� ��.��������1��������7�������� � ������ � �� ������ �€&������ �,€����� �������� ���&������ �,������ �������� ��� ������ �0,€���� � �������(� �/�� �������#,€���� ���� �������",�"�������,����� ���������������� ���€�������€������!�� �������$,€���� ���� �������#,�"�������,����� ���������������� ���€�������€������"�� �������,€�������� �������,�"�������,����� �� �������������� ���€�������€�������� �������%,€���� �� �� �������$,�"�������,����� ���������������� ���€������ �€������#��������� O€�������������� ���������� �������,€�������� �������,�"�������,����� �� ������ �������� ���€�������� �������!,€�������� ������� ,�"�������,����� �� ������ �������� ���€�������� �������!,€�������� ������� ,�"�������,����� �������������������€���� ���� �������!,€�������� ������� ,�"�������,����� �������������������€���� ���� �������,€���������������,����������������� ������� ,€�������� �������,������������������������ <€ �������,����������������� �������,�����������������/�������4�:�������,���������#�������,����� �������������������� �������,������� ����������������� ������� ���������(����� �� �� �������,��������� �������(����� �� ��TEXTxTEXTstringTEXTparseAddressTEXTthisTEXTtToolNameTEXTstringTEXTpopSuffixTEXTfileTEXTfilefrompathTEXTxlong���TEXTtheSNlong����TEXTtheSNTEXTuserTEXTrootUpdatesTEXTserversTEXTtToolNameTEXTserialNumtokn� TEXTtheSNlong���TEXTtheSNlong���TEXT-TEXTtheSNlong��� TEXT-bool�TEXTgen2TEXTTEXTgen3TEXTTEXTvectorTEXT0123456789abcdefghkjilmnopqrstuvwxyzTEXTtheToolTEXTstringTEXTmidTEXTtheSNlong����long���TEXTtheProgTEXTstringTEXTmidTEXTtheSNlong��� long���TEXTgenTEXTstringTEXTmidTEXTtheSNlong���long���TEXTrandomnumTEXTstringTEXTmidTEXTtheSNlong���long���long���long���TEXTiTEXTc1TEXTstringTEXTnthCharTEXTtheProgTEXTiTEXTc2TEXTstringTEXTnthCharTEXTrandomnumTEXTiTEXTxTEXTstringTEXTpatternmatchTEXTc1TEXTvectorTEXTzTEXTstringTEXTpatternmatchTEXTc2TEXTvectorTEXTdTEXTxTEXTzTEXTyTEXTabsTEXTdTEXTylong����TEXTylong��� TEXTgen2TEXTvectorTEXTyTEXTgenTEXTgen2bool�TE€�6��Č�������z��Ö����Geneva���������������������������� ��������������ť—ť—������hdłLAND˙˙˙˙˙˙������mac ������������on parseCookies ( httpResult, server, path, adrCookiesTable ) Information 11/1/02; 7:32:17 PM by MM (Mikel Maron) Cookie processing is broken in tcp.httpClient: Cookie Data containing "=", like the Yahoo cookies, are not parsed correctly if ( httpResult != "" ) // parse cookies here, since it is broken in tcp.httpClient local ( ixEndHeader, responseHeader, i, j ) ixEndHeader = string.patternMatch ( "\r\n\r\n", httpResult ) //try to find the end of the response header if ixEndHeader > 0 //there is a valid header, look for cookies responseHeader = string.mid ( httpResult, 1, ixEndHeader - 1 ) //get the header if string.lower ( responseHeader ) contains "set-cookie:" //the response header contains at least one cookie if not defined ( adrCookiesTable^ ) new ( tableType, adrCookiesTable ) for i = 1 to string.countFields (responseHeader, "\r") //find all the cookies local ( onecookie = string.nthField ( responseHeader, "\r", i ) ) //get the cookie onecookie = string.popLeading ( onecookie, '\n' ) if string.lower ( onecookie ) beginsWith "set-cookie:" local ( flsecure = false ) //not secure by default local ( domain = server ) //default domain to this server local ( cookiePath = "/" ) local ( expires = clock.now () + ( 24 * 60 * 60 ) ) //default expires at "end of session" local ( cookieName, cookieValue ) if path != "/" cookiePath = string.popSuffix ( path, "/" ) onecookie = string.popLeading ( string.mid (onecookie, 12, infinity), ' ' ) for j = 1 to string.countFields ( onecookie, ';' ) local ( cookiepart = string.nthField ( onecookie, ';', j ) ) cookiepart = string.popLeading ( cookiepart, ' ' ) case string.lower ( string.nthField ( cookiepart, '=', 1 ) ) //take care of standard parts "domain" domain = string.nthField ( cookiepart, '=', 2 ) "path" cookiePath = string.nthField ( cookiepart, '=', 2 ) "expires" on cookieDateToSystemDate ( cookieDate ) try //some cookie dates can be converted to dates directly local ( systemDate = date ( cookieDate ) ) if systemDate < date ( "Monday, 6-Feb-2040" ) return ( systemDate ) try //it may be a date in the 21st century local ( lastpart = string.nthField ( cookieDate, "-", 3 ) ) local ( ixstart = string.patternMatch ( lastpart, cookieDate ) ) return ( date ( string.insert ( "20", cookieDate, ixstart ) ) ) return ( false ) expires = cookieDateToSystemDate ( string.nthField ( cookiepart, '=', 2 ) ) if expires == false //invalid cookie, ignore it break "secure" flsecure = true else // this is the actual cookie name/value cookieName = string.nthField ( cookiepart, '=', 1 ) cookieValue = string.nthField ( cookiepart, '=', 2 ) cookieValue = string.mid ( cookiepart, string.patternMatch ( "=", cookiepart ) + 1, infinity ); if clock.now () < expires //store non-expired cookies only if not defined ( adrCookiesTable^.[domain] ) //have we cookies already for this domain? new ( tableType, @adrCookiesTable^.[domain] ) if not defined ( adrCookiesTable^.[domain].[cookiePath] ) new ( tableType, @adrCookiesTable^.[domain].[cookiePath] ) if not defined ( adrCookiesTable^.[domain].[cookiePath].[cookieName] ) new ( tableType, @adrCookiesTable^.[domain].[cookiePath].[cookieName] ) adrCookiesTable^.[domain].[cookiePath].[cookieName].value = cookieValue adrCookiesTable^.[domain].[cookiePath].[cookieName].expires = expires adrCookiesTable^.[domain].[cookiePath].[cookieName].secure = flsecure €�����„�����€�����„�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����„�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�" ��{��������Ţ��%� ��Geneva���������������������������� ��������������š=c@š=c@������KÇJLAND˙˙˙˙˙˙������mac ������������on saveSerial () local tText = string(activeRendererData.guichuncks.objects.saveSerial) tlocalserverhost = "http://127.0.0.1" tlocalserverport = "" tAction tSerial = user.rootUpdates.servers.activeRenderer.serialNum postargs argTable activeRendererSuite.utils.buildPostArgs(@postargs)//parses posted args to postargs table activeRendererSuite.utils.buildPathArgs(@argTable)//parses args attached to the url after $ char to argTable if defined(argTable.msg) tText = "<b>"+evaluate(argTable.msg)+"</b><p>" + tText if defined(postargs.action) //A post has been issued => process it msg("Registering to updates server") local rpcserver = "xmlrpc://" + user.rootUpdates.servers.activeRenderer.server + ":" + user.rootUpdates.servers.activeRenderer.port + "/RPC2" if [rpcserver].toolsupdate.checkSerial("activeRenderer", postargs.serial, true)//ask the registration server if the serial is valid user.rootUpdates.servers.activeRenderer.serialNum = postargs.serial return "activeRenderer serial number has been registered (" + postargs.serial + ")" else tText = "<b>The provided serial ("+ postargs.serial +") seems wrong or invalid, please check it's typed properly</b><br>" + tText tSerial = postargs.serial if user.inetd.config.http.port != 80 tlocalserverport = ":" + user.inetd.config.http.port tAction = tlocalserverhost + tlocalserverport + "/activeRenderer/"+nameOf(adrObject^) tText = string.replaceAll(tText, "##action##", tAction) tText = string.replaceAll(tText, "##serial##", tSerial) return tText €�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�������{€�n�����av8��ś����Geneva���������������������������� ��������������š=cAš=cA�€��K��Ŕ����FFFF000000060001001777AA000000000062000000001001710000001-7FFB6FBE1800000‚‚48004806200-1‚0Â6‚20222FFFF0‚‚10‚‚3‚F00001000000350000000103340840‚‚6‚202228038E00013620B6000020000003800000000�33,#title "update" {activeRendererSuite.g€�n�� í����FFFF000000060001001777AA000000000068000000001001710000001-7FFB6FBE1800000‚‚48004806131200-1‚0Â6‚131222FFFF0‚‚10‚‚3‚548000010000003B00000001054840840‚‚6‚131222542038E000124613125000020000054E00000000�548,#title "Thanks" <div style="text-align: center; margin-bottom: -30px; font-family: sans-serif;"> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/" title="Weblog local home page">Home</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/" title="activeRenderer's settings">Preferences</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/bookmarks/" title="Bookmarks synchronization">Bookmarks</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/register/" title="activeRenderer's registration">Register</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/help/" title="activeRenderer's online help">Help</a></span> <span><a href="http://radio.weblogs.com/0104487/outlines/aR/arFaq.html">Faq</a></span> </div> <div style="border: #COCOCO solid 1px; padding: 30px; margin: 50px;"> <p style="font-family: sans-serif; margin-top: 0px;">activeRenderer: <b>registration</b></p> <p>Thank you for registering your copy of activeRenderer.</p> <p>You serial number is on its way to your mailbox.</p> <p> Once you've received the registration message, copy the serial number and paste it into <a href="http://127.0.0.1:5335/activeRenderer/register/">this form</a>. </p> </div>00040000000A00000002054A000050000000F00000003010154A0000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 40ÂÁ ‚‚Á‚00070000002F000000020Â‚20180‚Á‚Á‚10160‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000017000000023‚14E28C3‚14E28C000A00000017000000026‚1312226‚131222000B00000005000000020Â000C00000018000000015481F6‚757251F‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,“x���4,Ąm �4,�ŰĐ{�4,t`k�4,/RPC�4,�sŰ00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�š=%Ţš¤Č��� ��������������������������������������H����������3x”������ i������������������������������������������������������ í��â����FFFF000000060001001777AA00000000006E000000001001710000001-7EFF6FBE1800000‚‚480048062D200-1‚8118110Â6‚2D222FFFF0‚‚10‚‚3‚900001000000350000000104640840‚‚6‚2D22246038E0002062D6000020000004B00000000�46,#title "Rendered with activeRenderer" {activeRendererSuite.render ()} 00040000000900000002048000050000000F0000000301460480000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 40ÂÁ ‚‚Á‚00070000002F000000020Â‚20180‚Á‚Á‚10160‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000017000000023‚10C2703‚10C270000A00000015000000026‚2D2226‚2D222000B00000005000000020Â000C000000130000000198‚A2E02D‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,˙˙�4,D@��4,˙˙�4,�����4,˙˙�4,DŔ�00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�šŠâXş… ������������������������������������������F���������� ľ?8������^������������������������������������������������������â��Č�������z��Ö����Geneva���������������������������� ��������������ťŻńťŻń������hdłLAND˙˙˙˙˙˙������mac ������������on parseCookies ( httpResult, server, path, adrCookiesTable ) Information 11/1/02; 7:32:17 PM by MM (Mikel Maron) Cookie processing is broken in tcp.httpClient: Cookie Data containing "=", like the Yahoo cookies, are not parsed correctly if ( httpResult != "" ) // parse cookies here, since it is broken in tcp.httpClient local ( ixEndHeader, responseHeader, i, j ) ixEndHeader = string.patternMatch ( "\r\n\r\n", httpResult ) //try to find the end of the response header if ixEndHeader > 0 //there is a valid header, look for cookies responseHeader = string.mid ( httpResult, 1, ixEndHeader - 1 ) //get the header if string.lower ( responseHeader ) contains "set-cookie:" //the response header contains at least one cookie if not defined ( adrCookiesTable^ ) new ( tableType, adrCookiesTable ) for i = 1 to string.countFields (responseHeader, "\r") //find all the cookies local ( onecookie = string.nthField ( responseHeader, "\r", i ) ) //get the cookie onecookie = string.popLeading ( onecookie, '\n' ) if string.lower ( onecookie ) beginsWith "set-cookie:" local ( flsecure = false ) //not secure by default local ( domain = server ) //default domain to this server local ( cookiePath = "/" ) local ( expires = clock.now () + ( 24 * 60 * 60 ) ) //default expires at "end of session" local ( cookieName, cookieValue ) if path != "/" cookiePath = string.popSuffix ( path, "/" ) onecookie = string.popLeading ( string.mid (onecookie, 12, infinity), ' ' ) for j = 1 to string.countFields ( onecookie, ';' ) local ( cookiepart = string.nthField ( onecookie, ';', j ) ) cookiepart = string.popLeading ( cookiepart, ' ' ) case string.lower ( string.nthField ( cookiepart, '=', 1 ) ) //take care of standard parts "domain" domain = string.nthField ( cookiepart, '=', 2 ) "path" cookiePath = string.nthField ( cookiepart, '=', 2 ) "expires" on cookieDateToSystemDate ( cookieDate ) try //some cookie dates can be converted to dates directly local ( systemDate = date ( cookieDate ) ) if systemDate < date ( "Monday, 6-Feb-2040" ) return ( systemDate ) try //it may be a date in the 21st century local ( lastpart = string.nthField ( cookieDate, "-", 3 ) ) local ( ixstart = string.patternMatch ( lastpart, cookieDate ) ) return ( date ( string.insert ( "20", cookieDate, ixstart ) ) ) return ( false ) expires = cookieDateToSystemDate ( string.nthField ( cookiepart, '=', 2 ) ) if expires == false //invalid cookie, ignore it break "secure" flsecure = true else // this is the actual cookie name/value cookieName = string.nthField ( cookiepart, '=', 1 ) cookieValue = string.nthField ( cookiepart, '=', 2 ) cookieValue = string.mid ( cookiepart, string.patternMatch ( "=", cookiepart ) + 1, infinity ); if clock.now () < expires //store non-expired cookies only if not defined ( adrCookiesTable^.[domain] ) //have we cookies already for this domain? new ( tableType, @adrCookiesTable^.[domain] ) if not defined ( adrCookiesTable^.[domain].[cookiePath] ) new ( tableType, @adrCookiesTable^.[domain].[cookiePath] ) if not defined ( adrCookiesTable^.[domain].[cookiePath].[cookieName] ) new ( tableType, @adrCookiesTable^.[domain].[cookiePath].[cookieName] ) adrCookiesTable^.[domain].[cookiePath].[cookieName].value = cookieValue adrCookiesTable^.[domain].[cookiePath].[cookieName].expires = expires adrCookiesTable^.[domain].[cookiePath].[cookieName].secure = flsecure €�����„�����€�����„�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����„�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�������Ȁ�'Z�����3$�Ě��‚���Geneva���������������������������� ��������������ť—ęť—ę������Œ?<2LAND˙˙˙˙˙˙������mac ������������on nodeState ( day, tpl = "" ) header comments 6/28/02; 11:54:00 AM by MB Modified to take categories into account. 6/25/02; 1:02:22 PM by MB vs 1.03 local imgPath = radio.weblog.getUrl () + "gems/activeRenderer/" adrBlog = radio.weblog.init () wedgeImg = imgPath + "ol2.gif" wedgeTitle = "collapse" nodeClass = "expanded" titleWeight = "bold" if !flArchivePage and ( ( tpl == "day" and !adrBlog^.prefs.activeRenderer.outlineItems ) or ( tpl == "item" ) ) local adrBlog = radio.weblog.init () adrPosts = @adrBlog^.posts i, t, d for i = sizeOf ( adrPosts^ ) downto 1 // locate the most recent relevant post local ( adr = @adrposts^ [ i ] ) t = adr^ if defined ( categoryName ) // is this a category home page ? if defined ( t.categories [ categoryName ] ) // is the current post included in this category ? break else // this is the main home page then. if !t.flNotOnHomePage // does this post belong to it ? break d = date.shortString ( t.when ) if ( d != day ) wedgeImg = imgPath + "ol3.gif" wedgeTitle = "expand" nodeClass = "collapsed" titleWeight = "normal" return "" €�����„�����„�����€�����„�����������€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����oo if regex.€�Ô��!z�������P��˛���Geneva���������������������������� ��������������ť—ęť—ę������3�O}LAND˙˙˙˙˙˙������mac ������������on update ( src, dst ) Information 10/10/02; 10:33:54 PM by MB Corrected a bug reported by Donovan Watts Mac MSIE's Descriptions were not appended to their bookmark but shifted to the next one. Descriptions are now attached to the proper node in the outline. 10/3/02; 10:45:45 PM by MB Added a type attribute with 'link' value for each href Corrected a bug in url extraction from href when source is a file 9/15/02; 11:18:18 AM by MB Corrected a bug in getUrl, which was creating broken links starting by URL= with some bookmarks in MSIE6/Win. Corrected a bug in addPath: handle string of nested subfolders correctly 9/13/02; 12:10:14 PM by MB Corrected a bug when loading the old version of the bookmarks outline file. 9/12/02; 3:19:15 PM by MB Corrected a bug in comment properties (<DD>) rendering. 9/10/02; 1:17:12 PM by MB Synchronizes Mozilla or MSIE bookmarks (src) with an OPML outline (dst) local direction = "down" newOutline oldOutline buffer = "" oldPath = "" startTime = clock.ticks() on addPath ( path ) local parent = "" flag = 0 diffPath = "" field = 0 on getUrl ( path ) local s = "" l s = file.readWholeFile ( path ) l = regex.grep ( "^[Uu][Rr][Ll]=", @s ) s = l[1] regex.subst ( "^\n", "", @s ) s = string.mid ( s, 5, string.length ( s ) - 4 ) return s on getName ( path ) local s = "" s = file.fileFromPath ( path ) regex.subst ( ".url$", "", @s ) return s parent = file.folderFromPath ( path ) if ! file.isFolder ( path ) // if it's a file if string.hasSuffix ( ".url", path ) regex.subst ( "[:\\\\]$", "", @parent ) if parent == oldPath // if it belongs to the same folder as the previous file op.insert ( getName ( path ), direction ) op.attributes.setOne ( "type", "link" ) op.attributes.setOne ( "url", getUrl ( path ) ) else // it belongs to a different folder if string.patternMatch ( parent, oldPath ) // if the previous file belongs to a subfolder of the current file's folder op.insert ( getName ( path ), direction ) op.attributes.setOne ( "type", "link" ) op.attributes.setOne ( "url", getUrl ( path ) ) while ( oldPath != parent ) flag = flag + 1 oldPath = file.folderFromPath ( oldPath ) regex.subst ( "[:\\\\]$", "", @oldPath ) if flag > 1 op.reorg ( "left", flag - 1 ) flag = 0 else if string.patternMatch ( oldPath, parent ) // if it belongs to a subfolder of the previous file's folder diffPath = string.mid ( parent, string.length ( oldPath ) + 2, string.length ( parent ) - string.length ( oldPath ) ) for field = 1 to string.countFields ( diffPath, file.getPathChar () ) op.insert ( string.nthField ( diffPath, file.getPathChar (), field ), direction ) direction = "right" op.insert ( getName ( path ), direction ) op.attributes.setOne ( "type", "link" ) op.attributes.setOne ( "url", getUrl ( path ) ) else // it belongs to a folder which has a common ancestor with the previous file's folder local folderList = {} commonAncestor = parent i = 0 j = 0 while ! string.patternMatch ( commonAncestor, oldPath ) i = i + 1 folderList [i] = file.fileFromPath ( commonAncestor ) commonAncestor = file.folderFromPath ( commonAncestor ) regex.subst ( "[:\\\\]$", "", @commonAncestor ) op.insert ( folderList [i], direction ) if i > 1 for j = i - 1 to 1 op.insert ( folderList [j], "right" ) op.insert ( getName ( path ), right ) op.attributes.setOne ( "type", "link" ) op.attributes.setOne ( "url", getUrl ( path ) ) oldPath = parent direction = "down" else // it's a folder regex.subst ( "[:\\\\]$", "", @path ) // remove trailing path separator if string.patternMatch ( path, oldPath) // if folder isn't empty direction = "left" return true radio.log.add( "activeRenderer", "Starting bookmarks synchronization.", startTime ) if ! file.exists ( src ) // fail if source file or folder if missing radio.log.add( "activeRenderer", "Bookmarks synchronization error, missing : " + src + ".", startTime ) return false file.sureFilePath ( dst ) // path for destination outline if file.exists ( dst ) new ( outlineType, @scratchpad.old ) op.xmlToOutline ( file.readWholeFile ( dst ), @scratchpad.old ) new ( outlineType, @newOutline ) // create a new empty outline target.set ( @newOutline ) if ! file.isFolder ( src ) // if source is a file try local start, end cnt = 0 // Count number of <DL> tags flag = 0 // Count number of consecutive </DL> tags file.open ( src ) // Open source Bookmarls file while ! file.endOfFile ( src ) // Loop through all source lines local buffer = file.readLine ( src ) // Read next source line url = "" matchList = {} if buffer // if not an empty line if string.patternMatch ( "/DL", buffer ) direction = "left" flag = flag + 1 if string.patternMatch ( "<DL", buffer ) if cnt direction = "right" cnt = cnt + 1 flag = 0 if string.patternMatch ( "<DD", buffer ) // Link description node regex.extract ( "<DD>([^<]+)", @buffer, @matchList, {1} ) regex.subst ( "^[ \t]+", "", @buffer ) // Remove any whitespace header regex.subst ( "<DT>.*", "", @buffer ) regex.subst ( "<[^<>]+>", "", @buffer ) op.insert ( matchList [1], "right" ) // insert the description as a child of the current node op.go ( "left", 1 ) // move the current node pointer back to the parent node if string.patternMatch ( "DT", buffer ) // Title node or link node if string.patternMatch ( "HREF", buffer ) // If link node, get url local matchList = {} pattern = "HREF=\"([^\"]+*)\"[ 0-9a-zA-Z]+*" regex.extract ( pattern, @buffer, @matchList, {1}, true ) url = matchList[1] regex.subst ( "^[ \t]+", "", @buffer ) local ( s = buffer ) regex.subst ( "^<DD>[^<]+", "", @s ) regex.subst ( "<[^<>]+>", "", @s ) op.insert ( s, direction ) if url op.attributes.setOne ( "type", "link" ) op.attributes.setOne ( "url", url ) if flag > 1 op.reorg ( "left", flag - 1 ) direction = "down" flag = 0 file.close ( src ) // Close source bookmarks file else // Source is a folder oldPath = src regex.subst ( "[:\\\\]$", "", @oldPath ) file.visitFolder ( src, infinity, @addPath ) op.firstSummit () // Delete empty first node op.deleteLine () scratchpad.new = newOutline if file.exists ( dst ) op.visitAll ( @newOutline, @activeRendererSuite.bookmarks.restoreUrl ) target.set ( @scratchpad.new ) op.firstSummit () loop // Collapse all summits if op.countSubs ( 1 ) > 0 op.collapse () if ( ! op.go ( down, 1 ) ) break file.writeWholeFile ( dst, op.outlineToXml ( @scratchpad.new ) ) target.clear () radio.log.add( "activeRenderer", "Bookmarks synchronization complete.", startTime ) return true bundle // test code if update ( "Macintosh HD:Users:marc:Desktop:Favorites.html", "Macintosh HD:Users:marc:Desktop:result.opml" ) dialog.alert ( "Done." ) else dialog.alert ( "Failed." ) €�����„�����€�����€�����€�����€�����€�����������������€�����������������€�����������€�����������„�����������€�����������������������������������������€�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������€�����€�����������������€�����€�����������������€�����€�����€��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������€�����������������������€�����€�����€�����€�����������€�����€�����€�����������������������������€�����€�����€�����€�����€�����������������������������€�'Z��Ł����FFFF000000060001001777AA000000000079000000001001710000001-7EFB6FBE1800000‚‚480048065DD200-1‚1FA2051FA2050Â6‚5DD222FFFF0‚‚10‚‚3‚1795000010000007C00000002093440840‚‚6‚2352228D003C80002282C2352090934179540840‚‚23565DD222E61038E0005D065DD6000020000093A00000000�934,#title "Help" <div style="text-align: center; margin-bottom: -30px; font-family: sans-serif;"> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/" title="Weblog local home page">Home</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/" title="activeRenderer's settings">Preferences</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/bookmarks/" title="Bookmarks synchronization">Bookmarks</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/register/" title="activeRenderer's registration">Register</a></span> <span style="margin-right: 20px;"><b>Help</b></span> <span><a href="http://radio.weblogs.com/0104487/outlines/aR/arFaq.html">Faq</a></span> </div> <div style="border: #COCOCO solid 1px; padding: 30px; margin: 50px;"> <p style="font-family: sans-serif; margin-top: 0px;">activeRenderer: <b>online help</b></p> <p>activeRenderer currently has 3 features :</p> <table cellpadding="2" cellspacing="0" border="0" width="100%"> <tr> <td valign="middle" width="15"> <a href="javascript:daySwitch( 'pf1' )"> <img id="if1" src="../images/ol2.gif" title="collapse" align="bottom" border="0" hspace="0" vspace="0" alt=">"> </a> </td> <td> <span id="tf1" name="itemTitle" style="font-weight: bold;"> OPML outlines rendering in HTML. </span> </td> </tr> </table> <div name="item" id="pf1" class="expanded" style="margin-left: 17px;"> <p style=" margin-top: 5px; margin-bottom: 0px;"> activeRenderer upstreams outlines stored in OPML format to your Radio public site, translating the outline contents to HTML along the way, so that the published version may be read in regular - if modern - Web browsers.</p> <p style=" margin-top: 7px; margin-bottom: 0px;"> When installed, activeRenderer creates an <i>outlines</i> special folder in Radio's <i>www</i> folder. Any OPML file saved in <i>outlines</i> is automagically rendered in HTML and upstreamed to the public site. Check Radio's Events Log page to check on the upstreaming process, and locate the rendered version's public URL.</p> <p style=" margin-top: 7px; margin-bottom: 0px;"> In addition, activeRenderer traps Radio's File / Save menu, so that any time you save your instant 000200000E6700000934�E61, outline, or any time you save an outline below the <i>gems</i> folder, a duplicate is stored in <i>outlines</i>, and rendered on the public site.</p> <p style=" margin-top: 7px; margin-bottom: 5px;"> Last, every time you start Radio, activeRenderer makes a copy of your instant outline in the <i>outlines</i> folder, which upstreams the latest available version.</p> </div> <table cellpadding="2" cellspacing="0" border="0" width="100%"> <tr> <td valign="middle" width="15"> <a href="javascript:daySwitch( 'pf2' )"> <img id="if2" src="../images/ol3.gif" title="expand" align="bottom" border="0" hspace="0" vspace="0" alt=">"> </a> </td> <td> <span id="tf2" name="itemTitle"> Outline style weblog templates. </span> </td> </tr> </table> <div name="item" id="pf2" class="collapsed" style="margin-left: 17px;"> <p style=" margin-top: 5px; margin-bottom: 0px;"> activeRenderer can modify your weblog templates to publish your weblog's pages with an outline look.</p> <p style=" margin-top: 7px; margin-bottom: 0px;"> To turn the outline style on or off, use activeRenderer's <a href="http://127.0.0.1:5335/activeRenderer/">preferences</a> page.</p> <p style=" margin-top: 7px; margin-bottom: 0px;"> The basic outline style adds an outline wedge to every date title on the page. If you use titles for your posts - a good editorial habit - check the second preference to add an outline wedge to every post. Refer to the preferences page collapsed nodes for details.</p> <p style=" margin-top: 7px; margin-bottom: 0px;"> activeRenderer performs the outline style trick by backing up the current <i>#dayTemplate.txt</i> and <i>#itemTemplate.txt</i> files from Radio's <i>www</i> folder, and replacing them with activeRendered versions. The backups are in <i>www/gems/activeRenderer/backup</i>. They are restored to <i>www</i> when you turn the outline style off in the preferences.</p> <p style=" margin-top: 7px; margin-bottom: 5px;"> If the activeRendered templates do not fit your weblog's theme perfectly, you're welcome to customize them further using any text editor. Your modifications will be saved, provided you raise each template's version number (in the top comment tag) by a significant offset.</p> </div> <table cellpadding="2" cellspacing="0" border="0" width="100%"> <tr> <td valign="middle" width="15"> <a href="javascript:daySwitch( 'pf3' )"> <img id="if3" src="../images/ol3.gif" title="expand" align="bottom" border="0" hspace="0" vspace="0" alt=">"> </a> </td> <td> <span id="tf3" name="itemTitle"> The opmlRender macro. </span> </td> </tr> </table> <div name="item" id="pf3" class="collapsed" style="margin-left: 17px;"> <p style=" margin-top: 5px; margin-bottom: 0px;"> This macro returns the content of an OPML document in HTML/CSS. It can be inserted in the <i>#homeTemplate.txt</i> template to manage parts of the home page, such as headlines, sidebars, blogrolls or directories as separate outline files.</p> <p style=" margin-top: 7px; margin-bottom: 0px;"> Insert <%opmlRender ( "url" ) %> anywhere you want the "url" outline to be rendered. "url" must be a regularly formed uniform resource locator for the outline to render. A local url uses the "file://" prefix. A remote url uses the "http://" prefix.</p> <p style=" margin-top: 7px; margin-bottom: 5px;"> Refer to the <a href="http://radio.weblogs.com/0104487/outlines/opmlRender.html">opmlRender howto</a> on <b>s l a m</b> for details of opmlRender parameters and several examples.</p> </div> </div> 00040000000B0000000201797000050000000C000000020117970000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 50ÂÁ ‚‚Á‚00070000002F000000020Â‚20180‚Á‚Á‚10160‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000017000000023‚16B2F93‚16B2F9000A00000017000000026‚5DD2226‚5DD222000B00000005000000020Â000C000000170000000117951F4‚756F40‚000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,˙˙�4,˙˙�4,D€��4,D€��4,�����4,D€�00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�š6ˆš¤K���A��������������������������������������•�����������RgĐs������������������������������������������������������������Ł€�dx������´Ů����œ���Geneva���������������������������� ��������������¸ĺ˜Ŕ¸ĺŹ�����'ď�LAND˙˙˙˙˙˙������mac ������������on buildPostArgs (theTableAdr) local pta=html.getpageTableAddress() new( tableType, theTableAdr ) webserver.parseArgs( pta^.requestBody, theTableAdr ) €�����€�����€�����€�����€�����saveSerial()}00��B€�&Ę������´Ů����™���Geneva���������������������������� ��������������¸ĺ˜Ŕ¸ĺ™C��� ��'ď�LAND˙˙˙˙˙˙������mac ��������€�€�IĘ�����av��"ş���Geneva���������������������������� ��������������ť—ť—������˘� @<LAND˙˙˙˙˙˙������mac ������������on uninstal ( f ) Information 1/21/03; 3:28:27 PM by MB Created, called from user.tools.callbacks.afterUninstall.activeRenderer. f is the pathname to the uninstalled tool. local startTime = clock.ticks() adrBlog = radio.weblog.init () adrPrefs = @adrBlog^.prefs appPath = file.folderFromPath ( Frontier.getProgramPath () ) // retrieve the Radio application folder toolsPath = appPath + "Tools" + file.getPathChar() // get Radio's Tools folder pathname basePath = user.radio.prefs.wwwfolder + "gems" + file.getPathChar() + "activeRenderer" + file.getPathChar() backupPath = basePath + "backup" + file.getPathChar () customPath = backupPath + "custom" + file.getPathChar () arPath = file.folderFromPath ( appPath ) + "activeRendererUninstalled" + file.getPathChar () wwwPath = arPath + "www" + file.getPathChar () gemsPath = arPath + "gems" + file.getPathChar () on getVersion ( txt ) // Extracts version number from txt string local ( matchList = {} ) local ( pattern = "version[: ]+([0-9\.a-zA-Z]+)" ) regex.extract ( pattern, @txt, @matchList, {1} ) local ( version = "" ) if sizeOf ( matchList ) > 0 version = matchList[1] return version on setArchive () // create uninstal folders file.sureFolder ( arPath ) file.sureFolder ( wwwPath ) file.sureFolder ( gemsPath ) on restoreTemplates () // Restore regular outline templates if possible local homeTemplateBackup dayTemplate dayTemplateBackup itemTemplateBackup setArchive () if adrPrefs^.activeRenderer.outlineWeblog // if outline style is currently turned on if file.exists ( backupPath + "#homeTemplate.txt" ) // if the original home template was properly backed up homeTemplateBackup = file.readWholeFile ( backupPath + "#homeTemplate.txt" ) // retrieve the template's content if string.patternMatch ( "activeRenderer", homeTemplateBackup ) || string.patternMatch ( "daySwitch", homeTemplateBackup ) // if there is a trace of activeRenderer induced modification in the backed up home template radio.log.add( "activeRenderer", "Warning: backed up home template appears to have been modified with activeRenderer macros.", startTime ) file.copy ( user.radio.prefs.wwwfolder + "#homeTemplate.txt", wwwPath + "#homeTemplate.txt" ) // archive current version file.copy ( backupPath + "#homeTemplate.txt", user.radio.prefs.wwwfolder + "#homeTemplate.txt" ) // restore backed up version radio.log.add( "activeRenderer", "Original home template restored.", startTime ) else // else log warning radio.log.add( "activeRenderer", "Warning: unable to locate a backed up copy of the home template in " + backupPath + ".", startTime ) if file.exists ( backupPath + "#dayTemplate.txt" ) // if the original day template was properly backed up dayTemplateBackup = file.readWholeFile ( backupPath + "#dayTemplate.txt" )// retrieve the template's content if string.patternMatch ( "dayTemplate", dayTemplateBackup ) // if there is a trace of activeRenderer induced modification radio.log.add( "activeRenderer", "Warning: backed up day template appears to have been modified for use with activeRenderer.", startTime ) file.copy ( user.radio.prefs.wwwfolder + "#dayTemplate.txt", wwwPath + "#dayTemplate.txt" ) // archive current version file.copy ( backupPath + "#dayTemplate.txt", user.radio.prefs.wwwfolder + "#dayTemplate.txt" ) // restore backed up version radio.log.add( "activeRenderer", "Original day template restored.", startTime ) else // else log warning radio.log.add( "activeRenderer", "Warning: unable to locate a backed up copy of the day template in " + backupPath + ".", startTime ) if adrPrefs^.activeRenderer.outlineItems // if outline items style is currently on if file.exists ( backupPath + "#itemTemplate.txt" ) // if the original item template was properly backed up itemTemplateBackup = file.readWholeFile ( backupPath + "#itemTemplate.txt" ) // retrieve the template's content if string.patternMatch ( "itemTemplate", itemTemplateBackup ) // if there is a trace of activeRenderer induced modification radio.log.add( "activeRenderer", "Warning: backed up item template appears to have been modified for use with activeRenderer.", startTime ) file.copy ( user.radio.prefs.wwwfolder + "#itemTemplate.txt", wwwPath + "#itemTemplate.txt" ) // archive current version file.copy ( backupPath + "#itemTemplate.txt", user.radio.prefs.wwwfolder + "#itemTemplate.txt" ) // restore backed up version radio.log.add( "activeRenderer", "Original item template restored.", startTime ) else // else log warning radio.log.add( "activeRenderer", "Warning: unable to locate a backed up copy of the item template in " + backupPath + ".", startTime ) adrPrefs^.activeRenderer.outlineItems = false // turn off item outlining preference adrPrefs^.activeRenderer.outlineWeblog = false // turn off day outlining preference fileMenu.saveMyRoot ( adrPrefs ) // save preferences if f beginsWith "[" // clean up pathname if necessary f = string.mid ( f, 3, string.length ( f ) - 4 ) if string.patternMatch ( "activeRenderer.root", f ) // if we are indeed talking about aR if file.exists ( toolsPath + "activeRenderer.root" ) // if activeRenderer.root is still in the Tools folder if defined ( temp.Frontier.tools.activeRenderer ) // if activeRenderer has been installed during this Radio session if ! defined ( temp.Frontier.tools.activeRenderer.url ) // if activeRenderer was deactivated radio.log.add( "activeRenderer", "Deactivation requested.", startTime ) restoreTemplates () radio.log.add ( "activeRenderer", "Tool was deactivated.", startTime ) else // activeRenderer is not in the Tools folder any more. radio.log.add( "activeRenderer", "Uninstallation requested.", startTime ) restoreTemplates () bundle // Restore #prefs.txt file if file.exists ( backupPath + "#prefs.txt" ) // if the original prefs file was properly backed up file.copy ( user.radio.prefs.wwwfolder + "#prefs.txt", wwwPath + "#prefs.txt" ) // archive current prefs file.copy ( backupPath + "#prefs.txt", user.radio.prefs.wwwfolder + "#prefs.txt" ) // restore prefs radio.log.add( "activeRenderer", "Original preferences restored.", startTime ) €�ó��&J���������"ş���Geneva���������������������������� ��������������ť—’ť—’������˘� @<LAND˙˙˙˙˙˙������mac ������������on uninstal ( f ) Information 1/21/03; 3:28:27 PM by MB Created, called from user.tools.callbacks.afterUninstall.activeRenderer. f is the pathname to the uninstalled tool. local startTime = clock.ticks() adrBlog = radio.weblog.init () adrPrefs = @adrBlog^.prefs appPath = file.folderFromPath ( Frontier.getProgramPath () ) // retrieve the Radio application folder toolsPath = appPath + "Tools" + file.getPathChar() // get Radio's Tools folder pathname basePath = user.radio.prefs.wwwfolder + "gems" + file.getPathChar() + "activeRenderer" + file.getPathChar() backupPath = basePath + "backup" + file.getPathChar () customPath = backupPath + "custom" + file.getPathChar () arPath = file.folderFromPath ( appPath ) + "activeRendererUninstalled" + file.getPathChar () wwwPath = arPath + "www" + file.getPathChar () gemsPath = arPath + "gems" + file.getPathChar () on getVersion ( txt ) // Extracts version number from txt string local ( matchList = {} ) local ( pattern = "version[: ]+([0-9\.a-zA-Z]+)" ) regex.extract ( pattern, @txt, @matchList, {1} ) local ( version = "" ) if sizeOf ( matchList ) > 0 version = matchList[1] return version on setArchive () // create uninstal folders file.sureFolder ( arPath ) file.sureFolder ( wwwPath ) file.sureFolder ( gemsPath ) on restoreTemplates () // Restore regular outline templates if possible local homeTemplateBackup dayTemplate dayTemplateBackup itemTemplateBackup setArchive () if adrPrefs^.activeRenderer.outlineWeblog // if outline style is currently turned on if file.exists ( backupPath + "#homeTemplate.txt" ) // if the original home template was properly backed up homeTemplateBackup = file.readWholeFile ( backupPath + "#homeTemplate.txt" ) // retrieve the template's content if string.patternMatch ( "activeRenderer", homeTemplateBackup ) || string.patternMatch ( "daySwitch", homeTemplateBackup ) // if there is a trace of activeRenderer induced modification in the backed up home template radio.log.add( "activeRenderer", "Warning: backed up home template appears to have been modified with activeRenderer macros.", startTime ) file.copy ( user.radio.prefs.wwwfolder + "#homeTemplate.txt", wwwPath + "#homeTemplate.txt" ) // archive current version file.copy ( backupPath + "#homeTemplate.txt", user.radio.prefs.wwwfolder + "#homeTemplate.txt" ) // restore backed up version radio.log.add( "activeRenderer", "Original home template restored.", startTime ) else // else log warning radio.log.add( "activeRenderer", "Warning: unable to locate a backed up copy of the home template in " + backupPath + ".", startTime ) if file.exists ( backupPath + "#dayTemplate.txt" ) // if the original day template was properly backed up dayTemplateBackup = file.readWholeFile ( backupPath + "#dayTemplate.txt" )// retrieve the template's content if string.patternMatch ( "dayTemplate", dayTemplateBackup ) // if there is a trace of activeRenderer induced modification radio.log.add( "activeRenderer", "Warning: backed up day template appears to have been modified for use with activeRenderer.", startTime ) file.copy ( user.radio.prefs.wwwfolder + "#dayTemplate.txt", wwwPath + "#dayTemplate.txt" ) // archive current version file.copy ( backupPath + "#dayTemplate.txt", user.radio.prefs.wwwfolder + "#dayTemplate.txt" ) // restore backed up version radio.log.add( "activeRenderer", "Original day template restored.", startTime ) else // else log warning radio.log.add( "activeRenderer", "Warning: unable to locate a backed up copy of the day template in " + backupPath + ".", startTime ) if adrPrefs^.activeRenderer.outlineItems // if outline items style is currently on if file.exists ( backupPath + "#itemTemplate.txt" ) // if the original item template was properly backed up itemTemplateBackup = file.readWholeFile ( backupPath + "#itemTemplate.txt" ) // retrieve the template's content if string.patternMatch ( "itemTemplate", itemTemplateBackup ) // if there is a trace of activeRenderer induced modification radio.log.add( "activeRenderer", "Warning: backed up item template appears to have been modified for use with activeRenderer.", startTime ) file.copy ( user.radio.prefs.wwwfolder + "#itemTemplate.txt", wwwPath + "#itemTemplate.txt" ) // archive current version file.copy ( backupPath + "#itemTemplate.txt", user.radio.prefs.wwwfolder + "#itemTemplate.txt" ) // restore backed up version radio.log.add( "activeRenderer", "Original item template restored.", startTime ) else // else log warning radio.log.add( "activeRenderer", "Warning: unable to locate a backed up copy of the item template in " + backupPath + ".", startTime ) adrPrefs^.activeRenderer.outlineItems = false // turn off item outlining preference adrPrefs^.activeRenderer.outlineWeblog = false // turn off day outlining preference fileMenu.saveMyRoot ( adrPrefs ) // save preferences if f beginsWith "[" // clean up pathname if necessary f = string.mid ( f, 3, string.length ( f ) - 4 ) if string.patternMatch ( "activeRenderer.root", f ) // if we are indeed talking about aR if file.exists ( toolsPath + "activeRenderer.root" ) // if activeRenderer.root is still in the Tools folder if defined ( temp.Frontier.tools.activeRenderer ) // if activeRenderer has been installed during this Radio session if ! defined ( temp.Frontier.tools.activeRenderer.url ) // if activeRenderer was deactivated radio.log.add( "activeRenderer", "Deactivation requested.", startTime ) restoreTemplates () radio.log.add ( "activeRenderer", "Tool was deactivated.", startTime ) else // activeRenderer is not in the Tools folder any more. radio.log.add( "activeRenderer", "Uninstallation requested.", startTime ) restoreTemplates () bundle // Restore #prefs.txt file if file.exists ( backupPath + "#prefs.txt" ) // if the original prefs file was properly backed up file.copy ( user.radio.prefs.wwwfolder + "#prefs.txt", wwwPath + "#prefs.txt" ) // archive current prefs file.copy ( backupPath + "#prefs.txt", user.radio.prefs.wwwfolder + "#prefs.txt" ) // restore prefs radio.log.add( "activeRenderer", "Original preferences restored.", startTime ) else // else log warning radio.log.add( "activeRenderer", "Warning: unable to locate a backed up copy of the prefs file in " + backupPath + ".", startTime ) bundle // Remove activeRenderer folder from gems try gemsPath = gemsPath + "activeRenderer" + file.getPathChar () file.sureFolder ( gemsPath ) file.copy ( basePath, gemsPath ) file.deleteFolder ( basePath ) radio.log.add ( "activeRenderer", "activeRenderer folder moved from " + user.radio.prefs.wwwfolder + "gems to " + file.folderFromPath ( gemsPath ), startTime ) else radio.log.add ( "activeRenderer", "Warning: could not delete activeRenderer folder from " + user.radio.prefs.wwwfolder + "gems.", startTime ) bundle // Unlink aR macros if ( defined ( user.html.macros.opmlRender ) ) delete ( @user.html.macros.opmlRender ) if ( defined( user.html.macros.daySwitch ) ) delete ( @user.html.macros.daySwitch ) if ( defined( user.html.macros.nodeState ) ) delete ( @user.html.macros.nodeState ) if ( defined( user.html.macros.nodeFormat ) ) delete ( @user.html.macros.nodeFormat ) if ( defined( user.html.macros.storyBox ) ) delete ( @user.html.macros.storyBox ) if ( defined( user.html.macros.espressoCup ) ) delete ( @user.html.macros.espressoCup ) if ( defined( user.html.macros.activeRoll ) ) delete ( @user.html.macros.activeRoll ) if ( defined( user.html.macros.activeRendererFunctions ) ) delete ( @user.html.macros.activeRendererFunctions ) if ( defined( user.html.macros.activeRendererHeader ) ) delete ( @user.html.macros.activeRendererHeader ) bundle // Unlink rendering code if defined ( user.html.renderers.activeRenderer ) delete ( @user.html.renderers.activeRenderer ) bundle // Remove update table if defined ( user.rootUpdates.servers.activeRenderer ) delete ( @user.rootUpdates.servers.activeRenderer ) bundle // Remove preferences table if defined ( adrPrefs^.activeRenderer ) delete ( @adrPrefs^.activeRenderer ) radio.log.add( "activeRenderer", "Tool was completely removed.", startTime ) bundle // Remove uninstallation code if defined ( scratchpad.activeRenderer.cleanup ) // just in case it's gone for some reason if ! defined ( temp.activeRenderer ) new ( tabletype, @temp.activeRenderer ) temp.activeRenderer.cleanup = scratchpad.activeRenderer.cleanup // duplicate the cleanup script thread.callScript ( @temp.activeRenderer.cleanup, {} ) // launch the copy in another thread return true €�����„�����€�����€�����€�����€�����������������������������������������������������������������������€�����������������������������������������������€�����������������������€�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������€�����������€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����€�����������������������������������������€�����������������������������������������������������€�����������������������������������������������������������������������������������������������������������������€�����������������€�����������������€�����������������€�����€�����������������������������������€�����€�AI€� x�����pΝ~�������Śé€������Geneva���������������������������� �(�ąž��������������������������������������������������on activeRendere���ˆ€� ä�����pÎ����)����Geneva���������������������������� ����������T��¸ô§ šR‘���y��'ď�LAND˙˙˙˙˙˙������mac ������������edit ( @activeRendererData.texts.about ) €��������§€� 1�����pÎ���j���šŁó3�������� ������� ����#���/ ����7���C ����L���X ����c���o ����~���Š ����‘��� ����­���š ����Ĺ editBookmarks����p�äeditPath����p� 1vgetOpml����p�‹WinitPath����p� *l restoreUrl����p� >synchBookmarks����p� 7Śupdate����p�  updateBookmarks����p� ¤ yahooImport����p� )��C€� â�����rÜ000000060001001777AA000000000068000000001001710000001-7EFB6FBE1800000‚‚48004806276200-1‚0Â6‚276222FFFF0‚‚10‚‚3‚13E000010000003A00000001053B40840‚‚6‚27622253B038E00026962766000020000054100000000�53B,/* RSLite - Simple non-concurrent remote scripting calls. send one string, receive one string created by Brent Ashley version: 1.01 last modified 9/10/02 - Marc Barrot Specify path attribute in cookie, for Mozilla's sake. You may use and distribute this code freely, just keep this header information intact. */ function RSLiteObject(){ this.interval = 500; this.attempts = 3; this.i = new Image(); this.call = function ( page, parm ){ parm = (parm != null)? parm : ''; var d = new Date(); document.cookie = 'RSLite=x; expires=Fri, 31 Dec 1999 23:59:59 GMT; path=/;'; this.i.src = page + '?u=' + d.getTime() + '&p=' + parm; setTimeout( "RSLite.receive(1);", this.interval ); } this.receive = function ( attempt ){ var response = null; var aCookie = document.cookie.split("; "); for (var i=0; i < aCookie.length; i++){ var aCrumb = aCookie[i].split("="); if (aCrumb[0] == 'RSLite') response = aCrumb[1]; } if ( response != null ){ this.callback( unescape(response.replace(/\+/g,' ')) ); } else { if (attempt < this.attempts){ setTimeout( "RSLite.receive( " + (attempt+1) +" );",this.interval); } else { this.failure(); } } } this.callback = function( response ){ alert(response); } this.failure = function(){ alert( "RSLite timed out"); } } var RSLite; 00040000000A00000002053D0000500000015000000040E4113E053D0000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 20ÂÁ ‚‚Á‚00070000002F000000020Â‚30180‚Á‚Á‚10170‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000017000000023‚29B2E03‚29B2E0000A00000017000000026‚2762226‚276222000B00000005000000020Â000C000000150000000113EE4‚6A7110‚000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,D(€��4,D(€��4,�����4,D(€��4,D)���4, Use00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�š¤~š¤ł�����������������������������������������;�����������/$Ý������ ^����������������������������������������������������€�MÍ��Aů����FFFF000000060001001777AA00000000007B000000001001710000001-7FFB6FBE1800000‚‚4800480618A7200-1‚7C67C77C67C70Â6‚18A7222FFFF0‚‚10‚‚3‚3B7E000010000019000000006092240840‚‚6‚49822290003CE00048B6498B40922123640840‚‚498699F2228C403C80009923099F1AC012361B8A40840‚‚99F6D4722293503C8000D3A18D47A001B8A278D40840‚‚D476117E222BB003CE00011716117E1870278D2F1640840‚‚117E613EE22277903C800013E119813EE1E502F163B7E40840‚‚13EE618A7222C67038E000189A618A7B000020000092800000000�922,/* Outliner functions version: 1.4 last modified 4-Mar-2003 created by Marc Barrot, with help from Aaron Straup Cope, DJ Adams, Sjoerd Visscher and Danny Goodman copyright 2002 by Precision IT Management,Inc. You may use and distribute this code freely, just keep this header information intact. */ var img_expanded = 'http://radio.weblogs.com/0104487/gems/activeRenderer/ol3.gif'; var img_collapsed = 'http://radio.weblogs.com/0104487/gems/activeRenderer/ol2.gif'; var img_rotating = 'http://radio.weblogs.com/0104487/gems/activeRenderer/globe.gif'; (new Image(15,15)).src = img_expanded; // caching (new Image(15,15)).src = img_collapsed; // caching (new Image(15,15)).src = img_rotating; // caching function expand(ioNode) { ioWedge = "i" + ioNode.substr(1); if (document.getElementById && document.getElementById(ioNode) != null) { document.getElementById(ioWedge).src=img_collapsed; document.getElementById(ioWedge).title='collapse'; document.getElementById(ioNode).className='expanded'; } } function collapse(ioNode) { ioWedge = "i" + ioNode.substr(1); if (document.getElementById && document.getElementById(ioNode) != null) { document.getElementById(ioWedge).src=img_expanded; document.getElementById(ioWedge).title='expand'; document.getElementById(ioNode).className='collapsed'; } } function ioSwitch(ioNode) { if (document.getElementById && document.getElementById(ioNode) != null) { nodeState = document.getElementById(ioNode).className; } if (nodeState == 'collapsed') { expand(ioNode); } else { collapse(ioNode); } } function expandAll(divName) { if (document.getElementsByTagName) { nodeList = document.getElementsByTagName('div'); for (var i = 0; i < nodeList.length; i++) { if (nodeList.item(i).getAttribute('name') == divName) { expand(nodeList.item(i).id); } } } else { alert ("Sorry, don't know how to make this run in your browser."); } } function collapseAll(divName) { if (document.getElementsByTagName) { nodeList = document.getElementsByTagName('div'); for (var i = 0; i < nodeList.length; i++) { if (nodeList.item(i).getAttribute('name') == divName) { collapse(nodeList.item(i).id); } } } else { alert ("Sorry, don't know how to make this run in your browser."); } } function normalizeAll(spanName) { 00020000091A00000922�914, if (document.getElementsByTagName) { nodeList = document.getElementsByTagName('span'); for (var i = 0; i < nodeList.length; i++) { if (nodeList.item(i).getAttribute('name') == spanName) { nodeList.item(i).style.fontWeight = 'normal'; } } } else { alert ("Sorry, don't know how to make this run in your browser."); } } function expandBold(ioNode) { ioWedge = "i" + ioNode.substr(1); ioTitle = "t" + ioNode.substr(1); if (document.getElementById && document.getElementById(ioNode) != null) { document.getElementById(ioWedge).src=img_collapsed; document.getElementById(ioWedge).title='collapse'; document.getElementById(ioNode).className='expanded'; document.getElementById(ioTitle).style.fontWeight = 'bold'; } } function expandByDate(n) { if (n.nodeType == 1) { if (n.tagName.toLowerCase() == 'div') { if (n.getAttribute('name') == 'item') { expandBold(n.id); } } } var children = n.childNodes; for (var i=0; i < children.length; i++ ) { expandByDate(children[i]); } } function daySwitch(postDate) { var hasItems = 0; if (document.getElementsByTagName) { nodeList = document.getElementsByTagName('span'); for (var i = 0; i < nodeList.length; i++) { if (nodeList.item(i).getAttribute('name') == 'itemTitle') { hasItems = 1; break; } } } if (hasItems) { collapseAll('item'); normalizeAll('itemTitle'); if (document.getElemen€�_€�š�����000000060001001777AA000000000062000000001€�_K�� í����FFFF000000060001001777AA000000000068000000001001710000001-7FFB6FBE1800000‚‚48004806131200-1‚0Â6‚131222FFFF0‚‚10‚‚3‚548000010000003B00000001054840840‚‚6‚131222542038E000124613125000020000054E00000000�548,#title "Thanks" <div style="text-align: center; margin-bottom: -30px; font-family: sans-serif;"> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/" title="Weblog local home page">Home</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/" title="activeRenderer's settings">Preferences</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/bookmarks/" title="Bookmarks synchronization">Bookmarks</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/register/" title="activeRenderer's registration">Register</a></span> <span style="margin-right: 20px;"><a href="http://127.0.0.1:5335/activeRenderer/help/" title="activeRenderer's online help">Help</a></span> <span><a href="http://radio.weblogs.com/0104487/outlines/aR/arFaq.html">Faq</a></span> </div> <div style="border: #COCOCO solid 1px; padding: 30px; margin: 50px;"> <p style="font-family: sans-serif; margin-top: 0px;">activeRenderer: <b>registration</b></p> <p>Thank€�dx��Ŕ����FFFF000000060001001777AA000000000062000000001001710000001-7FFB6FBE1800000‚‚48004806200-1‚0Â6‚20222FFFF0‚‚10‚‚3‚F00001000000350000000103340840‚‚6‚202228038E00013620B6000020000003800000000�33,#title "update" {activeRendererSuite.gui.update ()}00040000000900000002035000050000000E000000030101350000600000032000000010ÁA210‚‚ÁFFFF0‚A00000 20ÂÁ ‚‚Á‚00070000002F000000020Â‚20180‚Á‚Á‚10160‚Á‚00080000009700000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������4030 10000900000015000000023‚9C17D3‚9C17D000A00000015000000026‚202226‚20222000B00000005000000020Â000C0000001300000001FE‚A5C04A‚0000F0000005200000000400 10 ‚ÂÁÂÁ‚‚ÁÂ�4,77A�4,˙˙�4,˙˙�4,D@��4,D@��4,�����4,D@�00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��Ś��š����°��­��­��.��'��"��Ô��Ő��Ň��Ó��É��É��FFFF0FFFF0FFFE000000060001001777AA�š´ż š´Ŕ�������������������������������������������3����������3xâ������<������������������������������������������������������Ŕ��&‚�������l��"ž���Geneva���������������������������� ��������������ťŻńťŻń������iDGÖLAND˙˙˙˙˙˙������mac ������������on update( procID = 0 ) Information 1/28/03; 10:33:50 PM by MB Added fixing of end of lines for Windows systems 1/15/03; 7:11:36 PM by MB Update external elements right after Frontier database update Do not wait for next Radio restart. 11/15/02; 2:25:22 PM by MB Only test system.temp.activeRenderer.instal' modification date if it is defined Set an updating semaphore in system.temp.activeRenderer before update, reset it when finished 11/14/02; 3:36:27 PM by MB Terminate calling thread before starting a new instance of the instal script 11/4/02; 3:11:46 PM by MB Corrected a bug in the calling thread waking process, reported by Doug Baron 22.10.02; 21:15:39 Uhr by AR/MB Code review with Andre Radke Suppressed the use of a scratchpad subtable Relaunch installation if instal script was updated 9/23/02; 2:30:40 PM by MB Removed call to Frontier.bringToFront 7/4/02; 1:51:55 PM by MB Added support for logging failure 6/29/02; 7:56:54 PM by MB Added support for installation thread wake up 6/28/02; 7:17:32 PM by MB Add logging with number of downloaded parts. local startTime = clock.ticks() // initialize time stamp ctParts = 0 // number of updated parts basePath = user.radio.prefs.wwwfolder + "gems" + file.getPathChar() + "activeRenderer" modCSS = timeModified ( @activeRendererData.texts.css ) modJavascript = timeModified ( @activeRendererData.texts.javascript ) modXslHtml = timeModified ( @activeRendererData.texts.xsl_html ) modXslJs = timeModified ( @activeRendererData.texts.xsl_js ) modRsLite = timeModified ( @activeRendererData.texts.rslite ) modPrefs = timeModified ( @activeRendererData.texts.prefs ) modTemplate = timeModified ( @activeRendererData.texts.template ) on getVersion ( txt ) // Returns a version number from the parameter string local matchList = {} pattern = "version[: ]+([0-9\.a-zA-Z]+)" version = "" regex.extract ( pattern, @txt, @matchList, {1} ) if sizeOf ( matchList ) > 0 version = matchList[1] return version on eolFix ( txt ) // Fixes end of line marker according to operating system regex.subst ( "[\r\n]+", "\r", @txt ) // Remove any \n marker and multiple \r markers if string.lower ( string.mid ( sys.os (), 1, 3 ) ) == "win" // Fix eol markers for Windows systems txt = string.replaceAll ( txt, "\r", "\r\n" ) return txt if ! defined ( system.temp.activeRenderer ) // create temporary table if needed new ( tabletype, @system.temp.activeRenderer ) system.temp.activeRenderer.updating = true // set updating semaphore radio.log.add ( "activeRenderer", "Checking \"" + user.rootUpdates.servers.activeRenderer.server + "\" for updates.", startTime ) window.about() // Bring Radio status window to the front try rootUpdates.update (@activeRendererSuite, true, @ctParts ) // check for updates if ctParts > 0 // if some parts were downloaded radio.log.add( "activeRenderer", ctParts +" new part(s) loaded from \"" + user.rootUpdates.servers.activeRenderer.server + "\".", startTime ) else // no available parts radio.log.add( "activeRenderer", "No new part(s) found on \"" + user.rootUpdates.servers.activeRenderer.server + "\".", startTime ) else // catch update errors msg ( tryError ) radio.log.add ( "activeRenderer", "Update failed: " + tryError, startTime ) if defined ( system.temp.activeRenderer.instal ) && timeModified ( @activeRendererSuite.instal ) > timeModified ( @system.temp.activeRenderer.instal ) // if update was launch at startup (autoupdate true) and the instal code was modified during update radio.log.add( "activeRenderer", "activeRendererSuite.instal was updated, re-launching installation.", startTime ) if procID > 0 && thread.exists ( procID ) // if called from a waiting parent thread thread.kill ( procID ) // terminate the calling thread before starting a new one. system.temp.activeRenderer.instal = activeRendererSuite.instal thread.callScript ( @system.temp.activeRenderer.instal, {} ) // Relaunch installation code in a separate thread else // no modification of instal code, check external elements instead if timeModified ( @activeRendererData.texts.css ) > modCSS // css stylesheet was modified local cssPath = basePath + file.getPathChar() + "outliner.css" currentVersion = getVersion ( file.readWholeFile ( cssPath ) ) updateVersion = getVersion ( string ( activeRendererData.texts.css ) ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile ( cssPath, eolFix ( string ( activeRendererData.texts.css ) ) ) radio.log.add ( "activeRenderer", "CSS file updated.", startTime ) if timeModified ( @activeRendererData.texts.javascript ) > modJavascript // javascript code was modified local jsPath = basePath + file.getPathChar() + "outliner.txt" js = eolFix ( string ( activeRendererData.texts.javascript ) ) currentVersion = getVersion ( file.readWholeFile ( jsPath ) ) updateVersion = getVersion ( js ) js = string.replaceAll ( js, "http://radio.weblogs.com/0104487/", radio.weblog.getUrl () ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile ( jsPath, js ) radio.log.add ( "activeRenderer", "outliner JavaScript code updated.", startTime ) if timeModified ( @activeRendererData.texts.xsl_html ) > modXslHtml // xsl/html renderer was modified local xslPath = basePath + file.getPathChar() + "outliner_xsl.txt" xsl = eolFix ( string ( activeRendererData.texts.xsl_html ) ) currentVersion = getVersion ( file.readWholeFile ( xslPath ) ) updateVersion = getVersion ( xsl ) xsl = string.replaceAll ( xsl, "http://radio.weblogs.com/0104487/", radio.weblog.getUrl () ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile (xslPath, xsl ) radio.log.add ( "activeRenderer", "outliner xsl/html code updated.", startTime ) if timeModified ( @activeRendererData.texts.xsl_js ) > modXslJs // xsl/javascript renderer was modified local xslPath = basePath + file.getPathChar() + "outliner_js_xsl.txt" xsl = eolFix ( string ( activeRendererData.texts.xsl_js ) ) currentVersion = getVersion ( file.readWholeFile ( xslPath ) ) updateVersion = getVersion ( xsl ) xsl = string.replaceAll ( xsl, "http://radio.weblogs.com/0104487/", radio.weblog.getUrl () ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile (xslPath, xsl ) radio.log.add( "activeRenderer", "outliner xsl/js code updated.", startTime ) if timeModified ( @activeRendererData.texts.rslite ) > modRsLite // rsLite code was modified local jsPath = basePath + file.getPathChar() + "rslite.txt" js = eolFix ( string ( activeRendererData.texts.rslite ) ) currentVersion = getVersion ( file.readWholeFile ( jsPath ) ) updateVersion = getVersion ( js ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile ( jsPath, js ) radio.log.add ( "activeRenderer", "rslite JavaScript code updated.", startTime ) basePath = user.radio.prefs.wwwfolder + "outlines" if timeModified ( @activeRendererData.texts.prefs ) > modPrefs // #prefs.txt was modified local prefPath = basePath + file.getPathChar() + "#prefs.txt" prefs = file.readWholeFile ( prefPath ) // get current content bundle // Fix any broken end of file, just in case regex.subst ( "[\r\n]+", "\r", @prefs ) // Remove any \n marker and multiple \r markers regex.subst ( "\r+\\Z", "", @prefs ) // Remove any trailing end of line markers if string.patternMatch ( "flDisplayHTMLWedge", prefs ) == 0 prefs = prefs + cr + "#flDisplayHTMLWedge true" // Add a new line marker and the flDisplayHTMLWedge directive file.writeWholeFile ( prefPath, prefs ) // Replace with updated copy radio.log.add ( "activeRenderer", "#prefs.txt file updated in outlines folder.", startTime ) if timeModified ( @activeRendererData.texts.template ) > modTemplate // #template.txt was modified local templatePath = basePath + file.getPathChar() + "#template.txt" currentVersion = getVersion ( file.readWholeFile ( templatePath ) ) updateVersion = getVersion ( string ( activeRendererData.texts.template ) ) if date.versionLessThan ( currentVersion, updateVersion ) file.writeWholeFile ( templatePath, eolFix ( string ( activeRendererData.texts.template ) ) ) radio.log.add ( "activeRenderer", "#template.txt file updated in outlines folder.", startTime ) if procID > 0 // If a a calling process id was passed along if thread.exists ( procID ) and thread.isSleeping ( procID ) // if the process is still there and paused thread.wake ( procID ) // Wake up the dozing thread system.temp.activeRenderer.updating = false // reset updating semaphore return true bundle // test code update () €�����„�����„�����€�����„�����������������„�����������������„�����������€�����������„�����������������������€�����������„�����������„�����������„�����������€�����������������������������������������������������������������€�����������������������������������������������������€�����������������������������€�����������€�����€�����€�����€�����������������������������������€�����������������€�����������������������������������€�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������€�����������������€�����€�����€�������������&‚���Ó�������Ď���L���¸ô§ ťŻń�������� ���� ��� ���� ���, ����3���? ����E���Q ����a���m ����sentities������,ˆ guichuncks������˜images������ťprefs������=rootupdatetable������€Ptexts������ôŤ���Ӏ�W�����%ß���$���şJBZşJBŽ�������� ������� ����port���5336server��� 64.81.223.180���Q€������/u000000060001001777AA000000000079000000001001710000001-7EFF6FBE1800000‚‚48004806D13200-1‚CB9CBDCB9CBD0Â6‚D13222FFFF0‚‚10‚‚3‚103A0000100000077000000020616840‚‚6‚48B22260503C800047E1848B6E0616103A840‚‚48B6D13222A24038E000D066D136000020000061C00000000�616,/* version€�ł���������ž��ű����Geneva���������������������������� ��������������ť—žť—ž������}�^“ţLAND˙˙˙˙˙˙������mac ������������on checkHomeTemplate ( startTime = clock.ticks() ) Information 10/29/02; 5:20:33 PM by MB Provide multiple backups, so as not to overwrite the original backup 22.10.02; 22:50:04 Uhr by AR/MB Code review with Andre Radke Inserted ca€�-��Č�������z��Ö����Geneva���������������������������� ��������������ť—ť—������hdłLAND˙˙˙˙˙˙������mac ������������on parseCookies ( httpResult, server, path, adrCookiesTable ) Information 11/1/02; 7:32:17 PM by MM (Mikel Maron) Cookie processing is broken in tcp.httpClient:€�W��đ�������Ô�� ¤����Geneva���������������������������� ��������������ťŻńťŻń������(�wLAND˙˙˙˙˙˙������mac ������������on folderToOpml (folder, adrcallback=nil, ownername=user.prefs.name, owneremail=user.prefs.mailAddress, adrCloud=nil) Information 3/3/03; 11:28:49 AM by MB Ported to activeRenderer from webOutliner, modified url attribute creation, modified text creation. 11/22/02; 11:54:12 PM by MB Simplified code to handle local opml file names only. linked urls are GET requests to webOutliner/renderOutline with a url parameter 11/19/02; 5:25:24 PM by DB derived from radio.file.folderToOpml created by JES local xmltext = "" indentlevel = 0 localHost = "127.0.0.1" localPort = "5335" on add ( s ) xmltext = xmltext + string.filledstring ( "\t", indentlevel ) + s + "\r\n" add ( "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" ) add ( "<!-- OPML generated by activeRenderer vs " + activeRendererInfo.version + " on " + date.netStandardString (clock.now ()) + " -->\r\n" ) if adrCloud == nil add ( "<opml version=\"1.0\">" ); indentlevel++ else add ( "<opml version=\"1.1\">" ); indentlevel++ bundle // add head local ( adrfile ) radio.file.getFileAttributes ( folder, @adrfile ) add ( "<head>" ); indentlevel++ add ( "<ownerName>" + ownername + "</ownerName>" ) add ( "<ownerEmail>" + owneremail + "</ownerEmail>" ) add ( "<dateCreated>" + adrfile^.created + "</dateCreated>" ) add ( "<dateModified>" + adrfile^.modified + "</dateModified>" ) add ( "<expansionState></expansionState>" ) if adrCloud != nil with adrCloud^ add ( "<cloud domain=\"" + server + "\" port=\"" + port + "\" path=\"" + path + "\" registerProcedure=\"" + registerProcedure + "\" protocol=\"" + protocol + "\"/>" ) add ( "</head>" ); indentlevel-- bundle // add body add ( "<body>" ); indentlevel++ local ( lowerdirectoryfname = string.lower (radio.data.upstream.directoryFileName ) ) on dofolder ( folder, fltoplevel = false ) // return true if at least one file was inserted local ( f, fname, atts, flfolder, adrfile, flinserted )