Nq,ńX*&¼‡ž¼kƒnexturl*n¼‰š¼kzVGeneva ¢ų2ĄøŲ²n 8¼‡ž¼k¢  ­ ³æ Ä bookmarkletńjavascript:%20var%20currentUrl%20=%20document.location.href;%20var%20url;%20url%20=%20'http://server/commentwatcher/watch$'%20+%20escape%20(currentUrl);%20var%20popupWindow;%20window.open%20(url,%20'AddtoHomePage');%20popupWindow.focus%20(); bookmarklet2›javascript:var%20currentUrl=document.location.href;var%20url;url='http://server/commentwatcher/watch$'+escape(currentUrl);window.open(url,'AddtoHomePage');prefs°Xurls°ŽģčV¼‡¼‡  #< HL X\ as¼‡ ‡author David Davies authorEmaild.a.davies@bham.ac.uk description homePageUrlnamecommentwatcher releaseDateversion0.1ģ ¼‡ž¼‡ž VĄGeneva ¼‡ž¼‡ž§æo@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€H2“.¼‡ž¼‡+é AI Q condition3(string.lower (path) beginsWith "/commentwatcher/")enabledmethods°Ŗ“ ¼‡ž¼‡ž ¼‡ž¼‡ž !x1Geneva ¼‡’¼ī‰Ŗ˜B¼LAND’’’’’’mac This script runs every hour. local emailaddress = commentwatcherData.notifyemail message subject for n = 1 to sizeof (commentwatcherData.urls) url = commentwatcherData.urls[n].url urllist = string.urlsplit (url) theresult = string.httpResultSplit (tcp.httpClient (server:urllist [2], path:urllist [3])) if not defined (commentwatcherData.urls[n].firstread) commentwatcherData.urls[n].firstread = theresult else if commentwatcherData.urls[n].firstread != theresult message = "The following URL has been updated: " + url if commentwatcherDatar.urls[n].title != "" subject = "Comment Watcher Notification: " + commentwatcherDatar.urls[n].title else subject = "Comment Watcher Notification" tcp.sendmail (emailaddress, subject, message) commentwatcherData.urls[n].firstread = theresult „€€€€€€€€€€€€€€€€€€€!Geneva ¼‡’¼‡’§æo@LAND’’’’’’mac This script runs every minute. „œGeneva ¼‡’¼‡’§æo@LAND’’’’’’mac This script runs every night. „œ{w.¼‡’¼‡’  ". 9 everyHourß everyMinute everyNight µ{Kx[ Geneva ¼ˆØŌ¼‹“æŁæLAND’’’’’’mac local pta = html.getpagetableaddress () htmltext on add (s) htmltext = htmltext + s + cr pta^.title = "Comment Watcher configuration" bundle // get bookmarklet link if not defined (commentwatcherData.ipaddress) commentwatcherData.ipaddress = "127.0.0.1:5335" ipaddress = commentwatcherData.ipaddress bookmarklet = commentwatcherData.bookmarklet bookmarklet2 = commentwatcherData.bookmarklet2 bookmarklet = string.replace (bookmarklet, "server", ipaddress) bookmarklet2 = string.replace (bookmarklet2, "server", ipaddress) add ("

Install the Comment Watcher bookmarklet by dragging the following link matching your browser type into the tool bar of your web browser.

") add ("

Use this bookmarklet for Apple Safari Comment Watcher

") add ("

Use this bookmarklet for all other browsers Comment Watcher

") add ("

To track a weblog comment thread, all you do is ensure the comment thread is the front-most window in your web browser then click the 'Comment Watcher' bookmarklet, or, if it's hidden as is often the case in pop-up comments windows, assign the 'Comment Watcher' bookmarklet a keyboard shortcut or select 'Comment Watcher' from your web browser's bookmarks menu.

") add ("

<< back to Comment Watcher home page

") return (htmltext) €€€€€€€€€€€€€€€€K ¼‡’¼‡’ ¼‡’¼‡˜ ¼‡’¼‡™ nj.¼‡’¼‡’  ' ,fileMenu€;radio€guser€“nøŠ¶Geneva ¼ˆ©¼‰÷)©ŖŃ|LAND’’’’’’mac local pta = html.getpagetableaddress () htmltext on add (s) htmltext = htmltext + s + cr pta^.title = "Comment Watcher configuration" if pta^.method == "POST" commentwatcherData.ipaddress = pta^.radioResponder.postargs.ipaddress commentwatcherData.notifyemail = pta^.radioResponder.postargs.notifyemail bundle // check default value of IP address if not defined (commentwatcherData.ipaddress) commentwatcherData.ipaddress = "127.0.0.1:5335" ipaddress = commentwatcherData.ipaddress if not defined (commentwatcherData.notifyemail) commentwatcherData.notifyemail = user.prefs.mailAddress notifyemail = commentwatcherData.notifyemail add ("

Enter the IP address of your computer running Radio Userland. If you only ever access it from the same machine that you run your web browser on then that address is by default 127.0.0.1 on port 5335. If you access your copy of Radio remotely please enter the IP address and port number below.

") add ("

IP address:
") add ("

Enter the email address that you want to notify when a comment thread is updated.

Email:

") if pta^.method == "POST" add ("

Your details ahve been updated!

") add ("

<< back to Comment Watcher home page

") return (htmltext) €€€€€€€€€€€€€€€€€€€€€€øĆT÷ Geneva ¼‡c¼ˆØ¼f)ßLAND’’’’’’mac local pta = html.getpagetableaddress () htmltext temp.pta = pta^ pta^.title = "Comment Watcher Home Page" on add (s) htmltext = htmltext + s + cr add ("

Use the Comment Watcher tool to keep track of comment threads in weblogs. You should hopefully receive an email notifying you whenever someone posts a comment to your own weblog. But if you'd like to keep track of comments posted to other people's weblogs then this tool is for you!

") add ("

The way the Comment Watcher tool works is to record the URL of a comment thread from someone's weblog then visit that URL either hourly or once per day to see if it has been updated. If it has then you receive an email notification to let you know there are new comments for you to read in the thread. Each thread of comments is watched separately so you receive separate email notifications when they are updated.

") add ("

To make the Comment Watcher tool work you need to do two things. First, tell the tool whether you usually access your copy of Radio Userland remotely or locally. If you only ever access your copy of Radio locally then the IP address the tool will use will be 127.0.0.1, otherwise you must specify the Internet IP address of the machine Radio is running on. Secondly, you install a simple bookmarklet into your web browser's tool bar. The bookmarklet is the key to how Comment Watcher works.

") add ("

Step 1: Click here to enter the IP address of your computer running Radio Userland

") add ("

Step 2: Click here to install the bookmarklet

") add ("

Once you've set everything up and subscribed to your first comment thread click here to manage all your subscribed-to comment threads.

") return (htmltext) €€€€€€€€€€€ĆƒØcGeneva ¼ˆØŚ¼ÅŃæd× LAND’’’’’’mac local pta = html.getpagetableaddress () htmltext on add (s) htmltext = htmltext + s + cr pta^.title = "Comment Watcher: Manage watched comments" add ("

You are watching the following comments URLs. NB watched URLs are not displayed in full because for weblog comments they're often too darned long! Hover over the URL link instead or better still give your watched URL a meaningful title when you first subscribe to it.

") if pta^.method == "POST" if sizeof (pta^.radioresponder.postargs) > 0 for n = 1 to sizeof (pta^.radioresponder.postargs) try delete (@commentwatcherData.urls.[nameof (pta^.radioresponder.postargs[n])]) else add ("

" + tryerror + "

") add ("

The selected watched URLs have been deleted!

") temp.pta = pta^ add ("
") add ("") for n = 1 to sizeof (commentwatcherData.urls) frequency = commentwatcherData.urls[n].frequency title = commentwatcherData.urls[n].title url = commentwatcherData.urls[n].url notes = commentwatcherData.urls[n].notes add ("") add ("
DeleteFrequencyTitleURLComments
" + frequency + "" + title + "Click or hover over this link to see URL" + notes + "
") add ("

") add ("

<< back to Comment Watcher home page

") return (htmltext) €€€€€€€€€€€€€€€€€€€€€€€€€ƒž Geneva ¼‡’¼‡’§æo@LAND’’’’’’mac dialog.notify ("Hello, World!") €žŖGeneva ¼‡’¼‡’S§æo@LAND’’’’’’mac Commentwatcher Hello World €€ *[Ŗp+’’Geneva ‰ō p •Geneva ¼‡’¼‡Į§æo@LAND’’’’’’mac This script returns a string which appears in the Status Center on the Radio UserLand home page. return ("Watching comments, so you don't have to!") „€¾šVGeneva µžǼв#Œ”LAND’’’’’’mac local htmlText = "" pta = html.getPageTableAddress () //get the page table address pathargs on add (s) htmlText = htmlText + s pta^.title = "Comment Watcher: New URL is being watched" if pta^.method == "POST" urlref = pta^.radioResponder.postargs.url adr = @commentwatcherData.urls.[urlref] adr^.title = pta^.radioResponder.postargs.title adr^.comments = pta^.radioResponder.postargs.comments adr^.frequency = pta^.radioResponder.postargs.frequency add ("

Watching preferences have been updated for " + adr^.url + "

") else pathargs = string.urldecode (pta^.pathargs) bundle // add new comments URL n = commentwatcherData.prefs.nexturl adr = @commentwatcherData.urls.[string.padwithzeros (n, 4)] urlref = nameof (adr^) new (tabletype, adr) adr^.url = pathargs adr^.title = "" adr^.notes = "" adr^.frequency = "hourly" urllist = string.urlsplit (pathargs) theresult = string.httpResultSplit (tcp.httpClient (server:urllist [2], path:urllist [3])) commentwatcherData.urls.[string.padwithzeros (n, 4)].firstread = theresult commentwatcherData.prefs.nexturl ++ add ("

You are now watching " + pathargs + "

") add ("

It's a good idea to add a title for this comment thread to help you remember what it is.

") add ("

") add ("") add ("Optional title for this watched URL
") add ("Optional comments for this watched URL
") add ("Watch this URL hourly or once per day?
") add ("") add ("

") add ("

Click to close this window

") return (htmlText) €€€€€€€€€€€€€€€€€€€€€€€€€€€€„€€€€¾ˆ.j¼‡’¼ī”  #/ 9E LX ^j q} ‚Ž ¢® “ background° ] bookmarklet° ä callbacks°æconfig°9index°żmanage°"Ģmenu°+»statusCenterMessage°,7watch°-\VGeneva ęl=ī¬FiˆGeneva ¼‡¼‡§æo@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.¼‡¼‡ ctenabledscript°7ŗTž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���n���5łnLAND’’’’’’������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����€��9E firstFilter����€��:O pagefilter����€��; ��VGeneva���������������������������� ����������č�P�E��$Ļ�������������������������Ó���J�������F������µü7ؼ‡��������� ����url��� http://127.0.0.1/commentwatcher/���J���d�������`���$���¼ˆŸ›¼ˆŸ›�������� ���� ���& ����+linetext���Comment Watcher Home Pagepath��� index.wsf���d���ž�������D����������¼ˆŸ›�������� ����Comment Watcher Home Page����€��>J��VArial����������������������������� ������������������������������������������������ž���±�������W����������“ž–������������space���/GIFfGIF89a��€��’’’���!ł����,�������D�;��VArial����������������������������� ������������������������������������������������±���������Å���V�������“ž†�������� ������� �������"�������+ ����0���: ����C���L ����Q���[ ����aalink���008000bgcolor���FFFFFFflRenderlink���0000FFspaceGif���spacetext���000000vlink���800080��VArial����������������������������� ��������������������������������������������������n�����������������µü8>������VArial����������������������������� ������������������������������������������������n���Ŗ�����������,����Geneva���������������������������� ��������������¼ˆØŌ¼ˆ© �����§æo@LAND’’’’’’������mac ������������return (commentwatcherSuite.bookmarklet ()) €��������Ŗ���„�����������'����Geneva���������������������������� ��������������¼ˆØņ¼ˆØż�����§æo@LAND’’’’’’������mac ������������return (commentwatcherSuite.config ()) €��������„���¤�����������&����Geneva���������������������������� ��������������¼‡"¼‡����Ń�™l‹LAND’’’’’’������mac ������������return (commentwatcherSuite.index ()) €��������¤���„�����������'����Geneva���������������������������� ��������������¼ˆØŚ¼ˆ©�����§æo@LAND’’’’’’������mac ������������return (commentwatcherSuite.manage ()) €��������„���¤�����������&����Geneva���������������������������� ��������������¼ˆÆŸ¼ˆÆ­�����§æo@LAND’’’’’’������mac ������������return (commentwatcherSuite.watch ()) €��������¤��ø������^���~���µü7¼ˆÆŸ�������� ���� ��� �������* ����4���@ ����H���T ����[���g ����n���z ����†���’ ����™���„ ����«���· ����¾���Ź ����Š#filters����°��=#ftpSite����°��=ō #glossary����°��>ŗ#images����°��?d#prefs����°��@!#tools����°��AL bookmarklet����°��AĘconfig����°��B|index����°��C-manage����°��CŻwatch����°��DŽ��VVerdana��������������������������� ����������ŗ�“�??8“ņ������������������������ø���n�������������¼‡ž¼‰ļ������VGeneva���������������������������� ����������©�‡�2ĄøVH�������������������������n��é������Ō���t���¼‡ž¼‡/K�������� ������� ����2���> ����V���b ����z���† ���� ���¬ ����Ē���Ó ����ē���ó ����� ���*��6 ���PcommentwatcherData�������commentwatcherInfo�������$commentwatcherNodeTypes�������commentwatcherResponder�������čcommentwatcherRpcHandlers�������‡commentwatcherSoapHandlers�������³commentwatcherSuite�������6&commentwatcherThread�������8åcommentwatcherWebsite�������E>commentwatcherWindowTypes�������G��V Lucida Grande�������������������������������Ų°�2�Öī•Ö������������������������Š��s���Geneva���������������������������� ��������������¼‡0 ¼kŸ���=��§æo@LAND’’’’’’������mac ������������commentwatcherData bookmarklet bookmarklet2 prefs nexturl urls commentwatcherInfo commentwatcherNodeTypes commentwatcherResponder commentwatcherRpcHandlers commentwatcherSoapHandlers commentwatcherSuite background bookmarklet callbacks config index manage menu statusCenterMessage watch commentwatcherThread commentwatcherWebsite commentwatcherWindowTypes €������`-l�`Č�������������€�������`-l�`��������������€�������`-l�`��������������€������`-l�`�������������€�������`-l�`'��������������€������`-l�`�������������€������`-l�`Č�������������€������`-l�`Č�������������€������`-l�`Č�������������€������`-l�`Č�������������€������`-l�`Č�������������€������`-l�`Č�������������€������`-l�`*0�������������€�������`-l�`*0��������������€������`-l�`*0�������������€�������`-l�`*0��������������€�������`-l�`*0��������������€�������`-l�`*0��������������€�������`-l�`*0��������������€�������`-l�`*0��������������€�������`-l�`*0��������������€������`-l�`Č�������������€������`-l�`Č�������������€������`-l�`Č���������������é��ŗ�������G|ĄøVHChicago��������������������������?’� ����������������’’’’’’’’ Lucida Grande���������������������� �����������������ĻĢvGeneva����������������������������� ����������������޽8CChicago��������������������������?’� ����������������ķ®)RChicago��������������������������?’� ����������������’’’’’’’’ Lucida Grande���������������������� ����������������������’’����������������������������������������������������������ŗ