Monday, November 08, 2010 at 12:00 AM.
system.verbs.apps.amazon.macros.box
on box (searchterm, productline="books", page=1, tableWidth=191, frameColor="#000000", boxColor="#FFFFFF", helpLink="http://radio.userland.com/amazonBox", textClass="", align="") { <<Changes <<9/10/02; 12:42:48 AM by JES <<Created. Based on google.macros.box. local (htmltext = "", indentlevel = 0); on add (s) { htmltext = htmltext + (string.filledstring ("\t", indentlevel) + s + "\r");}; local (textpre, textpost); if textClass == "" { textpre = "<font size=\"-1\">"; textpost = "</font>"} else { textpre = "<div class=\"" + textClass + "\">"; textpost = "</div>"}; local (adrresults, whenLastRead); bundle { //set adrresults, whenLastRead amazon.init (); if not defined (system.temp.amazon.box) { new (tabletype, @system.temp.amazon.box)}; local (adrquerycache = @system.temp.amazon.box.[searchterm], flread = true); if defined (adrquerycache^) { if (adrquerycache^.whenLastRead + (60 * 60)) > clock.now () { if defined (adrquerycache^.results) { flread = false}}} else { new (tabletype, adrquerycache)}; if flread { adrquerycache^.whenLastRead = clock.now (); try { adrquerycache^.results = amazon.keywordSearch (searchterm)} else { new (tableType, @adrquqrycache^.results); new (tableType, @adrquqrycache^.results.Details)}}; //empty table -- no results adrresults = @adrquerycache^.results; whenLastRead = adrquerycache^.whenLastRead; }; bundle { //build htmltext if align != "" { align = " align=\"" + align + "\""}; add ("<table width=\"" + tableWidth + "\" cellspacing=\"0\" cellpadding=\"1\" bgcolor=\"" + frameColor + "\"" + align + "><tr><td><table bgcolor=\"" + boxColor + "\" cellpadding=\"2\"><tr><td>"); indentlevel++; add ("<center>" + textpre + "Top hits for <i>" + searchterm + "</i> on.." + textpost + "</center>"); add ("<center><a href=\"http://www.amazon.com/search?hl=en&q=" + string.urlencode (searchterm) + "\"><img src=\"http://g-images.amazon.com/images/G/01/associates/navbar2000/logo-no-border(1).gif\" width=\"148\" height=\"43\" border=\"0\" alt=\"amazon\"></a></center>"); local (adr, ct = 0); add ("<table cellpadding=\"0\" cellspacing=\"5\" border=\"0\">"); indentlevel++; for adr in @adrresults^.Details { add ("<tr><td valign=\"top\" align=\"right\">" + textpre + ++ct + "." + textpost + "</td><td>" + textpre + "<a href=\"" + adr^.url + "\">" + searchengine.stripmarkup (adr^.productName) + "</a><br>" + textpost + "</td></tr>")}; add ("</table>"); indentlevel--; add ("<br><table><tr><td valign=\"top\"><a href=\"" + helpLink + "\"><img src=\"http://static.userland.com/shortcuts/images/qbullets/help.gif\" width=\"12\" height=\"11\" border=\"0\" alt=\"Help link\"></a></td><td valign=\"top\">" + textpre + " <i>" + whenLastRead + ".</i>" + textpost + "</td></tr></table>"); add ("</td></tr></table></td></tr></table>"); indentlevel--}; return (htmltext)} <<bundle //test code <<webbrowser.displaytext (box ("dhrb", 25, boxcolor:"whitesmoke", align:"right") + string.filledstring ("oh the buzzing of the bees ", 500))
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.