The final new widget for my home page to document is the “Latest Shared Feed Items” widget. This one displays the last 3 items that I’ve shared from Google Reader. I’m no longer displaying this widget but it was a custom designed plug-in (for the most part) so I wanted to share the code.
Like the previously discussed widgets this one uses no server-side code it is all JavaScript. I could not find a “stock” jQuery plugin that I liked for displaying Google Reader Shared Items so I took information learned from the article “Processing an RSS Feed with Javascript using Google Reader + JSON + jQuery” and combined it with a modified version of the YouTube plugin that I used previously to create a plugin that did what I needed.
var __mainDiv; var __preLoaderHTML; var __opts;
function __ReceiveData(data) {
var cnt = 0;
$.each(data.items, function(i, e) {
if (cnt < __opts.numberToDisplay) {
var out = '<li><h3><a href="' \+ e.alternate.href + '" target="_blank" title="' \+
e.title + '">' \+ e.title + '</a></h3><p>From: <a href="' \+
e.origin.htmlUrl + '">' \+ e.origin.title + '</a>';
if (e.summary != null) { out = out \+ '<br />' \+ e.summary + ''; }
out = out \+ '</p></li>';
__mainDiv.append(out);
cnt = cnt + 1;
}
});
$(__preLoaderHTML).remove();
__mainDiv.show();
}
(function($) {
$.fn.googleReaderShared = function(options) {
var readerDiv = $(this);
$.fn.googleReaderShared.defaults = {
userName: null,
loadingText: "Loading...",
numberToDisplay: 5
}
__opts = $.extend({}, $.fn.googleReaderShared.defaults, options);
if (__opts.userName != null) {
readerDiv.append("<ul id=\\"reader_div\\"></ul>");
__mainDiv = $("#reader_div");
__mainDiv.hide();
__preLoaderHTML = $("<p class=\\"loader\\">" \+ __opts.loadingText + "</p>");
readerDiv.append(__preLoaderHTML);
var urle = "http://www.google.com/reader/public/javascript/user/" \+
__opts.userName + "/state/com.google/broadcast?callback=?";
$.getJSON(urle, function(data) { __ReceiveData(data); });
}
};
})(jQuery);
I placed the above code in a file named jquery.googlereader.shared.js. To implement you just need to add a script reference to that file and the jQuery library, a container to hold the rendered HTML, a few lines of JavaScript to wire everything up, and finally some CSS tweaks to display as desired.
<script type=”text/javascript”
src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js”></script>
<script type=”text/javascript” src=”jquery.googlereader.shared.js”></script>
<div id="googleshareditems" class="googleshareditems"></div>
<script type="text/javascript">
$(document).ready(function() {
$('#googleshareditems').googleReaderShared({
userName: 'your google reader user id goes here',
numberToDisplay: 3
});
});
</script>
You now have a Google Reader Shared Items widget! I hope you find it useful.