danielebarchiesi@2: (function ($) { danielebarchiesi@2: // @todo convert to use Drupal.behaviors danielebarchiesi@2: // @todo add configuration options danielebarchiesi@2: danielebarchiesi@2: // Register callback to save references to flexslider instances. Allows danielebarchiesi@2: // Views Slideshow controls to affect the slider danielebarchiesi@2: function flexslider_views_slideshow_register(fullId, slider) { danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.active = Drupal.flexsliderViewsSlideshow.active || {}; danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.active[fullId] = slider; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: Drupal.behaviors.flexsliderViewsSlideshow = { danielebarchiesi@2: attach: function (context) { danielebarchiesi@2: $('.flexslider_views_slideshow_main:not(.flexslider_views_slideshow-processed)', context).addClass('flexslider_views_slideshow-processed').each(function() { danielebarchiesi@2: // Get the ID of the slideshow danielebarchiesi@2: var fullId = '#' + $(this).attr('id'); danielebarchiesi@2: danielebarchiesi@2: // Create settings container danielebarchiesi@2: var settings = Drupal.settings.flexslider_views_slideshow[fullId]; danielebarchiesi@2: danielebarchiesi@2: //console.log(settings); danielebarchiesi@2: danielebarchiesi@2: // @todo map the settings from the form to their javascript equivalents danielebarchiesi@2: settings.targetId = fullId; danielebarchiesi@2: danielebarchiesi@2: settings.loaded = false; danielebarchiesi@2: danielebarchiesi@2: // Assign default settings danielebarchiesi@2: // @todo update the list of options to match the new set danielebarchiesi@2: settings.opts = { danielebarchiesi@2: // v2.x options danielebarchiesi@2: namespace:settings.namespace, danielebarchiesi@2: selector:settings.selector, danielebarchiesi@2: easing:settings.easing, danielebarchiesi@2: direction:settings.direction, danielebarchiesi@2: reverse:settings.reverse, danielebarchiesi@2: smoothHeight:settings.smoothHeight, danielebarchiesi@2: startAt:settings.startAt, danielebarchiesi@2: animationSpeed:settings.animationSpeed, danielebarchiesi@2: initDelay:settings.initDelay, danielebarchiesi@2: useCSS:settings.useCSS, danielebarchiesi@2: touch:settings.touch, danielebarchiesi@2: video:settings.video, danielebarchiesi@2: keyboard:settings.keyboard, danielebarchiesi@2: multipleKeyboard:settings.multipleKeyboard, danielebarchiesi@2: mousewheel:settings.mousewheel, danielebarchiesi@2: controlsContainer:settings.controlsContainer, danielebarchiesi@2: sync:settings.sync, danielebarchiesi@2: asNavFor:settings.asNavFor, danielebarchiesi@2: itemWidth:settings.itemWidth, danielebarchiesi@2: itemMargin:settings.itemMargin, danielebarchiesi@2: minItems:settings.minItems, danielebarchiesi@2: maxItems:settings.maxItems, danielebarchiesi@2: move:settings.move, danielebarchiesi@2: // v1.x options danielebarchiesi@2: animation:settings.animation, danielebarchiesi@2: slideshow:settings.slideshow, danielebarchiesi@2: slideshowSpeed:settings.slideshowSpeed, danielebarchiesi@2: directionNav:settings.directionNav, danielebarchiesi@2: controlNav:settings.controlNav, danielebarchiesi@2: prevText:settings.prevText, danielebarchiesi@2: nextText:settings.nextText, danielebarchiesi@2: pausePlay:settings.pausePlay, danielebarchiesi@2: pauseText:settings.pauseText, danielebarchiesi@2: playText:settings.playText, danielebarchiesi@2: randomize:settings.randomize, danielebarchiesi@2: animationLoop:settings.animationLoop, danielebarchiesi@2: pauseOnAction:settings.pauseOnAction, danielebarchiesi@2: pauseOnHover:settings.pauseOnHover, danielebarchiesi@2: manualControls:settings.manualControls, danielebarchiesi@2: start: function(slider) { danielebarchiesi@2: flexslider_views_slideshow_register(fullId, slider); danielebarchiesi@2: } danielebarchiesi@2: // @todo register other callbacks danielebarchiesi@2: }; danielebarchiesi@2: danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.load(fullId); danielebarchiesi@2: }); danielebarchiesi@2: } danielebarchiesi@2: }; danielebarchiesi@2: danielebarchiesi@2: danielebarchiesi@2: // Initialize the flexslider object danielebarchiesi@2: Drupal.flexsliderViewsSlideshow = Drupal.flexsliderViewsSlideshow || {}; danielebarchiesi@2: danielebarchiesi@2: // Load mapping from Views Slideshow to FlexSlider danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.load = function(fullId) { danielebarchiesi@2: var settings = Drupal.settings.flexslider_views_slideshow[fullId]; danielebarchiesi@2: danielebarchiesi@2: // Ensure the slider isn't already loaded danielebarchiesi@2: if (!settings.loaded) { danielebarchiesi@2: $(settings.targetId + " .flexslider").flexslider(settings.opts); danielebarchiesi@2: settings.loaded = true; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Pause mapping from Views Slideshow to FlexSlider danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.pause = function (options) { danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].pause(); danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = true; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Play mapping from Views Slideshow to FlexSlider danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.play = function (options) { danielebarchiesi@2: console.log(Drupal.flexsliderViewsSlideshow); danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].resume(); danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = false; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.nextSlide = function (options) { danielebarchiesi@2: var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('next'); danielebarchiesi@2: danielebarchiesi@2: if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) { danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.previousSlide = function (options) { danielebarchiesi@2: var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('prev'); danielebarchiesi@2: danielebarchiesi@2: if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) { danielebarchiesi@2: Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: // @todo add support for jquery mobile page init danielebarchiesi@2: })(jQuery);