diff sites/all/modules/flexslider_views_slideshow/js/flexslider_views_slideshow.js @ 2:b74b41bb73f0

-- Google analytics module
author danieleb <danielebarchiesi@me.com>
date Thu, 22 Aug 2013 17:22:54 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sites/all/modules/flexslider_views_slideshow/js/flexslider_views_slideshow.js	Thu Aug 22 17:22:54 2013 +0100
@@ -0,0 +1,125 @@
+(function ($) {
+  // @todo convert to use Drupal.behaviors
+  // @todo add configuration options
+
+  // Register callback to save references to flexslider instances. Allows
+  // Views Slideshow controls to affect the slider
+  function flexslider_views_slideshow_register(fullId, slider) {
+    Drupal.flexsliderViewsSlideshow.active = Drupal.flexsliderViewsSlideshow.active || {};
+    Drupal.flexsliderViewsSlideshow.active[fullId] = slider;
+  }
+
+  Drupal.behaviors.flexsliderViewsSlideshow = {
+    attach: function (context) {
+      $('.flexslider_views_slideshow_main:not(.flexslider_views_slideshow-processed)', context).addClass('flexslider_views_slideshow-processed').each(function() {
+        // Get the ID of the slideshow
+        var fullId = '#' + $(this).attr('id');
+
+        // Create settings container
+        var settings = Drupal.settings.flexslider_views_slideshow[fullId];
+
+        //console.log(settings);
+
+        // @todo map the settings from the form to their javascript equivalents
+        settings.targetId = fullId;
+        
+        settings.loaded = false;
+
+        // Assign default settings
+		// @todo update the list of options to match the new set
+        settings.opts = {
+          // v2.x options
+          namespace:settings.namespace,
+          selector:settings.selector,
+          easing:settings.easing,
+          direction:settings.direction,
+          reverse:settings.reverse,
+          smoothHeight:settings.smoothHeight,
+          startAt:settings.startAt,
+          animationSpeed:settings.animationSpeed,
+          initDelay:settings.initDelay,
+          useCSS:settings.useCSS,
+          touch:settings.touch,
+          video:settings.video,
+          keyboard:settings.keyboard,
+          multipleKeyboard:settings.multipleKeyboard,
+          mousewheel:settings.mousewheel,
+          controlsContainer:settings.controlsContainer,
+          sync:settings.sync,
+          asNavFor:settings.asNavFor,
+          itemWidth:settings.itemWidth,
+          itemMargin:settings.itemMargin,
+          minItems:settings.minItems,
+          maxItems:settings.maxItems,
+          move:settings.move,
+          // v1.x options
+          animation:settings.animation,
+          slideshow:settings.slideshow,
+          slideshowSpeed:settings.slideshowSpeed,
+          directionNav:settings.directionNav,
+          controlNav:settings.controlNav,
+          prevText:settings.prevText,
+          nextText:settings.nextText,
+          pausePlay:settings.pausePlay,
+          pauseText:settings.pauseText,
+          playText:settings.playText,
+          randomize:settings.randomize,
+          animationLoop:settings.animationLoop,
+          pauseOnAction:settings.pauseOnAction,
+          pauseOnHover:settings.pauseOnHover,
+          manualControls:settings.manualControls,
+          start: function(slider) {
+            flexslider_views_slideshow_register(fullId, slider);
+          }
+          // @todo register other callbacks
+        };
+
+        Drupal.flexsliderViewsSlideshow.load(fullId);
+      });
+    }
+  };
+
+
+  // Initialize the flexslider object
+  Drupal.flexsliderViewsSlideshow = Drupal.flexsliderViewsSlideshow || {};
+
+  // Load mapping from Views Slideshow to FlexSlider
+  Drupal.flexsliderViewsSlideshow.load = function(fullId) {
+    var settings = Drupal.settings.flexslider_views_slideshow[fullId];
+
+    // Ensure the slider isn't already loaded
+    if (!settings.loaded) {
+      $(settings.targetId + " .flexslider").flexslider(settings.opts);
+      settings.loaded = true;
+    }
+  }
+
+  // Pause mapping from Views Slideshow to FlexSlider
+  Drupal.flexsliderViewsSlideshow.pause = function (options) {
+    Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].pause();
+    Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = true;
+  }
+
+  // Play mapping from Views Slideshow to FlexSlider
+  Drupal.flexsliderViewsSlideshow.play = function (options) {
+    console.log(Drupal.flexsliderViewsSlideshow);
+    Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].resume();
+    Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = false;
+  }
+  
+  Drupal.flexsliderViewsSlideshow.nextSlide = function (options) {
+    var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('next');
+
+    if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) {
+      Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction);
+    }
+  }
+  Drupal.flexsliderViewsSlideshow.previousSlide = function (options) {
+    var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('prev');
+
+    if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) {
+      Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction);
+    }
+  }
+  // @todo add support for jquery mobile page init
+})(jQuery);
\ No newline at end of file