danielebarchiesi@2
|
1 (function ($) {
|
danielebarchiesi@2
|
2 // @todo convert to use Drupal.behaviors
|
danielebarchiesi@2
|
3 // @todo add configuration options
|
danielebarchiesi@2
|
4
|
danielebarchiesi@2
|
5 // Register callback to save references to flexslider instances. Allows
|
danielebarchiesi@2
|
6 // Views Slideshow controls to affect the slider
|
danielebarchiesi@2
|
7 function flexslider_views_slideshow_register(fullId, slider) {
|
danielebarchiesi@2
|
8 Drupal.flexsliderViewsSlideshow.active = Drupal.flexsliderViewsSlideshow.active || {};
|
danielebarchiesi@2
|
9 Drupal.flexsliderViewsSlideshow.active[fullId] = slider;
|
danielebarchiesi@2
|
10 }
|
danielebarchiesi@2
|
11
|
danielebarchiesi@2
|
12 Drupal.behaviors.flexsliderViewsSlideshow = {
|
danielebarchiesi@2
|
13 attach: function (context) {
|
danielebarchiesi@2
|
14 $('.flexslider_views_slideshow_main:not(.flexslider_views_slideshow-processed)', context).addClass('flexslider_views_slideshow-processed').each(function() {
|
danielebarchiesi@2
|
15 // Get the ID of the slideshow
|
danielebarchiesi@2
|
16 var fullId = '#' + $(this).attr('id');
|
danielebarchiesi@2
|
17
|
danielebarchiesi@2
|
18 // Create settings container
|
danielebarchiesi@2
|
19 var settings = Drupal.settings.flexslider_views_slideshow[fullId];
|
danielebarchiesi@2
|
20
|
danielebarchiesi@2
|
21 //console.log(settings);
|
danielebarchiesi@2
|
22
|
danielebarchiesi@2
|
23 // @todo map the settings from the form to their javascript equivalents
|
danielebarchiesi@2
|
24 settings.targetId = fullId;
|
danielebarchiesi@2
|
25
|
danielebarchiesi@2
|
26 settings.loaded = false;
|
danielebarchiesi@2
|
27
|
danielebarchiesi@2
|
28 // Assign default settings
|
danielebarchiesi@2
|
29 // @todo update the list of options to match the new set
|
danielebarchiesi@2
|
30 settings.opts = {
|
danielebarchiesi@2
|
31 // v2.x options
|
danielebarchiesi@2
|
32 namespace:settings.namespace,
|
danielebarchiesi@2
|
33 selector:settings.selector,
|
danielebarchiesi@2
|
34 easing:settings.easing,
|
danielebarchiesi@2
|
35 direction:settings.direction,
|
danielebarchiesi@2
|
36 reverse:settings.reverse,
|
danielebarchiesi@2
|
37 smoothHeight:settings.smoothHeight,
|
danielebarchiesi@2
|
38 startAt:settings.startAt,
|
danielebarchiesi@2
|
39 animationSpeed:settings.animationSpeed,
|
danielebarchiesi@2
|
40 initDelay:settings.initDelay,
|
danielebarchiesi@2
|
41 useCSS:settings.useCSS,
|
danielebarchiesi@2
|
42 touch:settings.touch,
|
danielebarchiesi@2
|
43 video:settings.video,
|
danielebarchiesi@2
|
44 keyboard:settings.keyboard,
|
danielebarchiesi@2
|
45 multipleKeyboard:settings.multipleKeyboard,
|
danielebarchiesi@2
|
46 mousewheel:settings.mousewheel,
|
danielebarchiesi@2
|
47 controlsContainer:settings.controlsContainer,
|
danielebarchiesi@2
|
48 sync:settings.sync,
|
danielebarchiesi@2
|
49 asNavFor:settings.asNavFor,
|
danielebarchiesi@2
|
50 itemWidth:settings.itemWidth,
|
danielebarchiesi@2
|
51 itemMargin:settings.itemMargin,
|
danielebarchiesi@2
|
52 minItems:settings.minItems,
|
danielebarchiesi@2
|
53 maxItems:settings.maxItems,
|
danielebarchiesi@2
|
54 move:settings.move,
|
danielebarchiesi@2
|
55 // v1.x options
|
danielebarchiesi@2
|
56 animation:settings.animation,
|
danielebarchiesi@2
|
57 slideshow:settings.slideshow,
|
danielebarchiesi@2
|
58 slideshowSpeed:settings.slideshowSpeed,
|
danielebarchiesi@2
|
59 directionNav:settings.directionNav,
|
danielebarchiesi@2
|
60 controlNav:settings.controlNav,
|
danielebarchiesi@2
|
61 prevText:settings.prevText,
|
danielebarchiesi@2
|
62 nextText:settings.nextText,
|
danielebarchiesi@2
|
63 pausePlay:settings.pausePlay,
|
danielebarchiesi@2
|
64 pauseText:settings.pauseText,
|
danielebarchiesi@2
|
65 playText:settings.playText,
|
danielebarchiesi@2
|
66 randomize:settings.randomize,
|
danielebarchiesi@2
|
67 animationLoop:settings.animationLoop,
|
danielebarchiesi@2
|
68 pauseOnAction:settings.pauseOnAction,
|
danielebarchiesi@2
|
69 pauseOnHover:settings.pauseOnHover,
|
danielebarchiesi@2
|
70 manualControls:settings.manualControls,
|
danielebarchiesi@2
|
71 start: function(slider) {
|
danielebarchiesi@2
|
72 flexslider_views_slideshow_register(fullId, slider);
|
danielebarchiesi@2
|
73 }
|
danielebarchiesi@2
|
74 // @todo register other callbacks
|
danielebarchiesi@2
|
75 };
|
danielebarchiesi@2
|
76
|
danielebarchiesi@2
|
77 Drupal.flexsliderViewsSlideshow.load(fullId);
|
danielebarchiesi@2
|
78 });
|
danielebarchiesi@2
|
79 }
|
danielebarchiesi@2
|
80 };
|
danielebarchiesi@2
|
81
|
danielebarchiesi@2
|
82
|
danielebarchiesi@2
|
83 // Initialize the flexslider object
|
danielebarchiesi@2
|
84 Drupal.flexsliderViewsSlideshow = Drupal.flexsliderViewsSlideshow || {};
|
danielebarchiesi@2
|
85
|
danielebarchiesi@2
|
86 // Load mapping from Views Slideshow to FlexSlider
|
danielebarchiesi@2
|
87 Drupal.flexsliderViewsSlideshow.load = function(fullId) {
|
danielebarchiesi@2
|
88 var settings = Drupal.settings.flexslider_views_slideshow[fullId];
|
danielebarchiesi@2
|
89
|
danielebarchiesi@2
|
90 // Ensure the slider isn't already loaded
|
danielebarchiesi@2
|
91 if (!settings.loaded) {
|
danielebarchiesi@2
|
92 $(settings.targetId + " .flexslider").flexslider(settings.opts);
|
danielebarchiesi@2
|
93 settings.loaded = true;
|
danielebarchiesi@2
|
94 }
|
danielebarchiesi@2
|
95 }
|
danielebarchiesi@2
|
96
|
danielebarchiesi@2
|
97 // Pause mapping from Views Slideshow to FlexSlider
|
danielebarchiesi@2
|
98 Drupal.flexsliderViewsSlideshow.pause = function (options) {
|
danielebarchiesi@2
|
99 Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].pause();
|
danielebarchiesi@2
|
100 Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = true;
|
danielebarchiesi@2
|
101 }
|
danielebarchiesi@2
|
102
|
danielebarchiesi@2
|
103 // Play mapping from Views Slideshow to FlexSlider
|
danielebarchiesi@2
|
104 Drupal.flexsliderViewsSlideshow.play = function (options) {
|
danielebarchiesi@2
|
105 console.log(Drupal.flexsliderViewsSlideshow);
|
danielebarchiesi@2
|
106 Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].resume();
|
danielebarchiesi@2
|
107 Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = false;
|
danielebarchiesi@2
|
108 }
|
danielebarchiesi@2
|
109
|
danielebarchiesi@2
|
110 Drupal.flexsliderViewsSlideshow.nextSlide = function (options) {
|
danielebarchiesi@2
|
111 var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('next');
|
danielebarchiesi@2
|
112
|
danielebarchiesi@2
|
113 if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) {
|
danielebarchiesi@2
|
114 Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction);
|
danielebarchiesi@2
|
115 }
|
danielebarchiesi@2
|
116 }
|
danielebarchiesi@2
|
117 Drupal.flexsliderViewsSlideshow.previousSlide = function (options) {
|
danielebarchiesi@2
|
118 var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('prev');
|
danielebarchiesi@2
|
119
|
danielebarchiesi@2
|
120 if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) {
|
danielebarchiesi@2
|
121 Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction);
|
danielebarchiesi@2
|
122 }
|
danielebarchiesi@2
|
123 }
|
danielebarchiesi@2
|
124 // @todo add support for jquery mobile page init
|
danielebarchiesi@2
|
125 })(jQuery); |