зеркало из https://github.com/mozilla/popcorn-js.git
243 строки
7.2 KiB
JavaScript
Executable File
243 строки
7.2 KiB
JavaScript
Executable File
// PLUGIN: Flickr
|
|
(function (Popcorn) {
|
|
|
|
/**
|
|
* Flickr popcorn plug-in
|
|
* Appends a users Flickr images to an element on the page.
|
|
* Options parameter will need a start, end, target and userid or username and api_key.
|
|
* Optional parameters are numberofimages, height, width, padding, and border
|
|
* Start is the time that you want this plug-in to execute (in seconds)
|
|
* End is the time that you want this plug-in to stop executing (in seconds)
|
|
* Userid is the id of who's Flickr images you wish to show
|
|
* Tags is a mutually exclusive list of image descriptor tags
|
|
* Username is the username of who's Flickr images you wish to show
|
|
* using both userid and username is redundant
|
|
* an api_key is required when using username
|
|
* Apikey is your own api key provided by Flickr
|
|
* Target is the id of the document element that the images are
|
|
* appended to, this target element must exist on the DOM
|
|
* Numberofimages specify the number of images to retreive from flickr, defaults to 4
|
|
* Height the height of the image, defaults to '50px'
|
|
* Width the width of the image, defaults to '50px'
|
|
* Padding number of pixels between images, defaults to '5px'
|
|
* Border border size in pixels around images, defaults to '0px'
|
|
*
|
|
* @param {Object} options
|
|
*
|
|
* Example:
|
|
var p = Popcorn('#video')
|
|
.flickr({
|
|
start: 5, // seconds, mandatory
|
|
end: 15, // seconds, mandatory
|
|
userid: '35034346917@N01', // optional
|
|
tags: 'dogs,cats', // optional
|
|
numberofimages: '8', // optional
|
|
height: '50px', // optional
|
|
width: '50px', // optional
|
|
padding: '5px', // optional
|
|
border: '0px', // optional
|
|
target: 'flickrdiv' // mandatory
|
|
} )
|
|
*
|
|
*/
|
|
|
|
var idx = 0;
|
|
|
|
Popcorn.plugin( "flickr" , function( options ) {
|
|
var containerDiv,
|
|
target = document.getElementById( options.target ),
|
|
_userid,
|
|
_uri,
|
|
_link,
|
|
_image,
|
|
_count = options.numberofimages || 4,
|
|
_height = options.height || "50px",
|
|
_width = options.width || "50px",
|
|
_padding = options.padding || "5px",
|
|
_border = options.border || "0px";
|
|
|
|
// create a new div this way anything in the target div is left intact
|
|
// this is later populated with Flickr images
|
|
containerDiv = document.createElement( "div" );
|
|
containerDiv.id = "flickr" + idx;
|
|
containerDiv.style.width = "100%";
|
|
containerDiv.style.height = "100%";
|
|
containerDiv.style.display = "none";
|
|
idx++;
|
|
|
|
// ensure the target container the user chose exists
|
|
if ( !target && Popcorn.plugin.debug ) {
|
|
throw new Error( "flickr target container doesn't exist" );
|
|
}
|
|
|
|
target && target.appendChild( containerDiv );
|
|
|
|
// get the userid from Flickr API by using the username and apikey
|
|
var isUserIDReady = function() {
|
|
if ( !_userid ) {
|
|
|
|
_uri = "http://api.flickr.com/services/rest/?method=flickr.people.findByUsername&";
|
|
_uri += "username=" + options.username + "&api_key=" + options.apikey + "&format=json&jsoncallback=flickr";
|
|
Popcorn.getJSONP( _uri, function( data ) {
|
|
_userid = data.user.nsid;
|
|
getFlickrData();
|
|
});
|
|
|
|
} else {
|
|
|
|
setTimeout(function () {
|
|
isUserIDReady();
|
|
}, 5 );
|
|
}
|
|
};
|
|
|
|
// get the photos from Flickr API by using the user_id and/or tags
|
|
var getFlickrData = function() {
|
|
|
|
_uri = "http://api.flickr.com/services/feeds/photos_public.gne?";
|
|
|
|
if ( _userid ) {
|
|
_uri += "id=" + _userid + "&";
|
|
}
|
|
if ( options.tags ) {
|
|
_uri += "tags=" + options.tags + "&";
|
|
}
|
|
|
|
_uri += "lang=en-us&format=json&jsoncallback=flickr";
|
|
|
|
Popcorn.xhr.getJSONP( _uri, function( data ) {
|
|
|
|
var fragment = document.createElement( "div" );
|
|
|
|
fragment.innerHTML = "<p style='padding:" + _padding + ";'>" + data.title + "<p/>";
|
|
|
|
Popcorn.forEach( data.items, function ( item, i ) {
|
|
if ( i < _count ) {
|
|
|
|
_link = document.createElement( "a" );
|
|
_link.setAttribute( "href", item.link );
|
|
_link.setAttribute( "target", "_blank" );
|
|
_image = document.createElement( "img" );
|
|
_image.setAttribute( "src", item.media.m );
|
|
_image.setAttribute( "height",_height );
|
|
_image.setAttribute( "width", _width );
|
|
_image.setAttribute( "style", "border:" + _border + ";padding:" + _padding );
|
|
_link.appendChild( _image );
|
|
fragment.appendChild( _link );
|
|
|
|
} else {
|
|
|
|
return false;
|
|
}
|
|
});
|
|
|
|
containerDiv.appendChild( fragment );
|
|
});
|
|
};
|
|
|
|
if ( options.username && options.apikey ) {
|
|
isUserIDReady();
|
|
}
|
|
else {
|
|
_userid = options.userid;
|
|
getFlickrData();
|
|
}
|
|
return {
|
|
/**
|
|
* @member flickr
|
|
* The start function will be executed when the currentTime
|
|
* of the video reaches the start time provided by the
|
|
* options variable
|
|
*/
|
|
start: function( event, options ) {
|
|
containerDiv.style.display = "inline";
|
|
},
|
|
/**
|
|
* @member flickr
|
|
* The end function will be executed when the currentTime
|
|
* of the video reaches the end time provided by the
|
|
* options variable
|
|
*/
|
|
end: function( event, options ) {
|
|
containerDiv.style.display = "none";
|
|
},
|
|
_teardown: function( options ) {
|
|
document.getElementById( options.target ) && document.getElementById( options.target ).removeChild( containerDiv );
|
|
}
|
|
};
|
|
},
|
|
{
|
|
about: {
|
|
name: "Popcorn Flickr Plugin",
|
|
version: "0.2",
|
|
author: "Scott Downe, Steven Weerdenburg, Annasob",
|
|
website: "http://scottdowne.wordpress.com/"
|
|
},
|
|
options: {
|
|
start: {
|
|
elem: "input",
|
|
type: "number",
|
|
label: "In"
|
|
},
|
|
end: {
|
|
elem: "input",
|
|
type: "number",
|
|
label: "Out"
|
|
},
|
|
userid: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "UserID",
|
|
optional: true
|
|
},
|
|
tags: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "Tags"
|
|
},
|
|
username: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "Username",
|
|
optional: true
|
|
},
|
|
apikey: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "Api_key",
|
|
optional: true
|
|
},
|
|
target: "flickr-container",
|
|
height: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "Height",
|
|
optional: true
|
|
},
|
|
width: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "Width",
|
|
optional: true
|
|
},
|
|
padding: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "Padding",
|
|
optional: true
|
|
},
|
|
border: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "Border",
|
|
optional: true
|
|
},
|
|
numberofimages: {
|
|
elem: "input",
|
|
type: "text",
|
|
label: "Number of Images"
|
|
}
|
|
}
|
|
});
|
|
})( Popcorn );
|