You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.3 KiB
83 lines
2.3 KiB
/*
|
|
* 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>(.*?)<\/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('<p>','').replace('</p>','');
|
|
}
|
|
}
|
|
|
|
// 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);
|