1/* 2* Copyright (C) 2009 Joel Sutherland 3* Licenced under the MIT license 4* http://www.newmediacampaigns.com/page/jquery-flickr-plugin 5* 6* Available tags for templates: 7* title, link, date_taken, description, published, author, author_id, tags, image* 8*/ 9(function($) { 10 $.fn.jflickrfeed = function(settings, callback) { 11 settings = $.extend(true, { 12 flickrbase: 'http://api.flickr.com/services/feeds/', 13 feedapi: 'photos_public.gne', 14 limit: 20, 15 qstrings: { 16 lang: 'en-us', 17 format: 'json', 18 jsoncallback: '?' 19 }, 20 cleanDescription: true, 21 useTemplate: true, 22 itemTemplate: '', 23 itemCallback: function(){} 24 }, settings); 25 26 var url = settings.flickrbase + settings.feedapi + '?'; 27 var first = true; 28 29 for(var key in settings.qstrings){ 30 if(!first) 31 url += '&'; 32 url += key + '=' + settings.qstrings[key]; 33 first = false; 34 } 35 36 return $(this).each(function(){ 37 var $container = $(this); 38 var container = this; 39 $.getJSON(url, function(data){ 40 $.each(data.items, function(i,item){ 41 if(i < settings.limit){ 42 43 // Clean out the Flickr Description 44 if(settings.cleanDescription){ 45 var regex = /<p>(.*?)<\/p>/g; 46 var input = item.description; 47 if(regex.test(input)) { 48 item.description = input.match(regex)[2] 49 if(item.description!=undefined) 50 item.description = item.description.replace('<p>','').replace('</p>',''); 51 } 52 } 53 54 // Add Image Sizes 55 // http://www.flickr.com/services/api/misc.urls.html 56 item['image_s'] = item.media.m.replace('_m', '_s'); 57 item['image_t'] = item.media.m.replace('_m', '_t'); 58 item['image_m'] = item.media.m.replace('_m', '_m'); 59 item['image'] = item.media.m.replace('_m', ''); 60 item['image_b'] = item.media.m.replace('_m', '_b'); 61 delete item.media; 62 63 // Use Template 64 if(settings.useTemplate){ 65 var template = settings.itemTemplate; 66 for(var key in item){ 67 var rgx = new RegExp('{{' + key + '}}', 'g'); 68 template = template.replace(rgx, item[key]); 69 } 70 $container.append(template) 71 } 72 73 //itemCallback 74 settings.itemCallback.call(container, item); 75 } 76 }); 77 if($.isFunction(callback)){ 78 callback.call(container, data); 79 } 80 }); 81 }); 82 } 83})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.