|
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>
