| /** | |
| * Plugin: jquery.zRSSFeed | |
| * | |
| * Version: 1.0.1 | |
| * (c) Copyright 2010, Zazar Ltd | |
| * | |
| * Description: jQuery plugin for display of RSS feeds via Google Feed API | |
| * (Based on original plugin jGFeed by jQuery HowTo) | |
| * | |
| * History: | |
| * 1.0.1 - Corrected issue with multiple instances | |
| * | |
| **/ | |
| (function($){ | |
| var current = null; | |
| $.fn.rssfeed = function(url, options) { | |
| // Set pluign defaults | |
| var defaults = { | |
| limit: 10, | |
| header: true, | |
| titletag: 'h4', | |
| date: true, | |
| content: true, | |
| snippet: true, | |
| showerror: true, | |
| errormsg: '', | |
| key: null | |
| }; | |
| var options = $.extend(defaults, options); | |
| // Functions | |
| return this.each(function(i, e) { | |
| var $e = $(e); | |
| // Add feed class to user div | |
| if (!$e.hasClass('rssFeed')) $e.addClass('rssFeed'); | |
| // Check for valid url | |
| if(url == null) return false; | |
| // Create Google Feed API address | |
| var api = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q=" + url; | |
| if (options.limit != null) api += "&num=" + options.limit; | |
| if (options.key != null) api += "&key=" + options.key; | |
| // Send request | |
| $.getJSON(api, function(data){ | |
| // Check for error | |
| if (data.responseStatus == 200) { | |
| // Process the feeds | |
| _callback(e, data.responseData.feed, options); | |
| } else { | |
| // Handle error if required | |
| if (options.showerror) | |
| if (options.errormsg != '') { | |
| var msg = options.errormsg; | |
| } else { | |
| var msg = data.responseDetails; | |
| }; | |
| $(e).html('<div class="rssError"><p>'+ msg +'</p></div>'); | |
| }; | |
| }); | |
| }); | |
| }; | |
| // Callback function to create HTML result | |
| var _callback = function(e, feeds, options) { | |
| if (!feeds) { | |
| return false; | |
| } | |
| var html = ''; | |
| var row = 'odd'; | |
| // Add header if required | |
| if (options.header) | |
| html += '<div class="rssHeader">' + | |
| '<a href="'+feeds.link+'" title="'+ feeds.description +'">'+ feeds.title +'</a>' + | |
| '</div>'; | |
| // Add body | |
| html += '<div class="rssBody">' + | |
| '<ul>'; | |
| // Add feeds | |
| for (var i=0; i<feeds.entries.length; i++) { | |
| // Get individual feed | |
| var entry = feeds.entries[i]; | |
| // Format published date | |
| var entryDate = new Date(entry.publishedDate); | |
| var pubDate = entryDate.toLocaleDateString() + ' ' + entryDate.toLocaleTimeString(); | |
| // Add feed row | |
| html += '<li class="rssRow '+row+'">' + | |
| '<'+ options.titletag +'><a href="'+ entry.link +'" title="View this feed at '+ feeds.title +'">'+ entry.title +'</a></'+ options.titletag +'>' | |
| if (options.date) html += '<div class="rssDate">'+ pubDate +'</div>' | |
| if (options.content) { | |
| // Use feed snippet if available and optioned | |
| if (options.snippet && entry.contentSnippet != '') { | |
| var content = entry.contentSnippet; | |
| } else { | |
| var content = entry.content; | |
| } | |
| html += '<p>'+ content +'</p>' | |
| } | |
| html += '</li>'; | |
| // Alternate row classes | |
| if (row == 'odd') { | |
| row = 'even'; | |
| } else { | |
| row = 'odd'; | |
| } | |
| } | |
| html += '</ul>' + | |
| '</div>' | |
| $(e).html(html); | |
| }; | |
| })(jQuery); |