comparison static/js/fancybox2/source/helpers/jquery.fancybox-buttons.js @ 106:846cda22d77c

Bootstrap: Photo pages reworked.
author Brian Neal <bgneal@gmail.com>
date Fri, 18 Oct 2013 20:31:36 -0500
parents
children
comparison
equal deleted inserted replaced
105:afcbfe23f068 106:846cda22d77c
1 /*!
2 * Buttons helper for fancyBox
3 * version: 1.0.5 (Mon, 15 Oct 2012)
4 * @requires fancyBox v2.0 or later
5 *
6 * Usage:
7 * $(".fancybox").fancybox({
8 * helpers : {
9 * buttons: {
10 * position : 'top'
11 * }
12 * }
13 * });
14 *
15 */
16 (function ($) {
17 //Shortcut for fancyBox object
18 var F = $.fancybox;
19
20 //Add helper object
21 F.helpers.buttons = {
22 defaults : {
23 skipSingle : false, // disables if gallery contains single image
24 position : 'top', // 'top' or 'bottom'
25 tpl : '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>'
26 },
27
28 list : null,
29 buttons: null,
30
31 beforeLoad: function (opts, obj) {
32 //Remove self if gallery do not have at least two items
33
34 if (opts.skipSingle && obj.group.length < 2) {
35 obj.helpers.buttons = false;
36 obj.closeBtn = true;
37
38 return;
39 }
40
41 //Increase top margin to give space for buttons
42 obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
43 },
44
45 onPlayStart: function () {
46 if (this.buttons) {
47 this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
48 }
49 },
50
51 onPlayEnd: function () {
52 if (this.buttons) {
53 this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
54 }
55 },
56
57 afterShow: function (opts, obj) {
58 var buttons = this.buttons;
59
60 if (!buttons) {
61 this.list = $(opts.tpl).addClass(opts.position).appendTo('body');
62
63 buttons = {
64 prev : this.list.find('.btnPrev').click( F.prev ),
65 next : this.list.find('.btnNext').click( F.next ),
66 play : this.list.find('.btnPlay').click( F.play ),
67 toggle : this.list.find('.btnToggle').click( F.toggle ),
68 close : this.list.find('.btnClose').click( F.close )
69 }
70 }
71
72 //Prev
73 if (obj.index > 0 || obj.loop) {
74 buttons.prev.removeClass('btnDisabled');
75 } else {
76 buttons.prev.addClass('btnDisabled');
77 }
78
79 //Next / Play
80 if (obj.loop || obj.index < obj.group.length - 1) {
81 buttons.next.removeClass('btnDisabled');
82 buttons.play.removeClass('btnDisabled');
83
84 } else {
85 buttons.next.addClass('btnDisabled');
86 buttons.play.addClass('btnDisabled');
87 }
88
89 this.buttons = buttons;
90
91 this.onUpdate(opts, obj);
92 },
93
94 onUpdate: function (opts, obj) {
95 var toggle;
96
97 if (!this.buttons) {
98 return;
99 }
100
101 toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
102
103 //Size toggle button
104 if (obj.canShrink) {
105 toggle.addClass('btnToggleOn');
106
107 } else if (!obj.canExpand) {
108 toggle.addClass('btnDisabled');
109 }
110 },
111
112 beforeClose: function () {
113 if (this.list) {
114 this.list.remove();
115 }
116
117 this.list = null;
118 this.buttons = null;
119 }
120 };
121
122 }(jQuery));