danielebarchiesi@2
|
1 (function ($) {
|
danielebarchiesi@2
|
2 Drupal.viewsSlideshow = Drupal.viewsSlideshow || {};
|
danielebarchiesi@2
|
3
|
danielebarchiesi@2
|
4 /**
|
danielebarchiesi@2
|
5 * Views Slideshow Controls
|
danielebarchiesi@2
|
6 */
|
danielebarchiesi@2
|
7 Drupal.viewsSlideshowControls = Drupal.viewsSlideshowControls || {};
|
danielebarchiesi@2
|
8
|
danielebarchiesi@2
|
9 /**
|
danielebarchiesi@2
|
10 * Implement the play hook for controls.
|
danielebarchiesi@2
|
11 */
|
danielebarchiesi@2
|
12 Drupal.viewsSlideshowControls.play = function (options) {
|
danielebarchiesi@2
|
13 // Route the control call to the correct control type.
|
danielebarchiesi@2
|
14 // Need to use try catch so we don't have to check to make sure every part
|
danielebarchiesi@2
|
15 // of the object is defined.
|
danielebarchiesi@2
|
16 try {
|
danielebarchiesi@2
|
17 if (typeof Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type].play == 'function') {
|
danielebarchiesi@2
|
18 Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type].play(options);
|
danielebarchiesi@2
|
19 }
|
danielebarchiesi@2
|
20 }
|
danielebarchiesi@2
|
21 catch(err) {
|
danielebarchiesi@2
|
22 // Don't need to do anything on error.
|
danielebarchiesi@2
|
23 }
|
danielebarchiesi@2
|
24
|
danielebarchiesi@2
|
25 try {
|
danielebarchiesi@2
|
26 if (typeof Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type].play == 'function') {
|
danielebarchiesi@2
|
27 Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type].play(options);
|
danielebarchiesi@2
|
28 }
|
danielebarchiesi@2
|
29 }
|
danielebarchiesi@2
|
30 catch(err) {
|
danielebarchiesi@2
|
31 // Don't need to do anything on error.
|
danielebarchiesi@2
|
32 }
|
danielebarchiesi@2
|
33 };
|
danielebarchiesi@2
|
34
|
danielebarchiesi@2
|
35 /**
|
danielebarchiesi@2
|
36 * Implement the pause hook for controls.
|
danielebarchiesi@2
|
37 */
|
danielebarchiesi@2
|
38 Drupal.viewsSlideshowControls.pause = function (options) {
|
danielebarchiesi@2
|
39 // Route the control call to the correct control type.
|
danielebarchiesi@2
|
40 // Need to use try catch so we don't have to check to make sure every part
|
danielebarchiesi@2
|
41 // of the object is defined.
|
danielebarchiesi@2
|
42 try {
|
danielebarchiesi@2
|
43 if (typeof Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type].pause == 'function') {
|
danielebarchiesi@2
|
44 Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type].pause(options);
|
danielebarchiesi@2
|
45 }
|
danielebarchiesi@2
|
46 }
|
danielebarchiesi@2
|
47 catch(err) {
|
danielebarchiesi@2
|
48 // Don't need to do anything on error.
|
danielebarchiesi@2
|
49 }
|
danielebarchiesi@2
|
50
|
danielebarchiesi@2
|
51 try {
|
danielebarchiesi@2
|
52 if (typeof Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type].pause == 'function') {
|
danielebarchiesi@2
|
53 Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type].pause(options);
|
danielebarchiesi@2
|
54 }
|
danielebarchiesi@2
|
55 }
|
danielebarchiesi@2
|
56 catch(err) {
|
danielebarchiesi@2
|
57 // Don't need to do anything on error.
|
danielebarchiesi@2
|
58 }
|
danielebarchiesi@2
|
59 };
|
danielebarchiesi@2
|
60
|
danielebarchiesi@2
|
61
|
danielebarchiesi@2
|
62 /**
|
danielebarchiesi@2
|
63 * Views Slideshow Text Controls
|
danielebarchiesi@2
|
64 */
|
danielebarchiesi@2
|
65
|
danielebarchiesi@2
|
66 // Add views slieshow api calls for views slideshow text controls.
|
danielebarchiesi@2
|
67 Drupal.behaviors.viewsSlideshowControlsText = {
|
danielebarchiesi@2
|
68 attach: function (context) {
|
danielebarchiesi@2
|
69
|
danielebarchiesi@2
|
70 // Process previous link
|
danielebarchiesi@2
|
71 $('.views_slideshow_controls_text_previous:not(.views-slideshow-controls-text-previous-processed)', context).addClass('views-slideshow-controls-text-previous-processed').each(function() {
|
danielebarchiesi@2
|
72 var uniqueID = $(this).attr('id').replace('views_slideshow_controls_text_previous_', '');
|
danielebarchiesi@2
|
73 $(this).click(function() {
|
danielebarchiesi@2
|
74 Drupal.viewsSlideshow.action({ "action": 'previousSlide', "slideshowID": uniqueID });
|
danielebarchiesi@2
|
75 return false;
|
danielebarchiesi@2
|
76 });
|
danielebarchiesi@2
|
77 });
|
danielebarchiesi@2
|
78
|
danielebarchiesi@2
|
79 // Process next link
|
danielebarchiesi@2
|
80 $('.views_slideshow_controls_text_next:not(.views-slideshow-controls-text-next-processed)', context).addClass('views-slideshow-controls-text-next-processed').each(function() {
|
danielebarchiesi@2
|
81 var uniqueID = $(this).attr('id').replace('views_slideshow_controls_text_next_', '');
|
danielebarchiesi@2
|
82 $(this).click(function() {
|
danielebarchiesi@2
|
83 Drupal.viewsSlideshow.action({ "action": 'nextSlide', "slideshowID": uniqueID });
|
danielebarchiesi@2
|
84 return false;
|
danielebarchiesi@2
|
85 });
|
danielebarchiesi@2
|
86 });
|
danielebarchiesi@2
|
87
|
danielebarchiesi@2
|
88 // Process pause link
|
danielebarchiesi@2
|
89 $('.views_slideshow_controls_text_pause:not(.views-slideshow-controls-text-pause-processed)', context).addClass('views-slideshow-controls-text-pause-processed').each(function() {
|
danielebarchiesi@2
|
90 var uniqueID = $(this).attr('id').replace('views_slideshow_controls_text_pause_', '');
|
danielebarchiesi@2
|
91 $(this).click(function() {
|
danielebarchiesi@2
|
92 if (Drupal.settings.viewsSlideshow[uniqueID].paused) {
|
danielebarchiesi@2
|
93 Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": uniqueID, "force": true });
|
danielebarchiesi@2
|
94 }
|
danielebarchiesi@2
|
95 else {
|
danielebarchiesi@2
|
96 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": uniqueID, "force": true });
|
danielebarchiesi@2
|
97 }
|
danielebarchiesi@2
|
98 return false;
|
danielebarchiesi@2
|
99 });
|
danielebarchiesi@2
|
100 });
|
danielebarchiesi@2
|
101 }
|
danielebarchiesi@2
|
102 };
|
danielebarchiesi@2
|
103
|
danielebarchiesi@2
|
104 Drupal.viewsSlideshowControlsText = Drupal.viewsSlideshowControlsText || {};
|
danielebarchiesi@2
|
105
|
danielebarchiesi@2
|
106 /**
|
danielebarchiesi@2
|
107 * Implement the pause hook for text controls.
|
danielebarchiesi@2
|
108 */
|
danielebarchiesi@2
|
109 Drupal.viewsSlideshowControlsText.pause = function (options) {
|
danielebarchiesi@2
|
110 var pauseText = Drupal.theme.prototype['viewsSlideshowControlsPause'] ? Drupal.theme('viewsSlideshowControlsPause') : '';
|
danielebarchiesi@2
|
111 $('#views_slideshow_controls_text_pause_' + options.slideshowID + ' a').text(pauseText);
|
danielebarchiesi@2
|
112 };
|
danielebarchiesi@2
|
113
|
danielebarchiesi@2
|
114 /**
|
danielebarchiesi@2
|
115 * Implement the play hook for text controls.
|
danielebarchiesi@2
|
116 */
|
danielebarchiesi@2
|
117 Drupal.viewsSlideshowControlsText.play = function (options) {
|
danielebarchiesi@2
|
118 var playText = Drupal.theme.prototype['viewsSlideshowControlsPlay'] ? Drupal.theme('viewsSlideshowControlsPlay') : '';
|
danielebarchiesi@2
|
119 $('#views_slideshow_controls_text_pause_' + options.slideshowID + ' a').text(playText);
|
danielebarchiesi@2
|
120 };
|
danielebarchiesi@2
|
121
|
danielebarchiesi@2
|
122 // Theme the resume control.
|
danielebarchiesi@2
|
123 Drupal.theme.prototype.viewsSlideshowControlsPause = function () {
|
danielebarchiesi@2
|
124 return Drupal.t('Resume');
|
danielebarchiesi@2
|
125 };
|
danielebarchiesi@2
|
126
|
danielebarchiesi@2
|
127 // Theme the pause control.
|
danielebarchiesi@2
|
128 Drupal.theme.prototype.viewsSlideshowControlsPlay = function () {
|
danielebarchiesi@2
|
129 return Drupal.t('Pause');
|
danielebarchiesi@2
|
130 };
|
danielebarchiesi@2
|
131
|
danielebarchiesi@2
|
132 /**
|
danielebarchiesi@2
|
133 * Views Slideshow Pager
|
danielebarchiesi@2
|
134 */
|
danielebarchiesi@2
|
135 Drupal.viewsSlideshowPager = Drupal.viewsSlideshowPager || {};
|
danielebarchiesi@2
|
136
|
danielebarchiesi@2
|
137 /**
|
danielebarchiesi@2
|
138 * Implement the transitionBegin hook for pagers.
|
danielebarchiesi@2
|
139 */
|
danielebarchiesi@2
|
140 Drupal.viewsSlideshowPager.transitionBegin = function (options) {
|
danielebarchiesi@2
|
141 // Route the pager call to the correct pager type.
|
danielebarchiesi@2
|
142 // Need to use try catch so we don't have to check to make sure every part
|
danielebarchiesi@2
|
143 // of the object is defined.
|
danielebarchiesi@2
|
144 try {
|
danielebarchiesi@2
|
145 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].transitionBegin == 'function') {
|
danielebarchiesi@2
|
146 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].transitionBegin(options);
|
danielebarchiesi@2
|
147 }
|
danielebarchiesi@2
|
148 }
|
danielebarchiesi@2
|
149 catch(err) {
|
danielebarchiesi@2
|
150 // Don't need to do anything on error.
|
danielebarchiesi@2
|
151 }
|
danielebarchiesi@2
|
152
|
danielebarchiesi@2
|
153 try {
|
danielebarchiesi@2
|
154 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].transitionBegin == 'function') {
|
danielebarchiesi@2
|
155 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].transitionBegin(options);
|
danielebarchiesi@2
|
156 }
|
danielebarchiesi@2
|
157 }
|
danielebarchiesi@2
|
158 catch(err) {
|
danielebarchiesi@2
|
159 // Don't need to do anything on error.
|
danielebarchiesi@2
|
160 }
|
danielebarchiesi@2
|
161 };
|
danielebarchiesi@2
|
162
|
danielebarchiesi@2
|
163 /**
|
danielebarchiesi@2
|
164 * Implement the goToSlide hook for pagers.
|
danielebarchiesi@2
|
165 */
|
danielebarchiesi@2
|
166 Drupal.viewsSlideshowPager.goToSlide = function (options) {
|
danielebarchiesi@2
|
167 // Route the pager call to the correct pager type.
|
danielebarchiesi@2
|
168 // Need to use try catch so we don't have to check to make sure every part
|
danielebarchiesi@2
|
169 // of the object is defined.
|
danielebarchiesi@2
|
170 try {
|
danielebarchiesi@2
|
171 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].goToSlide == 'function') {
|
danielebarchiesi@2
|
172 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].goToSlide(options);
|
danielebarchiesi@2
|
173 }
|
danielebarchiesi@2
|
174 }
|
danielebarchiesi@2
|
175 catch(err) {
|
danielebarchiesi@2
|
176 // Don't need to do anything on error.
|
danielebarchiesi@2
|
177 }
|
danielebarchiesi@2
|
178
|
danielebarchiesi@2
|
179 try {
|
danielebarchiesi@2
|
180 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].goToSlide == 'function') {
|
danielebarchiesi@2
|
181 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].goToSlide(options);
|
danielebarchiesi@2
|
182 }
|
danielebarchiesi@2
|
183 }
|
danielebarchiesi@2
|
184 catch(err) {
|
danielebarchiesi@2
|
185 // Don't need to do anything on error.
|
danielebarchiesi@2
|
186 }
|
danielebarchiesi@2
|
187 };
|
danielebarchiesi@2
|
188
|
danielebarchiesi@2
|
189 /**
|
danielebarchiesi@2
|
190 * Implement the previousSlide hook for pagers.
|
danielebarchiesi@2
|
191 */
|
danielebarchiesi@2
|
192 Drupal.viewsSlideshowPager.previousSlide = function (options) {
|
danielebarchiesi@2
|
193 // Route the pager call to the correct pager type.
|
danielebarchiesi@2
|
194 // Need to use try catch so we don't have to check to make sure every part
|
danielebarchiesi@2
|
195 // of the object is defined.
|
danielebarchiesi@2
|
196 try {
|
danielebarchiesi@2
|
197 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].previousSlide == 'function') {
|
danielebarchiesi@2
|
198 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].previousSlide(options);
|
danielebarchiesi@2
|
199 }
|
danielebarchiesi@2
|
200 }
|
danielebarchiesi@2
|
201 catch(err) {
|
danielebarchiesi@2
|
202 // Don't need to do anything on error.
|
danielebarchiesi@2
|
203 }
|
danielebarchiesi@2
|
204
|
danielebarchiesi@2
|
205 try {
|
danielebarchiesi@2
|
206 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].previousSlide == 'function') {
|
danielebarchiesi@2
|
207 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].previousSlide(options);
|
danielebarchiesi@2
|
208 }
|
danielebarchiesi@2
|
209 }
|
danielebarchiesi@2
|
210 catch(err) {
|
danielebarchiesi@2
|
211 // Don't need to do anything on error.
|
danielebarchiesi@2
|
212 }
|
danielebarchiesi@2
|
213 };
|
danielebarchiesi@2
|
214
|
danielebarchiesi@2
|
215 /**
|
danielebarchiesi@2
|
216 * Implement the nextSlide hook for pagers.
|
danielebarchiesi@2
|
217 */
|
danielebarchiesi@2
|
218 Drupal.viewsSlideshowPager.nextSlide = function (options) {
|
danielebarchiesi@2
|
219 // Route the pager call to the correct pager type.
|
danielebarchiesi@2
|
220 // Need to use try catch so we don't have to check to make sure every part
|
danielebarchiesi@2
|
221 // of the object is defined.
|
danielebarchiesi@2
|
222 try {
|
danielebarchiesi@2
|
223 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].nextSlide == 'function') {
|
danielebarchiesi@2
|
224 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].nextSlide(options);
|
danielebarchiesi@2
|
225 }
|
danielebarchiesi@2
|
226 }
|
danielebarchiesi@2
|
227 catch(err) {
|
danielebarchiesi@2
|
228 // Don't need to do anything on error.
|
danielebarchiesi@2
|
229 }
|
danielebarchiesi@2
|
230
|
danielebarchiesi@2
|
231 try {
|
danielebarchiesi@2
|
232 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].nextSlide == 'function') {
|
danielebarchiesi@2
|
233 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].nextSlide(options);
|
danielebarchiesi@2
|
234 }
|
danielebarchiesi@2
|
235 }
|
danielebarchiesi@2
|
236 catch(err) {
|
danielebarchiesi@2
|
237 // Don't need to do anything on error.
|
danielebarchiesi@2
|
238 }
|
danielebarchiesi@2
|
239 };
|
danielebarchiesi@2
|
240
|
danielebarchiesi@2
|
241
|
danielebarchiesi@2
|
242 /**
|
danielebarchiesi@2
|
243 * Views Slideshow Pager Fields
|
danielebarchiesi@2
|
244 */
|
danielebarchiesi@2
|
245
|
danielebarchiesi@2
|
246 // Add views slieshow api calls for views slideshow pager fields.
|
danielebarchiesi@2
|
247 Drupal.behaviors.viewsSlideshowPagerFields = {
|
danielebarchiesi@2
|
248 attach: function (context) {
|
danielebarchiesi@2
|
249 // Process pause on hover.
|
danielebarchiesi@2
|
250 $('.views_slideshow_pager_field:not(.views-slideshow-pager-field-processed)', context).addClass('views-slideshow-pager-field-processed').each(function() {
|
danielebarchiesi@2
|
251 // Parse out the location and unique id from the full id.
|
danielebarchiesi@2
|
252 var pagerInfo = $(this).attr('id').split('_');
|
danielebarchiesi@2
|
253 var location = pagerInfo[2];
|
danielebarchiesi@2
|
254 pagerInfo.splice(0, 3);
|
danielebarchiesi@2
|
255 var uniqueID = pagerInfo.join('_');
|
danielebarchiesi@2
|
256
|
danielebarchiesi@2
|
257 // Add the activate and pause on pager hover event to each pager item.
|
danielebarchiesi@2
|
258 if (Drupal.settings.viewsSlideshowPagerFields[uniqueID][location].activatePauseOnHover) {
|
danielebarchiesi@2
|
259 $(this).children().each(function(index, pagerItem) {
|
danielebarchiesi@2
|
260 var mouseIn = function() {
|
danielebarchiesi@2
|
261 Drupal.viewsSlideshow.action({ "action": 'goToSlide', "slideshowID": uniqueID, "slideNum": index });
|
danielebarchiesi@2
|
262 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": uniqueID });
|
danielebarchiesi@2
|
263 }
|
danielebarchiesi@2
|
264
|
danielebarchiesi@2
|
265 var mouseOut = function() {
|
danielebarchiesi@2
|
266 Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": uniqueID });
|
danielebarchiesi@2
|
267 }
|
danielebarchiesi@2
|
268
|
danielebarchiesi@2
|
269 if (jQuery.fn.hoverIntent) {
|
danielebarchiesi@2
|
270 $(pagerItem).hoverIntent(mouseIn, mouseOut);
|
danielebarchiesi@2
|
271 }
|
danielebarchiesi@2
|
272 else {
|
danielebarchiesi@2
|
273 $(pagerItem).hover(mouseIn, mouseOut);
|
danielebarchiesi@2
|
274 }
|
danielebarchiesi@2
|
275
|
danielebarchiesi@2
|
276 });
|
danielebarchiesi@2
|
277 }
|
danielebarchiesi@2
|
278 else {
|
danielebarchiesi@2
|
279 $(this).children().each(function(index, pagerItem) {
|
danielebarchiesi@2
|
280 $(pagerItem).click(function() {
|
danielebarchiesi@2
|
281 Drupal.viewsSlideshow.action({ "action": 'goToSlide', "slideshowID": uniqueID, "slideNum": index });
|
danielebarchiesi@2
|
282 });
|
danielebarchiesi@2
|
283 });
|
danielebarchiesi@2
|
284 }
|
danielebarchiesi@2
|
285 });
|
danielebarchiesi@2
|
286 }
|
danielebarchiesi@2
|
287 };
|
danielebarchiesi@2
|
288
|
danielebarchiesi@2
|
289 Drupal.viewsSlideshowPagerFields = Drupal.viewsSlideshowPagerFields || {};
|
danielebarchiesi@2
|
290
|
danielebarchiesi@2
|
291 /**
|
danielebarchiesi@2
|
292 * Implement the transitionBegin hook for pager fields pager.
|
danielebarchiesi@2
|
293 */
|
danielebarchiesi@2
|
294 Drupal.viewsSlideshowPagerFields.transitionBegin = function (options) {
|
danielebarchiesi@2
|
295 for (pagerLocation in Drupal.settings.viewsSlideshowPager[options.slideshowID]) {
|
danielebarchiesi@2
|
296 // Remove active class from pagers
|
danielebarchiesi@2
|
297 $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').removeClass('active');
|
danielebarchiesi@2
|
298
|
danielebarchiesi@2
|
299 // Add active class to active pager.
|
danielebarchiesi@2
|
300 $('#views_slideshow_pager_field_item_'+ pagerLocation + '_' + options.slideshowID + '_' + options.slideNum).addClass('active');
|
danielebarchiesi@2
|
301 }
|
danielebarchiesi@2
|
302
|
danielebarchiesi@2
|
303 };
|
danielebarchiesi@2
|
304
|
danielebarchiesi@2
|
305 /**
|
danielebarchiesi@2
|
306 * Implement the goToSlide hook for pager fields pager.
|
danielebarchiesi@2
|
307 */
|
danielebarchiesi@2
|
308 Drupal.viewsSlideshowPagerFields.goToSlide = function (options) {
|
danielebarchiesi@2
|
309 for (pagerLocation in Drupal.settings.viewsSlideshowPager[options.slideshowID]) {
|
danielebarchiesi@2
|
310 // Remove active class from pagers
|
danielebarchiesi@2
|
311 $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').removeClass('active');
|
danielebarchiesi@2
|
312
|
danielebarchiesi@2
|
313 // Add active class to active pager.
|
danielebarchiesi@2
|
314 $('#views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_' + options.slideNum).addClass('active');
|
danielebarchiesi@2
|
315 }
|
danielebarchiesi@2
|
316 };
|
danielebarchiesi@2
|
317
|
danielebarchiesi@2
|
318 /**
|
danielebarchiesi@2
|
319 * Implement the previousSlide hook for pager fields pager.
|
danielebarchiesi@2
|
320 */
|
danielebarchiesi@2
|
321 Drupal.viewsSlideshowPagerFields.previousSlide = function (options) {
|
danielebarchiesi@2
|
322 for (pagerLocation in Drupal.settings.viewsSlideshowPager[options.slideshowID]) {
|
danielebarchiesi@2
|
323 // Get the current active pager.
|
danielebarchiesi@2
|
324 var pagerNum = $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"].active').attr('id').replace('views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_', '');
|
danielebarchiesi@2
|
325
|
danielebarchiesi@2
|
326 // If we are on the first pager then activate the last pager.
|
danielebarchiesi@2
|
327 // Otherwise activate the previous pager.
|
danielebarchiesi@2
|
328 if (pagerNum == 0) {
|
danielebarchiesi@2
|
329 pagerNum = $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').length() - 1;
|
danielebarchiesi@2
|
330 }
|
danielebarchiesi@2
|
331 else {
|
danielebarchiesi@2
|
332 pagerNum--;
|
danielebarchiesi@2
|
333 }
|
danielebarchiesi@2
|
334
|
danielebarchiesi@2
|
335 // Remove active class from pagers
|
danielebarchiesi@2
|
336 $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').removeClass('active');
|
danielebarchiesi@2
|
337
|
danielebarchiesi@2
|
338 // Add active class to active pager.
|
danielebarchiesi@2
|
339 $('#views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_' + pagerNum).addClass('active');
|
danielebarchiesi@2
|
340 }
|
danielebarchiesi@2
|
341 };
|
danielebarchiesi@2
|
342
|
danielebarchiesi@2
|
343 /**
|
danielebarchiesi@2
|
344 * Implement the nextSlide hook for pager fields pager.
|
danielebarchiesi@2
|
345 */
|
danielebarchiesi@2
|
346 Drupal.viewsSlideshowPagerFields.nextSlide = function (options) {
|
danielebarchiesi@2
|
347 for (pagerLocation in Drupal.settings.viewsSlideshowPager[options.slideshowID]) {
|
danielebarchiesi@2
|
348 // Get the current active pager.
|
danielebarchiesi@2
|
349 var pagerNum = $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"].active').attr('id').replace('views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_', '');
|
danielebarchiesi@2
|
350 var totalPagers = $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').length();
|
danielebarchiesi@2
|
351
|
danielebarchiesi@2
|
352 // If we are on the last pager then activate the first pager.
|
danielebarchiesi@2
|
353 // Otherwise activate the next pager.
|
danielebarchiesi@2
|
354 pagerNum++;
|
danielebarchiesi@2
|
355 if (pagerNum == totalPagers) {
|
danielebarchiesi@2
|
356 pagerNum = 0;
|
danielebarchiesi@2
|
357 }
|
danielebarchiesi@2
|
358
|
danielebarchiesi@2
|
359 // Remove active class from pagers
|
danielebarchiesi@2
|
360 $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').removeClass('active');
|
danielebarchiesi@2
|
361
|
danielebarchiesi@2
|
362 // Add active class to active pager.
|
danielebarchiesi@2
|
363 $('#views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_' + slideNum).addClass('active');
|
danielebarchiesi@2
|
364 }
|
danielebarchiesi@2
|
365 };
|
danielebarchiesi@2
|
366
|
danielebarchiesi@2
|
367
|
danielebarchiesi@2
|
368 /**
|
danielebarchiesi@2
|
369 * Views Slideshow Slide Counter
|
danielebarchiesi@2
|
370 */
|
danielebarchiesi@2
|
371
|
danielebarchiesi@2
|
372 Drupal.viewsSlideshowSlideCounter = Drupal.viewsSlideshowSlideCounter || {};
|
danielebarchiesi@2
|
373
|
danielebarchiesi@2
|
374 /**
|
danielebarchiesi@2
|
375 * Implement the transitionBegin for the slide counter.
|
danielebarchiesi@2
|
376 */
|
danielebarchiesi@2
|
377 Drupal.viewsSlideshowSlideCounter.transitionBegin = function (options) {
|
danielebarchiesi@2
|
378 $('#views_slideshow_slide_counter_' + options.slideshowID + ' .num').text(options.slideNum + 1);
|
danielebarchiesi@2
|
379 };
|
danielebarchiesi@2
|
380
|
danielebarchiesi@2
|
381 /**
|
danielebarchiesi@2
|
382 * This is used as a router to process actions for the slideshow.
|
danielebarchiesi@2
|
383 */
|
danielebarchiesi@2
|
384 Drupal.viewsSlideshow.action = function (options) {
|
danielebarchiesi@2
|
385 // Set default values for our return status.
|
danielebarchiesi@2
|
386 var status = {
|
danielebarchiesi@2
|
387 'value': true,
|
danielebarchiesi@2
|
388 'text': ''
|
danielebarchiesi@2
|
389 }
|
danielebarchiesi@2
|
390
|
danielebarchiesi@2
|
391 // If an action isn't specified return false.
|
danielebarchiesi@2
|
392 if (typeof options.action == 'undefined' || options.action == '') {
|
danielebarchiesi@2
|
393 status.value = false;
|
danielebarchiesi@2
|
394 status.text = Drupal.t('There was no action specified.');
|
danielebarchiesi@2
|
395 return error;
|
danielebarchiesi@2
|
396 }
|
danielebarchiesi@2
|
397
|
danielebarchiesi@2
|
398 // If we are using pause or play switch paused state accordingly.
|
danielebarchiesi@2
|
399 if (options.action == 'pause') {
|
danielebarchiesi@2
|
400 Drupal.settings.viewsSlideshow[options.slideshowID].paused = 1;
|
danielebarchiesi@2
|
401 // If the calling method is forcing a pause then mark it as such.
|
danielebarchiesi@2
|
402 if (options.force) {
|
danielebarchiesi@2
|
403 Drupal.settings.viewsSlideshow[options.slideshowID].pausedForce = 1;
|
danielebarchiesi@2
|
404 }
|
danielebarchiesi@2
|
405 }
|
danielebarchiesi@2
|
406 else if (options.action == 'play') {
|
danielebarchiesi@2
|
407 // If the slideshow isn't forced pause or we are forcing a play then play
|
danielebarchiesi@2
|
408 // the slideshow.
|
danielebarchiesi@2
|
409 // Otherwise return telling the calling method that it was forced paused.
|
danielebarchiesi@2
|
410 if (!Drupal.settings.viewsSlideshow[options.slideshowID].pausedForce || options.force) {
|
danielebarchiesi@2
|
411 Drupal.settings.viewsSlideshow[options.slideshowID].paused = 0;
|
danielebarchiesi@2
|
412 Drupal.settings.viewsSlideshow[options.slideshowID].pausedForce = 0;
|
danielebarchiesi@2
|
413 }
|
danielebarchiesi@2
|
414 else {
|
danielebarchiesi@2
|
415 status.value = false;
|
danielebarchiesi@2
|
416 status.text += ' ' + Drupal.t('This slideshow is forced paused.');
|
danielebarchiesi@2
|
417 return status;
|
danielebarchiesi@2
|
418 }
|
danielebarchiesi@2
|
419 }
|
danielebarchiesi@2
|
420
|
danielebarchiesi@2
|
421 // We use a switch statement here mainly just to limit the type of actions
|
danielebarchiesi@2
|
422 // that are available.
|
danielebarchiesi@2
|
423 switch (options.action) {
|
danielebarchiesi@2
|
424 case "goToSlide":
|
danielebarchiesi@2
|
425 case "transitionBegin":
|
danielebarchiesi@2
|
426 case "transitionEnd":
|
danielebarchiesi@2
|
427 // The three methods above require a slide number. Checking if it is
|
danielebarchiesi@2
|
428 // defined and it is a number that is an integer.
|
danielebarchiesi@2
|
429 if (typeof options.slideNum == 'undefined' || typeof options.slideNum !== 'number' || parseInt(options.slideNum) != (options.slideNum - 0)) {
|
danielebarchiesi@2
|
430 status.value = false;
|
danielebarchiesi@2
|
431 status.text = Drupal.t('An invalid integer was specified for slideNum.');
|
danielebarchiesi@2
|
432 }
|
danielebarchiesi@2
|
433 case "pause":
|
danielebarchiesi@2
|
434 case "play":
|
danielebarchiesi@2
|
435 case "nextSlide":
|
danielebarchiesi@2
|
436 case "previousSlide":
|
danielebarchiesi@2
|
437 // Grab our list of methods.
|
danielebarchiesi@2
|
438 var methods = Drupal.settings.viewsSlideshow[options.slideshowID]['methods'];
|
danielebarchiesi@2
|
439
|
danielebarchiesi@2
|
440 // if the calling method specified methods that shouldn't be called then
|
danielebarchiesi@2
|
441 // exclude calling them.
|
danielebarchiesi@2
|
442 var excludeMethodsObj = {};
|
danielebarchiesi@2
|
443 if (typeof options.excludeMethods !== 'undefined') {
|
danielebarchiesi@2
|
444 // We need to turn the excludeMethods array into an object so we can use the in
|
danielebarchiesi@2
|
445 // function.
|
danielebarchiesi@2
|
446 for (var i=0; i < excludeMethods.length; i++) {
|
danielebarchiesi@2
|
447 excludeMethodsObj[excludeMethods[i]] = '';
|
danielebarchiesi@2
|
448 }
|
danielebarchiesi@2
|
449 }
|
danielebarchiesi@2
|
450
|
danielebarchiesi@2
|
451 // Call every registered method and don't call excluded ones.
|
danielebarchiesi@2
|
452 for (i = 0; i < methods[options.action].length; i++) {
|
danielebarchiesi@2
|
453 if (Drupal[methods[options.action][i]] != undefined && typeof Drupal[methods[options.action][i]][options.action] == 'function' && !(methods[options.action][i] in excludeMethodsObj)) {
|
danielebarchiesi@2
|
454 Drupal[methods[options.action][i]][options.action](options);
|
danielebarchiesi@2
|
455 }
|
danielebarchiesi@2
|
456 }
|
danielebarchiesi@2
|
457 break;
|
danielebarchiesi@2
|
458
|
danielebarchiesi@2
|
459 // If it gets here it's because it's an invalid action.
|
danielebarchiesi@2
|
460 default:
|
danielebarchiesi@2
|
461 status.value = false;
|
danielebarchiesi@2
|
462 status.text = Drupal.t('An invalid action "!action" was specified.', { "!action": options.action });
|
danielebarchiesi@2
|
463 }
|
danielebarchiesi@2
|
464 return status;
|
danielebarchiesi@2
|
465 };
|
danielebarchiesi@2
|
466 })(jQuery);
|