Import initial site

This commit is contained in:
Matthieu Dubuget
2016-10-16 10:53:19 +02:00
commit 61c93eb852
70 changed files with 177117 additions and 0 deletions

View File

@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Galleria Flickr Plugin</title>
<style>
/* Demo styles */
html,body{background:#222;margin:0;}
body{border-top:4px solid #000;}
.content{color:#777;font:12px/1.4 "helvetica neue",arial,sans-serif;width:620px;margin:20px auto;}
h1{font-size:12px;font-weight:normal;color:#ddd;margin:0;}
p{margin:0 0 20px}
a {color:#22BCB9;text-decoration:none;}
.cred{margin-top:20px;font-size:11px;}
/* This rule is read by Galleria to define the gallery height: */
#galleria{height:320px;}
</style>
<!-- load jQuery -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<!-- load Galleria -->
<script src="../../galleria-1.4.2.min.js"></script>
<!-- load flickr plugin -->
<script src="galleria.flickr.min.js"></script>
</head>
<body>
<div class="content">
<h1>Galleria Flickr Plugin Demo</h1>
<p>Demonstrating a basic gallery example with a Flickr search.</p>
<!-- Adding gallery images. This is just a container for the dynamic flickr images -->
<div id="galleria"></div>
<p class="cred">Made by <a href="http://galleria.aino.se">Galleria</a>.</p>
<a href="#" id="close">cloase</a>
</div>
<script>
// Load the classic theme
Galleria.loadTheme('../../themes/classic/galleria.classic.min.js');
// Initialize Galleria
Galleria.run('#galleria', {
// search flickr for "galleria"
flickr: 'search:galleria',
flickrOptions: {
// sort by interestingness
sort: 'interestingness-desc'
}
});
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,383 @@
/**
* Galleria Flickr Plugin 2012-09-04
* http://galleria.io
*
* Licensed under the MIT license
* https://raw.github.com/aino/galleria/master/LICENSE
*
*/
(function($) {
/*global jQuery, Galleria, window */
Galleria.requires(1.25, 'The Flickr Plugin requires Galleria version 1.2.5 or later.');
// The script path
var PATH = Galleria.utils.getScriptPath();
/**
@class
@constructor
@example var flickr = new Galleria.Flickr();
@author http://galleria.io
@requires jQuery
@requires Galleria
@param {String} [api_key] Flickr API key to be used, defaults to the Galleria key
@returns Instance
*/
Galleria.Flickr = function( api_key ) {
this.api_key = api_key || '2a2ce06c15780ebeb0b706650fc890b2';
this.options = {
max: 30, // photos to return
imageSize: 'medium', // photo size ( thumb,small,medium,big,original )
thumbSize: 'thumb', // thumbnail size ( thumb,small,medium,big,original )
sort: 'interestingness-desc', // sort option ( date-posted-asc, date-posted-desc, date-taken-asc, date-taken-desc, interestingness-desc, interestingness-asc, relevance )
description: false, // set this to true to get description as caption
complete: function(){}, // callback to be called inside the Galleria.prototype.load
backlink: false // set this to true if you want to pass a link back to the original image
};
};
Galleria.Flickr.prototype = {
// bring back the constructor reference
constructor: Galleria.Flickr,
/**
Search for anything at Flickr
@param {String} phrase The string to search for
@param {Function} [callback] The callback to be called when the data is ready
@returns Instance
*/
search: function( phrase, callback ) {
return this._find({
text: phrase
}, callback );
},
/**
Search for anything at Flickr by tag
@param {String} tag The tag(s) to search for
@param {Function} [callback] The callback to be called when the data is ready
@returns Instance
*/
tags: function( tag, callback ) {
return this._find({
tags: tag
}, callback);
},
/**
Get a user's public photos
@param {String} username The username as shown in the URL to fetch
@param {Function} [callback] The callback to be called when the data is ready
@returns Instance
*/
user: function( username, callback ) {
return this._call({
method: 'flickr.urls.lookupUser',
url: 'flickr.com/photos/' + username
}, function( data ) {
this._find({
user_id: data.user.id,
method: 'flickr.people.getPublicPhotos'
}, callback);
});
},
/**
Get photos from a photoset by ID
@param {String|Number} photoset_id The photoset id to fetch
@param {Function} [callback] The callback to be called when the data is ready
@returns Instance
*/
set: function( photoset_id, callback ) {
return this._find({
photoset_id: photoset_id,
method: 'flickr.photosets.getPhotos'
}, callback);
},
/**
Get photos from a gallery by ID
@param {String|Number} gallery_id The gallery id to fetch
@param {Function} [callback] The callback to be called when the data is ready
@returns Instance
*/
gallery: function( gallery_id, callback ) {
return this._find({
gallery_id: gallery_id,
method: 'flickr.galleries.getPhotos'
}, callback);
},
/**
Search groups and fetch photos from the first group found
Useful if you know the exact name of a group and want to show the groups photos.
@param {String} group The group name to search for
@param {Function} [callback] The callback to be called when the data is ready
@returns Instance
*/
groupsearch: function( group, callback ) {
return this._call({
text: group,
method: 'flickr.groups.search'
}, function( data ) {
this.group( data.groups.group[0].nsid, callback );
});
},
/**
Get photos from a group by ID
@param {String} group_id The group id to fetch
@param {Function} [callback] The callback to be called when the data is ready
@returns Instance
*/
group: function ( group_id, callback ) {
return this._find({
group_id: group_id,
method: 'flickr.groups.pools.getPhotos'
}, callback );
},
/**
Set flickr options
@param {Object} options The options object to blend
@returns Instance
*/
setOptions: function( options ) {
$.extend(this.options, options);
return this;
},
// call Flickr and raise errors
_call: function( params, callback ) {
var url = 'https://api.flickr.com/services/rest/?';
var scope = this;
params = $.extend({
format : 'json',
jsoncallback : '?',
api_key: this.api_key
}, params );
$.each(params, function( key, value ) {
url += '&' + key + '=' + value;
});
$.getJSON(url, function(data) {
if ( data.stat === 'ok' ) {
callback.call(scope, data);
} else {
Galleria.raise( data.code.toString() + ' ' + data.stat + ': ' + data.message, true );
}
});
return scope;
},
// "hidden" way of getting a big image (~1024) from flickr
_getBig: function( photo ) {
if ( photo.url_l ) {
return photo.url_l;
} else if ( parseInt( photo.width_o, 10 ) > 1280 ) {
return 'https://farm'+photo.farm + '.static.flickr.com/'+photo.server +
'/' + photo.id + '_' + photo.secret + '_b.jpg';
}
return photo.url_o || photo.url_z || photo.url_m;
},
// get image size by option name
_getSize: function( photo, size ) {
var img;
switch(size) {
case 'thumb':
img = photo.url_t;
break;
case 'small':
img = photo.url_s;
break;
case 'big':
img = this._getBig( photo );
break;
case 'original':
img = photo.url_o ? photo.url_o : this._getBig( photo );
break;
default:
img = photo.url_z || photo.url_m;
break;
}
return img;
},
// ask flickr for photos, parse the result and call the callback with the galleria-ready data array
_find: function( params, callback ) {
params = $.extend({
method: 'flickr.photos.search',
extras: 'url_t,url_m,url_o,url_s,url_l,url_z,description',
sort: this.options.sort,
per_page: Math.min( this.options.max, 500 )
}, params );
return this._call( params, function(data) {
var gallery = [],
photos = data.photos ? data.photos.photo : data.photoset.photo,
len = photos.length,
photo,
i;
for ( i=0; i<len; i++ ) {
photo = photos[i];
gallery.push({
thumb: this._getSize( photo, this.options.thumbSize ),
image: this._getSize( photo, this.options.imageSize ),
big: this._getBig( photo ),
title: photos[i].title,
description: this.options.description && photos[i].description ? photos[i].description._content : '',
link: this.options.backlink ? 'https://flickr.com/photos/' + photo.owner + '/' + photo.id : ''
});
}
callback.call( this, gallery );
});
}
};
/**
Galleria modifications
We fake-extend the load prototype to make Flickr integration as simple as possible
*/
// save the old prototype in a local variable
var load = Galleria.prototype.load;
// fake-extend the load prototype using the flickr data
Galleria.prototype.load = function() {
// pass if no data is provided or flickr option not found
if ( arguments.length || typeof this._options.flickr !== 'string' ) {
load.apply( this, Galleria.utils.array( arguments ) );
return;
}
// define some local vars
var self = this,
args = Galleria.utils.array( arguments ),
flickr = this._options.flickr.split(':'),
f,
opts = $.extend({}, self._options.flickrOptions),
loader = typeof opts.loader !== 'undefined' ?
opts.loader : $('<div>').css({
width: 48,
height: 48,
opacity: 0.7,
background:'#000 url('+PATH+'loader.gif) no-repeat 50% 50%'
});
if ( flickr.length ) {
// validate the method
if ( typeof Galleria.Flickr.prototype[ flickr[0] ] !== 'function' ) {
Galleria.raise( flickr[0] + ' method not found in Flickr plugin' );
return load.apply( this, args );
}
// validate the argument
if ( !flickr[1] ) {
Galleria.raise( 'No flickr argument found' );
return load.apply( this, args );
}
// apply the preloader
window.setTimeout(function() {
self.$( 'target' ).append( loader );
},100);
// create the instance
f = new Galleria.Flickr();
// apply Flickr options
if ( typeof self._options.flickrOptions === 'object' ) {
f.setOptions( self._options.flickrOptions );
}
// call the flickr method and trigger the DATA event
f[ flickr[0] ]( flickr[1], function( data ) {
self._data = data;
loader.remove();
self.trigger( Galleria.DATA );
f.options.complete.call(f, data);
});
} else {
// if flickr array not found, pass
load.apply( this, args );
}
};
}( jQuery ) );

View File

@ -0,0 +1 @@
!function(t){Galleria.requires(1.25,"The Flickr Plugin requires Galleria version 1.2.5 or later.");var i=Galleria.utils.getScriptPath();Galleria.Flickr=function(t){this.api_key=t||"2a2ce06c15780ebeb0b706650fc890b2";this.options={max:30,imageSize:"medium",thumbSize:"thumb",sort:"interestingness-desc",description:false,complete:function(){},backlink:false}};Galleria.Flickr.prototype={constructor:Galleria.Flickr,search:function(t,i){return this._find({text:t},i)},tags:function(t,i){return this._find({tags:t},i)},user:function(t,i){return this._call({method:"flickr.urls.lookupUser",url:"flickr.com/photos/"+t},function(t){this._find({user_id:t.user.id,method:"flickr.people.getPublicPhotos"},i)})},set:function(t,i){return this._find({photoset_id:t,method:"flickr.photosets.getPhotos"},i)},gallery:function(t,i){return this._find({gallery_id:t,method:"flickr.galleries.getPhotos"},i)},groupsearch:function(t,i){return this._call({text:t,method:"flickr.groups.search"},function(t){this.group(t.groups.group[0].nsid,i)})},group:function(t,i){return this._find({group_id:t,method:"flickr.groups.pools.getPhotos"},i)},setOptions:function(i){t.extend(this.options,i);return this},_call:function(i,e){var r="https://api.flickr.com/services/rest/?";var o=this;i=t.extend({format:"json",jsoncallback:"?",api_key:this.api_key},i);t.each(i,function(t,i){r+="&"+t+"="+i});t.getJSON(r,function(t){if(t.stat==="ok"){e.call(o,t)}else{Galleria.raise(t.code.toString()+" "+t.stat+": "+t.message,true)}});return o},_getBig:function(t){if(t.url_l){return t.url_l}else if(parseInt(t.width_o,10)>1280){return"https://farm"+t.farm+".static.flickr.com/"+t.server+"/"+t.id+"_"+t.secret+"_b.jpg"}return t.url_o||t.url_z||t.url_m},_getSize:function(t,i){var e;switch(i){case"thumb":e=t.url_t;break;case"small":e=t.url_s;break;case"big":e=this._getBig(t);break;case"original":e=t.url_o?t.url_o:this._getBig(t);break;default:e=t.url_z||t.url_m;break}return e},_find:function(i,e){i=t.extend({method:"flickr.photos.search",extras:"url_t,url_m,url_o,url_s,url_l,url_z,description",sort:this.options.sort,per_page:Math.min(this.options.max,500)},i);return this._call(i,function(t){var i=[],r=t.photos?t.photos.photo:t.photoset.photo,o=r.length,s,l;for(l=0;l<o;l++){s=r[l];i.push({thumb:this._getSize(s,this.options.thumbSize),image:this._getSize(s,this.options.imageSize),big:this._getBig(s),title:r[l].title,description:this.options.description&&r[l].description?r[l].description._content:"",link:this.options.backlink?"https://flickr.com/photos/"+s.owner+"/"+s.id:""})}e.call(this,i)})}};var e=Galleria.prototype.load;Galleria.prototype.load=function(){if(arguments.length||typeof this._options.flickr!=="string"){e.apply(this,Galleria.utils.array(arguments));return}var r=this,o=Galleria.utils.array(arguments),s=this._options.flickr.split(":"),l,n=t.extend({},r._options.flickrOptions),a=typeof n.loader!=="undefined"?n.loader:t("<div>").css({width:48,height:48,opacity:.7,background:"#000 url("+i+"loader.gif) no-repeat 50% 50%"});if(s.length){if(typeof Galleria.Flickr.prototype[s[0]]!=="function"){Galleria.raise(s[0]+" method not found in Flickr plugin");return e.apply(this,o)}if(!s[1]){Galleria.raise("No flickr argument found");return e.apply(this,o)}window.setTimeout(function(){r.$("target").append(a)},100);l=new Galleria.Flickr;if(typeof r._options.flickrOptions==="object"){l.setOptions(r._options.flickrOptions)}l[s[0]](s[1],function(t){r._data=t;a.remove();r.trigger(Galleria.DATA);l.options.complete.call(l,t)})}else{e.apply(this,o)}}}(jQuery);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB