annotate sites/all/modules/views_slideshow/js/views_slideshow.js @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents b74b41bb73f0
children
rev   line source
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);