Академический Документы
Профессиональный Документы
Культура Документы
gfeedfetcher._formatdate=function(datestr, showoptions){
var itemdate=new Date(datestr)
var parseddate=(showoptions.indexOf("datetime")!=-1)? itemdate.toLocaleS
tring() : (showoptions.indexOf("date")!=-1)? itemdate.toLocaleDateString() : (sh
owoptions.indexOf("time")!=-1)? itemdate.toLocaleTimeString() : ""
return "<span class='datefield'>"+parseddate+"</span>"
}
gfeedfetcher._sortarray=function(arr, sortstr){
var sortstr=(sortstr=="label")? "ddlabel" : sortstr //change "label" str
ing (if entered) to "ddlabel" instead, for internal use
if (sortstr=="title" || sortstr=="ddlabel"){ //sort array by "title" or
"ddlabel" property of RSS feed entries[]
arr.sort(function(a,b){
var fielda=a[sortstr].toLowerCase()
var fieldb=b[sortstr].toLowerCase()
return (fielda<fieldb)? -1 : (fielda>fieldb)? 1 : 0
})
}
else{ //else, sort by "publishedDate" property (using error handling, as
"publishedDate" may not be a valid date str if an error has occured while getti
ng feed
try{
arr.sort(function(a,b){return new Date(b.publishedDate)-
new Date(a.publishedDate)})
}
catch(err){}
}
}
gfeedfetcher.prototype._fetch_data_as_array=function(result, ddlabel){
var thisfeed=(!result.error)? result.feed.entries : "" //get all feed en
tries as a JSON array or "" if failed
if (thisfeed==""){ //if error has occured fetching feed
alert("Google Feed API Error: "+result.error.message)
}
for (var i=0; i<thisfeed.length; i++){ //For each entry within feed
result.feed.entries[i].ddlabel=ddlabel //extend it with a "ddlab
el" property
}
this.feeds=this.feeds.concat(thisfeed) //add entry to array holding all
feed entries
this._signaldownloadcomplete() //signal the retrieval of this feed as co
mplete (and move on to next one if defined)
}
gfeedfetcher.prototype._signaldownloadcomplete=function(){
this.feedsfetched+=1
if (this.feedsfetched==this.feedurls.length) //if all feeds fetched
this._displayresult(this.feeds) //display results
}
gfeedfetcher.prototype._displayresult=function(feeds){
var rssoutput=(this.itemcontainer=="<li>")? "<ul>\n" : ""
gfeedfetcher._sortarray(feeds, this.sortstring)
for (var i=0; i<feeds.length; i++){
var itemtitle="<a href=\"" + feeds[i].link + "\" target=\""
+ this.linktarget + "\" class=\"titlefield\" > " + feeds[i].title + "</a>"
var itemlabel=/label/i.test(this.showoptions)? '<span class="lab
elfield">['+this.feeds[i].ddlabel+']</span>' : " "
var itemdate=gfeedfetcher._formatdate(feeds[i].publishedDate, th
is.showoptions)
var itemdescription=/description/i.test(this.showoptions)? "<br
/>"+feeds[i].content : /snippet/i.test(this.showoptions)? "<br />"+feeds[i].cont
entSnippet : ""
rssoutput+=this.itemcontainer + itemtitle + " " + itemlabel + "
" + itemdate + "\n" + itemdescription + this.itemcontainer.replace("<", "</") +
"\n\n"
}
rssoutput+=(this.itemcontainer=="<li>")? "</ul>" : ""
this.feedcontainer.innerHTML=rssoutput
}