1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | ;(function ($) {
|
16 |
|
17 | jQuery.nanogallery2.data_google = function (instance, fnName){
|
18 | var G=instance;
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | Google = {
|
24 | url: function() {
|
25 |
|
26 | return ( 'https://photos.googleapis.com/data/feed/api/' );
|
27 | },
|
28 | thumbSize: 64,
|
29 | thumbAvailableSizes : new Array(32, 48, 64, 72, 94, 104, 110, 128, 144, 150, 160, 200, 220, 288, 320, 400, 512, 576, 640, 720, 800, 912, 1024, 1152, 1280, 1440, 1600),
|
30 | thumbAvailableSizesCropped : ' 32 48 64 72 104 144 150 160 '
|
31 | };
|
32 |
|
33 |
|
34 |
|
35 | var AlbumGetContent = function(albumID, fnToCall, fnParam1, fnParam2) {
|
36 |
|
37 | var url= Google.url() + 'user/'+G.O.userID;
|
38 | var kind= 'image';
|
39 | var albumIdx=NGY2Item.GetIdx(G, albumID);
|
40 |
|
41 | var maxResults='';
|
42 | if( G.galleryMaxItems.Get() > 0 ) {
|
43 | maxResults='&max-results='+G.galleryMaxItems.Get();
|
44 | }
|
45 |
|
46 | if( G.I[albumIdx].GetID() == 0 ) {
|
47 |
|
48 |
|
49 | url += '?alt=json&v=3&kind=album&thumbsize='+G.picasa.thumbSizes+maxResults+'&rnd=' + (new Date().getTime());
|
50 | kind='album';
|
51 | }
|
52 | else {
|
53 |
|
54 | var auth='';
|
55 | if( G.I[albumIdx].authkey != '' ) {
|
56 |
|
57 | auth=G.I[albumIdx].authkey;
|
58 | }
|
59 | url += '/albumid/'+albumID+'?alt=json&kind=photo&thumbsize='+G.picasa.thumbSizes+maxResults+auth+'&imgmax=d';
|
60 | }
|
61 |
|
62 | PreloaderDisplay(true);
|
63 |
|
64 | jQuery.ajaxSetup({ cache: false });
|
65 | jQuery.support.cors = true;
|
66 | try {
|
67 |
|
68 | var tId = setTimeout( function() {
|
69 |
|
70 | PreloaderDisplay(false);
|
71 | NanoAlert('Could not retrieve AJAX data...');
|
72 | }, 60000 );
|
73 |
|
74 | var GI_getJSONfinished = function(data){
|
75 | clearTimeout(tId);
|
76 | PreloaderDisplay(false);
|
77 |
|
78 | GoogleParseData( albumIdx, kind, data );
|
79 | AlbumPostProcess(albumID);
|
80 | if( fnToCall !== null && fnToCall !== undefined) {
|
81 | fnToCall( fnParam1, fnParam2, null );
|
82 | }
|
83 | };
|
84 |
|
85 | var gi_data_loaded = null;
|
86 |
|
87 |
|
88 | var GI_loadJSON = function(url,start_index){
|
89 |
|
90 | jQuery.getJSON(url+"&start-index="+start_index, 'callback=?', function(data) {
|
91 | if (gi_data_loaded===null){
|
92 | gi_data_loaded = data;
|
93 | }else{
|
94 | gi_data_loaded.feed.entry=gi_data_loaded.feed.entry.concat(data.feed.entry);
|
95 | }
|
96 |
|
97 | if (data.feed.openSearch$startIndex.$t+data.feed.openSearch$itemsPerPage.$t>=data.feed.openSearch$totalResults.$t){
|
98 |
|
99 | GI_getJSONfinished(gi_data_loaded);
|
100 | }else{
|
101 |
|
102 |
|
103 | GI_loadJSON(url,data.feed.openSearch$startIndex.$t+data.feed.openSearch$itemsPerPage.$t);
|
104 | }
|
105 | })
|
106 | .fail( function(jqxhr, textStatus, error) {
|
107 | clearTimeout(tId);
|
108 | PreloaderDisplay(false);
|
109 |
|
110 |
|
111 | var k=''
|
112 | for(var key in jqxhr) {
|
113 | k+= key + '=' + jqxhr[key] +'<br>';
|
114 | }
|
115 | var err = textStatus + ', ' + error + ' ' + k + '<br><br>URL:'+url;
|
116 | NanoAlert(G, "Could not retrieve Google data. Error: " + err);
|
117 |
|
118 | });
|
119 |
|
120 | };
|
121 |
|
122 | GI_loadJSON(url,1);
|
123 | }
|
124 | catch(e) {
|
125 | NanoAlert(G, "Could not retrieve Google data. Error: " + e);
|
126 | }
|
127 | }
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 | function GoogleParseData(albumIdx, kind, data) {
|
134 | var albumID=G.I[albumIdx].GetID();
|
135 |
|
136 | if( G.I[albumIdx].title == '' ) {
|
137 |
|
138 | G.I[albumIdx].title=data.feed.title.$t;
|
139 | }
|
140 |
|
141 |
|
142 | jQuery.each(data.feed.entry, function(i,data){
|
143 |
|
144 |
|
145 | var imgUrl=data.media$group.media$content[0].url;
|
146 | var itemTitle = data.title.$t;
|
147 |
|
148 |
|
149 | var filename='';
|
150 | var itemDescription = data.media$group.media$description.$t;
|
151 | if( kind == 'image') {
|
152 |
|
153 | filename=itemTitle;
|
154 | if( itemDescription != '' ) {
|
155 | itemTitle=itemDescription;
|
156 | itemDescription='';
|
157 | }
|
158 | if( G.O.thumbnailLabel.get('title') != '' ) {
|
159 |
|
160 | itemTitle=GetImageTitleFromURL(unescape(unescape(unescape(unescape(imgUrl)))));
|
161 | }
|
162 | }
|
163 |
|
164 | var itemID = data.gphoto$id.$t;
|
165 | if( !(kind == 'album' && !FilterAlbumName(itemTitle, itemID)) ) {
|
166 |
|
167 | var newItem=NGY2Item.New( G, itemTitle, itemDescription, itemID, albumID, kind, '' );
|
168 |
|
169 | if( kind == 'image' ) {
|
170 | var src='';
|
171 | src=imgUrl;
|
172 | if( !G.O.viewerZoom && G.O.viewerZoom != undefined ) {
|
173 | var s=imgUrl.substring(0, imgUrl.lastIndexOf('/'));
|
174 | s=s.substring(0, s.lastIndexOf('/')) + '/';
|
175 | if( window.screen.width > window.screen.height ) {
|
176 | src=s+'w'+window.screen.width+'/'+filename;
|
177 | }
|
178 | else {
|
179 | src=s+'h'+window.screen.height+'/'+filename;
|
180 | }
|
181 | }
|
182 | newItem.src=src;
|
183 |
|
184 |
|
185 | newItem.imageWidth=parseInt(data.gphoto$width.$t);
|
186 | newItem.imageHeight=parseInt(data.gphoto$height.$t);
|
187 |
|
188 | if( data.media$group != null && data.media$group.media$credit != null && data.media$group.media$credit.length > 0 ) {
|
189 | newItem.author=data.media$group.media$credit[0].$t;
|
190 | }
|
191 |
|
192 |
|
193 |
|
194 | if( data.exif$tags.exif$exposure != undefined ) {
|
195 | newItem.exif.exposure= data.exif$tags.exif$exposure.$t;
|
196 | }
|
197 | if( data.exif$tags.exif$flash != undefined ) {
|
198 | if( data.exif$tags.exif$flash.$t == 'true' ) {
|
199 | newItem.exif.flash= 'flash';
|
200 | }
|
201 | }
|
202 | if( data.exif$tags.exif$focallength != undefined ) {
|
203 | newItem.exif.focallength= data.exif$tags.exif$focallength.$t;
|
204 | }
|
205 | if( data.exif$tags.exif$fstop != undefined ) {
|
206 | newItem.exif.fstop= data.exif$tags.exif$fstop.$t;
|
207 | }
|
208 | if( data.exif$tags.exif$iso != undefined ) {
|
209 | newItem.exif.iso= data.exif$tags.exif$iso.$t;
|
210 | }
|
211 | if( data.exif$tags.exif$model != undefined ) {
|
212 | newItem.exif.model= data.exif$tags.exif$model.$t;
|
213 | }
|
214 |
|
215 |
|
216 | if( data.gphoto$location != undefined ) {
|
217 | newItem.exif.location= data.gphoto$location;
|
218 | }
|
219 |
|
220 | }
|
221 | else {
|
222 | newItem.author=data.author[0].name.$t;
|
223 | newItem.numberItems=data.gphoto$numphotos.$t;
|
224 | }
|
225 |
|
226 |
|
227 | newItem.thumbs=GoogleThumbSetSizes('l1', 0, newItem.thumbs, data, kind );
|
228 | newItem.thumbs=GoogleThumbSetSizes('lN', 5, newItem.thumbs, data, kind );
|
229 |
|
230 | if( typeof G.O.fnProcessData == 'function' ) {
|
231 | G.O.fnProcessData(newItem, 'google', data);
|
232 | }
|
233 | }
|
234 | });
|
235 |
|
236 | G.I[albumIdx].contentIsLoaded=true;
|
237 | }
|
238 |
|
239 |
|
240 |
|
241 |
|
242 | var GetHiddenAlbums = function( hiddenAlbums, callback ){
|
243 | var lstAlbums = [].concat( hiddenAlbums );
|
244 | for( var i=0; i< lstAlbums.length; i++ ) {
|
245 | AlbumAuthkeyGetInfoQueue(lstAlbums[i], callback);
|
246 | }
|
247 |
|
248 | jQuery(document).dequeue('GoogleAlbumWithAuthkey');
|
249 | }
|
250 |
|
251 |
|
252 |
|
253 | function AlbumAuthkeyGetInfoQueue( albumIDwithAuthkey, callback ) {
|
254 | jQuery(document).queue('GoogleAlbumWithAuthkey', function() {
|
255 |
|
256 | var p=albumIDwithAuthkey.indexOf('&authkey=');
|
257 | if( p == -1 ) {
|
258 | p=albumIDwithAuthkey.indexOf('?authkey=');
|
259 | }
|
260 | var albumID=albumIDwithAuthkey.substring(0,p);
|
261 |
|
262 | var opt=albumIDwithAuthkey.substring(p);
|
263 | if( opt.indexOf('Gv1sRg') == -1 ) {
|
264 | opt='&authkey=Gv1sRg'+opt.substring(9);
|
265 | }
|
266 | var url = Google.url() + 'user/'+G.O.userID+'/albumid/'+albumID+'?alt=json&kind=photo'+opt+'&max-results=1&thumbsize='+G.picasa.thumbSizes+'&imgmax=d';
|
267 |
|
268 | PreloaderDisplay(true);
|
269 |
|
270 | jQuery.ajaxSetup({ cache: false });
|
271 | jQuery.support.cors = true;
|
272 |
|
273 | var tId = setTimeout( function() {
|
274 |
|
275 | PreloaderDisplay(false);
|
276 | NanoAlert(G, 'Could not retrieve AJAX data...');
|
277 | }, 60000 );
|
278 | jQuery.getJSON(url, function(data, status, xhr) {
|
279 | clearTimeout(tId);
|
280 | PreloaderDisplay(false);
|
281 |
|
282 | var albumTitle=data.feed.title.$t;
|
283 | var source = data.feed.entry[0];
|
284 |
|
285 | var newItem=NGY2Item.New( G, albumTitle, '', albumID, '0', 'album', '' );
|
286 |
|
287 | newItem.authkey=opt;
|
288 |
|
289 |
|
290 | newItem.thumbs=GoogleThumbSetSizes('l1', 0, newItem.thumbs, source, 'album' );
|
291 | newItem.thumbs=GoogleThumbSetSizes('lN', 5, newItem.thumbs, source, 'album' );
|
292 |
|
293 | if( typeof G.O.fnProcessData == 'function' ) {
|
294 | G.O.fnProcessData(newItem, 'google', source);
|
295 | }
|
296 |
|
297 | newItem.numberItems=data.feed.gphoto$numphotos.$t;
|
298 |
|
299 |
|
300 | if( jQuery(document).queue('GoogleAlbumWithAuthkey').length > 0 ) {
|
301 | jQuery(document).dequeue('GoogleAlbumWithAuthkey');
|
302 | }
|
303 | else {
|
304 | callback();
|
305 | }
|
306 |
|
307 | })
|
308 | .fail( function(jqxhr, textStatus, error) {
|
309 | clearTimeout(tId);
|
310 | PreloaderDisplay(false);
|
311 | NanoAlert(G, "Could not retrieve ajax data (google): " + textStatus + ', ' + error);
|
312 | jQuery(document).dequeue('GoogleAlbumWithAuthkey');
|
313 | });
|
314 | });
|
315 |
|
316 | }
|
317 |
|
318 |
|
319 |
|
320 | function GoogleThumbSetSizes(level, startI, tn, data, kind ) {
|
321 | var sizes=['xs','sm','me','la','xl'];
|
322 |
|
323 | for(var i=0; i<sizes.length; i++ ) {
|
324 | tn.url[level][sizes[i]]=data.media$group.media$thumbnail[startI+i].url;
|
325 | if( kind == 'image' ) {
|
326 | tn.width[level][sizes[i]]=data.media$group.media$thumbnail[startI+i].width;
|
327 | tn.height[level][sizes[i]]=data.media$group.media$thumbnail[startI+i].height;
|
328 |
|
329 | var gw=data.media$group.media$thumbnail[startI+i].width;
|
330 | var gh=data.media$group.media$thumbnail[startI+i].height;
|
331 | if( G.tn.settings.width[level][sizes[i]] == 'auto' ) {
|
332 | if( gh < G.tn.settings.height[level][sizes[i]] ) {
|
333 |
|
334 | var ratio=gw/gh;
|
335 | tn.width[level][sizes[i]]=gw*ratio;
|
336 | tn.height[level][sizes[i]]=gh*ratio;
|
337 | var url=tn.url[level][sizes[i]].substring(0, tn.url[level][sizes[i]].lastIndexOf('/'));
|
338 | url=url.substring(0, url.lastIndexOf('/')) + '/';
|
339 | tn.url[level][sizes[i]]=url+'h'+G.tn.settings.height[level][sizes[i]]+'/';
|
340 | }
|
341 | }
|
342 | if( G.tn.settings.height[level][sizes[i]] == 'auto' ) {
|
343 | if( gw < G.tn.settings.width[level][sizes[i]] ) {
|
344 |
|
345 | var ratio=gh/gw;
|
346 | tn.height[level][sizes[i]]=gh*ratio;
|
347 | tn.width[level][sizes[i]]=gw*ratio;
|
348 | var url=tn.url[level][sizes[i]].substring(0, tn.url[level][sizes[i]].lastIndexOf('/'));
|
349 | url=url.substring(0, url.lastIndexOf('/')) + '/';
|
350 | tn.url[level][sizes[i]]=url+'w'+G.tn.settings.width[level][sizes[i]]+'/';
|
351 | }
|
352 | }
|
353 | }
|
354 | else {
|
355 |
|
356 |
|
357 | if( G.tn.settings.width[level][sizes[i]] != 'auto' ) {
|
358 |
|
359 | }
|
360 | else {
|
361 | var url=tn.url[level][sizes[i]].substring(0, tn.url[level][sizes[i]].lastIndexOf('/'));
|
362 | url=url.substring(0, url.lastIndexOf('/')) + '/';
|
363 | tn.url[level][sizes[i]]=url+'h'+G.tn.settings.height[level][sizes[i]]+'/';
|
364 | }
|
365 |
|
366 | if( G.tn.settings.height[level][sizes[i]] != 'auto' ) {
|
367 |
|
368 | }
|
369 | else {
|
370 | var url=tn.url[level][sizes[i]].substring(0, tn.url[level][sizes[i]].lastIndexOf('/'));
|
371 | url=url.substring(0, url.lastIndexOf('/')) + '/';
|
372 | tn.url[level][sizes[i]]=url+'w'+G.tn.settings.width[level][sizes[i]]+'/';
|
373 | }
|
374 | }
|
375 | }
|
376 | return tn;
|
377 | }
|
378 |
|
379 |
|
380 |
|
381 |
|
382 | function Init() {
|
383 | G.picasa = {
|
384 |
|
385 | thumbSizes:''
|
386 | };
|
387 |
|
388 | var sfL1=1;
|
389 | if( G.thumbnailCrop.l1 === true ) {
|
390 | sfL1=G.O.thumbnailCropScaleFactor;
|
391 | }
|
392 | var sfLN=1;
|
393 | if( G.thumbnailCrop.lN === true ) {
|
394 | sfLN=G.O.thumbnailCropScaleFactor;
|
395 | }
|
396 |
|
397 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.l1.xs*sfL1, G.tn.settings.height.l1.xs*sfL1, G.tn.settings.width.l1.xsc, G.tn.settings.height.l1.xsc );
|
398 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.l1.sm*sfL1, G.tn.settings.height.l1.sm*sfL1, G.tn.settings.width.l1.smc, G.tn.settings.height.l1.smc );
|
399 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.l1.me*sfL1, G.tn.settings.height.l1.me*sfL1, G.tn.settings.width.l1.mec, G.tn.settings.height.l1.mec );
|
400 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.l1.la*sfL1, G.tn.settings.height.l1.la*sfL1, G.tn.settings.width.l1.lac, G.tn.settings.height.l1.lac );
|
401 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.l1.xl*sfL1, G.tn.settings.height.l1.xl*sfL1, G.tn.settings.width.l1.xlc, G.tn.settings.height.l1.xlc );
|
402 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.lN.xs*sfLN, G.tn.settings.height.lN.xs*sfLN, G.tn.settings.width.lN.xsc, G.tn.settings.height.lN.xsc );
|
403 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.lN.sm*sfLN, G.tn.settings.height.lN.sm*sfLN, G.tn.settings.width.lN.smc, G.tn.settings.height.lN.smc );
|
404 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.lN.me*sfLN, G.tn.settings.height.lN.me*sfLN, G.tn.settings.width.lN.mec, G.tn.settings.height.lN.mec );
|
405 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.lN.la*sfLN, G.tn.settings.height.lN.la*sfLN, G.tn.settings.width.lN.lac, G.tn.settings.height.lN.lac );
|
406 | G.picasa.thumbSizes=GoogleAddOneThumbSize(G.picasa.thumbSizes, G.tn.settings.width.lN.xl*sfLN, G.tn.settings.height.lN.xl*sfLN, G.tn.settings.width.lN.xlc, G.tn.settings.height.lN.xlc );
|
407 | }
|
408 |
|
409 | function GoogleAddOneThumbSize(thumbSizes, v1, v2, c1, c2 ) {
|
410 | var v = Math.ceil( v2 * G.tn.scale ) + c2;
|
411 |
|
412 | if( isNaN(v1) ) {
|
413 | v = Math.ceil( v2 * G.tn.scale ) + c2;
|
414 | }
|
415 |
|
416 | else if( isNaN(v2) ) {
|
417 | v = Math.ceil( v1 * G.tn.scale ) + c1;
|
418 | }
|
419 | else if( v1 > v2 ) {
|
420 | v = Math.ceil( v1 * G.tn.scale ) + c1;
|
421 | }
|
422 |
|
423 | if( thumbSizes.length > 0 ) {
|
424 | thumbSizes += ',';
|
425 | }
|
426 | thumbSizes += v;
|
427 | return thumbSizes;
|
428 | }
|
429 |
|
430 |
|
431 |
|
432 | var PreloaderDisplay = NGY2Tools.PreloaderDisplay.bind(G);
|
433 |
|
434 | var NanoAlert = NGY2Tools.NanoAlert;
|
435 | var GetImageTitleFromURL = NGY2Tools.GetImageTitleFromURL.bind(G);
|
436 | var FilterAlbumName = NGY2Tools.FilterAlbumName.bind(G);
|
437 | var AlbumPostProcess = NGY2Tools.AlbumPostProcess.bind(G);
|
438 |
|
439 | switch( fnName ){
|
440 | case 'GetHiddenAlbums':
|
441 | var hiddenAlbums = arguments[2],
|
442 | callback = arguments[3];
|
443 | GetHiddenAlbums(hiddenAlbums, callback);
|
444 | break;
|
445 | case 'AlbumGetContent':
|
446 | var albumID = arguments[2],
|
447 | callback = arguments[3],
|
448 | cbParam1 = arguments[4],
|
449 | cbParam2 = arguments[5];
|
450 | AlbumGetContent(albumID, callback, cbParam1, cbParam2);
|
451 | break;
|
452 | case 'Init':
|
453 | Init();
|
454 | break;
|
455 | case '':
|
456 | break;
|
457 | case '':
|
458 | break;
|
459 | }
|
460 |
|
461 | };
|
462 |
|
463 |
|
464 | }( jQuery ));
|
465 |
|
466 |
|
467 |
|
468 |
|
469 | |
\ | No newline at end of file |