PluginProbe ʕ •ᴥ•ʔ
Responsive Lightbox & Gallery / 1.7.1
Responsive Lightbox & Gallery v1.7.1
2.7.8 trunk 1.0.0 1.0.1 1.0.1.1 1.0.2 1.0.3 1.0.4 1.1.0 1.1.1 1.1.2 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4.0 1.4.0.1 1.4.1 1.4.11 1.4.12 1.4.13 1.4.14 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 2.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3.1 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7
responsive-lightbox / js / front.js
responsive-lightbox / js Last commit date
admin-widgets.js 9 years ago admin.js 9 years ago front.js 9 years ago
front.js
573 lines
1 ( function ( $ ) {
2
3 $( document ).on( 'ready' + rlArgs.customEvents, function () {
4
5 // initialise event
6 $.event.trigger( {
7 type: 'doResponsiveLightbox',
8 script: rlArgs.script,
9 selector: rlArgs.selector,
10 args: rlArgs
11 } );
12 } );
13
14 // this is similar to the WP function add_action();
15 $( document ).on( 'doResponsiveLightbox', function ( event ) {
16
17 var script = event.script,
18 selector = event.selector,
19 args = event.args;
20
21 if ( typeof script === 'undefined' || typeof selector === 'undefined' ) {
22 return false;
23 }
24
25 var observe_script_dom = ( function () {
26 var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
27 eventListenerSupported = window.addEventListener;
28
29 return function ( obj, only_added, callback ) {
30 if ( MutationObserver ) {
31 // define a new observer
32 var obs = new MutationObserver( function ( mutations, observer ) {
33 if ( only_added ) {
34 if ( mutations[0].addedNodes.length )
35 callback();
36 } else {
37 if ( mutations[0].addedNodes.length || mutations[0].removedNodes.length )
38 callback();
39 }
40 } );
41
42 // have the observer observe for changes in children
43 obs.observe( obj, { childList: true, subtree: true } );
44 } else if ( eventListenerSupported ) {
45 obj.addEventListener( 'DOMNodeInserted', callback, false );
46
47 if ( !only_added ) {
48 obj.addEventListener( 'DOMNodeRemoved', callback, false );
49 }
50 }
51 }
52 } )();
53
54 rl_view_image = function ( script, url ) {
55 $.event.trigger( {
56 type: 'doLightboxViewImage',
57 script: script,
58 url: url
59 } );
60 }
61
62 rl_hide_image = function ( script, url ) {
63 $.event.trigger( {
64 type: 'doLightboxHideImage',
65 script: script,
66 url: url
67 } );
68 }
69
70 // WooCommerce 3.0+ compatibility
71 setTimeout( function () {
72 var flex = $( '.flex-viewport' );
73
74 if ( rlArgs.woocommerce_gallery === '1' && flex.length ) {
75 $( '.zoomImg' ).css( 'cursor', 'pointer' );
76
77 $( document ).on( 'click', '.flex-active-slide .zoomImg', function ( e ) {
78 e.preventDefault();
79 e.stopPropagation();
80
81 flex.find( '.flex-active-slide a[data-rel]' ).trigger( 'click' );
82 } );
83 }
84 }, 10 );
85
86 switch ( script ) {
87
88 case 'swipebox':
89
90 var slide = $( '#swipebox-overlay' ).find( '.slide.current' ),
91 image_source = '',
92 allow_hide = false,
93 close_executed = false;
94
95 $( 'a[rel*="' + rlArgs.selector + '"], a[data-rel*="' + rlArgs.selector + '"]' ).swipebox( {
96 useCSS: ( rlArgs.animation === '1' ? true : false ),
97 useSVG: ( rlArgs.useSVG === '1' ? true : false ),
98 hideCloseButtonOnMobile: ( rlArgs.hideCloseButtonOnMobile === '1' ? true : false ),
99 removeBarsOnMobile: ( rlArgs.removeBarsOnMobile === '1' ? true : false ),
100 hideBarsDelay: ( rlArgs.hideBars === '1' ? parseInt( rlArgs.hideBarsDelay ) : 0 ),
101 videoMaxWidth: parseInt( rlArgs.videoMaxWidth ),
102 loopAtEnd: ( rlArgs.loopAtEnd === '1' ? true : false ),
103 afterOpen: function () {
104 close_executed = false;
105
106 // update current slide container
107 slide = $( '#swipebox-overlay' ).find( '.slide.current' );
108
109 // get image source
110 var image = slide.find( 'img' ).attr( 'src' );
111
112 // valid image source?
113 if ( typeof image !== 'undefined' ) {
114 image_source = image;
115
116 // trigger image view
117 rl_view_image( script, image_source );
118 } else {
119 image_source = '';
120 }
121
122 // add current slide observer
123 observe_script_dom( document.getElementById( 'swipebox-slider' ), false, function () {
124 if ( image_source === '' ) {
125 // get image source
126 var image = slide.find( 'img' ).attr( 'src' );
127
128 // valid image source?
129 if ( typeof image !== 'undefined' ) {
130 image_source = image;
131
132 // trigger image view
133 rl_view_image( script, image_source );
134 } else {
135 image_source = '';
136 }
137 }
138 } );
139 },
140 nextSlide: function () {
141 // update current slide container
142 slide = $( '#swipebox-overlay' ).find( '.slide.current' );
143
144 // get image source
145 var image = slide.find( 'img' ).attr( 'src' );
146
147 // valid image source?
148 if ( typeof image !== 'undefined' ) {
149 image_source = image;
150
151 // trigger image view
152 rl_view_image( script, image_source );
153 } else {
154 image_source = '';
155 }
156 },
157 prevSlide: function () {
158 // update current slide container
159 slide = $( '#swipebox-overlay' ).find( '.slide.current' );
160
161 // get image source
162 var image = slide.find( 'img' ).attr( 'src' );
163
164 // valid image source?
165 if ( typeof image !== 'undefined' ) {
166 image_source = image;
167
168 // trigger image view
169 rl_view_image( script, image_source );
170 } else {
171 image_source = '';
172 }
173 },
174 afterClose: function () {
175 // afterClose event executed
176 close_executed = true;
177
178 // allow to hide image?
179 if ( allow_hide ) {
180 // trigger image hide
181 rl_hide_image( script, image_source );
182
183 allow_hide = false;
184 }
185 }
186 } );
187
188 // additional event to prevent rl_hide_image to execure while opening modal
189 $( window ).on( 'resize', function () {
190 if ( !close_executed ) {
191 allow_hide = true;
192 }
193 } );
194
195 break;
196
197 case 'prettyphoto':
198
199 var view_disabled = false,
200 last_image = '';
201
202 $( 'a[rel*="' + rlArgs.selector + '"], a[data-rel*="' + rlArgs.selector + '"]' ).prettyPhoto( {
203 hook: 'data-rel',
204 animation_speed: rlArgs.animationSpeed,
205 slideshow: ( rlArgs.slideshow === '1' ? parseInt( rlArgs.slideshowDelay ) : false ),
206 autoplay_slideshow: ( rlArgs.slideshowAutoplay === '1' ? true : false ),
207 opacity: rlArgs.opacity,
208 show_title: ( rlArgs.showTitle === '1' ? true : false ),
209 allow_resize: ( rlArgs.allowResize === '1' ? true : false ),
210 allow_expand: ( rlArgs.allowExpand === '1' ? true : false ),
211 default_width: parseInt( rlArgs.width ),
212 default_height: parseInt( rlArgs.height ),
213 counter_separator_label: rlArgs.separator,
214 theme: rlArgs.theme,
215 horizontal_padding: parseInt( rlArgs.horizontalPadding ),
216 hideflash: ( rlArgs.hideFlash === '1' ? true : false ),
217 wmode: rlArgs.wmode,
218 autoplay: ( rlArgs.videoAutoplay === '1' ? true : false ),
219 modal: ( rlArgs.modal === '1' ? true : false ),
220 deeplinking: ( rlArgs.deeplinking === '1' ? true : false ),
221 overlay_gallery: ( rlArgs.overlayGallery === '1' ? true : false ),
222 keyboard_shortcuts: ( rlArgs.keyboardShortcuts === '1' ? true : false ),
223 social_tools: ( rlArgs.social === '1' ? '<div class="pp_social"><div class="twitter"><a href="//twitter.com/share" class="twitter-share-button" data-count="none">Tweet</a><script type="text/javascript" src="//platform.twitter.com/widgets.js"></script></div><div class="facebook"><iframe src="//www.facebook.com/plugins/like.php?locale=en_US&href=' + location.href + '&amp;layout=button_count&amp;show_faces=true&amp;width=500&amp;action=like&amp;font&amp;colorscheme=light&amp;height=23" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:500px; height:23px;" allowTransparency="true"></iframe></div></div>' : '' ),
224 ie6_fallback: true,
225 changepicturecallback: function () {
226 // is view disabled?
227 if ( view_disabled ) {
228 // enable view
229 view_disabled = false;
230
231 return;
232 }
233
234 last_image = $( '#pp_full_res' ).find( 'img' ).attr( 'src' );
235
236 // trigger image view
237 rl_view_image( script, last_image );
238
239 // is expanding allowed?
240 if ( rlArgs.allowExpand === '1' ) {
241 // disable changepicturecallback event after expanding
242 $( 'a.pp_expand' ).on( 'click', function () {
243 view_disabled = true;
244 } );
245 }
246 },
247 callback: function () {
248 // trigger image hide
249 rl_hide_image( script, last_image );
250 }
251 } );
252
253 break;
254
255 case 'fancybox':
256
257 var last_image = '';
258
259 $( 'a[rel*="' + rlArgs.selector + '"], a[data-rel*="' + rlArgs.selector + '"]' ).fancybox( {
260 modal: ( rlArgs.modal === '1' ? true : false ),
261 overlayShow: ( rlArgs.showOverlay === '1' ? true : false ),
262 showCloseButton: ( rlArgs.showCloseButton === '1' ? true : false ),
263 enableEscapeButton: ( rlArgs.enableEscapeButton === '1' ? true : false ),
264 hideOnOverlayClick: ( rlArgs.hideOnOverlayClick === '1' ? true : false ),
265 hideOnContentClick: ( rlArgs.hideOnContentClick === '1' ? true : false ),
266 cyclic: ( rlArgs.cyclic === '1' ? true : false ),
267 showNavArrows: ( rlArgs.showNavArrows === '1' ? true : false ),
268 autoScale: ( rlArgs.autoScale === '1' ? true : false ),
269 scrolling: rlArgs.scrolling,
270 centerOnScroll: ( rlArgs.centerOnScroll === '1' ? true : false ),
271 opacity: ( rlArgs.opacity === '1' ? true : false ),
272 overlayOpacity: parseFloat( rlArgs.overlayOpacity / 100 ),
273 overlayColor: rlArgs.overlayColor,
274 titleShow: ( rlArgs.titleShow === '1' ? true : false ),
275 titlePosition: rlArgs.titlePosition,
276 transitionIn: rlArgs.transitions,
277 transitionOut: rlArgs.transitions,
278 easingIn: rlArgs.easings,
279 easingOut: rlArgs.easings,
280 speedIn: parseInt( rlArgs.speeds ),
281 speedOut: parseInt( rlArgs.speeds ),
282 changeSpeed: parseInt( rlArgs.changeSpeed ),
283 changeFade: parseInt( rlArgs.changeFade ),
284 padding: parseInt( rlArgs.padding ),
285 margin: parseInt( rlArgs.margin ),
286 width: parseInt( rlArgs.videoWidth ),
287 height: parseInt( rlArgs.videoHeight ),
288 onComplete: function () {
289 last_image = $( '#fancybox-content' ).find( 'img' ).attr( 'src' );
290
291 // trigger image view
292 rl_view_image( script, last_image );
293 },
294 onClosed: function () {
295 // trigger image hide
296 rl_hide_image( script, last_image );
297 }
298 } );
299
300 break;
301
302 case 'nivo':
303
304 $.each( $( 'a[rel*="' + rlArgs.selector + '"], a[data-rel*="' + rlArgs.selector + '"]' ), function () {
305 var attr = $( this ).attr( 'data-rel' );
306
307 // check data-rel attribute first
308 if ( typeof attr === 'undefined' || attr == false ) {
309 // if not found then try to check rel attribute for backward compatibility
310 attr = $( this ).attr( 'rel' );
311 }
312
313 // for some browsers, `attr` is undefined; for others, `attr` is false. Check for both.
314 if ( typeof attr !== 'undefined' && attr !== false ) {
315 var match = attr.match( new RegExp( rlArgs.selector + '\\-(gallery\\-(?:[\\da-z]{1,4}))', 'ig' ) );
316
317 if ( match !== null ) {
318 $( this ).attr( 'data-lightbox-gallery', match[0] );
319 }
320 }
321
322 } );
323
324 var observer_initialized = false,
325 change_allowed = true,
326 last_image = '';
327
328 $( 'a[rel*="' + rlArgs.selector + '"], a[data-rel*="' + rlArgs.selector + '"]' ).nivoLightbox( {
329 effect: rlArgs.effect,
330 clickOverlayToClose: ( rlArgs.clickOverlayToClose === '1' ? true : false ),
331 keyboardNav: ( rlArgs.keyboardNav === '1' ? true : false ),
332 errorMessage: rlArgs.errorMessage,
333 afterShowLightbox: function ( lightbox ) {
334 var content = $( lightbox )[0].find( '.nivo-lightbox-content' );
335
336 // is observer initialized?
337 if ( !observer_initialized ) {
338 // turn it off
339 observer_initialized = true;
340
341 // add content observer
342 observe_script_dom( document.getElementsByClassName( 'nivo-lightbox-content' )[0], true, function () {
343 if ( change_allowed ) {
344 last_image = content.find( '.nivo-lightbox-image img' ).attr( 'src' );
345
346 // trigger image view
347 rl_view_image( script, last_image );
348
349 // disallow observer changes
350 change_allowed = false;
351 }
352 } );
353 }
354 },
355 afterHideLightbox: function () {
356 // allow observer changes
357 change_allowed = true;
358
359 // trigger image hide
360 rl_hide_image( script, last_image );
361 },
362 onPrev: function ( element ) {
363 // disallow observer changes
364 change_allowed = false;
365
366 last_image = element[0].attr( 'href' );
367
368 // trigger image view
369 rl_view_image( script, last_image );
370 },
371 onNext: function ( element ) {
372 // disallow observer changes
373 change_allowed = false;
374
375 last_image = element[0].attr( 'href' );
376
377 // trigger image view
378 rl_view_image( script, last_image );
379 }
380 } );
381
382 break;
383
384 case 'imagelightbox':
385
386 var selectors = [ ],
387 last_image = '';
388
389 $( 'a[rel*="' + rlArgs.selector + '"], a[data-rel*="' + rlArgs.selector + '"]' ).each( function ( i, item ) {
390 var attr = $( item ).attr( 'data-rel' );
391
392 // check data-rel attribute first
393 if ( typeof attr !== 'undefined' && attr !== false && attr !== 'norl' )
394 selectors.push( attr );
395 // if not found then try to check rel attribute for backward compatibility
396 else {
397 attr = $( item ).attr( 'rel' );
398
399 if ( typeof attr !== 'undefined' && attr !== false && attr !== 'norl' )
400 selectors.push( attr );
401 }
402 } );
403
404 if ( selectors.length > 0 ) {
405
406 // make unique
407 selectors = $.unique( selectors );
408
409 $( selectors ).each( function ( i, item ) {
410 $( 'a[data-rel="' + item + '"], a[rel="' + item + '"]' ).imageLightbox( {
411 animationSpeed: parseInt( rlArgs.animationSpeed ),
412 preloadNext: ( rlArgs.preloadNext === '1' ? true : false ),
413 enableKeyboard: ( rlArgs.enableKeyboard === '1' ? true : false ),
414 quitOnEnd: ( rlArgs.quitOnEnd === '1' ? true : false ),
415 quitOnImgClick: ( rlArgs.quitOnImageClick === '1' ? true : false ),
416 quitOnDocClick: ( rlArgs.quitOnDocumentClick === '1' ? true : false ),
417 onLoadEnd: function () {
418 last_image = $( '#imagelightbox' ).attr( 'src' );
419
420 // trigger image view
421 rl_view_image( script, last_image );
422 },
423 onEnd: function () {
424 // trigger image hide
425 rl_hide_image( script, last_image );
426 }
427 } );
428 } );
429 }
430
431 break;
432
433 case 'tosrus':
434
435 var selectors = [ ],
436 last_image = '';
437
438 $( 'a[rel*="' + rlArgs.selector + '"], a[data-rel*="' + rlArgs.selector + '"]' ).each( function ( i, item ) {
439 var attr = $( item ).attr( 'data-rel' );
440
441 // check data-rel attribute first
442 if ( typeof attr !== 'undefined' && attr !== false && attr !== 'norl' )
443 selectors.push( attr );
444 // if not found then try to check rel attribute for backward compatibility
445 else {
446 attr = $( item ).attr( 'rel' );
447
448 if ( typeof attr !== 'undefined' && attr !== false && attr !== 'norl' )
449 selectors.push( attr );
450 }
451 } );
452
453 if ( selectors.length > 0 ) {
454
455 // make unique
456 selectors = $.unique( selectors );
457
458 $( selectors ).each( function ( i, item ) {
459 var tos = $( 'a[data-rel="' + item + '"], a[rel="' + item + '"]' ).tosrus( {
460 infinite: ( rlArgs.infinite === '1' ? true : false ),
461 autoplay: {
462 play: ( rlArgs.autoplay === '1' ? true : false ),
463 pauseOnHover: ( rlArgs.pauseOnHover === '1' ? true : false ),
464 timeout: rlArgs.timeout
465 },
466 effect: rlArgs.effect,
467 keys: {
468 prev: ( rlArgs.keys === '1' ? true : false ),
469 next: ( rlArgs.keys === '1' ? true : false ),
470 close: ( rlArgs.keys === '1' ? true : false )
471 },
472 pagination: {
473 add: ( rlArgs.pagination === '1' ? true : false ),
474 type: rlArgs.paginationType
475 },
476 // forced
477 show: false,
478 buttons: true,
479 caption: {
480 add: true,
481 attributes: [ "title" ]
482 },
483 wrapper: {
484 onClick: rlArgs.closeOnClick === '1' ? 'close' : 'toggleUI'
485 }
486 } );
487
488 tos.bind( 'sliding.tos', function ( event, number ) {
489 last_image = $( $( event.target ).find( '.tos-slider .tos-slide' )[number] ).find( 'img' ).attr( 'src' );
490
491 // trigger image view
492 rl_view_image( script, last_image );
493 } );
494
495 tos.bind( 'closing.tos', function () {
496 // trigger image hide
497 rl_hide_image( script, last_image );
498 } );
499
500 } );
501 }
502
503 break;
504
505 case 'featherlight':
506
507 var selectors = [ ],
508 last_image = '';
509
510 $( 'a[rel*="' + rlArgs.selector + '"], a[data-rel*="' + rlArgs.selector + '"]' ).each( function ( i, item ) {
511 var attr = $( item ).attr( 'data-rel' );
512
513 // check data-rel attribute first
514 if ( typeof attr !== 'undefined' && attr !== false && attr !== 'norl' )
515 selectors.push( attr );
516 // if not found then try to check rel attribute for backward compatibility
517 else {
518 attr = $( item ).attr( 'rel' );
519
520 if ( typeof attr !== 'undefined' && attr !== false && attr !== 'norl' )
521 selectors.push( attr );
522 }
523 } );
524
525 if ( selectors.length > 0 ) {
526 // make unique
527 selectors = $.unique( selectors );
528
529 // set defaults
530 $.extend( $.featherlight.defaults, {
531 openSpeed: parseInt( rlArgs.openSpeed ),
532 closeSpeed: parseInt( rlArgs.closeSpeed ),
533 closeOnClick: rlArgs.closeOnClick,
534 closeOnEsc: ( rlArgs.closeOnEsc === '1' ? true : false ),
535 afterOpen: function ( event ) {
536 last_image = event.currentTarget.href;
537
538 // trigger image view
539 rl_view_image( script, last_image );
540 },
541 afterClose: function () {
542 // trigger image hide
543 rl_hide_image( script, last_image );
544 }
545 } );
546
547 $( selectors ).each( function ( i, item ) {
548
549 // gallery?
550 if ( /-gallery-/.test( item ) ) {
551 $( 'a[data-rel="' + item + '"], a[rel="' + item + '"]' ).featherlightGallery( {
552 galleryFadeIn: parseInt( rlArgs.galleryFadeIn ),
553 galleryFadeOut: parseInt( rlArgs.galleryFadeOut ),
554 previousIcon: '&#10094;',
555 nextIcon: '&#10095;'
556 } );
557 // video?
558 } else if ( /-video-/.test( item ) ) {
559 $( 'a[data-rel="' + item + '"], a[rel="' + item + '"]' ).featherlight();
560 // single image?
561 } else {
562 $( 'a[data-rel="' + item + '"], a[rel="' + item + '"]' ).featherlight();
563 }
564 } );
565
566 }
567
568 break;
569 }
570
571 } );
572
573 } )( jQuery );