/* * Copyright (C) 2009 Joel Sutherland * Licenced under the MIT license * http://www.newmediacampaigns.com/page/jquery-flickr-plugin * * Available tags for templates: * title, link, date_taken, description, published, author, author_id, tags, image* */ (function($) { $.fn.jflickrfeed = function(settings, callback) { settings = $.extend(true, { flickrbase: 'http://api.flickr.com/services/feeds/', feedapi: 'photos_public.gne', limit: 20, qstrings: { lang: 'en-us', format: 'json', jsoncallback: '?' }, cleanDescription: true, useTemplate: true, itemTemplate: '', itemCallback: function(){} }, settings); var url = settings.flickrbase + settings.feedapi + '?'; var first = true; for(var key in settings.qstrings){ if(!first) url += '&'; url += key + '=' + settings.qstrings[key]; first = false; } return $(this).each(function(){ var $container = $(this); var container = this; $.getJSON(url, function(data){ $.each(data.items, function(i,item){ if(i < settings.limit){ // Clean out the Flickr Description if(settings.cleanDescription){ var regex = /

(.*?)<\/p>/g; var input = item.description; if(regex.test(input)) { item.description = input.match(regex)[2] if(item.description!=undefined) item.description = item.description.replace('

','').replace('

',''); } } // Add Image Sizes // http://www.flickr.com/services/api/misc.urls.html item['image_s'] = item.media.m.replace('_m', '_s'); item['image_t'] = item.media.m.replace('_m', '_t'); item['image_m'] = item.media.m.replace('_m', '_m'); item['image'] = item.media.m.replace('_m', ''); item['image_b'] = item.media.m.replace('_m', '_b'); delete item.media; // Use Template if(settings.useTemplate){ var template = settings.itemTemplate; for(var key in item){ var rgx = new RegExp('{{' + key + '}}', 'g'); template = template.replace(rgx, item[key]); } $container.append(template) } //itemCallback settings.itemCallback.call(container, item); } }); if($.isFunction(callback)){ callback.call(container, data); } }); }); } })(jQuery);