Monday, November 08, 2010 at 12:05 AM.

on coffeeMug () {
		<<11/12/02; 1:26:17 PM by JES
			<<Use & instead of & as getArg delimiters. Fixes a problem with HTML 4 validation.
		<<8/29/02; 11:26:19 PM by JES
			<<Include the server name as part of the Jabber ID when generation a Jabber-ish OPML coffee mug.
		<<8/28/02; 8:27:35 PM by JES
			<<Fixed a copy/paste bug in the code that generates teh Jabber version of the link.
		<<8/27/02; 1:00:59 AM by JES
			<<Added arguments to the URL for the mug, which let the clicker know what IM protocol (if any) they can use to request notification when the outline changes.
		<<3/25/02; 11:19:21 PM by JES
			<<Call through radio.outliner.getMyOutlineFile to get the path to my outline.
		<<3/24/02; 9:14:50 PM by JES
			<<Changed the local page from opmlSubscribe to outlinerSubscribe.
		<<3/13/02; 6:17:36 PM by DW
	local (adrdata = radio.outliner.init ());
	local (f = radio.outliner.getMyOutlineFile ());
	local (adrfile);
	radio.file.getfileattributes (f, @adrfile);
	local (url = "" + string.urlencode (adrfile^.upstream.url) + "&author=" + string.urlencode ( + "&weblog=" + string.urlencode (radio.weblog.getUrl ()));
	bundle { //add IM notification params to the URL
		if adrdata^.prefs.messaging.flEnabled {
			if adrdata^.prefs.messaging.flAimEnabled {
				url = url + "&imProtocol=aim&imUsername=" + + "&imRegisterProcedure=radioOutliner.requestNotification"}
			else {
				if adrdata^.prefs.messaging.flJabberEnabled {
					url = url + "&imProtocol=jabber&imUsername=" + + "@" + + "&imRegisterProcedure=radioOutliner.requestNotification"}}}};
	return ("<a href=\"" + url + "\"><img src=\"\" width=\"97\" height=\"120\" border=\"0\" alt=\"Click on the coffee mug to add " + + "'s Instant Outline to your Radio UserLand buddy list.\"></a>")};
bundle { //test code
	webbrowser.displaytext (coffeeMug ())}

This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.