If anyone is intersted.. I have been hacking around
with the rssx.xml file to create comics.xml.. It uses the
tapestry rss feed to display any of a bunch of different daily comic
strips.. The strips stay up until the focus is
changed...
Examples:
|
<search function="comics"> <name>Comics</name> <description>Displays a daily comic strip. <div class="helpboxDescLabels">Switches:</div> <table class="helpboxDescTable"> <tr><td> Comic Name </td></tr> </table> <div class="helpboxDescLabels">Examples:</div> <table class="helpboxDescTable"> <tr><td>B.C.</td><td>comics /bc</td></tr> <tr><td>Big Nate</td><td>comics /bignate</td></tr> <tr><td>Dilbert </td><td>comics /dilbert</td></tr> <tr><td>Drabble </td><td>comics /drabble</td></tr> <tr><td>Get Fuzzy </td><td>comics /fuzzy</td></tr> <tr><td>Liberty Meadows </td><td>comics /liberty</td></tr> <tr><td>Over the Hedge </td><td>comics /hedge</td></tr> <tr><td>Peanuts </td><td>comics /peanuts</td></tr> <tr><td>Pearls Before Swine</td><td>comics /pearls</td></tr> <tr><td>Penny Arcade </td><td>comics /penny</td></tr> <tr><td>PvP </td><td>comics /pvp</td></tr> <tr><td>Ripley's Believe It or Not!</td><td>comics /ripleys</td></tr> <tr><td>Rudy Park </td><td>comics /rudy</td></tr> <tr><td>TrueNuff </td><td>comics /truenuff</td></tr> <tr><td>User Friendly </td><td>comics /friendly</td></tr> <tr><td>Wizard of Id </td><td>comics /id</td></tr> </table> </description> <category>Functions</category> <contributor>Shawn K. Hall</contributor> <script><![CDATA[ function comics(q){ if( nullArgs("comics",q) ) { qsfind("comics"); return false; }
// if (q == "/stop"){ // comicsSearchTerminate = true; // comicsDisplayAgain= false; // comicsSearchArray = comicsSearchArray.slice(comicsSearchArray.length); // setSearchWindowText("comics terminated"); // return false; // } if (q == "/dilbert"){ var sUrl = "http://dwlt.net/tapestry/dilbert.rdf"; } if (q == "/bc"){ var sUrl = "http://dwlt.net/tapestry/bc.rdf"; } if (q == "/bignate"){ var sUrl = "http://dwlt.net/tapestry/bignate.rdf"; } if (q == "/drabble"){ var sUrl = "http://dwlt.net/tapestry/drabble.rdf"; } if (q == "/fuzzy"){ var sUrl = "http://dwlt.net/tapestry/getfuzzy.rdf"; } if (q == "/liberty"){ var sUrl = "http://dwlt.net/tapestry/liberty.rdf"; } if (q == "/hedge"){ var sUrl = "http://dwlt.net/tapestry/hedge.rdf "; } if (q == "/peanuts"){ var sUrl = "http://dwlt.net/tapestry/peanuts.rdf "; } if (q == "/pearls"){ var sUrl = "http://dwlt.net/tapestry/pearls.rdf "; } if (q == "/penny"){ var sUrl = "http://dwlt.net/tapestry/pa.rdf"; } if (q == "/pvp"){ var sUrl = "http://dwlt.net/tapestry/pvponline.rdf"; } if (q == "/ripleys"){ var sUrl = "http://dwlt.net/tapestry/ripleys.rdf"; } if (q == "/rudy"){ var sUrl = "http://dwlt.net/tapestry/rudypark.rdf"; } if (q == "/truenuff"){ var sUrl = "http://dwlt.net/tapestry/truenuff.rdf"; } if (q == "/friendly"){ var sUrl = "http://dwlt.net/tapestry/uf.rdf"; } if (q == "/id"){ var sUrl = "http://dwlt.net/tapestry/wid.rdf "; } try{ //attempt to obtain the remote RSS feed var xmlHttp = new ActiveXObject("Microsoft.XmlHttp"); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState==4) { comicsXmlParser( xmlHttp, sUrl ); } }; xmlHttp.open("GET", sUrl, true); xmlHttp.setRequestHeader ( "Accept", "application/xml, text/xml, text/rss, application/xml+rdf, */*" ); xmlHttp.setRequestHeader ( "User-Agent", "Mozilla/4.0 (compatible; DQSD ( http://www.dqsd.net/ ); comics Search ( http://ReliableAnswers.com/x/dqsd/ ))" ); xmlHttp.send(null); }catch(e){ alert("comics: Failure!\n" + e.number + "::" + e.description); } }//function function comicsXmlParser( xmlHttp, sUrl ){ if (comicsSearchTerminate == true) {return false;} var sBuild = ""; try{ //get the response content from the remote site var sBody = xmlHttp.responseText; sBody = sBody.replace(/(\<\?xml-stylesheet[^>]*>)/gim,"<!-- $1 -->"); var xBody = new ActiveXObject("MSXML2.DOMDocument"); xBody.loadXML( sBody ); if(xBody.parseError.errorCode != 0) throw new Error(0, "RSS is not well-formed.\nParse error: " + xBody.parseError.reason + " line: " + xBody.parseError.line.toString() + ", col: " + xBody.parseError.linepos.toString() + "\n" + xBody.parseError.srcText); //parse it var xElement = xBody.documentElement; //rss version, capabilities and format //default paths and properties var rDate = "pubdate"; var rLanguage= ""; var rItems = "item"; var rImage = "image"; var rInput = "textinput"; var rVersion = ""; var rSyPeriod= ""; var rSyFreq = ""; var rContent = ""; var rsTitle = ""; var rsImage = ""; var rsLink = ""; //document element name var rDocElem = xElement.nodeName; //version="1.0" xNode = xElement.attributes.getNamedItem("version"); if (xNode != null) rVersion = xNode.nodeTypedValue; switch (rVersion){ case "": rItems = "item"; rImage = "image"; rInput = "textinput"; break; case "0.9": case "0.91": case "0.92": case "1.0": case "2.0": default: rItems = "channel/item"; rImage = "channel/image"; rInput = "channel/textinput"; break; } //xmlns="http://purl.org/rss/1.0/" xNode = xElement.attributes.getNamedItem("xmlns"); var rXmlns = ((xNode != null) ? xNode.nodeTypedValue : ""); //xmlns:dc="http://purl.org/dc/elements/1.1/" xNode = xElement.attributes.getNamedItem("xmlns:dc"); var rXmlnsDc = ((xNode != null) ? xNode.nodeTypedValue : ""); if (rXmlnsDc != "") { rDate = "dc:date"; xNode = xElement.selectSingleNode("channel"); if (xNode != null) { xNodeSub = xNode.selectSingleNode("dc:language"); if (xNodeSub != null) rLanguage = xNodeSub.nodeTypedValue; } } //xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xNode = xElement.attributes.getNamedItem("xmlns:rdf"); var rXmlnsRdf= ((xNode != null) ? xNode.nodeTypedValue : ""); //xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xNode = xElement.attributes.getNamedItem("xmlns:sy"); var rXmlnsSy = ((xNode != null) ? xNode.nodeTypedValue : ""); if (rXmlnsSy != "") { xNode = xElement.selectSingleNode("channel"); if (xNode != null) { xNodeSub = xNode.selectSingleNode("sy:UpdatePeriod"); if (xNodeSub != null) rSyPeriod = xNodeSub.nodeTypedValue; xNodeSub = xNode.selectSingleNode("sy:UpdateFrequency"); if (xNodeSub != null) rSyFreq = xNodeSub.nodeTypedValue; } } //xmlns:content="http://purl.org/rss/1.0/modules/content/" xNode = xElement.attributes.getNamedItem("xmlns:content"); var rXmlnsContent = ((xNode != null) ? xNode.nodeTypedValue : ""); if (rXmlnsContent != "") rContent = "content:encoded"; //obtain image/title/link properties xNode = xElement.selectSingleNode( rImage ); if (xNode != null) { xNodeSub = xNode.selectSingleNode("title"); if (xNodeSub != null) rsTitle= xNodeSub.nodeTypedValue; xNodeSub = xNode.selectSingleNode("url"); if (xNodeSub != null) rsImage= xNodeSub.nodeTypedValue; xNodeSub = xNode.selectSingleNode("link"); if (xNodeSub != null) rsLink = xNodeSub.nodeTypedValue; } //enumerate RSS items var xNodes = xElement.selectNodes( rItems ); for (i=0; i < xNodes.length; i++){ //get variables for this resource var xNode = xNodes.item(i); xNodeSub = xNode.selectSingleNode("title"); var sTitle= ((xNodeSub != null) ? xNodeSub.nodeTypedValue : ""); xNodeSub = xNode.selectSingleNode("description"); var sDesc = ((xNodeSub != null) ? xNodeSub.nodeTypedValue : ""); sDesc = sDesc.replace(/<a[\s]*[^>]href="([^"]+)"[^>]*>/gim,"<a onClick=\"window.parent.openSearchWindow('$1')\">"); xNodeSub = xNode.selectSingleNode("link"); var sLink = ((xNodeSub != null) ? xNodeSub.nodeTypedValue : ""); if (sLink == ""){ xNodeSub = xNode.selectSingleNode("guid"); var sLink = ((xNodeSub != null) ? xNodeSub.nodeTypedValue : ""); } if (rContent != ""){ xNodeSub = xNode.selectSingleNode( rContent ); var sContent = ((xNodeSub != null) ? xNodeSub.nodeTypedValue : ""); sContent = sContent.replace(/<a[\s]*[^>]href="([^"]+)"[^>]*>/gim,"<a onClick=\"window.parent.openSearchWindow('$1')\">"); }else{ var sContent = ""; } //append this record sBuild = ""; sBuild+= "<table width=\"100%\" border=\"0\"><tr>"; if (rsLink != ""){ sBuild+= "<td width=\"5%\">"; sBuild+= "<a href=\"" + rsLink + "\" title=\"" + rsTitle + "\">"; if (rsImage != ""){ sBuild+= "<img src=\"" + rsImage + "\" border=\"0\" />"; }else{ sBuild+= rsTitle; } sBuild+= "</a></td>"; } sBuild+= "<td>"; sBuild+= "<p align=\"left\"><b>" + sTitle + "</b></p>"; sBuild+= "</td></tr>\n"; sBuild+= "<tr><td colspan=\"2\">"; sBuild+= "<p>" + sDesc + "</p>"; if (sContent != ""){ sBuild+= "<hr />" + sContent; } sBuild+= "</td></tr>\n"; sBuild+= "</table>\n\n"; comicsSearchArray[comicsSearchArray.length] = sBuild; } if (comicsSearchArray.length > 0){ if (comicsDisplayAgain == false) displaycomicsSearchPopup(); } }catch(e){ alert("comics: Failure!\n" + e.number + "::" + e.description); } } var comicsSearchPopup; var comicsSearchTerminate = false; var comicsSearchIndex = 0; var comicsSearchArray = Array(); var comicsDisplayAgain= false; var comicsSearchURL = ''; function displaycomicsSearchPopup(){ //mls var comicsContent = "undefined"; try{ if (comicsSearchArray.length>=1){ var comicsContent = comicsSearchArray[0]; comicsSearchArray = comicsSearchArray.slice(1); } }catch(e){} if (comicsContent != "undefined") { try{ comicsSearchPopup = window.createPopup(); var comicsSearchPopupBody = comicsSearchPopup.document.body; var comicsSearchPopupBodyCode = "<html><head></head><body>"; comicsSearchPopupBodyCode += "<table id=rstable border=0 cellspacing=1 cellpadding=2 width=100% height=100%>"; comicsSearchPopupBodyCode += "<tr><td valign=top><style>" + convertStylesToInline() + "</style>"; comicsSearchPopupBodyCode += "<tr><td valign=top style='text-align: center' class=helpboxDescriptions>" + comicsContent; comicsSearchPopupBodyCode += "</tr></td></table></body></html>"; comicsSearchPopupBody.innerHTML = comicsSearchPopupBodyCode; comicsSearchPopup.document.body.style.border="outset 2px"; comicsSearchPopup.document.body.style.background='menu'; //comicsSearchPopup.document.body.style.overflowY='auto'; //comicsSearchPopup.document.body.style.overflowX='auto'; // Temporarily show the popup to determine the proper final height for the popup. comicsSearchPopup.show(0, 0, windowW, 0); //set a min size for the window.. sometimes the initial window display doesnt get right values var windowW = comicsSearchPopupBody.scrollWidth -54; windowW = windowW > 400 ? windowW : 700; var windowH = comicsSearchPopupBody.scrollHeight +20; windowH = windowH > 200 ? windowH : 330; // alert('w- '+windowW+' h- '+windowH); //mls comicsSearchPopup.hide(); // Display it comicsSearchPopup.show((buttonalign == "left" ? 0 : document.body.clientWidth - windowW), -windowH, windowW, windowH, document.body); }catch(e){ comicsDisplayAgain = false; } } comicsDisplayAgain= false; comicsSearchArray = comicsSearchArray.slice(comicsSearchArray.length); } ]]></script> <copyright> Copyright (c) 2004 Shawn K. Hall Distributed under the terms of the GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt) </copyright> </search>