Version Description
- Bug fix: security issues
- Other minor changes and bug fixes
Download this release
Release Info
Developer | fabiorino |
Plugin | Crelly Slider |
Version | 1.1.2 |
Comparing to | |
See all releases |
Code changes from version 1.1.1 to 1.1.2
- crellyslider.php +11 -9
- js/jquery.crellyslider.js +364 -364
- js/jquery.crellyslider.min.js +2 -2
- readme.txt +5 -1
- wordpress/admin.php +72 -58
- wordpress/ajax.php +140 -96
- wordpress/common.php +17 -6
- wordpress/elements.php +89 -87
- wordpress/frontend.php +87 -86
- wordpress/home.php +12 -10
- wordpress/slider.php +16 -14
- wordpress/slides.php +56 -49
- wordpress/tables.php +13 -12
- wordpress/temp/silence.php +1 -0
crellyslider.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Crelly Slider
|
4 |
* Plugin URI: http://fabiorino1.altervista.org/projects/crellyslider
|
5 |
* Description: A free responsive slider that supports layers. Add texts, images and videos using a Drop & Builder.
|
6 |
-
* Version: 1.1.
|
7 |
* Author: fabiorino
|
8 |
* Author URI: http://fabiorino1.altervista.org
|
9 |
* Text Domain: crelly-slider
|
@@ -11,13 +11,15 @@
|
|
11 |
* License: MIT
|
12 |
*/
|
13 |
|
|
|
|
|
14 |
/*************/
|
15 |
/** GLOBALS **/
|
16 |
-
/*************/
|
17 |
|
18 |
define('CS_DEBUG', false);
|
19 |
|
20 |
-
define('CS_VERSION', '1.1.
|
21 |
define('CS_PATH', plugin_dir_path(__FILE__));
|
22 |
define('CS_PLUGIN_URL', plugins_url() . '/crelly-slider');
|
23 |
|
@@ -25,8 +27,8 @@ require_once CS_PATH . 'wordpress/common.php';
|
|
25 |
require_once CS_PATH . 'wordpress/tables.php';
|
26 |
require_once CS_PATH . 'wordpress/frontend.php';
|
27 |
|
28 |
-
// Create (or remove) 3 tables: the sliders settings, the slides settings and the elements proprieties. We will also store the current version of the plugin
|
29 |
-
register_activation_hook(__FILE__, array('CrellySliderTables', 'setVersion'));
|
30 |
register_activation_hook(__FILE__, array('CrellySliderTables', 'setTables'));
|
31 |
register_uninstall_hook(__FILE__, array('CrellySliderTables', 'removeVersion'));
|
32 |
register_uninstall_hook(__FILE__, array('CrellySliderTables', 'dropTables'));
|
@@ -53,12 +55,12 @@ if(is_admin()) {
|
|
53 |
if(CS_VERSION != get_option('cs_version')) {
|
54 |
CrellySliderTables::setVersion();
|
55 |
}
|
56 |
-
|
57 |
CrellySliderAdmin::setEnqueues();
|
58 |
CrellySliderAdmin::showSettings();
|
59 |
-
|
60 |
// Ajax functions
|
61 |
-
require_once CS_PATH . 'wordpress/ajax.php';
|
62 |
}
|
63 |
|
64 |
-
?>
|
3 |
* Plugin Name: Crelly Slider
|
4 |
* Plugin URI: http://fabiorino1.altervista.org/projects/crellyslider
|
5 |
* Description: A free responsive slider that supports layers. Add texts, images and videos using a Drop & Builder.
|
6 |
+
* Version: 1.1.2
|
7 |
* Author: fabiorino
|
8 |
* Author URI: http://fabiorino1.altervista.org
|
9 |
* Text Domain: crelly-slider
|
11 |
* License: MIT
|
12 |
*/
|
13 |
|
14 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
15 |
+
|
16 |
/*************/
|
17 |
/** GLOBALS **/
|
18 |
+
/*************/
|
19 |
|
20 |
define('CS_DEBUG', false);
|
21 |
|
22 |
+
define('CS_VERSION', '1.1.2');
|
23 |
define('CS_PATH', plugin_dir_path(__FILE__));
|
24 |
define('CS_PLUGIN_URL', plugins_url() . '/crelly-slider');
|
25 |
|
27 |
require_once CS_PATH . 'wordpress/tables.php';
|
28 |
require_once CS_PATH . 'wordpress/frontend.php';
|
29 |
|
30 |
+
// Create (or remove) 3 tables: the sliders settings, the slides settings and the elements proprieties. We will also store the current version of the plugin
|
31 |
+
register_activation_hook(__FILE__, array('CrellySliderTables', 'setVersion'));
|
32 |
register_activation_hook(__FILE__, array('CrellySliderTables', 'setTables'));
|
33 |
register_uninstall_hook(__FILE__, array('CrellySliderTables', 'removeVersion'));
|
34 |
register_uninstall_hook(__FILE__, array('CrellySliderTables', 'dropTables'));
|
55 |
if(CS_VERSION != get_option('cs_version')) {
|
56 |
CrellySliderTables::setVersion();
|
57 |
}
|
58 |
+
|
59 |
CrellySliderAdmin::setEnqueues();
|
60 |
CrellySliderAdmin::showSettings();
|
61 |
+
|
62 |
// Ajax functions
|
63 |
+
require_once CS_PATH . 'wordpress/ajax.php';
|
64 |
}
|
65 |
|
66 |
+
?>
|
js/jquery.crellyslider.js
CHANGED
@@ -2,74 +2,74 @@
|
|
2 |
* Plugin Name: Crelly Slider
|
3 |
* Plugin URI: http://fabiorino1.altervista.org/projects/crellyslider
|
4 |
* Description: The first free WordPress slider with elements animations.
|
5 |
-
* Version: 1.1.
|
6 |
* Author: fabiorino
|
7 |
* Author URI: http://fabiorino1.altervista.org
|
8 |
* License: MIT
|
9 |
*/
|
10 |
|
11 |
(function($) {
|
12 |
-
|
13 |
/************************/
|
14 |
/** EXTERNAL RESOURCES **/
|
15 |
/************************/
|
16 |
-
|
17 |
// Custom build of jQuery mobile. I need it for swipeleft and swiperight
|
18 |
(function(e,t,n){typeof define=="function"&&define.amd?define(["jquery"],function(r){return n(r,e,t),r.mobile}):n(e.jQuery,e,t)})(this,document,function(e,t,n,r){(function(e,t,n,r){function T(e){while(e&&typeof e.originalEvent!="undefined")e=e.originalEvent;return e}function N(t,n){var i=t.type,s,o,a,l,c,h,p,d,v;t=e.Event(t),t.type=n,s=t.originalEvent,o=e.event.props,i.search(/^(mouse|click)/)>-1&&(o=f);if(s)for(p=o.length,l;p;)l=o[--p],t[l]=s[l];i.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1);if(i.search(/^touch/)!==-1){a=T(s),i=a.touches,c=a.changedTouches,h=i&&i.length?i[0]:c&&c.length?c[0]:r;if(h)for(d=0,v=u.length;d<v;d++)l=u[d],t[l]=h[l]}return t}function C(t){var n={},r,s;while(t){r=e.data(t,i);for(s in r)r[s]&&(n[s]=n.hasVirtualBinding=!0);t=t.parentNode}return n}function k(t,n){var r;while(t){r=e.data(t,i);if(r&&(!n||r[n]))return t;t=t.parentNode}return null}function L(){g=!1}function A(){g=!0}function O(){E=0,v.length=0,m=!1,A()}function M(){L()}function _(){D(),c=setTimeout(function(){c=0,O()},e.vmouse.resetTimerDuration)}function D(){c&&(clearTimeout(c),c=0)}function P(t,n,r){var i;if(r&&r[t]||!r&&k(n.target,t))i=N(n,t),e(n.target).trigger(i);return i}function H(t){var n=e.data(t.target,s),r;!m&&(!E||E!==n)&&(r=P("v"+t.type,t),r&&(r.isDefaultPrevented()&&t.preventDefault(),r.isPropagationStopped()&&t.stopPropagation(),r.isImmediatePropagationStopped()&&t.stopImmediatePropagation()))}function B(t){var n=T(t).touches,r,i,o;n&&n.length===1&&(r=t.target,i=C(r),i.hasVirtualBinding&&(E=w++,e.data(r,s,E),D(),M(),d=!1,o=T(t).touches[0],h=o.pageX,p=o.pageY,P("vmouseover",t,i),P("vmousedown",t,i)))}function j(e){if(g)return;d||P("vmousecancel",e,C(e.target)),d=!0,_()}function F(t){if(g)return;var n=T(t).touches[0],r=d,i=e.vmouse.moveDistanceThreshold,s=C(t.target);d=d||Math.abs(n.pageX-h)>i||Math.abs(n.pageY-p)>i,d&&!r&&P("vmousecancel",t,s),P("vmousemove",t,s),_()}function I(e){if(g)return;A();var t=C(e.target),n,r;P("vmouseup",e,t),d||(n=P("vclick",e,t),n&&n.isDefaultPrevented()&&(r=T(e).changedTouches[0],v.push({touchID:E,x:r.clientX,y:r.clientY}),m=!0)),P("vmouseout",e,t),d=!1,_()}function q(t){var n=e.data(t,i),r;if(n)for(r in n)if(n[r])return!0;return!1}function R(){}function U(t){var n=t.substr(1);return{setup:function(){q(this)||e.data(this,i,{});var r=e.data(this,i);r[t]=!0,l[t]=(l[t]||0)+1,l[t]===1&&b.bind(n,H),e(this).bind(n,R),y&&(l.touchstart=(l.touchstart||0)+1,l.touchstart===1&&b.bind("touchstart",B).bind("touchend",I).bind("touchmove",F).bind("scroll",j))},teardown:function(){--l[t],l[t]||b.unbind(n,H),y&&(--l.touchstart,l.touchstart||b.unbind("touchstart",B).unbind("touchmove",F).unbind("touchend",I).unbind("scroll",j));var r=e(this),s=e.data(this,i);s&&(s[t]=!1),r.unbind(n,R),q(this)||r.removeData(i)}}}var i="virtualMouseBindings",s="virtualTouchID",o="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),u="clientX clientY pageX pageY screenX screenY".split(" "),a=e.event.mouseHooks?e.event.mouseHooks.props:[],f=e.event.props.concat(a),l={},c=0,h=0,p=0,d=!1,v=[],m=!1,g=!1,y="addEventListener"in n,b=e(n),w=1,E=0,S,x;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(x=0;x<o.length;x++)e.event.special[o[x]]=U(o[x]);y&&n.addEventListener("click",function(t){var n=v.length,r=t.target,i,o,u,a,f,l;if(n){i=t.clientX,o=t.clientY,S=e.vmouse.clickDistanceThreshold,u=r;while(u){for(a=0;a<n;a++){f=v[a],l=0;if(u===r&&Math.abs(f.x-i)<S&&Math.abs(f.y-o)<S||e.data(u,s)===f.touchID){t.preventDefault(),t.stopPropagation();return}}u=u.parentNode}}},!0)})(e,t,n),function(e){e.mobile={}}(e),function(e,t){var r={touch:"ontouchend"in n};e.mobile.support=e.mobile.support||{},e.extend(e.support,r),e.extend(e.mobile.support,r)}(e),function(e,t,r){function l(t,n,i,s){var o=i.type;i.type=n,s?e.event.trigger(i,r,t):e.event.dispatch.call(t,i),i.type=o}var i=e(n),s=e.mobile.support.touch,o="touchmove scroll",u=s?"touchstart":"mousedown",a=s?"touchend":"mouseup",f=s?"touchmove":"mousemove";e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,n){e.fn[n]=function(e){return e?this.bind(n,e):this.trigger(n)},e.attrFn&&(e.attrFn[n]=!0)}),e.event.special.scrollstart={enabled:!0,setup:function(){function s(e,n){r=n,l(t,r?"scrollstart":"scrollstop",e)}var t=this,n=e(t),r,i;n.bind(o,function(t){if(!e.event.special.scrollstart.enabled)return;r||s(t,!0),clearTimeout(i),i=setTimeout(function(){s(t,!1)},50)})},teardown:function(){e(this).unbind(o)}},e.event.special.tap={tapholdThreshold:750,emitTapOnTaphold:!0,setup:function(){var t=this,n=e(t),r=!1;n.bind("vmousedown",function(s){function a(){clearTimeout(u)}function f(){a(),n.unbind("vclick",c).unbind("vmouseup",a),i.unbind("vmousecancel",f)}function c(e){f(),!r&&o===e.target?l(t,"tap",e):r&&e.preventDefault()}r=!1;if(s.which&&s.which!==1)return!1;var o=s.target,u;n.bind("vmouseup",a).bind("vclick",c),i.bind("vmousecancel",f),u=setTimeout(function(){e.event.special.tap.emitTapOnTaphold||(r=!0),l(t,"taphold",e.Event("taphold",{target:o}))},e.event.special.tap.tapholdThreshold)})},teardown:function(){e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"),i.unbind("vmousecancel")}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:30,getLocation:function(e){var n=t.pageXOffset,r=t.pageYOffset,i=e.clientX,s=e.clientY;if(e.pageY===0&&Math.floor(s)>Math.floor(e.pageY)||e.pageX===0&&Math.floor(i)>Math.floor(e.pageX))i-=n,s-=r;else if(s<e.pageY-r||i<e.pageX-n)i=e.pageX-n,s=e.pageY-r;return{x:i,y:s}},start:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y],origin:e(t.target)}},stop:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y]}},handleSwipe:function(t,n,r,i){if(n.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-n.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])<e.event.special.swipe.verticalDistanceThreshold){var s=t.coords[0]>n.coords[0]?"swipeleft":"swiperight";return l(r,"swipe",e.Event("swipe",{target:i,swipestart:t,swipestop:n}),!0),l(r,s,e.Event(s,{target:i,swipestart:t,swipestop:n}),!0),!0}return!1},eventInProgress:!1,setup:function(){var t,n=this,r=e(n),s={};t=e.data(this,"mobile-events"),t||(t={length:0},e.data(this,"mobile-events",t)),t.length++,t.swipe=s,s.start=function(t){if(e.event.special.swipe.eventInProgress)return;e.event.special.swipe.eventInProgress=!0;var r,o=e.event.special.swipe.start(t),u=t.target,l=!1;s.move=function(t){if(!o||t.isDefaultPrevented())return;r=e.event.special.swipe.stop(t),l||(l=e.event.special.swipe.handleSwipe(o,r,n,u),l&&(e.event.special.swipe.eventInProgress=!1)),Math.abs(o.coords[0]-r.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault()},s.stop=function(){l=!0,e.event.special.swipe.eventInProgress=!1,i.off(f,s.move),s.move=null},i.on(f,s.move).one(a,s.stop)},r.on(u,s.start)},teardown:function(){var t,n;t=e.data(this,"mobile-events"),t&&(n=t.swipe,delete t.swipe,t.length--,t.length===0&&e.removeData(this,"mobile-events")),n&&(n.start&&e(this).off(u,n.start),n.move&&i.off(f,n.move),n.stop&&i.off(a,n.stop))}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)},teardown:function(){e(this).unbind(n)}}})}(e,this)});
|
19 |
-
|
20 |
// YouTube API:
|
21 |
var tag = document.createElement('script');
|
22 |
tag.src = "https://www.youtube.com/iframe_api";
|
23 |
var firstScriptTag = document.getElementsByTagName('script')[0];
|
24 |
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
|
25 |
-
|
26 |
// Vimeo API
|
27 |
var Froogaloop=function(){function e(a){return new e.fn.init(a)}function g(a,c,b){if(!b.contentWindow.postMessage)return!1;a=JSON.stringify({method:a,value:c});b.contentWindow.postMessage(a,h)}function l(a){var c,b;try{c=JSON.parse(a.data),b=c.event||c.method}catch(e){}"ready"!=b||k||(k=!0);if(!/^https?:\/\/player.vimeo.com/.test(a.origin))return!1;"*"===h&&(h=a.origin);a=c.value;var m=c.data,f=""===f?null:c.player_id;c=f?d[f][b]:d[b];b=[];if(!c)return!1;void 0!==a&&b.push(a);m&&b.push(m);f&&b.push(f);
|
28 |
return 0<b.length?c.apply(null,b):c.call()}function n(a,c,b){b?(d[b]||(d[b]={}),d[b][a]=c):d[a]=c}var d={},k=!1,h="*";e.fn=e.prototype={element:null,init:function(a){"string"===typeof a&&(a=document.getElementById(a));this.element=a;return this},api:function(a,c){if(!this.element||!a)return!1;var b=this.element,d=""!==b.id?b.id:null,e=c&&c.constructor&&c.call&&c.apply?null:c,f=c&&c.constructor&&c.call&&c.apply?c:null;f&&n(a,f,d);g(a,e,b);return this},addEvent:function(a,c){if(!this.element)return!1;
|
29 |
var b=this.element,d=""!==b.id?b.id:null;n(a,c,d);"ready"!=a?g("addEventListener",a,b):"ready"==a&&k&&c.call(null,d);return this},removeEvent:function(a){if(!this.element)return!1;var c=this.element,b=""!==c.id?c.id:null;a:{if(b&&d[b]){if(!d[b][a]){b=!1;break a}d[b][a]=null}else{if(!d[a]){b=!1;break a}d[a]=null}b=!0}"ready"!=a&&b&&g("removeEventListener",a,c)}};e.fn.init.prototype=e.fn;window.addEventListener?window.addEventListener("message",l,!1):window.attachEvent("onmessage",l);return window.Froogaloop=
|
30 |
-
window.$f=e}();
|
31 |
-
|
32 |
/*******************/
|
33 |
/** CRELLY SLIDER **/
|
34 |
/*******************/
|
35 |
-
|
36 |
$.CrellySlider = function(target, settings) {
|
37 |
-
|
38 |
/**********************/
|
39 |
/** USEFUL VARIABLES **/
|
40 |
/**********************/
|
41 |
-
|
42 |
// HTML classes of the slider
|
43 |
var SLIDER = $(target);
|
44 |
var CRELLY = 'div.crellyslider';
|
45 |
var SLIDES = 'ul.cs-slides';
|
46 |
var SLIDE = 'li.cs-slide';
|
47 |
var ELEMENTS = '> *';
|
48 |
-
|
49 |
var total_slides;
|
50 |
var current_slide = 0;
|
51 |
-
|
52 |
var paused = false;
|
53 |
var can_pause = false; // Also used as "can change slide"
|
54 |
var executed_slide = false; // Will be true as soon as the current slide is executed
|
55 |
var first_play = true;
|
56 |
-
|
57 |
// Slide timer: only current slide. Elements timers: all the elements. This prevents conflicts during changes and pauses
|
58 |
var current_slide_time_timer = new Timer(function() {}, 0);
|
59 |
var elements_times_timers = new Array();
|
60 |
var elements_delays_timers = new Array();
|
61 |
-
|
62 |
// The arrays "link" every DOM iframe element to its player element that can interact with APIs
|
63 |
var youtube_videos = {};
|
64 |
var vimeo_videos = {};
|
65 |
-
|
66 |
var scale = 1;
|
67 |
var window_width_before_setResponsive = 0; // This variable is useful ONLY to prevent that window.resize fires on vertical resizing or on a right window width
|
68 |
-
|
69 |
/********************/
|
70 |
/** INITIALIZATION **/
|
71 |
/********************/
|
72 |
-
|
73 |
// EVERYTHING BEGINS HERE
|
74 |
// Before initializing Crelly Slider, we have to wait for the YouTube API. I use the setInterval method to prevent compatibility issues with other plugins and to be sure that, if there is more than a slider loaded on the page, everything works
|
75 |
if((typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined')) {
|
@@ -83,22 +83,22 @@
|
|
83 |
else {
|
84 |
init();
|
85 |
}
|
86 |
-
|
87 |
// The slider constructor: runs automatically only the first time, sets the basic needs of the slider and the preloader then runs Crelly Slider
|
88 |
-
function init() {
|
89 |
// Add wrappers and classes
|
90 |
SLIDER.wrapInner('<div class="crellyslider" />');
|
91 |
SLIDER.find(CRELLY + ' > ul').addClass('cs-slides');
|
92 |
SLIDER.find(CRELLY + ' ' + SLIDES + ' > li').addClass('cs-slide');
|
93 |
-
|
94 |
// Set total_slides
|
95 |
total_slides = getSlides().length;
|
96 |
-
|
97 |
// If the slider is empty, stop
|
98 |
if(total_slides == 0) {
|
99 |
return false;
|
100 |
}
|
101 |
-
|
102 |
// If there is only a slide, clone it
|
103 |
if(total_slides == 1) {
|
104 |
var clone = getSlide(0);
|
@@ -106,12 +106,12 @@
|
|
106 |
clone.clone().prependTo(prepend);
|
107 |
total_slides++;
|
108 |
}
|
109 |
-
|
110 |
// Show controls (previous and next arrows)
|
111 |
if(settings.showControls) {
|
112 |
SLIDER.find(CRELLY).append('<div class="cs-controls"><span class="cs-next"></span><span class="cs-previous"></span></div>');
|
113 |
}
|
114 |
-
|
115 |
// Show navigation
|
116 |
if(settings.showNavigation) {
|
117 |
var nav = '<div class="cs-navigation">';
|
@@ -121,7 +121,7 @@
|
|
121 |
nav += '</div>';
|
122 |
SLIDER.find(CRELLY).append(nav);
|
123 |
}
|
124 |
-
|
125 |
// Show progress bar
|
126 |
if(settings.showProgressBar) {
|
127 |
SLIDER.find(CRELLY).append('<div class="cs-progress-bar"></div>');
|
@@ -129,16 +129,16 @@
|
|
129 |
else {
|
130 |
SLIDER.find(CRELLY).append('<div class="cs-progress-bar cs-progress-bar-hidden"></div>');
|
131 |
}
|
132 |
-
|
133 |
// Display slider
|
134 |
SLIDER.css('display', 'block');
|
135 |
-
|
136 |
// Set layout for the first time
|
137 |
if(settings.responsive) {
|
138 |
setScale();
|
139 |
-
}
|
140 |
setLayout();
|
141 |
-
|
142 |
// Set slides links
|
143 |
getSlides().find('.cs-background-link')
|
144 |
.html(' ')
|
@@ -152,9 +152,9 @@
|
|
152 |
'delay' : 0,
|
153 |
'time' : 'all',
|
154 |
});
|
155 |
-
|
156 |
setPreloader();
|
157 |
-
|
158 |
initVideos().done(function() {
|
159 |
// Timeout needed to prevent compatibility issues
|
160 |
var loading = setInterval(function() {
|
@@ -165,21 +165,21 @@
|
|
165 |
}, 100);
|
166 |
});
|
167 |
}
|
168 |
-
|
169 |
// Inits Youtube and Vimeo videos
|
170 |
-
function initVideos() {
|
171 |
var def = new $.Deferred();
|
172 |
var total_iframes = getSlides().find('.cs-yt-iframe, .cs-vimeo-iframe').length;
|
173 |
var loaded_iframes = 0;
|
174 |
-
|
175 |
if(total_iframes == 0) {
|
176 |
return def.resolve().promise();
|
177 |
}
|
178 |
-
|
179 |
// When iframes are loaded...
|
180 |
getSlides().find('.cs-yt-iframe, .cs-vimeo-iframe').each(function() {
|
181 |
var iframe = $(this);
|
182 |
-
|
183 |
iframe.one('load', function() {
|
184 |
loaded_iframes++;
|
185 |
if(loaded_iframes == total_iframes) {
|
@@ -192,10 +192,10 @@
|
|
192 |
}
|
193 |
})
|
194 |
});
|
195 |
-
|
196 |
return def.promise();
|
197 |
}
|
198 |
-
|
199 |
// Generates an unique id for each youtube iframe, then links them to a new YouTube player
|
200 |
function initYoutubeVideos() {
|
201 |
var def = new $.Deferred();
|
@@ -203,50 +203,50 @@
|
|
203 |
var total_yt_videos = slides.find(ELEMENTS + '.cs-yt-iframe').length;
|
204 |
var loaded_videos = 0;
|
205 |
var temp;
|
206 |
-
|
207 |
if(total_yt_videos == 0) {
|
208 |
return def.resolve().promise();
|
209 |
}
|
210 |
-
|
211 |
slides.each(function() {
|
212 |
var slide = $(this);
|
213 |
var elements = slide.find(ELEMENTS + '.cs-yt-iframe');
|
214 |
-
|
215 |
elements.each(function() {
|
216 |
var element = $(this);
|
217 |
-
|
218 |
element.uniqueId();
|
219 |
element.attr('id', 'cs-yt-iframe-' + element.attr('id'));
|
220 |
-
|
221 |
var player = new YT.Player(element.attr('id'), {
|
222 |
events: {
|
223 |
-
'onReady' : function() {
|
224 |
loaded_videos++;
|
225 |
if(loaded_videos == total_yt_videos) {
|
226 |
def.resolve();
|
227 |
}
|
228 |
},
|
229 |
-
|
230 |
'onStateChange' : function(e) {
|
231 |
if(e.data === YT.PlayerState.ENDED && getItemData(element, 'loop')) {
|
232 |
-
player.playVideo();
|
233 |
}
|
234 |
},
|
235 |
},
|
236 |
});
|
237 |
-
|
238 |
temp = {
|
239 |
player : player,
|
240 |
played_once : false
|
241 |
};
|
242 |
-
|
243 |
youtube_videos[element.attr('id')] = temp;
|
244 |
});
|
245 |
});
|
246 |
-
|
247 |
return def.promise();
|
248 |
}
|
249 |
-
|
250 |
// Generates an unique id for each Vimeo iframe, then links them to a new Vimeo player
|
251 |
function initVimeoVideos() {
|
252 |
var def = new $.Deferred();
|
@@ -254,75 +254,75 @@
|
|
254 |
var total_vimeo_videos = slides.find(ELEMENTS + '.cs-vimeo-iframe').length;
|
255 |
var loaded_videos = 0;
|
256 |
var temp;
|
257 |
-
|
258 |
if(total_vimeo_videos == 0) {
|
259 |
return def.resolve().promise();
|
260 |
}
|
261 |
-
|
262 |
slides.each(function() {
|
263 |
var slide = $(this);
|
264 |
var elements = slide.find(ELEMENTS + '.cs-vimeo-iframe');
|
265 |
-
|
266 |
elements.each(function() {
|
267 |
var element = $(this);
|
268 |
-
|
269 |
element.uniqueId();
|
270 |
element.attr('id', 'cs-vimeo-iframe-' + element.attr('id'));
|
271 |
element.attr('src', element.attr('src') + '&player_id=' + element.attr('id'));
|
272 |
-
|
273 |
var player = $f(element[0]);
|
274 |
-
|
275 |
player.addEvent('ready', function() {
|
276 |
player.addEvent('finish', function() {
|
277 |
vimeo_videos[element.attr('id')].ended = true;
|
278 |
});
|
279 |
-
|
280 |
player.addEvent('play', function() {
|
281 |
vimeo_videos[element.attr('id')].played_once = true;
|
282 |
vimeo_videos[element.attr('id')].ended = false;
|
283 |
});
|
284 |
-
|
285 |
if(getItemData(element, 'loop')) {
|
286 |
-
player.api('setLoop', true);
|
287 |
}
|
288 |
-
|
289 |
-
loaded_videos++;
|
290 |
if(loaded_videos == total_vimeo_videos) {
|
291 |
def.resolve();
|
292 |
}
|
293 |
});
|
294 |
-
|
295 |
temp = {
|
296 |
player : player,
|
297 |
played_once : false,
|
298 |
ended : false,
|
299 |
};
|
300 |
-
|
301 |
vimeo_videos[element.attr('id')] = temp;
|
302 |
});
|
303 |
});
|
304 |
-
|
305 |
return def.promise();
|
306 |
}
|
307 |
-
|
308 |
// Does operations after window.load is complete. Need to do it as a function for back-end compatibility
|
309 |
-
function loadedWindow() {
|
310 |
// Set layout for the second time
|
311 |
if(settings.responsive) {
|
312 |
setScale();
|
313 |
}
|
314 |
setLayout();
|
315 |
-
|
316 |
window_width_before_setResponsive = $(window).width();
|
317 |
-
|
318 |
initProperties();
|
319 |
-
|
320 |
addListeners();
|
321 |
-
|
322 |
unsetPreloader();
|
323 |
-
|
324 |
settings.beforeStart();
|
325 |
-
|
326 |
// Positions and responsive dimensions then run
|
327 |
if(settings.responsive) {
|
328 |
setResponsive();
|
@@ -331,116 +331,116 @@
|
|
331 |
play();
|
332 |
}
|
333 |
}
|
334 |
-
|
335 |
// Stores original slides, elements and elements contents values then hide all the slides and elements. "display: none" only if is an element, not an element content
|
336 |
function initProperties() {
|
337 |
getSlides().each(function() {
|
338 |
var slide = $(this);
|
339 |
-
|
340 |
slide.find(ELEMENTS).each(function() {
|
341 |
var element = $(this);
|
342 |
-
|
343 |
element.find('*').each(function() {
|
344 |
var element_content = $(this);
|
345 |
setElementDatas(element_content, true);
|
346 |
});
|
347 |
-
|
348 |
setElementDatas(element, false);
|
349 |
});
|
350 |
-
|
351 |
slide.css('display', 'none');
|
352 |
slide.data('opacity', parseFloat(slide.css('opacity')));
|
353 |
});
|
354 |
}
|
355 |
-
|
356 |
// Initializes the element with original values
|
357 |
function setElementDatas(element, is_element_content) {
|
358 |
element.data('width', parseFloat(element.width()));
|
359 |
-
element.data('height', parseFloat(element.height()));
|
360 |
element.data('letter-spacing', parseFloat(element.css('letter-spacing')));
|
361 |
element.data('font-size', parseFloat(element.css('font-size')));
|
362 |
-
|
363 |
if(element.css('line-height').slice(-2).toLowerCase() == 'px') {
|
364 |
element.data('line-height', parseFloat(element.css('line-height')));
|
365 |
}
|
366 |
else {
|
367 |
element.data('line-height', parseFloat(element.css('line-height')) * getItemData(element, 'font-size'));
|
368 |
}
|
369 |
-
|
370 |
element.data('padding-top', parseFloat(element.css('padding-top')));
|
371 |
element.data('padding-right', parseFloat(element.css('padding-right')));
|
372 |
element.data('padding-bottom', parseFloat(element.css('padding-bottom')));
|
373 |
element.data('padding-left', parseFloat(element.css('padding-left')));
|
374 |
element.data('opacity', parseFloat(element.css('opacity')));
|
375 |
-
|
376 |
if(! is_element_content) {
|
377 |
element.css('display', 'none');
|
378 |
}
|
379 |
}
|
380 |
-
|
381 |
// Sets all listeners for the user interaction
|
382 |
function addListeners() {
|
383 |
// Make responsive. Run if resizing horizontally and the slider is not at the right dimension
|
384 |
-
if(settings.responsive) {
|
385 |
$(window).resize(function() {
|
386 |
if(window_width_before_setResponsive != $(window).width() && ((settings.layout == 'full-width' && getWidth() != $(SLIDER).width()) || ($(SLIDER).width() < getWidth() || (($(SLIDER).width() > getWidth()) && getWidth() < settings.startWidth)))) {
|
387 |
setResponsive();
|
388 |
}
|
389 |
});
|
390 |
}
|
391 |
-
|
392 |
-
// Previous control click
|
393 |
SLIDER.find(CRELLY).find('.cs-controls > .cs-previous').click(function() {
|
394 |
changeSlide(getPreviousSlide());
|
395 |
});
|
396 |
-
|
397 |
// Next Control click
|
398 |
SLIDER.find(CRELLY).find('.cs-controls > .cs-next').click(function() {
|
399 |
changeSlide(getNextSlide());
|
400 |
});
|
401 |
-
|
402 |
// Swipe and drag
|
403 |
-
if(settings.enableSwipe) {
|
404 |
SLIDER.find(CRELLY).on('swipeleft', function() {
|
405 |
resume();
|
406 |
changeSlide(getNextSlide());
|
407 |
});
|
408 |
-
|
409 |
SLIDER.find(CRELLY).on('swiperight', function() {
|
410 |
resume();
|
411 |
changeSlide(getPreviousSlide());
|
412 |
});
|
413 |
}
|
414 |
-
|
415 |
// Navigation link click
|
416 |
SLIDER.find(CRELLY).find('.cs-navigation > .cs-slide-link').click(function() {
|
417 |
changeSlide($(this).index());
|
418 |
});
|
419 |
-
|
420 |
// Pause on hover
|
421 |
if(settings.pauseOnHover) {
|
422 |
SLIDER.find(CRELLY).find(SLIDES).hover(function() {
|
423 |
pause();
|
424 |
});
|
425 |
-
|
426 |
SLIDER.find(CRELLY).find(SLIDES).mouseleave(function() {
|
427 |
resume();
|
428 |
});
|
429 |
}
|
430 |
}
|
431 |
-
|
432 |
// Hides the unnecessary divs and sets the blurred preloader and the gif spinner
|
433 |
function setPreloader() {
|
434 |
// Setup
|
435 |
SLIDER.find(CRELLY).find(SLIDES).css('visibility', 'hidden');
|
436 |
SLIDER.find(CRELLY).find('.cs-progress-bar').css('display', 'none');
|
437 |
SLIDER.find(CRELLY).find('.cs-navigation').css('display', 'none');
|
438 |
-
SLIDER.find(CRELLY).find('.cs-controls').css('display', 'none');
|
439 |
-
|
440 |
// Get the URL of the background image of the first slide
|
441 |
var img_url = getSlide(0).css('background-image');
|
442 |
img_url = img_url.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');
|
443 |
-
|
444 |
if(! img_url.match(/\.(jpeg|jpg|gif|png|bmp|tiff|tif)$/)) { // If there isn't a background image
|
445 |
addPreloaderHTML();
|
446 |
}
|
@@ -457,20 +457,20 @@
|
|
457 |
}
|
458 |
});
|
459 |
}
|
460 |
-
|
461 |
function addPreloaderHTML() {
|
462 |
// Add preloader
|
463 |
SLIDER.find(CRELLY).append('<div class="cs-preloader"><div class="cs-bg"></div><div class="cs-loader"><div class="cs-spinner"></div></div></div>');
|
464 |
-
|
465 |
// Set background. Background is set to both the preloader div and the bg div to fix the CSS blur effect
|
466 |
-
SLIDER.find(CRELLY).find('.cs-preloader').css({
|
467 |
'background-color' : getSlide(0).css('background-color'),
|
468 |
'background-image' : getSlide(0).css('background-image'),
|
469 |
'background-position' : getSlide(0).css('background-position'),
|
470 |
'background-repeat' : getSlide(0).css('background-repeat'),
|
471 |
'background-size' : getSlide(0).css('background-size'),
|
472 |
-
});
|
473 |
-
SLIDER.find(CRELLY).find('.cs-preloader > .cs-bg').css({
|
474 |
'background-color' : getSlide(0).css('background-color'),
|
475 |
'background-image' : getSlide(0).css('background-image'),
|
476 |
'background-position' : getSlide(0).css('background-position'),
|
@@ -479,7 +479,7 @@
|
|
479 |
});
|
480 |
}
|
481 |
}
|
482 |
-
|
483 |
// Shows the necessary divs and fades out the preloader
|
484 |
function unsetPreloader() {
|
485 |
// Setup
|
@@ -487,11 +487,11 @@
|
|
487 |
SLIDER.find(CRELLY).find('.cs-progress-bar').css('display', 'block');
|
488 |
SLIDER.find(CRELLY).find('.cs-navigation').css('display', 'block');
|
489 |
SLIDER.find(CRELLY).find('.cs-controls').css('display', 'block');
|
490 |
-
|
491 |
// Display the first slide to avoid the slide in animation
|
492 |
slideIn(getSlide(0));
|
493 |
getSlide(0).finish();
|
494 |
-
|
495 |
// Fade out
|
496 |
SLIDER.find(CRELLY).find('.cs-preloader').animate({
|
497 |
'opacity' : 0,
|
@@ -499,16 +499,16 @@
|
|
499 |
SLIDER.find(CRELLY).find('.cs-preloader').remove();
|
500 |
});
|
501 |
}
|
502 |
-
|
503 |
/*******************************/
|
504 |
/** LAYOUT AND RESPONSIVENESS **/
|
505 |
/*******************************/
|
506 |
-
|
507 |
// Sets slider and slides. Width and height are scaled
|
508 |
function setLayout() {
|
509 |
var layout = settings.layout;
|
510 |
var width, height;
|
511 |
-
|
512 |
switch(layout) {
|
513 |
case 'fixed':
|
514 |
width = settings.startWidth;
|
@@ -522,8 +522,8 @@
|
|
522 |
'height' : getScaled(height),
|
523 |
});
|
524 |
break;
|
525 |
-
|
526 |
-
case 'full-width':
|
527 |
width = SLIDER.width();
|
528 |
height = settings.startHeight;
|
529 |
SLIDER.find(CRELLY).css({
|
@@ -540,96 +540,96 @@
|
|
540 |
break;
|
541 |
}
|
542 |
}
|
543 |
-
|
544 |
// Returns the element top end left gaps (when the slider is full-width is very useful)
|
545 |
-
function getLayoutGaps(element) {
|
546 |
var top_gap = (getHeight() - settings.startHeight) / 2;
|
547 |
var left_gap = (getWidth() - settings.startWidth) / 2;
|
548 |
-
|
549 |
var new_top = 0;
|
550 |
var new_left = 0;
|
551 |
-
|
552 |
if(top_gap > 0) {
|
553 |
new_top = top_gap;
|
554 |
}
|
555 |
if(left_gap > 0) {
|
556 |
new_left = left_gap;
|
557 |
}
|
558 |
-
|
559 |
return {
|
560 |
top: new_top,
|
561 |
left: new_left,
|
562 |
};
|
563 |
}
|
564 |
-
|
565 |
// Scales every element to make it responsive. It automatically restarts the current slide
|
566 |
function setResponsive() {
|
567 |
settings.beforeSetResponsive();
|
568 |
-
|
569 |
var slides = getSlides();
|
570 |
-
|
571 |
stop(true);
|
572 |
-
|
573 |
slides.each(function() {
|
574 |
var slide = $(this);
|
575 |
var elements = slide.find(ELEMENTS);
|
576 |
-
|
577 |
slide.finish();
|
578 |
slideIn(slide);
|
579 |
slide.finish();
|
580 |
-
|
581 |
elements.each(function() {
|
582 |
var element = $(this);
|
583 |
-
|
584 |
element.finish();
|
585 |
elementIn(element);
|
586 |
element.finish();
|
587 |
-
|
588 |
if(isVideo(element)) {
|
589 |
pauseVideo(element);
|
590 |
}
|
591 |
});
|
592 |
});
|
593 |
-
|
594 |
setScale();
|
595 |
-
|
596 |
setLayout();
|
597 |
-
|
598 |
slides.each(function() {
|
599 |
var slide = $(this);
|
600 |
var elements = slide.find(ELEMENTS);
|
601 |
-
|
602 |
-
elements.each(function() {
|
603 |
var element = $(this);
|
604 |
-
|
605 |
element.find('*').each(function() {
|
606 |
var element_content = $(this);
|
607 |
scaleElement(element_content);
|
608 |
});
|
609 |
-
|
610 |
scaleElement(element);
|
611 |
-
|
612 |
element.finish();
|
613 |
elementOut(element);
|
614 |
element.finish();
|
615 |
-
|
616 |
if(isVideo(element)) {
|
617 |
pauseVideo(element);
|
618 |
}
|
619 |
});
|
620 |
-
|
621 |
slide.finish();
|
622 |
slideOut(slide);
|
623 |
slide.finish();
|
624 |
});
|
625 |
-
|
626 |
window_width_before_setResponsive = $(window).width();
|
627 |
-
|
628 |
play();
|
629 |
}
|
630 |
-
|
631 |
// Scales a text or an image and their contents
|
632 |
-
function scaleElement(element) {
|
633 |
// Standard element
|
634 |
element.css({
|
635 |
'top' : getScaled(getItemData(element, 'top') + getLayoutGaps(element).top),
|
@@ -639,16 +639,16 @@
|
|
639 |
'padding-bottom' : getScaled(getItemData(element, 'padding-bottom')),
|
640 |
'padding-left' : getScaled(getItemData(element, 'padding-left')),
|
641 |
});
|
642 |
-
|
643 |
// Element contains text
|
644 |
-
if(element.is('input') || element.is('button') || element.text().trim().length) {
|
645 |
-
element.css({
|
646 |
'line-height' : getScaled(getItemData(element, 'line-height')) + 'px',
|
647 |
'letter-spacing' : getScaled(getItemData(element, 'letter-spacing')),
|
648 |
'font-size' : getScaled(getItemData(element, 'font-size')),
|
649 |
});
|
650 |
}
|
651 |
-
|
652 |
// Element doesn't contain text (like images or iframes)
|
653 |
else {
|
654 |
element.css({
|
@@ -657,12 +657,12 @@
|
|
657 |
});
|
658 |
}
|
659 |
}
|
660 |
-
|
661 |
// Using the start dimensions, sets how the slider and it's elements should be scaled
|
662 |
function setScale() {
|
663 |
var slider_width = SLIDER.width();
|
664 |
var start_width = settings.startWidth;
|
665 |
-
|
666 |
if(slider_width >= start_width || ! settings.responsive) {
|
667 |
scale = 1;
|
668 |
}
|
@@ -670,40 +670,40 @@
|
|
670 |
scale = slider_width / start_width;
|
671 |
}
|
672 |
}
|
673 |
-
|
674 |
// Using the current scale variable, returns the value that receives correctly scaled. Remember to always use getScaled() to get positions & dimensions of the elements
|
675 |
function getScaled(value) {
|
676 |
return value * scale;
|
677 |
}
|
678 |
-
|
679 |
/*********************/
|
680 |
/** SLIDER COMMANDS **/
|
681 |
/*********************/
|
682 |
-
|
683 |
// Runs Crelly from the current slide
|
684 |
-
function play() {
|
685 |
if(settings.automaticSlide) {
|
686 |
loopSlides();
|
687 |
}
|
688 |
else {
|
689 |
executeSlide(current_slide);
|
690 |
}
|
691 |
-
|
692 |
first_play = false;
|
693 |
}
|
694 |
-
|
695 |
// Stops all the slides and the elements and resets the progress bar
|
696 |
-
function stop(finish_queues) {
|
697 |
for(var i = 0; i < elements_times_timers.length; i++) {
|
698 |
elements_times_timers[i].clear();
|
699 |
}
|
700 |
-
|
701 |
for(var i = 0; i < elements_delays_timers.length; i++) {
|
702 |
elements_delays_timers[i].clear();
|
703 |
}
|
704 |
-
|
705 |
current_slide_time_timer.clear();
|
706 |
-
|
707 |
getSlides().each(function() {
|
708 |
var temp_slide = $(this);
|
709 |
if(finish_queues) {
|
@@ -722,56 +722,56 @@
|
|
722 |
}
|
723 |
});
|
724 |
});
|
725 |
-
|
726 |
resetProgressBar();
|
727 |
}
|
728 |
-
|
729 |
// Stops the progress bar and the slide time timer
|
730 |
function pause() {
|
731 |
if(! paused && can_pause) {
|
732 |
settings.beforePause();
|
733 |
-
|
734 |
var progress_bar = SLIDER.find(CRELLY).find('.cs-progress-bar');
|
735 |
progress_bar.stop(true);
|
736 |
current_slide_time_timer.pause();
|
737 |
-
|
738 |
paused = true;
|
739 |
}
|
740 |
}
|
741 |
-
|
742 |
// Animates until the end the progress bar and resumes the current slide time timer
|
743 |
function resume() {
|
744 |
if(paused && can_pause) {
|
745 |
settings.beforeResume();
|
746 |
-
|
747 |
-
var progress_bar = SLIDER.find(CRELLY).find('.cs-progress-bar');
|
748 |
var slide_time = getItemData(getSlide(current_slide), 'time');
|
749 |
var remained_delay = current_slide_time_timer.getRemaining();
|
750 |
-
|
751 |
progress_bar.animate({
|
752 |
'width' : '100%',
|
753 |
}, remained_delay);
|
754 |
-
|
755 |
current_slide_time_timer.resume();
|
756 |
-
|
757 |
paused = false;
|
758 |
}
|
759 |
}
|
760 |
-
|
761 |
/****************************************/
|
762 |
/** SLIDER OR SLIDES DATAS / UTILITIES **/
|
763 |
/****************************************/
|
764 |
-
|
765 |
// Returns the Crelly Slider container width
|
766 |
function getWidth() {
|
767 |
return SLIDER.find(CRELLY).width();
|
768 |
}
|
769 |
-
|
770 |
// Returns the Crelly Slider container height
|
771 |
function getHeight() {
|
772 |
return SLIDER.find(CRELLY).height();
|
773 |
}
|
774 |
-
|
775 |
// Returns the index of the next slide
|
776 |
function getNextSlide() {
|
777 |
if(current_slide + 1 == total_slides) {
|
@@ -779,7 +779,7 @@
|
|
779 |
}
|
780 |
return current_slide + 1;
|
781 |
}
|
782 |
-
|
783 |
// Returns the index of the previous slide
|
784 |
function getPreviousSlide() {
|
785 |
if(current_slide - 1 < 0) {
|
@@ -787,18 +787,18 @@
|
|
787 |
}
|
788 |
return current_slide - 1;
|
789 |
}
|
790 |
-
|
791 |
// Returns a "data" of an item (slide or element). If is an integer || float, returns the parseInt() || parseFloat() of it. If the slide or the element has no data returns the default value
|
792 |
function getItemData(item, data) {
|
793 |
var is_slide;
|
794 |
-
|
795 |
if(item.parent('ul').hasClass('cs-slides')) {
|
796 |
is_slide = true;
|
797 |
}
|
798 |
else {
|
799 |
is_slide = false;
|
800 |
}
|
801 |
-
|
802 |
switch(data) {
|
803 |
case 'ease-in' :
|
804 |
if(is_slide) {
|
@@ -808,7 +808,7 @@
|
|
808 |
return isNaN(parseInt(item.data(data))) ? settings.elementsEaseIn : parseInt(item.data(data));
|
809 |
}
|
810 |
break;
|
811 |
-
|
812 |
case 'ease-out' :
|
813 |
if(is_slide) {
|
814 |
return isNaN(parseInt(item.data(data))) ? settings.slidesEaseOut : parseInt(item.data(data));
|
@@ -817,12 +817,12 @@
|
|
817 |
return isNaN(parseInt(item.data(data))) ? settings.elementsEaseOut : parseInt(item.data(data));
|
818 |
}
|
819 |
break;
|
820 |
-
|
821 |
case 'delay' :
|
822 |
return isNaN(parseInt(item.data(data))) ? settings.elementsDelay : parseInt(item.data(data));
|
823 |
-
|
824 |
break;
|
825 |
-
|
826 |
case 'time' :
|
827 |
if(is_slide) {
|
828 |
return isNaN(parseInt(item.data(data))) ? settings.slidesTime : parseInt(item.data(data));
|
@@ -836,7 +836,7 @@
|
|
836 |
}
|
837 |
}
|
838 |
break;
|
839 |
-
|
840 |
case 'ignore-ease-out' :
|
841 |
if(parseInt(item.data(data)) == 1) {
|
842 |
return true;
|
@@ -846,7 +846,7 @@
|
|
846 |
}
|
847 |
return settings.ignoreElementsEaseOut;
|
848 |
break;
|
849 |
-
|
850 |
case 'autoplay' :
|
851 |
if(parseInt(item.data(data)) == 1) {
|
852 |
return true;
|
@@ -856,7 +856,7 @@
|
|
856 |
}
|
857 |
return settings.videoAutoplay;
|
858 |
break;
|
859 |
-
|
860 |
case 'loop' :
|
861 |
if(parseInt(item.data(data)) == 1) {
|
862 |
return true;
|
@@ -866,11 +866,11 @@
|
|
866 |
}
|
867 |
return settings.videoLoop;
|
868 |
break;
|
869 |
-
|
870 |
case 'top' :
|
871 |
case 'left' :
|
872 |
case 'width' :
|
873 |
-
case 'height' :
|
874 |
case 'padding-top' :
|
875 |
case 'padding-right' :
|
876 |
case 'padding-bottom' :
|
@@ -880,29 +880,29 @@
|
|
880 |
case 'font-size' :
|
881 |
return isNaN(parseFloat(item.data(data))) ? 0 : parseFloat(item.data(data));
|
882 |
break;
|
883 |
-
|
884 |
case 'in' :
|
885 |
case 'out' :
|
886 |
case 'opacity' :
|
887 |
return item.data(data);
|
888 |
break;
|
889 |
-
|
890 |
default :
|
891 |
return false;
|
892 |
break;
|
893 |
}
|
894 |
}
|
895 |
-
|
896 |
// Returns the slides DOM elements
|
897 |
function getSlides() {
|
898 |
return SLIDER.find(CRELLY).find(SLIDES).find(SLIDE);
|
899 |
}
|
900 |
-
|
901 |
// Returns the slide DOM element
|
902 |
function getSlide(slide_index) {
|
903 |
return getSlides().eq(slide_index);
|
904 |
}
|
905 |
-
|
906 |
// Timeout with useful methods
|
907 |
function Timer(callback, delay) {
|
908 |
var id;
|
@@ -921,11 +921,11 @@
|
|
921 |
callback();
|
922 |
}, remaining);
|
923 |
};
|
924 |
-
|
925 |
this.clear = function () {
|
926 |
clearTimeout(id);
|
927 |
};
|
928 |
-
|
929 |
// For now, works only after this.pause(). No need to calculate in other moments
|
930 |
this.getRemaining = function() {
|
931 |
return remaining;
|
@@ -933,53 +933,53 @@
|
|
933 |
|
934 |
this.resume();
|
935 |
}
|
936 |
-
|
937 |
// Returns true if the user is using a mobile browser
|
938 |
function isMobile() {
|
939 |
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
940 |
}
|
941 |
-
|
942 |
/*****************/
|
943 |
/** SLIDER CORE **/
|
944 |
/*****************/
|
945 |
-
|
946 |
// Loops trough the slides
|
947 |
function loopSlides() {
|
948 |
-
executeSlide(current_slide).done(function() {
|
949 |
if(! paused) {
|
950 |
current_slide = getNextSlide();
|
951 |
loopSlides();
|
952 |
}
|
953 |
});
|
954 |
}
|
955 |
-
|
956 |
// Resets the progress bar and draws the progress bar of the current slide
|
957 |
function drawProgressBar() {
|
958 |
var progress_bar = SLIDER.find(CRELLY).find('.cs-progress-bar');
|
959 |
-
|
960 |
resetProgressBar();
|
961 |
-
|
962 |
progress_bar.animate({
|
963 |
'width' : '100%',
|
964 |
}, getItemData(getSlide(current_slide), 'time'));
|
965 |
}
|
966 |
-
|
967 |
// Resets the progress bar animation and CSS
|
968 |
function resetProgressBar() {
|
969 |
var progress_bar = SLIDER.find(CRELLY).find('.cs-progress-bar');
|
970 |
-
|
971 |
-
progress_bar.stop();
|
972 |
progress_bar.css('width', 0);
|
973 |
}
|
974 |
-
|
975 |
// Sets the right HTML classes of the navigation links
|
976 |
function setNavigationLink() {
|
977 |
var nav = SLIDER.find(CRELLY).find('.cs-navigation');
|
978 |
var links = nav.find('> .cs-slide-link');
|
979 |
-
|
980 |
links.each(function() {
|
981 |
var link = $(this);
|
982 |
-
|
983 |
if(link.index() == current_slide) {
|
984 |
link.addClass('cs-active');
|
985 |
}
|
@@ -988,106 +988,106 @@
|
|
988 |
}
|
989 |
});
|
990 |
}
|
991 |
-
|
992 |
// Finishes the current slide (animations out of elements and slide) and then plays the new slide
|
993 |
-
function changeSlide(slide_index) {
|
994 |
if(slide_index == current_slide) {
|
995 |
return;
|
996 |
}
|
997 |
-
|
998 |
-
if(can_pause || executed_slide) {
|
999 |
stop(false);
|
1000 |
-
|
1001 |
finishSlide(current_slide, false, true).done(function() {
|
1002 |
current_slide = slide_index;
|
1003 |
play();
|
1004 |
});
|
1005 |
}
|
1006 |
}
|
1007 |
-
|
1008 |
// Executes a slide completely. If the auto loop is disabled won't animate out the slide and the elements with time == "all"
|
1009 |
function executeSlide(slide_index) {
|
1010 |
settings.beforeSlideStart();
|
1011 |
-
|
1012 |
var def = new $.Deferred();
|
1013 |
-
|
1014 |
executed_slide = false;
|
1015 |
-
|
1016 |
// If something is still animating, reset
|
1017 |
for(var i = 0; i < elements_times_timers.length; i++) {
|
1018 |
elements_times_timers[i].clear();
|
1019 |
-
}
|
1020 |
for(var i = 0; i < elements_delays_timers.length; i++) {
|
1021 |
elements_delays_timers[i].clear();
|
1022 |
-
}
|
1023 |
current_slide_time_timer.clear();
|
1024 |
getSlide(slide_index).finish();
|
1025 |
slideOut(slide_index);
|
1026 |
-
getSlide(slide_index).finish();
|
1027 |
var elements = getSlide(slide_index).find(ELEMENTS);
|
1028 |
elements.each(function() {
|
1029 |
-
var element = $(this);
|
1030 |
-
element.finish();
|
1031 |
elementOut(element);
|
1032 |
element.finish();
|
1033 |
});
|
1034 |
-
|
1035 |
-
|
1036 |
setNavigationLink();
|
1037 |
-
|
1038 |
runSlide(slide_index);
|
1039 |
-
|
1040 |
if(settings.automaticSlide) {
|
1041 |
finishSlide(slide_index, true, true).done(function() {
|
1042 |
executed_slide = true;
|
1043 |
-
def.resolve();
|
1044 |
});
|
1045 |
}
|
1046 |
else {
|
1047 |
finishSlide(slide_index, true, false).done(function() {
|
1048 |
-
executed_slide = true;
|
1049 |
-
def.resolve();
|
1050 |
});
|
1051 |
}
|
1052 |
-
|
1053 |
return def.promise();
|
1054 |
}
|
1055 |
-
|
1056 |
// Executes the in animation of the slide and it's elements
|
1057 |
-
function runSlide(slide_index) {
|
1058 |
var slide = getSlide(slide_index);
|
1059 |
var elements = slide.find(ELEMENTS);
|
1060 |
-
|
1061 |
var elements_in_completed = 0;
|
1062 |
var slide_in_completed = false;
|
1063 |
-
|
1064 |
var def = new $.Deferred();
|
1065 |
-
|
1066 |
can_pause = false;
|
1067 |
-
|
1068 |
// Do slide in animation
|
1069 |
-
slideIn(slide_index).done(function() {
|
1070 |
drawProgressBar();
|
1071 |
-
|
1072 |
can_pause = true;
|
1073 |
-
|
1074 |
slide_in_completed = true;
|
1075 |
if(slide_in_completed && elements_in_completed == elements.length) {
|
1076 |
def.resolve();
|
1077 |
}
|
1078 |
});
|
1079 |
-
|
1080 |
// Do elements in animation
|
1081 |
elements.each(function() {
|
1082 |
var element = $(this);
|
1083 |
var element_delay = getItemData(element, 'delay');
|
1084 |
-
|
1085 |
elements_delays_timers.push(new Timer(function() {
|
1086 |
-
elementIn(element).done(function() {
|
1087 |
if(isVideo(element)) {
|
1088 |
playVideo(element);
|
1089 |
}
|
1090 |
-
|
1091 |
elements_in_completed++;
|
1092 |
if(slide_in_completed && elements_in_completed == elements.length) {
|
1093 |
def.resolve();
|
@@ -1095,46 +1095,46 @@
|
|
1095 |
});
|
1096 |
}, element_delay));
|
1097 |
});
|
1098 |
-
|
1099 |
return def.promise();
|
1100 |
}
|
1101 |
-
|
1102 |
// Does all times, elements out animations and slide out animation
|
1103 |
// execute_time, if true, will do the slide and the elements timers. If false, the timers will be = 0 so the plugin will execute the code of the callback function immediately.
|
1104 |
// animate_all_out, if false, will execute the elements with time != all out animations but not the slide and the elements with time == all out animations. If true, executes all the out animations
|
1105 |
-
function finishSlide(slide_index, execute_time, animate_all_out) {
|
1106 |
var slide = getSlide(slide_index);
|
1107 |
var elements = slide.find(ELEMENTS);
|
1108 |
var data_time = execute_time ? getItemData(slide, 'time') + getItemData(slide, 'ease-in') : 0;
|
1109 |
-
|
1110 |
var elements_out_completed = 0;
|
1111 |
var slide_time_completed = false;
|
1112 |
-
|
1113 |
var def = new $.Deferred();
|
1114 |
-
|
1115 |
// Elements with time != "all"
|
1116 |
elements.each(function() {
|
1117 |
var element = $(this);
|
1118 |
var time = getItemData(element, 'time');
|
1119 |
-
|
1120 |
if(time != 'all') {
|
1121 |
var final_element_time = execute_time ? time : 0;
|
1122 |
-
|
1123 |
if(getItemData(element, 'ignore-ease-out')) {
|
1124 |
elements_out_completed++;
|
1125 |
-
|
1126 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1127 |
pauseVideos(slide_index);
|
1128 |
slideOut(slide_index);
|
1129 |
def.resolve();
|
1130 |
}
|
1131 |
}
|
1132 |
-
|
1133 |
-
elements_times_timers.push(new Timer(function() {
|
1134 |
elementOut(element).done(function() {
|
1135 |
if(! getItemData(element, 'ignore-ease-out')) {
|
1136 |
elements_out_completed++;
|
1137 |
-
|
1138 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1139 |
pauseVideos(slide_index);
|
1140 |
slideOut(slide_index);
|
@@ -1145,45 +1145,45 @@
|
|
1145 |
}, final_element_time));
|
1146 |
}
|
1147 |
});
|
1148 |
-
|
1149 |
// Execute slide time
|
1150 |
current_slide_time_timer = new Timer(function() {
|
1151 |
can_pause = false;
|
1152 |
-
|
1153 |
resetProgressBar();
|
1154 |
-
|
1155 |
slide_time_completed = true;
|
1156 |
-
|
1157 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1158 |
pauseVideos(slide_index);
|
1159 |
slideOut(slide_index);
|
1160 |
def.resolve();
|
1161 |
-
}
|
1162 |
-
|
1163 |
if(! animate_all_out) {
|
1164 |
def.resolve();
|
1165 |
}
|
1166 |
-
else {
|
1167 |
// Elements with time == "all"
|
1168 |
elements.each(function() {
|
1169 |
var element = $(this);
|
1170 |
var time = getItemData(element, 'time');
|
1171 |
-
|
1172 |
if(time == 'all') {
|
1173 |
if(getItemData(element, 'ignore-ease-out')) {
|
1174 |
elements_out_completed++;
|
1175 |
-
|
1176 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1177 |
pauseVideos(slide_index);
|
1178 |
slideOut(slide_index);
|
1179 |
def.resolve();
|
1180 |
}
|
1181 |
}
|
1182 |
-
|
1183 |
elementOut(element).done(function() {
|
1184 |
if(! getItemData(element, 'ignore-ease-out')) {
|
1185 |
elements_out_completed++;
|
1186 |
-
|
1187 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1188 |
pauseVideos(slide_index);
|
1189 |
slideOut(slide_index);
|
@@ -1195,17 +1195,17 @@
|
|
1195 |
});
|
1196 |
}
|
1197 |
}, data_time);
|
1198 |
-
|
1199 |
return def.promise();
|
1200 |
}
|
1201 |
-
|
1202 |
// VIDEOS FUNCTIONS
|
1203 |
-
|
1204 |
// Returns true if the element is a YouTube or a Vimeo iframe
|
1205 |
function isVideo(element) {
|
1206 |
return isYoutubeVideo(element) || isVimeoVideo(element);
|
1207 |
}
|
1208 |
-
|
1209 |
// Checks what's the source of the video, then plays it
|
1210 |
function playVideo(element) {
|
1211 |
if(isYoutubeVideo(element)) {
|
@@ -1215,13 +1215,13 @@
|
|
1215 |
playVimeoVideo(element);
|
1216 |
}
|
1217 |
}
|
1218 |
-
|
1219 |
// Pauses all the YouTube and Vimeo videos
|
1220 |
function pauseVideos(slide_index) {
|
1221 |
pauseYoutubeVideos(slide_index);
|
1222 |
pauseVimeoVideos(slide_index);
|
1223 |
}
|
1224 |
-
|
1225 |
// Checks what's the source of the video, then pauses it
|
1226 |
function pauseVideo(element) {
|
1227 |
if(isYoutubeVideo(element)) {
|
@@ -1231,17 +1231,17 @@
|
|
1231 |
pauseVimeoVideo(element);
|
1232 |
}
|
1233 |
}
|
1234 |
-
|
1235 |
// Checks if the element is a YouTube video
|
1236 |
function isYoutubeVideo(element) {
|
1237 |
return element.hasClass('cs-yt-iframe');
|
1238 |
}
|
1239 |
-
|
1240 |
// Returns the player associated to the element
|
1241 |
function getYoutubePlayer(element) {
|
1242 |
return youtube_videos[element.attr('id')].player;
|
1243 |
}
|
1244 |
-
|
1245 |
/*
|
1246 |
Returns:
|
1247 |
-1 – unstarted
|
@@ -1254,97 +1254,97 @@
|
|
1254 |
function getYoutubePlayerState(element) {
|
1255 |
return getYoutubePlayer(element).getPlayerState();
|
1256 |
}
|
1257 |
-
|
1258 |
// Checks if the video can be played and plays it
|
1259 |
function playYoutubeVideo(element) {
|
1260 |
// If autplay and first slide loop. Disabled on mobile for compatibility reasons (details on the Youtube's website)
|
1261 |
if(getItemData(element, 'autoplay') && ! youtube_videos[element.attr('id')].played_once && ! isMobile()) {
|
1262 |
getYoutubePlayer(element).playVideo();
|
1263 |
}
|
1264 |
-
|
1265 |
// If was paused
|
1266 |
if(getYoutubePlayerState(element) == 2) {
|
1267 |
getYoutubePlayer(element).playVideo();
|
1268 |
}
|
1269 |
-
|
1270 |
youtube_videos[element.attr('id')].played_once = true;
|
1271 |
}
|
1272 |
-
|
1273 |
// Pause all the videos in a slide
|
1274 |
function pauseYoutubeVideos(slide_index) {
|
1275 |
getSlide(slide_index).each(function() {
|
1276 |
var slide = $(this);
|
1277 |
-
|
1278 |
slide.find(ELEMENTS + '.cs-yt-iframe').each(function() {
|
1279 |
pauseYoutubeVideo($(this));
|
1280 |
});
|
1281 |
});
|
1282 |
}
|
1283 |
-
|
1284 |
// Checks if the video can be paused and pauses it
|
1285 |
function pauseYoutubeVideo(element) {
|
1286 |
if(getYoutubePlayerState(element) == 1) {
|
1287 |
getYoutubePlayer(element).pauseVideo();
|
1288 |
}
|
1289 |
}
|
1290 |
-
|
1291 |
// Checks if the element is a Vimeo video
|
1292 |
function isVimeoVideo(element) {
|
1293 |
return element.hasClass('cs-vimeo-iframe');
|
1294 |
}
|
1295 |
-
|
1296 |
// Returns the player associated to the element
|
1297 |
function getVimeoPlayer(element) {
|
1298 |
return vimeo_videos[element.attr('id')].player;
|
1299 |
}
|
1300 |
-
|
1301 |
// Plays the video
|
1302 |
-
function playVimeoVideo(element) {
|
1303 |
// If autplay and first slide loop. Disabled on mobile for compatibility reasons (details on the Vimeo's website)
|
1304 |
if(getItemData(element, 'autoplay') && ! vimeo_videos[element.attr('id')].played_once && ! isMobile()) {
|
1305 |
getVimeoPlayer(element).api('play');
|
1306 |
}
|
1307 |
-
|
1308 |
// If was paused
|
1309 |
if(getVimeoPlayer(element).api('paused') && ! vimeo_videos[element.attr('id')].ended && vimeo_videos[element.attr('id')].played_once) {
|
1310 |
getVimeoPlayer(element).api('play');
|
1311 |
}
|
1312 |
}
|
1313 |
-
|
1314 |
// Pause all the videos in a slide
|
1315 |
function pauseVimeoVideos(slide_index) {
|
1316 |
getSlide(slide_index).each(function() {
|
1317 |
var slide = $(this);
|
1318 |
-
|
1319 |
slide.find(ELEMENTS + '.cs-vimeo-iframe').each(function() {
|
1320 |
pauseVimeoVideo($(this));
|
1321 |
});
|
1322 |
});
|
1323 |
}
|
1324 |
-
|
1325 |
// Pauses the video
|
1326 |
function pauseVimeoVideo(element) {
|
1327 |
getVimeoPlayer(element).api('pause');
|
1328 |
}
|
1329 |
-
|
1330 |
/****************/
|
1331 |
/** ANIMATIONS **/
|
1332 |
/****************/
|
1333 |
-
|
1334 |
// WARNING: slideIn and elementIn must reset every CSS propriety to the correct value before starting
|
1335 |
-
|
1336 |
// Does slide in animation
|
1337 |
-
function slideIn(slide_index) {
|
1338 |
var slide = getSlide(slide_index);
|
1339 |
var data_in = getItemData(slide, 'in');
|
1340 |
var data_ease_in = getItemData(slide, 'ease-in');
|
1341 |
-
|
1342 |
var def = new $.Deferred();
|
1343 |
-
|
1344 |
if(slide.css('display') == 'block') {
|
1345 |
return def.resolve().promise();
|
1346 |
}
|
1347 |
-
|
1348 |
// If first play, don't execute the animation
|
1349 |
if(first_play) {
|
1350 |
slide.css({
|
@@ -1355,7 +1355,7 @@
|
|
1355 |
});
|
1356 |
return def.resolve().promise();
|
1357 |
}
|
1358 |
-
|
1359 |
switch(data_in) {
|
1360 |
case 'fade' :
|
1361 |
slide.css({
|
@@ -1368,7 +1368,7 @@
|
|
1368 |
'opacity' : getItemData(slide, 'opacity'),
|
1369 |
}, data_ease_in, function() { def.resolve(); });
|
1370 |
break;
|
1371 |
-
|
1372 |
case 'fadeLeft' :
|
1373 |
slide.css({
|
1374 |
'display' : 'block',
|
@@ -1381,7 +1381,7 @@
|
|
1381 |
'left' : 0,
|
1382 |
}, data_ease_in, function() { def.resolve(); });
|
1383 |
break;
|
1384 |
-
|
1385 |
case 'fadeRight' :
|
1386 |
slide.css({
|
1387 |
'display' : 'block',
|
@@ -1394,7 +1394,7 @@
|
|
1394 |
'left' : 0,
|
1395 |
}, data_ease_in, function() { def.resolve(); });
|
1396 |
break;
|
1397 |
-
|
1398 |
case 'slideLeft' :
|
1399 |
slide.css({
|
1400 |
'display' : 'block',
|
@@ -1406,7 +1406,7 @@
|
|
1406 |
'left' : 0,
|
1407 |
}, data_ease_in, function() { def.resolve(); });
|
1408 |
break;
|
1409 |
-
|
1410 |
case 'slideRight' :
|
1411 |
slide.css({
|
1412 |
'display' : 'block',
|
@@ -1418,7 +1418,7 @@
|
|
1418 |
'left' : 0,
|
1419 |
}, data_ease_in, function() { def.resolve(); });
|
1420 |
break;
|
1421 |
-
|
1422 |
case 'slideUp' :
|
1423 |
slide.css({
|
1424 |
'display' : 'block',
|
@@ -1430,7 +1430,7 @@
|
|
1430 |
'top' : 0,
|
1431 |
}, data_ease_in, function() { def.resolve(); });
|
1432 |
break;
|
1433 |
-
|
1434 |
case 'slideDown' :
|
1435 |
slide.css({
|
1436 |
'display' : 'block',
|
@@ -1442,7 +1442,7 @@
|
|
1442 |
'top' : 0,
|
1443 |
}, data_ease_in, function() { def.resolve(); });
|
1444 |
break;
|
1445 |
-
|
1446 |
default:
|
1447 |
slide.css({
|
1448 |
'display' : 'block',
|
@@ -1453,22 +1453,22 @@
|
|
1453 |
def.resolve();
|
1454 |
break;
|
1455 |
}
|
1456 |
-
|
1457 |
return def.promise();
|
1458 |
}
|
1459 |
-
|
1460 |
// Does slide out animation
|
1461 |
function slideOut(slide_index) {
|
1462 |
var slide = getSlide(slide_index);
|
1463 |
var data_out = getItemData(slide, 'out');
|
1464 |
var data_ease_out = getItemData(slide, 'ease-out');
|
1465 |
-
|
1466 |
var def = new $.Deferred();
|
1467 |
-
|
1468 |
if(slide.css('display') == 'none') {
|
1469 |
return def.resolve().promise();
|
1470 |
}
|
1471 |
-
|
1472 |
switch(data_out) {
|
1473 |
case 'fade' :
|
1474 |
slide.animate({
|
@@ -1482,7 +1482,7 @@
|
|
1482 |
def.resolve();
|
1483 |
});
|
1484 |
break;
|
1485 |
-
|
1486 |
case 'fadeLeft' :
|
1487 |
slide.animate({
|
1488 |
'opacity' : 0,
|
@@ -1497,7 +1497,7 @@
|
|
1497 |
def.resolve();
|
1498 |
});
|
1499 |
break;
|
1500 |
-
|
1501 |
case 'fadeRight' :
|
1502 |
slide.animate({
|
1503 |
'opacity' : 0,
|
@@ -1512,7 +1512,7 @@
|
|
1512 |
def.resolve();
|
1513 |
});
|
1514 |
break;
|
1515 |
-
|
1516 |
case 'slideLeft' :
|
1517 |
slide.animate({
|
1518 |
'left' : -getWidth(),
|
@@ -1525,7 +1525,7 @@
|
|
1525 |
def.resolve();
|
1526 |
});
|
1527 |
break;
|
1528 |
-
|
1529 |
case 'slideRight' :
|
1530 |
slide.animate({
|
1531 |
'left' : getWidth(),
|
@@ -1538,7 +1538,7 @@
|
|
1538 |
def.resolve();
|
1539 |
});
|
1540 |
break;
|
1541 |
-
|
1542 |
case 'slideUp' :
|
1543 |
slide.animate({
|
1544 |
'top' : -getHeight(),
|
@@ -1551,7 +1551,7 @@
|
|
1551 |
def.resolve();
|
1552 |
});
|
1553 |
break;
|
1554 |
-
|
1555 |
case 'slideDown' :
|
1556 |
slide.animate({
|
1557 |
'top' : getHeight(),
|
@@ -1564,7 +1564,7 @@
|
|
1564 |
def.resolve();
|
1565 |
});
|
1566 |
break;
|
1567 |
-
|
1568 |
default :
|
1569 |
slide.css({
|
1570 |
'display' : 'none',
|
@@ -1572,10 +1572,10 @@
|
|
1572 |
def.resolve();
|
1573 |
break;
|
1574 |
}
|
1575 |
-
|
1576 |
return def.promise();
|
1577 |
}
|
1578 |
-
|
1579 |
// Does element in animation
|
1580 |
function elementIn(element) {
|
1581 |
var element_width = element.outerWidth();
|
@@ -1584,13 +1584,13 @@
|
|
1584 |
var data_ease_in = getItemData(element, 'ease-in');
|
1585 |
var data_top = getItemData(element, 'top');
|
1586 |
var data_left = getItemData(element, 'left');
|
1587 |
-
|
1588 |
var def = new $.Deferred();
|
1589 |
-
|
1590 |
if(element.css('display') == 'block') {
|
1591 |
return def.resolve().promise();
|
1592 |
}
|
1593 |
-
|
1594 |
switch(data_in) {
|
1595 |
case 'slideDown' :
|
1596 |
element.css({
|
@@ -1602,7 +1602,7 @@
|
|
1602 |
'top' : getScaled(data_top + getLayoutGaps(element).top),
|
1603 |
}, data_ease_in, function() { def.resolve(); });
|
1604 |
break;
|
1605 |
-
|
1606 |
case 'slideUp' :
|
1607 |
element.css({
|
1608 |
'display' : 'block',
|
@@ -1613,7 +1613,7 @@
|
|
1613 |
'top' : getScaled(data_top + getLayoutGaps(element).top),
|
1614 |
}, data_ease_in, function() { def.resolve(); });
|
1615 |
break;
|
1616 |
-
|
1617 |
case 'slideLeft' :
|
1618 |
element.css({
|
1619 |
'display' : 'block',
|
@@ -1624,7 +1624,7 @@
|
|
1624 |
'left' : getScaled(data_left + getLayoutGaps(element).left),
|
1625 |
}, data_ease_in, function() { def.resolve(); });
|
1626 |
break;
|
1627 |
-
|
1628 |
case 'slideRight' :
|
1629 |
element.css({
|
1630 |
'display' : 'block',
|
@@ -1635,7 +1635,7 @@
|
|
1635 |
'left' : getScaled(data_left + getLayoutGaps(element).left),
|
1636 |
}, data_ease_in, function() { def.resolve(); });
|
1637 |
break;
|
1638 |
-
|
1639 |
case 'fade' :
|
1640 |
element.css({
|
1641 |
'display' : 'block',
|
@@ -1646,7 +1646,7 @@
|
|
1646 |
'opacity' : getItemData(element, 'opacity'),
|
1647 |
}, data_ease_in, function() { def.resolve(); });
|
1648 |
break;
|
1649 |
-
|
1650 |
case 'fadeDown' :
|
1651 |
element.css({
|
1652 |
'display' : 'block',
|
@@ -1658,7 +1658,7 @@
|
|
1658 |
'opacity' : getItemData(element, 'opacity'),
|
1659 |
}, data_ease_in, function() { def.resolve(); });
|
1660 |
break;
|
1661 |
-
|
1662 |
case 'fadeUp' :
|
1663 |
element.css({
|
1664 |
'display' : 'block',
|
@@ -1670,7 +1670,7 @@
|
|
1670 |
'opacity' : getItemData(element, 'opacity'),
|
1671 |
}, data_ease_in, function() { def.resolve(); });
|
1672 |
break;
|
1673 |
-
|
1674 |
case 'fadeLeft' :
|
1675 |
element.css({
|
1676 |
'display' : 'block',
|
@@ -1682,7 +1682,7 @@
|
|
1682 |
'opacity' : getItemData(element, 'opacity'),
|
1683 |
}, data_ease_in, function() { def.resolve(); });
|
1684 |
break;
|
1685 |
-
|
1686 |
case 'fadeRight' :
|
1687 |
element.css({
|
1688 |
'display' : 'block',
|
@@ -1694,7 +1694,7 @@
|
|
1694 |
'opacity' : getItemData(element, 'opacity'),
|
1695 |
}, data_ease_in, function() { def.resolve(); });
|
1696 |
break;
|
1697 |
-
|
1698 |
case 'fadeSmallDown' :
|
1699 |
element.css({
|
1700 |
'display' : 'block',
|
@@ -1706,7 +1706,7 @@
|
|
1706 |
'opacity' : getItemData(element, 'opacity'),
|
1707 |
}, data_ease_in, function() { def.resolve(); });
|
1708 |
break;
|
1709 |
-
|
1710 |
case 'fadeSmallUp' :
|
1711 |
element.css({
|
1712 |
'display' : 'block',
|
@@ -1718,7 +1718,7 @@
|
|
1718 |
'opacity' : getItemData(element, 'opacity'),
|
1719 |
}, data_ease_in, function() { def.resolve(); });
|
1720 |
break;
|
1721 |
-
|
1722 |
case 'fadeSmallLeft' :
|
1723 |
element.css({
|
1724 |
'display' : 'block',
|
@@ -1730,7 +1730,7 @@
|
|
1730 |
'opacity' : getItemData(element, 'opacity'),
|
1731 |
}, data_ease_in, function() { def.resolve(); });
|
1732 |
break;
|
1733 |
-
|
1734 |
case 'fadeSmallRight' :
|
1735 |
element.css({
|
1736 |
'display' : 'block',
|
@@ -1742,7 +1742,7 @@
|
|
1742 |
'opacity' : getItemData(element, 'opacity'),
|
1743 |
}, data_ease_in, function() { def.resolve(); });
|
1744 |
break;
|
1745 |
-
|
1746 |
default :
|
1747 |
element.css({
|
1748 |
'display' : 'block',
|
@@ -1753,23 +1753,23 @@
|
|
1753 |
def.resolve();
|
1754 |
break;
|
1755 |
}
|
1756 |
-
|
1757 |
return def.promise();
|
1758 |
}
|
1759 |
-
|
1760 |
// Does element out animation
|
1761 |
function elementOut(element) {
|
1762 |
var element_width = element.outerWidth();
|
1763 |
var element_height = element.outerHeight();
|
1764 |
var data_out = getItemData(element, 'out');
|
1765 |
var data_ease_out = getItemData(element, 'ease-out');
|
1766 |
-
|
1767 |
var def = new $.Deferred();
|
1768 |
-
|
1769 |
if(element.css('display') == 'none') {
|
1770 |
return def.resolve().promise();
|
1771 |
}
|
1772 |
-
|
1773 |
switch(data_out) {
|
1774 |
case 'slideDown' :
|
1775 |
element.animate({
|
@@ -1782,7 +1782,7 @@
|
|
1782 |
def.resolve();
|
1783 |
});
|
1784 |
break;
|
1785 |
-
|
1786 |
case 'slideUp' :
|
1787 |
element.animate({
|
1788 |
'top' : - element_height,
|
@@ -1794,7 +1794,7 @@
|
|
1794 |
def.resolve();
|
1795 |
});
|
1796 |
break;
|
1797 |
-
|
1798 |
case 'slideLeft' :
|
1799 |
element.animate({
|
1800 |
'left' : - element_width,
|
@@ -1806,7 +1806,7 @@
|
|
1806 |
def.resolve();
|
1807 |
});
|
1808 |
break;
|
1809 |
-
|
1810 |
case 'slideRight' :
|
1811 |
element.animate({
|
1812 |
'left' : getWidth(),
|
@@ -1818,7 +1818,7 @@
|
|
1818 |
def.resolve();
|
1819 |
});
|
1820 |
break;
|
1821 |
-
|
1822 |
case 'fade' :
|
1823 |
element.animate({
|
1824 |
'opacity' : 0,
|
@@ -1831,7 +1831,7 @@
|
|
1831 |
def.resolve();
|
1832 |
});
|
1833 |
break;
|
1834 |
-
|
1835 |
case 'fadeDown' :
|
1836 |
element.animate({
|
1837 |
'top' : getHeight(),
|
@@ -1845,7 +1845,7 @@
|
|
1845 |
def.resolve();
|
1846 |
});
|
1847 |
break;
|
1848 |
-
|
1849 |
case 'fadeUp' :
|
1850 |
element.animate({
|
1851 |
'top' : - element_height,
|
@@ -1859,7 +1859,7 @@
|
|
1859 |
def.resolve();
|
1860 |
});
|
1861 |
break;
|
1862 |
-
|
1863 |
case 'fadeLeft' :
|
1864 |
element.animate({
|
1865 |
'left' : - element_width,
|
@@ -1873,7 +1873,7 @@
|
|
1873 |
def.resolve();
|
1874 |
});
|
1875 |
break;
|
1876 |
-
|
1877 |
case 'fadeRight' :
|
1878 |
element.animate({
|
1879 |
'left' : getWidth(),
|
@@ -1887,7 +1887,7 @@
|
|
1887 |
def.resolve();
|
1888 |
});
|
1889 |
break;
|
1890 |
-
|
1891 |
case 'fadeSmallDown' :
|
1892 |
element.animate({
|
1893 |
'top' : getScaled(getItemData(element, 'top') + getLayoutGaps(element).top + 30),
|
@@ -1901,7 +1901,7 @@
|
|
1901 |
def.resolve();
|
1902 |
});
|
1903 |
break;
|
1904 |
-
|
1905 |
case 'fadeSmallUp' :
|
1906 |
element.animate({
|
1907 |
'top' : getScaled(getItemData(element, 'top') + getLayoutGaps(element).top - 30),
|
@@ -1915,7 +1915,7 @@
|
|
1915 |
def.resolve();
|
1916 |
});
|
1917 |
break;
|
1918 |
-
|
1919 |
case 'fadeSmallLeft' :
|
1920 |
element.animate({
|
1921 |
'left' : getScaled(getItemData(element, 'left') + getLayoutGaps(element).left - 30),
|
@@ -1929,7 +1929,7 @@
|
|
1929 |
def.resolve();
|
1930 |
});
|
1931 |
break;
|
1932 |
-
|
1933 |
case 'fadeSmallRight' :
|
1934 |
element.animate({
|
1935 |
'left' : getScaled(getItemData(element, 'left') + getLayoutGaps(element).left + 30),
|
@@ -1943,7 +1943,7 @@
|
|
1943 |
def.resolve();
|
1944 |
});
|
1945 |
break;
|
1946 |
-
|
1947 |
default :
|
1948 |
element.css({
|
1949 |
'display' : 'none',
|
@@ -1951,62 +1951,62 @@
|
|
1951 |
def.resolve();
|
1952 |
break;
|
1953 |
}
|
1954 |
-
|
1955 |
return def.promise();
|
1956 |
}
|
1957 |
-
|
1958 |
/**********************/
|
1959 |
/** PUBLIC FUNCTIONS **/
|
1960 |
/**********************/
|
1961 |
-
|
1962 |
this.resume = function() {
|
1963 |
resume();
|
1964 |
}
|
1965 |
-
|
1966 |
this.pause = function() {
|
1967 |
pause();
|
1968 |
}
|
1969 |
-
|
1970 |
this.nextSlide = function() {
|
1971 |
changeSlide(getNextSlide());
|
1972 |
}
|
1973 |
-
|
1974 |
this.previousSlide = function() {
|
1975 |
changeSlide(getPreviousSlide());
|
1976 |
}
|
1977 |
-
|
1978 |
this.changeSlide = function(slide_index) {
|
1979 |
changeSlide(slide_index);
|
1980 |
}
|
1981 |
-
|
1982 |
this.getCurrentSlide = function() {
|
1983 |
return current_slide;
|
1984 |
}
|
1985 |
-
|
1986 |
this.getTotalSlides = function() {
|
1987 |
return total_slides;
|
1988 |
}
|
1989 |
-
|
1990 |
};
|
1991 |
-
|
1992 |
/**************************/
|
1993 |
/** CRELLY SLIDER PLUGIN **/
|
1994 |
/**************************/
|
1995 |
-
|
1996 |
-
$.fn.crellySlider = function(options) {
|
1997 |
var settings = $.extend({
|
1998 |
layout : 'fixed',
|
1999 |
responsive : true,
|
2000 |
startWidth : 1140,
|
2001 |
startHeight : 500,
|
2002 |
-
|
2003 |
-
pauseOnHover : true,
|
2004 |
automaticSlide : true,
|
2005 |
showControls : true,
|
2006 |
showNavigation : true,
|
2007 |
showProgressBar : true,
|
2008 |
enableSwipe : true,
|
2009 |
-
|
2010 |
slidesTime : 3000,
|
2011 |
elementsDelay : 0,
|
2012 |
elementsTime : 'all',
|
@@ -2015,10 +2015,10 @@
|
|
2015 |
slidesEaseOut : 300,
|
2016 |
elementsEaseOut : 300,
|
2017 |
ignoreElementsEaseOut : false,
|
2018 |
-
|
2019 |
videoAutoplay : false,
|
2020 |
videoLoop : false,
|
2021 |
-
|
2022 |
beforeStart : function() {},
|
2023 |
beforeSetResponsive : function() {},
|
2024 |
beforeSlideStart : function() {},
|
@@ -2033,5 +2033,5 @@
|
|
2033 |
}
|
2034 |
});
|
2035 |
};
|
2036 |
-
|
2037 |
-
})(jQuery);
|
2 |
* Plugin Name: Crelly Slider
|
3 |
* Plugin URI: http://fabiorino1.altervista.org/projects/crellyslider
|
4 |
* Description: The first free WordPress slider with elements animations.
|
5 |
+
* Version: 1.1.2
|
6 |
* Author: fabiorino
|
7 |
* Author URI: http://fabiorino1.altervista.org
|
8 |
* License: MIT
|
9 |
*/
|
10 |
|
11 |
(function($) {
|
12 |
+
|
13 |
/************************/
|
14 |
/** EXTERNAL RESOURCES **/
|
15 |
/************************/
|
16 |
+
|
17 |
// Custom build of jQuery mobile. I need it for swipeleft and swiperight
|
18 |
(function(e,t,n){typeof define=="function"&&define.amd?define(["jquery"],function(r){return n(r,e,t),r.mobile}):n(e.jQuery,e,t)})(this,document,function(e,t,n,r){(function(e,t,n,r){function T(e){while(e&&typeof e.originalEvent!="undefined")e=e.originalEvent;return e}function N(t,n){var i=t.type,s,o,a,l,c,h,p,d,v;t=e.Event(t),t.type=n,s=t.originalEvent,o=e.event.props,i.search(/^(mouse|click)/)>-1&&(o=f);if(s)for(p=o.length,l;p;)l=o[--p],t[l]=s[l];i.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1);if(i.search(/^touch/)!==-1){a=T(s),i=a.touches,c=a.changedTouches,h=i&&i.length?i[0]:c&&c.length?c[0]:r;if(h)for(d=0,v=u.length;d<v;d++)l=u[d],t[l]=h[l]}return t}function C(t){var n={},r,s;while(t){r=e.data(t,i);for(s in r)r[s]&&(n[s]=n.hasVirtualBinding=!0);t=t.parentNode}return n}function k(t,n){var r;while(t){r=e.data(t,i);if(r&&(!n||r[n]))return t;t=t.parentNode}return null}function L(){g=!1}function A(){g=!0}function O(){E=0,v.length=0,m=!1,A()}function M(){L()}function _(){D(),c=setTimeout(function(){c=0,O()},e.vmouse.resetTimerDuration)}function D(){c&&(clearTimeout(c),c=0)}function P(t,n,r){var i;if(r&&r[t]||!r&&k(n.target,t))i=N(n,t),e(n.target).trigger(i);return i}function H(t){var n=e.data(t.target,s),r;!m&&(!E||E!==n)&&(r=P("v"+t.type,t),r&&(r.isDefaultPrevented()&&t.preventDefault(),r.isPropagationStopped()&&t.stopPropagation(),r.isImmediatePropagationStopped()&&t.stopImmediatePropagation()))}function B(t){var n=T(t).touches,r,i,o;n&&n.length===1&&(r=t.target,i=C(r),i.hasVirtualBinding&&(E=w++,e.data(r,s,E),D(),M(),d=!1,o=T(t).touches[0],h=o.pageX,p=o.pageY,P("vmouseover",t,i),P("vmousedown",t,i)))}function j(e){if(g)return;d||P("vmousecancel",e,C(e.target)),d=!0,_()}function F(t){if(g)return;var n=T(t).touches[0],r=d,i=e.vmouse.moveDistanceThreshold,s=C(t.target);d=d||Math.abs(n.pageX-h)>i||Math.abs(n.pageY-p)>i,d&&!r&&P("vmousecancel",t,s),P("vmousemove",t,s),_()}function I(e){if(g)return;A();var t=C(e.target),n,r;P("vmouseup",e,t),d||(n=P("vclick",e,t),n&&n.isDefaultPrevented()&&(r=T(e).changedTouches[0],v.push({touchID:E,x:r.clientX,y:r.clientY}),m=!0)),P("vmouseout",e,t),d=!1,_()}function q(t){var n=e.data(t,i),r;if(n)for(r in n)if(n[r])return!0;return!1}function R(){}function U(t){var n=t.substr(1);return{setup:function(){q(this)||e.data(this,i,{});var r=e.data(this,i);r[t]=!0,l[t]=(l[t]||0)+1,l[t]===1&&b.bind(n,H),e(this).bind(n,R),y&&(l.touchstart=(l.touchstart||0)+1,l.touchstart===1&&b.bind("touchstart",B).bind("touchend",I).bind("touchmove",F).bind("scroll",j))},teardown:function(){--l[t],l[t]||b.unbind(n,H),y&&(--l.touchstart,l.touchstart||b.unbind("touchstart",B).unbind("touchmove",F).unbind("touchend",I).unbind("scroll",j));var r=e(this),s=e.data(this,i);s&&(s[t]=!1),r.unbind(n,R),q(this)||r.removeData(i)}}}var i="virtualMouseBindings",s="virtualTouchID",o="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),u="clientX clientY pageX pageY screenX screenY".split(" "),a=e.event.mouseHooks?e.event.mouseHooks.props:[],f=e.event.props.concat(a),l={},c=0,h=0,p=0,d=!1,v=[],m=!1,g=!1,y="addEventListener"in n,b=e(n),w=1,E=0,S,x;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(x=0;x<o.length;x++)e.event.special[o[x]]=U(o[x]);y&&n.addEventListener("click",function(t){var n=v.length,r=t.target,i,o,u,a,f,l;if(n){i=t.clientX,o=t.clientY,S=e.vmouse.clickDistanceThreshold,u=r;while(u){for(a=0;a<n;a++){f=v[a],l=0;if(u===r&&Math.abs(f.x-i)<S&&Math.abs(f.y-o)<S||e.data(u,s)===f.touchID){t.preventDefault(),t.stopPropagation();return}}u=u.parentNode}}},!0)})(e,t,n),function(e){e.mobile={}}(e),function(e,t){var r={touch:"ontouchend"in n};e.mobile.support=e.mobile.support||{},e.extend(e.support,r),e.extend(e.mobile.support,r)}(e),function(e,t,r){function l(t,n,i,s){var o=i.type;i.type=n,s?e.event.trigger(i,r,t):e.event.dispatch.call(t,i),i.type=o}var i=e(n),s=e.mobile.support.touch,o="touchmove scroll",u=s?"touchstart":"mousedown",a=s?"touchend":"mouseup",f=s?"touchmove":"mousemove";e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,n){e.fn[n]=function(e){return e?this.bind(n,e):this.trigger(n)},e.attrFn&&(e.attrFn[n]=!0)}),e.event.special.scrollstart={enabled:!0,setup:function(){function s(e,n){r=n,l(t,r?"scrollstart":"scrollstop",e)}var t=this,n=e(t),r,i;n.bind(o,function(t){if(!e.event.special.scrollstart.enabled)return;r||s(t,!0),clearTimeout(i),i=setTimeout(function(){s(t,!1)},50)})},teardown:function(){e(this).unbind(o)}},e.event.special.tap={tapholdThreshold:750,emitTapOnTaphold:!0,setup:function(){var t=this,n=e(t),r=!1;n.bind("vmousedown",function(s){function a(){clearTimeout(u)}function f(){a(),n.unbind("vclick",c).unbind("vmouseup",a),i.unbind("vmousecancel",f)}function c(e){f(),!r&&o===e.target?l(t,"tap",e):r&&e.preventDefault()}r=!1;if(s.which&&s.which!==1)return!1;var o=s.target,u;n.bind("vmouseup",a).bind("vclick",c),i.bind("vmousecancel",f),u=setTimeout(function(){e.event.special.tap.emitTapOnTaphold||(r=!0),l(t,"taphold",e.Event("taphold",{target:o}))},e.event.special.tap.tapholdThreshold)})},teardown:function(){e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"),i.unbind("vmousecancel")}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:30,getLocation:function(e){var n=t.pageXOffset,r=t.pageYOffset,i=e.clientX,s=e.clientY;if(e.pageY===0&&Math.floor(s)>Math.floor(e.pageY)||e.pageX===0&&Math.floor(i)>Math.floor(e.pageX))i-=n,s-=r;else if(s<e.pageY-r||i<e.pageX-n)i=e.pageX-n,s=e.pageY-r;return{x:i,y:s}},start:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y],origin:e(t.target)}},stop:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y]}},handleSwipe:function(t,n,r,i){if(n.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-n.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])<e.event.special.swipe.verticalDistanceThreshold){var s=t.coords[0]>n.coords[0]?"swipeleft":"swiperight";return l(r,"swipe",e.Event("swipe",{target:i,swipestart:t,swipestop:n}),!0),l(r,s,e.Event(s,{target:i,swipestart:t,swipestop:n}),!0),!0}return!1},eventInProgress:!1,setup:function(){var t,n=this,r=e(n),s={};t=e.data(this,"mobile-events"),t||(t={length:0},e.data(this,"mobile-events",t)),t.length++,t.swipe=s,s.start=function(t){if(e.event.special.swipe.eventInProgress)return;e.event.special.swipe.eventInProgress=!0;var r,o=e.event.special.swipe.start(t),u=t.target,l=!1;s.move=function(t){if(!o||t.isDefaultPrevented())return;r=e.event.special.swipe.stop(t),l||(l=e.event.special.swipe.handleSwipe(o,r,n,u),l&&(e.event.special.swipe.eventInProgress=!1)),Math.abs(o.coords[0]-r.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault()},s.stop=function(){l=!0,e.event.special.swipe.eventInProgress=!1,i.off(f,s.move),s.move=null},i.on(f,s.move).one(a,s.stop)},r.on(u,s.start)},teardown:function(){var t,n;t=e.data(this,"mobile-events"),t&&(n=t.swipe,delete t.swipe,t.length--,t.length===0&&e.removeData(this,"mobile-events")),n&&(n.start&&e(this).off(u,n.start),n.move&&i.off(f,n.move),n.stop&&i.off(a,n.stop))}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)},teardown:function(){e(this).unbind(n)}}})}(e,this)});
|
19 |
+
|
20 |
// YouTube API:
|
21 |
var tag = document.createElement('script');
|
22 |
tag.src = "https://www.youtube.com/iframe_api";
|
23 |
var firstScriptTag = document.getElementsByTagName('script')[0];
|
24 |
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
|
25 |
+
|
26 |
// Vimeo API
|
27 |
var Froogaloop=function(){function e(a){return new e.fn.init(a)}function g(a,c,b){if(!b.contentWindow.postMessage)return!1;a=JSON.stringify({method:a,value:c});b.contentWindow.postMessage(a,h)}function l(a){var c,b;try{c=JSON.parse(a.data),b=c.event||c.method}catch(e){}"ready"!=b||k||(k=!0);if(!/^https?:\/\/player.vimeo.com/.test(a.origin))return!1;"*"===h&&(h=a.origin);a=c.value;var m=c.data,f=""===f?null:c.player_id;c=f?d[f][b]:d[b];b=[];if(!c)return!1;void 0!==a&&b.push(a);m&&b.push(m);f&&b.push(f);
|
28 |
return 0<b.length?c.apply(null,b):c.call()}function n(a,c,b){b?(d[b]||(d[b]={}),d[b][a]=c):d[a]=c}var d={},k=!1,h="*";e.fn=e.prototype={element:null,init:function(a){"string"===typeof a&&(a=document.getElementById(a));this.element=a;return this},api:function(a,c){if(!this.element||!a)return!1;var b=this.element,d=""!==b.id?b.id:null,e=c&&c.constructor&&c.call&&c.apply?null:c,f=c&&c.constructor&&c.call&&c.apply?c:null;f&&n(a,f,d);g(a,e,b);return this},addEvent:function(a,c){if(!this.element)return!1;
|
29 |
var b=this.element,d=""!==b.id?b.id:null;n(a,c,d);"ready"!=a?g("addEventListener",a,b):"ready"==a&&k&&c.call(null,d);return this},removeEvent:function(a){if(!this.element)return!1;var c=this.element,b=""!==c.id?c.id:null;a:{if(b&&d[b]){if(!d[b][a]){b=!1;break a}d[b][a]=null}else{if(!d[a]){b=!1;break a}d[a]=null}b=!0}"ready"!=a&&b&&g("removeEventListener",a,c)}};e.fn.init.prototype=e.fn;window.addEventListener?window.addEventListener("message",l,!1):window.attachEvent("onmessage",l);return window.Froogaloop=
|
30 |
+
window.$f=e}();
|
31 |
+
|
32 |
/*******************/
|
33 |
/** CRELLY SLIDER **/
|
34 |
/*******************/
|
35 |
+
|
36 |
$.CrellySlider = function(target, settings) {
|
37 |
+
|
38 |
/**********************/
|
39 |
/** USEFUL VARIABLES **/
|
40 |
/**********************/
|
41 |
+
|
42 |
// HTML classes of the slider
|
43 |
var SLIDER = $(target);
|
44 |
var CRELLY = 'div.crellyslider';
|
45 |
var SLIDES = 'ul.cs-slides';
|
46 |
var SLIDE = 'li.cs-slide';
|
47 |
var ELEMENTS = '> *';
|
48 |
+
|
49 |
var total_slides;
|
50 |
var current_slide = 0;
|
51 |
+
|
52 |
var paused = false;
|
53 |
var can_pause = false; // Also used as "can change slide"
|
54 |
var executed_slide = false; // Will be true as soon as the current slide is executed
|
55 |
var first_play = true;
|
56 |
+
|
57 |
// Slide timer: only current slide. Elements timers: all the elements. This prevents conflicts during changes and pauses
|
58 |
var current_slide_time_timer = new Timer(function() {}, 0);
|
59 |
var elements_times_timers = new Array();
|
60 |
var elements_delays_timers = new Array();
|
61 |
+
|
62 |
// The arrays "link" every DOM iframe element to its player element that can interact with APIs
|
63 |
var youtube_videos = {};
|
64 |
var vimeo_videos = {};
|
65 |
+
|
66 |
var scale = 1;
|
67 |
var window_width_before_setResponsive = 0; // This variable is useful ONLY to prevent that window.resize fires on vertical resizing or on a right window width
|
68 |
+
|
69 |
/********************/
|
70 |
/** INITIALIZATION **/
|
71 |
/********************/
|
72 |
+
|
73 |
// EVERYTHING BEGINS HERE
|
74 |
// Before initializing Crelly Slider, we have to wait for the YouTube API. I use the setInterval method to prevent compatibility issues with other plugins and to be sure that, if there is more than a slider loaded on the page, everything works
|
75 |
if((typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined')) {
|
83 |
else {
|
84 |
init();
|
85 |
}
|
86 |
+
|
87 |
// The slider constructor: runs automatically only the first time, sets the basic needs of the slider and the preloader then runs Crelly Slider
|
88 |
+
function init() {
|
89 |
// Add wrappers and classes
|
90 |
SLIDER.wrapInner('<div class="crellyslider" />');
|
91 |
SLIDER.find(CRELLY + ' > ul').addClass('cs-slides');
|
92 |
SLIDER.find(CRELLY + ' ' + SLIDES + ' > li').addClass('cs-slide');
|
93 |
+
|
94 |
// Set total_slides
|
95 |
total_slides = getSlides().length;
|
96 |
+
|
97 |
// If the slider is empty, stop
|
98 |
if(total_slides == 0) {
|
99 |
return false;
|
100 |
}
|
101 |
+
|
102 |
// If there is only a slide, clone it
|
103 |
if(total_slides == 1) {
|
104 |
var clone = getSlide(0);
|
106 |
clone.clone().prependTo(prepend);
|
107 |
total_slides++;
|
108 |
}
|
109 |
+
|
110 |
// Show controls (previous and next arrows)
|
111 |
if(settings.showControls) {
|
112 |
SLIDER.find(CRELLY).append('<div class="cs-controls"><span class="cs-next"></span><span class="cs-previous"></span></div>');
|
113 |
}
|
114 |
+
|
115 |
// Show navigation
|
116 |
if(settings.showNavigation) {
|
117 |
var nav = '<div class="cs-navigation">';
|
121 |
nav += '</div>';
|
122 |
SLIDER.find(CRELLY).append(nav);
|
123 |
}
|
124 |
+
|
125 |
// Show progress bar
|
126 |
if(settings.showProgressBar) {
|
127 |
SLIDER.find(CRELLY).append('<div class="cs-progress-bar"></div>');
|
129 |
else {
|
130 |
SLIDER.find(CRELLY).append('<div class="cs-progress-bar cs-progress-bar-hidden"></div>');
|
131 |
}
|
132 |
+
|
133 |
// Display slider
|
134 |
SLIDER.css('display', 'block');
|
135 |
+
|
136 |
// Set layout for the first time
|
137 |
if(settings.responsive) {
|
138 |
setScale();
|
139 |
+
}
|
140 |
setLayout();
|
141 |
+
|
142 |
// Set slides links
|
143 |
getSlides().find('.cs-background-link')
|
144 |
.html(' ')
|
152 |
'delay' : 0,
|
153 |
'time' : 'all',
|
154 |
});
|
155 |
+
|
156 |
setPreloader();
|
157 |
+
|
158 |
initVideos().done(function() {
|
159 |
// Timeout needed to prevent compatibility issues
|
160 |
var loading = setInterval(function() {
|
165 |
}, 100);
|
166 |
});
|
167 |
}
|
168 |
+
|
169 |
// Inits Youtube and Vimeo videos
|
170 |
+
function initVideos() {
|
171 |
var def = new $.Deferred();
|
172 |
var total_iframes = getSlides().find('.cs-yt-iframe, .cs-vimeo-iframe').length;
|
173 |
var loaded_iframes = 0;
|
174 |
+
|
175 |
if(total_iframes == 0) {
|
176 |
return def.resolve().promise();
|
177 |
}
|
178 |
+
|
179 |
// When iframes are loaded...
|
180 |
getSlides().find('.cs-yt-iframe, .cs-vimeo-iframe').each(function() {
|
181 |
var iframe = $(this);
|
182 |
+
|
183 |
iframe.one('load', function() {
|
184 |
loaded_iframes++;
|
185 |
if(loaded_iframes == total_iframes) {
|
192 |
}
|
193 |
})
|
194 |
});
|
195 |
+
|
196 |
return def.promise();
|
197 |
}
|
198 |
+
|
199 |
// Generates an unique id for each youtube iframe, then links them to a new YouTube player
|
200 |
function initYoutubeVideos() {
|
201 |
var def = new $.Deferred();
|
203 |
var total_yt_videos = slides.find(ELEMENTS + '.cs-yt-iframe').length;
|
204 |
var loaded_videos = 0;
|
205 |
var temp;
|
206 |
+
|
207 |
if(total_yt_videos == 0) {
|
208 |
return def.resolve().promise();
|
209 |
}
|
210 |
+
|
211 |
slides.each(function() {
|
212 |
var slide = $(this);
|
213 |
var elements = slide.find(ELEMENTS + '.cs-yt-iframe');
|
214 |
+
|
215 |
elements.each(function() {
|
216 |
var element = $(this);
|
217 |
+
|
218 |
element.uniqueId();
|
219 |
element.attr('id', 'cs-yt-iframe-' + element.attr('id'));
|
220 |
+
|
221 |
var player = new YT.Player(element.attr('id'), {
|
222 |
events: {
|
223 |
+
'onReady' : function() {
|
224 |
loaded_videos++;
|
225 |
if(loaded_videos == total_yt_videos) {
|
226 |
def.resolve();
|
227 |
}
|
228 |
},
|
229 |
+
|
230 |
'onStateChange' : function(e) {
|
231 |
if(e.data === YT.PlayerState.ENDED && getItemData(element, 'loop')) {
|
232 |
+
player.playVideo();
|
233 |
}
|
234 |
},
|
235 |
},
|
236 |
});
|
237 |
+
|
238 |
temp = {
|
239 |
player : player,
|
240 |
played_once : false
|
241 |
};
|
242 |
+
|
243 |
youtube_videos[element.attr('id')] = temp;
|
244 |
});
|
245 |
});
|
246 |
+
|
247 |
return def.promise();
|
248 |
}
|
249 |
+
|
250 |
// Generates an unique id for each Vimeo iframe, then links them to a new Vimeo player
|
251 |
function initVimeoVideos() {
|
252 |
var def = new $.Deferred();
|
254 |
var total_vimeo_videos = slides.find(ELEMENTS + '.cs-vimeo-iframe').length;
|
255 |
var loaded_videos = 0;
|
256 |
var temp;
|
257 |
+
|
258 |
if(total_vimeo_videos == 0) {
|
259 |
return def.resolve().promise();
|
260 |
}
|
261 |
+
|
262 |
slides.each(function() {
|
263 |
var slide = $(this);
|
264 |
var elements = slide.find(ELEMENTS + '.cs-vimeo-iframe');
|
265 |
+
|
266 |
elements.each(function() {
|
267 |
var element = $(this);
|
268 |
+
|
269 |
element.uniqueId();
|
270 |
element.attr('id', 'cs-vimeo-iframe-' + element.attr('id'));
|
271 |
element.attr('src', element.attr('src') + '&player_id=' + element.attr('id'));
|
272 |
+
|
273 |
var player = $f(element[0]);
|
274 |
+
|
275 |
player.addEvent('ready', function() {
|
276 |
player.addEvent('finish', function() {
|
277 |
vimeo_videos[element.attr('id')].ended = true;
|
278 |
});
|
279 |
+
|
280 |
player.addEvent('play', function() {
|
281 |
vimeo_videos[element.attr('id')].played_once = true;
|
282 |
vimeo_videos[element.attr('id')].ended = false;
|
283 |
});
|
284 |
+
|
285 |
if(getItemData(element, 'loop')) {
|
286 |
+
player.api('setLoop', true);
|
287 |
}
|
288 |
+
|
289 |
+
loaded_videos++;
|
290 |
if(loaded_videos == total_vimeo_videos) {
|
291 |
def.resolve();
|
292 |
}
|
293 |
});
|
294 |
+
|
295 |
temp = {
|
296 |
player : player,
|
297 |
played_once : false,
|
298 |
ended : false,
|
299 |
};
|
300 |
+
|
301 |
vimeo_videos[element.attr('id')] = temp;
|
302 |
});
|
303 |
});
|
304 |
+
|
305 |
return def.promise();
|
306 |
}
|
307 |
+
|
308 |
// Does operations after window.load is complete. Need to do it as a function for back-end compatibility
|
309 |
+
function loadedWindow() {
|
310 |
// Set layout for the second time
|
311 |
if(settings.responsive) {
|
312 |
setScale();
|
313 |
}
|
314 |
setLayout();
|
315 |
+
|
316 |
window_width_before_setResponsive = $(window).width();
|
317 |
+
|
318 |
initProperties();
|
319 |
+
|
320 |
addListeners();
|
321 |
+
|
322 |
unsetPreloader();
|
323 |
+
|
324 |
settings.beforeStart();
|
325 |
+
|
326 |
// Positions and responsive dimensions then run
|
327 |
if(settings.responsive) {
|
328 |
setResponsive();
|
331 |
play();
|
332 |
}
|
333 |
}
|
334 |
+
|
335 |
// Stores original slides, elements and elements contents values then hide all the slides and elements. "display: none" only if is an element, not an element content
|
336 |
function initProperties() {
|
337 |
getSlides().each(function() {
|
338 |
var slide = $(this);
|
339 |
+
|
340 |
slide.find(ELEMENTS).each(function() {
|
341 |
var element = $(this);
|
342 |
+
|
343 |
element.find('*').each(function() {
|
344 |
var element_content = $(this);
|
345 |
setElementDatas(element_content, true);
|
346 |
});
|
347 |
+
|
348 |
setElementDatas(element, false);
|
349 |
});
|
350 |
+
|
351 |
slide.css('display', 'none');
|
352 |
slide.data('opacity', parseFloat(slide.css('opacity')));
|
353 |
});
|
354 |
}
|
355 |
+
|
356 |
// Initializes the element with original values
|
357 |
function setElementDatas(element, is_element_content) {
|
358 |
element.data('width', parseFloat(element.width()));
|
359 |
+
element.data('height', parseFloat(element.height()));
|
360 |
element.data('letter-spacing', parseFloat(element.css('letter-spacing')));
|
361 |
element.data('font-size', parseFloat(element.css('font-size')));
|
362 |
+
|
363 |
if(element.css('line-height').slice(-2).toLowerCase() == 'px') {
|
364 |
element.data('line-height', parseFloat(element.css('line-height')));
|
365 |
}
|
366 |
else {
|
367 |
element.data('line-height', parseFloat(element.css('line-height')) * getItemData(element, 'font-size'));
|
368 |
}
|
369 |
+
|
370 |
element.data('padding-top', parseFloat(element.css('padding-top')));
|
371 |
element.data('padding-right', parseFloat(element.css('padding-right')));
|
372 |
element.data('padding-bottom', parseFloat(element.css('padding-bottom')));
|
373 |
element.data('padding-left', parseFloat(element.css('padding-left')));
|
374 |
element.data('opacity', parseFloat(element.css('opacity')));
|
375 |
+
|
376 |
if(! is_element_content) {
|
377 |
element.css('display', 'none');
|
378 |
}
|
379 |
}
|
380 |
+
|
381 |
// Sets all listeners for the user interaction
|
382 |
function addListeners() {
|
383 |
// Make responsive. Run if resizing horizontally and the slider is not at the right dimension
|
384 |
+
if(settings.responsive) {
|
385 |
$(window).resize(function() {
|
386 |
if(window_width_before_setResponsive != $(window).width() && ((settings.layout == 'full-width' && getWidth() != $(SLIDER).width()) || ($(SLIDER).width() < getWidth() || (($(SLIDER).width() > getWidth()) && getWidth() < settings.startWidth)))) {
|
387 |
setResponsive();
|
388 |
}
|
389 |
});
|
390 |
}
|
391 |
+
|
392 |
+
// Previous control click
|
393 |
SLIDER.find(CRELLY).find('.cs-controls > .cs-previous').click(function() {
|
394 |
changeSlide(getPreviousSlide());
|
395 |
});
|
396 |
+
|
397 |
// Next Control click
|
398 |
SLIDER.find(CRELLY).find('.cs-controls > .cs-next').click(function() {
|
399 |
changeSlide(getNextSlide());
|
400 |
});
|
401 |
+
|
402 |
// Swipe and drag
|
403 |
+
if(settings.enableSwipe) {
|
404 |
SLIDER.find(CRELLY).on('swipeleft', function() {
|
405 |
resume();
|
406 |
changeSlide(getNextSlide());
|
407 |
});
|
408 |
+
|
409 |
SLIDER.find(CRELLY).on('swiperight', function() {
|
410 |
resume();
|
411 |
changeSlide(getPreviousSlide());
|
412 |
});
|
413 |
}
|
414 |
+
|
415 |
// Navigation link click
|
416 |
SLIDER.find(CRELLY).find('.cs-navigation > .cs-slide-link').click(function() {
|
417 |
changeSlide($(this).index());
|
418 |
});
|
419 |
+
|
420 |
// Pause on hover
|
421 |
if(settings.pauseOnHover) {
|
422 |
SLIDER.find(CRELLY).find(SLIDES).hover(function() {
|
423 |
pause();
|
424 |
});
|
425 |
+
|
426 |
SLIDER.find(CRELLY).find(SLIDES).mouseleave(function() {
|
427 |
resume();
|
428 |
});
|
429 |
}
|
430 |
}
|
431 |
+
|
432 |
// Hides the unnecessary divs and sets the blurred preloader and the gif spinner
|
433 |
function setPreloader() {
|
434 |
// Setup
|
435 |
SLIDER.find(CRELLY).find(SLIDES).css('visibility', 'hidden');
|
436 |
SLIDER.find(CRELLY).find('.cs-progress-bar').css('display', 'none');
|
437 |
SLIDER.find(CRELLY).find('.cs-navigation').css('display', 'none');
|
438 |
+
SLIDER.find(CRELLY).find('.cs-controls').css('display', 'none');
|
439 |
+
|
440 |
// Get the URL of the background image of the first slide
|
441 |
var img_url = getSlide(0).css('background-image');
|
442 |
img_url = img_url.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');
|
443 |
+
|
444 |
if(! img_url.match(/\.(jpeg|jpg|gif|png|bmp|tiff|tif)$/)) { // If there isn't a background image
|
445 |
addPreloaderHTML();
|
446 |
}
|
457 |
}
|
458 |
});
|
459 |
}
|
460 |
+
|
461 |
function addPreloaderHTML() {
|
462 |
// Add preloader
|
463 |
SLIDER.find(CRELLY).append('<div class="cs-preloader"><div class="cs-bg"></div><div class="cs-loader"><div class="cs-spinner"></div></div></div>');
|
464 |
+
|
465 |
// Set background. Background is set to both the preloader div and the bg div to fix the CSS blur effect
|
466 |
+
SLIDER.find(CRELLY).find('.cs-preloader').css({
|
467 |
'background-color' : getSlide(0).css('background-color'),
|
468 |
'background-image' : getSlide(0).css('background-image'),
|
469 |
'background-position' : getSlide(0).css('background-position'),
|
470 |
'background-repeat' : getSlide(0).css('background-repeat'),
|
471 |
'background-size' : getSlide(0).css('background-size'),
|
472 |
+
});
|
473 |
+
SLIDER.find(CRELLY).find('.cs-preloader > .cs-bg').css({
|
474 |
'background-color' : getSlide(0).css('background-color'),
|
475 |
'background-image' : getSlide(0).css('background-image'),
|
476 |
'background-position' : getSlide(0).css('background-position'),
|
479 |
});
|
480 |
}
|
481 |
}
|
482 |
+
|
483 |
// Shows the necessary divs and fades out the preloader
|
484 |
function unsetPreloader() {
|
485 |
// Setup
|
487 |
SLIDER.find(CRELLY).find('.cs-progress-bar').css('display', 'block');
|
488 |
SLIDER.find(CRELLY).find('.cs-navigation').css('display', 'block');
|
489 |
SLIDER.find(CRELLY).find('.cs-controls').css('display', 'block');
|
490 |
+
|
491 |
// Display the first slide to avoid the slide in animation
|
492 |
slideIn(getSlide(0));
|
493 |
getSlide(0).finish();
|
494 |
+
|
495 |
// Fade out
|
496 |
SLIDER.find(CRELLY).find('.cs-preloader').animate({
|
497 |
'opacity' : 0,
|
499 |
SLIDER.find(CRELLY).find('.cs-preloader').remove();
|
500 |
});
|
501 |
}
|
502 |
+
|
503 |
/*******************************/
|
504 |
/** LAYOUT AND RESPONSIVENESS **/
|
505 |
/*******************************/
|
506 |
+
|
507 |
// Sets slider and slides. Width and height are scaled
|
508 |
function setLayout() {
|
509 |
var layout = settings.layout;
|
510 |
var width, height;
|
511 |
+
|
512 |
switch(layout) {
|
513 |
case 'fixed':
|
514 |
width = settings.startWidth;
|
522 |
'height' : getScaled(height),
|
523 |
});
|
524 |
break;
|
525 |
+
|
526 |
+
case 'full-width':
|
527 |
width = SLIDER.width();
|
528 |
height = settings.startHeight;
|
529 |
SLIDER.find(CRELLY).css({
|
540 |
break;
|
541 |
}
|
542 |
}
|
543 |
+
|
544 |
// Returns the element top end left gaps (when the slider is full-width is very useful)
|
545 |
+
function getLayoutGaps(element) {
|
546 |
var top_gap = (getHeight() - settings.startHeight) / 2;
|
547 |
var left_gap = (getWidth() - settings.startWidth) / 2;
|
548 |
+
|
549 |
var new_top = 0;
|
550 |
var new_left = 0;
|
551 |
+
|
552 |
if(top_gap > 0) {
|
553 |
new_top = top_gap;
|
554 |
}
|
555 |
if(left_gap > 0) {
|
556 |
new_left = left_gap;
|
557 |
}
|
558 |
+
|
559 |
return {
|
560 |
top: new_top,
|
561 |
left: new_left,
|
562 |
};
|
563 |
}
|
564 |
+
|
565 |
// Scales every element to make it responsive. It automatically restarts the current slide
|
566 |
function setResponsive() {
|
567 |
settings.beforeSetResponsive();
|
568 |
+
|
569 |
var slides = getSlides();
|
570 |
+
|
571 |
stop(true);
|
572 |
+
|
573 |
slides.each(function() {
|
574 |
var slide = $(this);
|
575 |
var elements = slide.find(ELEMENTS);
|
576 |
+
|
577 |
slide.finish();
|
578 |
slideIn(slide);
|
579 |
slide.finish();
|
580 |
+
|
581 |
elements.each(function() {
|
582 |
var element = $(this);
|
583 |
+
|
584 |
element.finish();
|
585 |
elementIn(element);
|
586 |
element.finish();
|
587 |
+
|
588 |
if(isVideo(element)) {
|
589 |
pauseVideo(element);
|
590 |
}
|
591 |
});
|
592 |
});
|
593 |
+
|
594 |
setScale();
|
595 |
+
|
596 |
setLayout();
|
597 |
+
|
598 |
slides.each(function() {
|
599 |
var slide = $(this);
|
600 |
var elements = slide.find(ELEMENTS);
|
601 |
+
|
602 |
+
elements.each(function() {
|
603 |
var element = $(this);
|
604 |
+
|
605 |
element.find('*').each(function() {
|
606 |
var element_content = $(this);
|
607 |
scaleElement(element_content);
|
608 |
});
|
609 |
+
|
610 |
scaleElement(element);
|
611 |
+
|
612 |
element.finish();
|
613 |
elementOut(element);
|
614 |
element.finish();
|
615 |
+
|
616 |
if(isVideo(element)) {
|
617 |
pauseVideo(element);
|
618 |
}
|
619 |
});
|
620 |
+
|
621 |
slide.finish();
|
622 |
slideOut(slide);
|
623 |
slide.finish();
|
624 |
});
|
625 |
+
|
626 |
window_width_before_setResponsive = $(window).width();
|
627 |
+
|
628 |
play();
|
629 |
}
|
630 |
+
|
631 |
// Scales a text or an image and their contents
|
632 |
+
function scaleElement(element) {
|
633 |
// Standard element
|
634 |
element.css({
|
635 |
'top' : getScaled(getItemData(element, 'top') + getLayoutGaps(element).top),
|
639 |
'padding-bottom' : getScaled(getItemData(element, 'padding-bottom')),
|
640 |
'padding-left' : getScaled(getItemData(element, 'padding-left')),
|
641 |
});
|
642 |
+
|
643 |
// Element contains text
|
644 |
+
if(element.is('input') || element.is('button') || element.text().trim().length) {
|
645 |
+
element.css({
|
646 |
'line-height' : getScaled(getItemData(element, 'line-height')) + 'px',
|
647 |
'letter-spacing' : getScaled(getItemData(element, 'letter-spacing')),
|
648 |
'font-size' : getScaled(getItemData(element, 'font-size')),
|
649 |
});
|
650 |
}
|
651 |
+
|
652 |
// Element doesn't contain text (like images or iframes)
|
653 |
else {
|
654 |
element.css({
|
657 |
});
|
658 |
}
|
659 |
}
|
660 |
+
|
661 |
// Using the start dimensions, sets how the slider and it's elements should be scaled
|
662 |
function setScale() {
|
663 |
var slider_width = SLIDER.width();
|
664 |
var start_width = settings.startWidth;
|
665 |
+
|
666 |
if(slider_width >= start_width || ! settings.responsive) {
|
667 |
scale = 1;
|
668 |
}
|
670 |
scale = slider_width / start_width;
|
671 |
}
|
672 |
}
|
673 |
+
|
674 |
// Using the current scale variable, returns the value that receives correctly scaled. Remember to always use getScaled() to get positions & dimensions of the elements
|
675 |
function getScaled(value) {
|
676 |
return value * scale;
|
677 |
}
|
678 |
+
|
679 |
/*********************/
|
680 |
/** SLIDER COMMANDS **/
|
681 |
/*********************/
|
682 |
+
|
683 |
// Runs Crelly from the current slide
|
684 |
+
function play() {
|
685 |
if(settings.automaticSlide) {
|
686 |
loopSlides();
|
687 |
}
|
688 |
else {
|
689 |
executeSlide(current_slide);
|
690 |
}
|
691 |
+
|
692 |
first_play = false;
|
693 |
}
|
694 |
+
|
695 |
// Stops all the slides and the elements and resets the progress bar
|
696 |
+
function stop(finish_queues) {
|
697 |
for(var i = 0; i < elements_times_timers.length; i++) {
|
698 |
elements_times_timers[i].clear();
|
699 |
}
|
700 |
+
|
701 |
for(var i = 0; i < elements_delays_timers.length; i++) {
|
702 |
elements_delays_timers[i].clear();
|
703 |
}
|
704 |
+
|
705 |
current_slide_time_timer.clear();
|
706 |
+
|
707 |
getSlides().each(function() {
|
708 |
var temp_slide = $(this);
|
709 |
if(finish_queues) {
|
722 |
}
|
723 |
});
|
724 |
});
|
725 |
+
|
726 |
resetProgressBar();
|
727 |
}
|
728 |
+
|
729 |
// Stops the progress bar and the slide time timer
|
730 |
function pause() {
|
731 |
if(! paused && can_pause) {
|
732 |
settings.beforePause();
|
733 |
+
|
734 |
var progress_bar = SLIDER.find(CRELLY).find('.cs-progress-bar');
|
735 |
progress_bar.stop(true);
|
736 |
current_slide_time_timer.pause();
|
737 |
+
|
738 |
paused = true;
|
739 |
}
|
740 |
}
|
741 |
+
|
742 |
// Animates until the end the progress bar and resumes the current slide time timer
|
743 |
function resume() {
|
744 |
if(paused && can_pause) {
|
745 |
settings.beforeResume();
|
746 |
+
|
747 |
+
var progress_bar = SLIDER.find(CRELLY).find('.cs-progress-bar');
|
748 |
var slide_time = getItemData(getSlide(current_slide), 'time');
|
749 |
var remained_delay = current_slide_time_timer.getRemaining();
|
750 |
+
|
751 |
progress_bar.animate({
|
752 |
'width' : '100%',
|
753 |
}, remained_delay);
|
754 |
+
|
755 |
current_slide_time_timer.resume();
|
756 |
+
|
757 |
paused = false;
|
758 |
}
|
759 |
}
|
760 |
+
|
761 |
/****************************************/
|
762 |
/** SLIDER OR SLIDES DATAS / UTILITIES **/
|
763 |
/****************************************/
|
764 |
+
|
765 |
// Returns the Crelly Slider container width
|
766 |
function getWidth() {
|
767 |
return SLIDER.find(CRELLY).width();
|
768 |
}
|
769 |
+
|
770 |
// Returns the Crelly Slider container height
|
771 |
function getHeight() {
|
772 |
return SLIDER.find(CRELLY).height();
|
773 |
}
|
774 |
+
|
775 |
// Returns the index of the next slide
|
776 |
function getNextSlide() {
|
777 |
if(current_slide + 1 == total_slides) {
|
779 |
}
|
780 |
return current_slide + 1;
|
781 |
}
|
782 |
+
|
783 |
// Returns the index of the previous slide
|
784 |
function getPreviousSlide() {
|
785 |
if(current_slide - 1 < 0) {
|
787 |
}
|
788 |
return current_slide - 1;
|
789 |
}
|
790 |
+
|
791 |
// Returns a "data" of an item (slide or element). If is an integer || float, returns the parseInt() || parseFloat() of it. If the slide or the element has no data returns the default value
|
792 |
function getItemData(item, data) {
|
793 |
var is_slide;
|
794 |
+
|
795 |
if(item.parent('ul').hasClass('cs-slides')) {
|
796 |
is_slide = true;
|
797 |
}
|
798 |
else {
|
799 |
is_slide = false;
|
800 |
}
|
801 |
+
|
802 |
switch(data) {
|
803 |
case 'ease-in' :
|
804 |
if(is_slide) {
|
808 |
return isNaN(parseInt(item.data(data))) ? settings.elementsEaseIn : parseInt(item.data(data));
|
809 |
}
|
810 |
break;
|
811 |
+
|
812 |
case 'ease-out' :
|
813 |
if(is_slide) {
|
814 |
return isNaN(parseInt(item.data(data))) ? settings.slidesEaseOut : parseInt(item.data(data));
|
817 |
return isNaN(parseInt(item.data(data))) ? settings.elementsEaseOut : parseInt(item.data(data));
|
818 |
}
|
819 |
break;
|
820 |
+
|
821 |
case 'delay' :
|
822 |
return isNaN(parseInt(item.data(data))) ? settings.elementsDelay : parseInt(item.data(data));
|
823 |
+
|
824 |
break;
|
825 |
+
|
826 |
case 'time' :
|
827 |
if(is_slide) {
|
828 |
return isNaN(parseInt(item.data(data))) ? settings.slidesTime : parseInt(item.data(data));
|
836 |
}
|
837 |
}
|
838 |
break;
|
839 |
+
|
840 |
case 'ignore-ease-out' :
|
841 |
if(parseInt(item.data(data)) == 1) {
|
842 |
return true;
|
846 |
}
|
847 |
return settings.ignoreElementsEaseOut;
|
848 |
break;
|
849 |
+
|
850 |
case 'autoplay' :
|
851 |
if(parseInt(item.data(data)) == 1) {
|
852 |
return true;
|
856 |
}
|
857 |
return settings.videoAutoplay;
|
858 |
break;
|
859 |
+
|
860 |
case 'loop' :
|
861 |
if(parseInt(item.data(data)) == 1) {
|
862 |
return true;
|
866 |
}
|
867 |
return settings.videoLoop;
|
868 |
break;
|
869 |
+
|
870 |
case 'top' :
|
871 |
case 'left' :
|
872 |
case 'width' :
|
873 |
+
case 'height' :
|
874 |
case 'padding-top' :
|
875 |
case 'padding-right' :
|
876 |
case 'padding-bottom' :
|
880 |
case 'font-size' :
|
881 |
return isNaN(parseFloat(item.data(data))) ? 0 : parseFloat(item.data(data));
|
882 |
break;
|
883 |
+
|
884 |
case 'in' :
|
885 |
case 'out' :
|
886 |
case 'opacity' :
|
887 |
return item.data(data);
|
888 |
break;
|
889 |
+
|
890 |
default :
|
891 |
return false;
|
892 |
break;
|
893 |
}
|
894 |
}
|
895 |
+
|
896 |
// Returns the slides DOM elements
|
897 |
function getSlides() {
|
898 |
return SLIDER.find(CRELLY).find(SLIDES).find(SLIDE);
|
899 |
}
|
900 |
+
|
901 |
// Returns the slide DOM element
|
902 |
function getSlide(slide_index) {
|
903 |
return getSlides().eq(slide_index);
|
904 |
}
|
905 |
+
|
906 |
// Timeout with useful methods
|
907 |
function Timer(callback, delay) {
|
908 |
var id;
|
921 |
callback();
|
922 |
}, remaining);
|
923 |
};
|
924 |
+
|
925 |
this.clear = function () {
|
926 |
clearTimeout(id);
|
927 |
};
|
928 |
+
|
929 |
// For now, works only after this.pause(). No need to calculate in other moments
|
930 |
this.getRemaining = function() {
|
931 |
return remaining;
|
933 |
|
934 |
this.resume();
|
935 |
}
|
936 |
+
|
937 |
// Returns true if the user is using a mobile browser
|
938 |
function isMobile() {
|
939 |
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
940 |
}
|
941 |
+
|
942 |
/*****************/
|
943 |
/** SLIDER CORE **/
|
944 |
/*****************/
|
945 |
+
|
946 |
// Loops trough the slides
|
947 |
function loopSlides() {
|
948 |
+
executeSlide(current_slide).done(function() {
|
949 |
if(! paused) {
|
950 |
current_slide = getNextSlide();
|
951 |
loopSlides();
|
952 |
}
|
953 |
});
|
954 |
}
|
955 |
+
|
956 |
// Resets the progress bar and draws the progress bar of the current slide
|
957 |
function drawProgressBar() {
|
958 |
var progress_bar = SLIDER.find(CRELLY).find('.cs-progress-bar');
|
959 |
+
|
960 |
resetProgressBar();
|
961 |
+
|
962 |
progress_bar.animate({
|
963 |
'width' : '100%',
|
964 |
}, getItemData(getSlide(current_slide), 'time'));
|
965 |
}
|
966 |
+
|
967 |
// Resets the progress bar animation and CSS
|
968 |
function resetProgressBar() {
|
969 |
var progress_bar = SLIDER.find(CRELLY).find('.cs-progress-bar');
|
970 |
+
|
971 |
+
progress_bar.stop();
|
972 |
progress_bar.css('width', 0);
|
973 |
}
|
974 |
+
|
975 |
// Sets the right HTML classes of the navigation links
|
976 |
function setNavigationLink() {
|
977 |
var nav = SLIDER.find(CRELLY).find('.cs-navigation');
|
978 |
var links = nav.find('> .cs-slide-link');
|
979 |
+
|
980 |
links.each(function() {
|
981 |
var link = $(this);
|
982 |
+
|
983 |
if(link.index() == current_slide) {
|
984 |
link.addClass('cs-active');
|
985 |
}
|
988 |
}
|
989 |
});
|
990 |
}
|
991 |
+
|
992 |
// Finishes the current slide (animations out of elements and slide) and then plays the new slide
|
993 |
+
function changeSlide(slide_index) {
|
994 |
if(slide_index == current_slide) {
|
995 |
return;
|
996 |
}
|
997 |
+
|
998 |
+
if(can_pause || executed_slide) {
|
999 |
stop(false);
|
1000 |
+
|
1001 |
finishSlide(current_slide, false, true).done(function() {
|
1002 |
current_slide = slide_index;
|
1003 |
play();
|
1004 |
});
|
1005 |
}
|
1006 |
}
|
1007 |
+
|
1008 |
// Executes a slide completely. If the auto loop is disabled won't animate out the slide and the elements with time == "all"
|
1009 |
function executeSlide(slide_index) {
|
1010 |
settings.beforeSlideStart();
|
1011 |
+
|
1012 |
var def = new $.Deferred();
|
1013 |
+
|
1014 |
executed_slide = false;
|
1015 |
+
|
1016 |
// If something is still animating, reset
|
1017 |
for(var i = 0; i < elements_times_timers.length; i++) {
|
1018 |
elements_times_timers[i].clear();
|
1019 |
+
}
|
1020 |
for(var i = 0; i < elements_delays_timers.length; i++) {
|
1021 |
elements_delays_timers[i].clear();
|
1022 |
+
}
|
1023 |
current_slide_time_timer.clear();
|
1024 |
getSlide(slide_index).finish();
|
1025 |
slideOut(slide_index);
|
1026 |
+
getSlide(slide_index).finish();
|
1027 |
var elements = getSlide(slide_index).find(ELEMENTS);
|
1028 |
elements.each(function() {
|
1029 |
+
var element = $(this);
|
1030 |
+
element.finish();
|
1031 |
elementOut(element);
|
1032 |
element.finish();
|
1033 |
});
|
1034 |
+
|
1035 |
+
|
1036 |
setNavigationLink();
|
1037 |
+
|
1038 |
runSlide(slide_index);
|
1039 |
+
|
1040 |
if(settings.automaticSlide) {
|
1041 |
finishSlide(slide_index, true, true).done(function() {
|
1042 |
executed_slide = true;
|
1043 |
+
def.resolve();
|
1044 |
});
|
1045 |
}
|
1046 |
else {
|
1047 |
finishSlide(slide_index, true, false).done(function() {
|
1048 |
+
executed_slide = true;
|
1049 |
+
def.resolve();
|
1050 |
});
|
1051 |
}
|
1052 |
+
|
1053 |
return def.promise();
|
1054 |
}
|
1055 |
+
|
1056 |
// Executes the in animation of the slide and it's elements
|
1057 |
+
function runSlide(slide_index) {
|
1058 |
var slide = getSlide(slide_index);
|
1059 |
var elements = slide.find(ELEMENTS);
|
1060 |
+
|
1061 |
var elements_in_completed = 0;
|
1062 |
var slide_in_completed = false;
|
1063 |
+
|
1064 |
var def = new $.Deferred();
|
1065 |
+
|
1066 |
can_pause = false;
|
1067 |
+
|
1068 |
// Do slide in animation
|
1069 |
+
slideIn(slide_index).done(function() {
|
1070 |
drawProgressBar();
|
1071 |
+
|
1072 |
can_pause = true;
|
1073 |
+
|
1074 |
slide_in_completed = true;
|
1075 |
if(slide_in_completed && elements_in_completed == elements.length) {
|
1076 |
def.resolve();
|
1077 |
}
|
1078 |
});
|
1079 |
+
|
1080 |
// Do elements in animation
|
1081 |
elements.each(function() {
|
1082 |
var element = $(this);
|
1083 |
var element_delay = getItemData(element, 'delay');
|
1084 |
+
|
1085 |
elements_delays_timers.push(new Timer(function() {
|
1086 |
+
elementIn(element).done(function() {
|
1087 |
if(isVideo(element)) {
|
1088 |
playVideo(element);
|
1089 |
}
|
1090 |
+
|
1091 |
elements_in_completed++;
|
1092 |
if(slide_in_completed && elements_in_completed == elements.length) {
|
1093 |
def.resolve();
|
1095 |
});
|
1096 |
}, element_delay));
|
1097 |
});
|
1098 |
+
|
1099 |
return def.promise();
|
1100 |
}
|
1101 |
+
|
1102 |
// Does all times, elements out animations and slide out animation
|
1103 |
// execute_time, if true, will do the slide and the elements timers. If false, the timers will be = 0 so the plugin will execute the code of the callback function immediately.
|
1104 |
// animate_all_out, if false, will execute the elements with time != all out animations but not the slide and the elements with time == all out animations. If true, executes all the out animations
|
1105 |
+
function finishSlide(slide_index, execute_time, animate_all_out) {
|
1106 |
var slide = getSlide(slide_index);
|
1107 |
var elements = slide.find(ELEMENTS);
|
1108 |
var data_time = execute_time ? getItemData(slide, 'time') + getItemData(slide, 'ease-in') : 0;
|
1109 |
+
|
1110 |
var elements_out_completed = 0;
|
1111 |
var slide_time_completed = false;
|
1112 |
+
|
1113 |
var def = new $.Deferred();
|
1114 |
+
|
1115 |
// Elements with time != "all"
|
1116 |
elements.each(function() {
|
1117 |
var element = $(this);
|
1118 |
var time = getItemData(element, 'time');
|
1119 |
+
|
1120 |
if(time != 'all') {
|
1121 |
var final_element_time = execute_time ? time : 0;
|
1122 |
+
|
1123 |
if(getItemData(element, 'ignore-ease-out')) {
|
1124 |
elements_out_completed++;
|
1125 |
+
|
1126 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1127 |
pauseVideos(slide_index);
|
1128 |
slideOut(slide_index);
|
1129 |
def.resolve();
|
1130 |
}
|
1131 |
}
|
1132 |
+
|
1133 |
+
elements_times_timers.push(new Timer(function() {
|
1134 |
elementOut(element).done(function() {
|
1135 |
if(! getItemData(element, 'ignore-ease-out')) {
|
1136 |
elements_out_completed++;
|
1137 |
+
|
1138 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1139 |
pauseVideos(slide_index);
|
1140 |
slideOut(slide_index);
|
1145 |
}, final_element_time));
|
1146 |
}
|
1147 |
});
|
1148 |
+
|
1149 |
// Execute slide time
|
1150 |
current_slide_time_timer = new Timer(function() {
|
1151 |
can_pause = false;
|
1152 |
+
|
1153 |
resetProgressBar();
|
1154 |
+
|
1155 |
slide_time_completed = true;
|
1156 |
+
|
1157 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1158 |
pauseVideos(slide_index);
|
1159 |
slideOut(slide_index);
|
1160 |
def.resolve();
|
1161 |
+
}
|
1162 |
+
|
1163 |
if(! animate_all_out) {
|
1164 |
def.resolve();
|
1165 |
}
|
1166 |
+
else {
|
1167 |
// Elements with time == "all"
|
1168 |
elements.each(function() {
|
1169 |
var element = $(this);
|
1170 |
var time = getItemData(element, 'time');
|
1171 |
+
|
1172 |
if(time == 'all') {
|
1173 |
if(getItemData(element, 'ignore-ease-out')) {
|
1174 |
elements_out_completed++;
|
1175 |
+
|
1176 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1177 |
pauseVideos(slide_index);
|
1178 |
slideOut(slide_index);
|
1179 |
def.resolve();
|
1180 |
}
|
1181 |
}
|
1182 |
+
|
1183 |
elementOut(element).done(function() {
|
1184 |
if(! getItemData(element, 'ignore-ease-out')) {
|
1185 |
elements_out_completed++;
|
1186 |
+
|
1187 |
if(elements.length == elements_out_completed && slide_time_completed && animate_all_out) {
|
1188 |
pauseVideos(slide_index);
|
1189 |
slideOut(slide_index);
|
1195 |
});
|
1196 |
}
|
1197 |
}, data_time);
|
1198 |
+
|
1199 |
return def.promise();
|
1200 |
}
|
1201 |
+
|
1202 |
// VIDEOS FUNCTIONS
|
1203 |
+
|
1204 |
// Returns true if the element is a YouTube or a Vimeo iframe
|
1205 |
function isVideo(element) {
|
1206 |
return isYoutubeVideo(element) || isVimeoVideo(element);
|
1207 |
}
|
1208 |
+
|
1209 |
// Checks what's the source of the video, then plays it
|
1210 |
function playVideo(element) {
|
1211 |
if(isYoutubeVideo(element)) {
|
1215 |
playVimeoVideo(element);
|
1216 |
}
|
1217 |
}
|
1218 |
+
|
1219 |
// Pauses all the YouTube and Vimeo videos
|
1220 |
function pauseVideos(slide_index) {
|
1221 |
pauseYoutubeVideos(slide_index);
|
1222 |
pauseVimeoVideos(slide_index);
|
1223 |
}
|
1224 |
+
|
1225 |
// Checks what's the source of the video, then pauses it
|
1226 |
function pauseVideo(element) {
|
1227 |
if(isYoutubeVideo(element)) {
|
1231 |
pauseVimeoVideo(element);
|
1232 |
}
|
1233 |
}
|
1234 |
+
|
1235 |
// Checks if the element is a YouTube video
|
1236 |
function isYoutubeVideo(element) {
|
1237 |
return element.hasClass('cs-yt-iframe');
|
1238 |
}
|
1239 |
+
|
1240 |
// Returns the player associated to the element
|
1241 |
function getYoutubePlayer(element) {
|
1242 |
return youtube_videos[element.attr('id')].player;
|
1243 |
}
|
1244 |
+
|
1245 |
/*
|
1246 |
Returns:
|
1247 |
-1 – unstarted
|
1254 |
function getYoutubePlayerState(element) {
|
1255 |
return getYoutubePlayer(element).getPlayerState();
|
1256 |
}
|
1257 |
+
|
1258 |
// Checks if the video can be played and plays it
|
1259 |
function playYoutubeVideo(element) {
|
1260 |
// If autplay and first slide loop. Disabled on mobile for compatibility reasons (details on the Youtube's website)
|
1261 |
if(getItemData(element, 'autoplay') && ! youtube_videos[element.attr('id')].played_once && ! isMobile()) {
|
1262 |
getYoutubePlayer(element).playVideo();
|
1263 |
}
|
1264 |
+
|
1265 |
// If was paused
|
1266 |
if(getYoutubePlayerState(element) == 2) {
|
1267 |
getYoutubePlayer(element).playVideo();
|
1268 |
}
|
1269 |
+
|
1270 |
youtube_videos[element.attr('id')].played_once = true;
|
1271 |
}
|
1272 |
+
|
1273 |
// Pause all the videos in a slide
|
1274 |
function pauseYoutubeVideos(slide_index) {
|
1275 |
getSlide(slide_index).each(function() {
|
1276 |
var slide = $(this);
|
1277 |
+
|
1278 |
slide.find(ELEMENTS + '.cs-yt-iframe').each(function() {
|
1279 |
pauseYoutubeVideo($(this));
|
1280 |
});
|
1281 |
});
|
1282 |
}
|
1283 |
+
|
1284 |
// Checks if the video can be paused and pauses it
|
1285 |
function pauseYoutubeVideo(element) {
|
1286 |
if(getYoutubePlayerState(element) == 1) {
|
1287 |
getYoutubePlayer(element).pauseVideo();
|
1288 |
}
|
1289 |
}
|
1290 |
+
|
1291 |
// Checks if the element is a Vimeo video
|
1292 |
function isVimeoVideo(element) {
|
1293 |
return element.hasClass('cs-vimeo-iframe');
|
1294 |
}
|
1295 |
+
|
1296 |
// Returns the player associated to the element
|
1297 |
function getVimeoPlayer(element) {
|
1298 |
return vimeo_videos[element.attr('id')].player;
|
1299 |
}
|
1300 |
+
|
1301 |
// Plays the video
|
1302 |
+
function playVimeoVideo(element) {
|
1303 |
// If autplay and first slide loop. Disabled on mobile for compatibility reasons (details on the Vimeo's website)
|
1304 |
if(getItemData(element, 'autoplay') && ! vimeo_videos[element.attr('id')].played_once && ! isMobile()) {
|
1305 |
getVimeoPlayer(element).api('play');
|
1306 |
}
|
1307 |
+
|
1308 |
// If was paused
|
1309 |
if(getVimeoPlayer(element).api('paused') && ! vimeo_videos[element.attr('id')].ended && vimeo_videos[element.attr('id')].played_once) {
|
1310 |
getVimeoPlayer(element).api('play');
|
1311 |
}
|
1312 |
}
|
1313 |
+
|
1314 |
// Pause all the videos in a slide
|
1315 |
function pauseVimeoVideos(slide_index) {
|
1316 |
getSlide(slide_index).each(function() {
|
1317 |
var slide = $(this);
|
1318 |
+
|
1319 |
slide.find(ELEMENTS + '.cs-vimeo-iframe').each(function() {
|
1320 |
pauseVimeoVideo($(this));
|
1321 |
});
|
1322 |
});
|
1323 |
}
|
1324 |
+
|
1325 |
// Pauses the video
|
1326 |
function pauseVimeoVideo(element) {
|
1327 |
getVimeoPlayer(element).api('pause');
|
1328 |
}
|
1329 |
+
|
1330 |
/****************/
|
1331 |
/** ANIMATIONS **/
|
1332 |
/****************/
|
1333 |
+
|
1334 |
// WARNING: slideIn and elementIn must reset every CSS propriety to the correct value before starting
|
1335 |
+
|
1336 |
// Does slide in animation
|
1337 |
+
function slideIn(slide_index) {
|
1338 |
var slide = getSlide(slide_index);
|
1339 |
var data_in = getItemData(slide, 'in');
|
1340 |
var data_ease_in = getItemData(slide, 'ease-in');
|
1341 |
+
|
1342 |
var def = new $.Deferred();
|
1343 |
+
|
1344 |
if(slide.css('display') == 'block') {
|
1345 |
return def.resolve().promise();
|
1346 |
}
|
1347 |
+
|
1348 |
// If first play, don't execute the animation
|
1349 |
if(first_play) {
|
1350 |
slide.css({
|
1355 |
});
|
1356 |
return def.resolve().promise();
|
1357 |
}
|
1358 |
+
|
1359 |
switch(data_in) {
|
1360 |
case 'fade' :
|
1361 |
slide.css({
|
1368 |
'opacity' : getItemData(slide, 'opacity'),
|
1369 |
}, data_ease_in, function() { def.resolve(); });
|
1370 |
break;
|
1371 |
+
|
1372 |
case 'fadeLeft' :
|
1373 |
slide.css({
|
1374 |
'display' : 'block',
|
1381 |
'left' : 0,
|
1382 |
}, data_ease_in, function() { def.resolve(); });
|
1383 |
break;
|
1384 |
+
|
1385 |
case 'fadeRight' :
|
1386 |
slide.css({
|
1387 |
'display' : 'block',
|
1394 |
'left' : 0,
|
1395 |
}, data_ease_in, function() { def.resolve(); });
|
1396 |
break;
|
1397 |
+
|
1398 |
case 'slideLeft' :
|
1399 |
slide.css({
|
1400 |
'display' : 'block',
|
1406 |
'left' : 0,
|
1407 |
}, data_ease_in, function() { def.resolve(); });
|
1408 |
break;
|
1409 |
+
|
1410 |
case 'slideRight' :
|
1411 |
slide.css({
|
1412 |
'display' : 'block',
|
1418 |
'left' : 0,
|
1419 |
}, data_ease_in, function() { def.resolve(); });
|
1420 |
break;
|
1421 |
+
|
1422 |
case 'slideUp' :
|
1423 |
slide.css({
|
1424 |
'display' : 'block',
|
1430 |
'top' : 0,
|
1431 |
}, data_ease_in, function() { def.resolve(); });
|
1432 |
break;
|
1433 |
+
|
1434 |
case 'slideDown' :
|
1435 |
slide.css({
|
1436 |
'display' : 'block',
|
1442 |
'top' : 0,
|
1443 |
}, data_ease_in, function() { def.resolve(); });
|
1444 |
break;
|
1445 |
+
|
1446 |
default:
|
1447 |
slide.css({
|
1448 |
'display' : 'block',
|
1453 |
def.resolve();
|
1454 |
break;
|
1455 |
}
|
1456 |
+
|
1457 |
return def.promise();
|
1458 |
}
|
1459 |
+
|
1460 |
// Does slide out animation
|
1461 |
function slideOut(slide_index) {
|
1462 |
var slide = getSlide(slide_index);
|
1463 |
var data_out = getItemData(slide, 'out');
|
1464 |
var data_ease_out = getItemData(slide, 'ease-out');
|
1465 |
+
|
1466 |
var def = new $.Deferred();
|
1467 |
+
|
1468 |
if(slide.css('display') == 'none') {
|
1469 |
return def.resolve().promise();
|
1470 |
}
|
1471 |
+
|
1472 |
switch(data_out) {
|
1473 |
case 'fade' :
|
1474 |
slide.animate({
|
1482 |
def.resolve();
|
1483 |
});
|
1484 |
break;
|
1485 |
+
|
1486 |
case 'fadeLeft' :
|
1487 |
slide.animate({
|
1488 |
'opacity' : 0,
|
1497 |
def.resolve();
|
1498 |
});
|
1499 |
break;
|
1500 |
+
|
1501 |
case 'fadeRight' :
|
1502 |
slide.animate({
|
1503 |
'opacity' : 0,
|
1512 |
def.resolve();
|
1513 |
});
|
1514 |
break;
|
1515 |
+
|
1516 |
case 'slideLeft' :
|
1517 |
slide.animate({
|
1518 |
'left' : -getWidth(),
|
1525 |
def.resolve();
|
1526 |
});
|
1527 |
break;
|
1528 |
+
|
1529 |
case 'slideRight' :
|
1530 |
slide.animate({
|
1531 |
'left' : getWidth(),
|
1538 |
def.resolve();
|
1539 |
});
|
1540 |
break;
|
1541 |
+
|
1542 |
case 'slideUp' :
|
1543 |
slide.animate({
|
1544 |
'top' : -getHeight(),
|
1551 |
def.resolve();
|
1552 |
});
|
1553 |
break;
|
1554 |
+
|
1555 |
case 'slideDown' :
|
1556 |
slide.animate({
|
1557 |
'top' : getHeight(),
|
1564 |
def.resolve();
|
1565 |
});
|
1566 |
break;
|
1567 |
+
|
1568 |
default :
|
1569 |
slide.css({
|
1570 |
'display' : 'none',
|
1572 |
def.resolve();
|
1573 |
break;
|
1574 |
}
|
1575 |
+
|
1576 |
return def.promise();
|
1577 |
}
|
1578 |
+
|
1579 |
// Does element in animation
|
1580 |
function elementIn(element) {
|
1581 |
var element_width = element.outerWidth();
|
1584 |
var data_ease_in = getItemData(element, 'ease-in');
|
1585 |
var data_top = getItemData(element, 'top');
|
1586 |
var data_left = getItemData(element, 'left');
|
1587 |
+
|
1588 |
var def = new $.Deferred();
|
1589 |
+
|
1590 |
if(element.css('display') == 'block') {
|
1591 |
return def.resolve().promise();
|
1592 |
}
|
1593 |
+
|
1594 |
switch(data_in) {
|
1595 |
case 'slideDown' :
|
1596 |
element.css({
|
1602 |
'top' : getScaled(data_top + getLayoutGaps(element).top),
|
1603 |
}, data_ease_in, function() { def.resolve(); });
|
1604 |
break;
|
1605 |
+
|
1606 |
case 'slideUp' :
|
1607 |
element.css({
|
1608 |
'display' : 'block',
|
1613 |
'top' : getScaled(data_top + getLayoutGaps(element).top),
|
1614 |
}, data_ease_in, function() { def.resolve(); });
|
1615 |
break;
|
1616 |
+
|
1617 |
case 'slideLeft' :
|
1618 |
element.css({
|
1619 |
'display' : 'block',
|
1624 |
'left' : getScaled(data_left + getLayoutGaps(element).left),
|
1625 |
}, data_ease_in, function() { def.resolve(); });
|
1626 |
break;
|
1627 |
+
|
1628 |
case 'slideRight' :
|
1629 |
element.css({
|
1630 |
'display' : 'block',
|
1635 |
'left' : getScaled(data_left + getLayoutGaps(element).left),
|
1636 |
}, data_ease_in, function() { def.resolve(); });
|
1637 |
break;
|
1638 |
+
|
1639 |
case 'fade' :
|
1640 |
element.css({
|
1641 |
'display' : 'block',
|
1646 |
'opacity' : getItemData(element, 'opacity'),
|
1647 |
}, data_ease_in, function() { def.resolve(); });
|
1648 |
break;
|
1649 |
+
|
1650 |
case 'fadeDown' :
|
1651 |
element.css({
|
1652 |
'display' : 'block',
|
1658 |
'opacity' : getItemData(element, 'opacity'),
|
1659 |
}, data_ease_in, function() { def.resolve(); });
|
1660 |
break;
|
1661 |
+
|
1662 |
case 'fadeUp' :
|
1663 |
element.css({
|
1664 |
'display' : 'block',
|
1670 |
'opacity' : getItemData(element, 'opacity'),
|
1671 |
}, data_ease_in, function() { def.resolve(); });
|
1672 |
break;
|
1673 |
+
|
1674 |
case 'fadeLeft' :
|
1675 |
element.css({
|
1676 |
'display' : 'block',
|
1682 |
'opacity' : getItemData(element, 'opacity'),
|
1683 |
}, data_ease_in, function() { def.resolve(); });
|
1684 |
break;
|
1685 |
+
|
1686 |
case 'fadeRight' :
|
1687 |
element.css({
|
1688 |
'display' : 'block',
|
1694 |
'opacity' : getItemData(element, 'opacity'),
|
1695 |
}, data_ease_in, function() { def.resolve(); });
|
1696 |
break;
|
1697 |
+
|
1698 |
case 'fadeSmallDown' :
|
1699 |
element.css({
|
1700 |
'display' : 'block',
|
1706 |
'opacity' : getItemData(element, 'opacity'),
|
1707 |
}, data_ease_in, function() { def.resolve(); });
|
1708 |
break;
|
1709 |
+
|
1710 |
case 'fadeSmallUp' :
|
1711 |
element.css({
|
1712 |
'display' : 'block',
|
1718 |
'opacity' : getItemData(element, 'opacity'),
|
1719 |
}, data_ease_in, function() { def.resolve(); });
|
1720 |
break;
|
1721 |
+
|
1722 |
case 'fadeSmallLeft' :
|
1723 |
element.css({
|
1724 |
'display' : 'block',
|
1730 |
'opacity' : getItemData(element, 'opacity'),
|
1731 |
}, data_ease_in, function() { def.resolve(); });
|
1732 |
break;
|
1733 |
+
|
1734 |
case 'fadeSmallRight' :
|
1735 |
element.css({
|
1736 |
'display' : 'block',
|
1742 |
'opacity' : getItemData(element, 'opacity'),
|
1743 |
}, data_ease_in, function() { def.resolve(); });
|
1744 |
break;
|
1745 |
+
|
1746 |
default :
|
1747 |
element.css({
|
1748 |
'display' : 'block',
|
1753 |
def.resolve();
|
1754 |
break;
|
1755 |
}
|
1756 |
+
|
1757 |
return def.promise();
|
1758 |
}
|
1759 |
+
|
1760 |
// Does element out animation
|
1761 |
function elementOut(element) {
|
1762 |
var element_width = element.outerWidth();
|
1763 |
var element_height = element.outerHeight();
|
1764 |
var data_out = getItemData(element, 'out');
|
1765 |
var data_ease_out = getItemData(element, 'ease-out');
|
1766 |
+
|
1767 |
var def = new $.Deferred();
|
1768 |
+
|
1769 |
if(element.css('display') == 'none') {
|
1770 |
return def.resolve().promise();
|
1771 |
}
|
1772 |
+
|
1773 |
switch(data_out) {
|
1774 |
case 'slideDown' :
|
1775 |
element.animate({
|
1782 |
def.resolve();
|
1783 |
});
|
1784 |
break;
|
1785 |
+
|
1786 |
case 'slideUp' :
|
1787 |
element.animate({
|
1788 |
'top' : - element_height,
|
1794 |
def.resolve();
|
1795 |
});
|
1796 |
break;
|
1797 |
+
|
1798 |
case 'slideLeft' :
|
1799 |
element.animate({
|
1800 |
'left' : - element_width,
|
1806 |
def.resolve();
|
1807 |
});
|
1808 |
break;
|
1809 |
+
|
1810 |
case 'slideRight' :
|
1811 |
element.animate({
|
1812 |
'left' : getWidth(),
|
1818 |
def.resolve();
|
1819 |
});
|
1820 |
break;
|
1821 |
+
|
1822 |
case 'fade' :
|
1823 |
element.animate({
|
1824 |
'opacity' : 0,
|
1831 |
def.resolve();
|
1832 |
});
|
1833 |
break;
|
1834 |
+
|
1835 |
case 'fadeDown' :
|
1836 |
element.animate({
|
1837 |
'top' : getHeight(),
|
1845 |
def.resolve();
|
1846 |
});
|
1847 |
break;
|
1848 |
+
|
1849 |
case 'fadeUp' :
|
1850 |
element.animate({
|
1851 |
'top' : - element_height,
|
1859 |
def.resolve();
|
1860 |
});
|
1861 |
break;
|
1862 |
+
|
1863 |
case 'fadeLeft' :
|
1864 |
element.animate({
|
1865 |
'left' : - element_width,
|
1873 |
def.resolve();
|
1874 |
});
|
1875 |
break;
|
1876 |
+
|
1877 |
case 'fadeRight' :
|
1878 |
element.animate({
|
1879 |
'left' : getWidth(),
|
1887 |
def.resolve();
|
1888 |
});
|
1889 |
break;
|
1890 |
+
|
1891 |
case 'fadeSmallDown' :
|
1892 |
element.animate({
|
1893 |
'top' : getScaled(getItemData(element, 'top') + getLayoutGaps(element).top + 30),
|
1901 |
def.resolve();
|
1902 |
});
|
1903 |
break;
|
1904 |
+
|
1905 |
case 'fadeSmallUp' :
|
1906 |
element.animate({
|
1907 |
'top' : getScaled(getItemData(element, 'top') + getLayoutGaps(element).top - 30),
|
1915 |
def.resolve();
|
1916 |
});
|
1917 |
break;
|
1918 |
+
|
1919 |
case 'fadeSmallLeft' :
|
1920 |
element.animate({
|
1921 |
'left' : getScaled(getItemData(element, 'left') + getLayoutGaps(element).left - 30),
|
1929 |
def.resolve();
|
1930 |
});
|
1931 |
break;
|
1932 |
+
|
1933 |
case 'fadeSmallRight' :
|
1934 |
element.animate({
|
1935 |
'left' : getScaled(getItemData(element, 'left') + getLayoutGaps(element).left + 30),
|
1943 |
def.resolve();
|
1944 |
});
|
1945 |
break;
|
1946 |
+
|
1947 |
default :
|
1948 |
element.css({
|
1949 |
'display' : 'none',
|
1951 |
def.resolve();
|
1952 |
break;
|
1953 |
}
|
1954 |
+
|
1955 |
return def.promise();
|
1956 |
}
|
1957 |
+
|
1958 |
/**********************/
|
1959 |
/** PUBLIC FUNCTIONS **/
|
1960 |
/**********************/
|
1961 |
+
|
1962 |
this.resume = function() {
|
1963 |
resume();
|
1964 |
}
|
1965 |
+
|
1966 |
this.pause = function() {
|
1967 |
pause();
|
1968 |
}
|
1969 |
+
|
1970 |
this.nextSlide = function() {
|
1971 |
changeSlide(getNextSlide());
|
1972 |
}
|
1973 |
+
|
1974 |
this.previousSlide = function() {
|
1975 |
changeSlide(getPreviousSlide());
|
1976 |
}
|
1977 |
+
|
1978 |
this.changeSlide = function(slide_index) {
|
1979 |
changeSlide(slide_index);
|
1980 |
}
|
1981 |
+
|
1982 |
this.getCurrentSlide = function() {
|
1983 |
return current_slide;
|
1984 |
}
|
1985 |
+
|
1986 |
this.getTotalSlides = function() {
|
1987 |
return total_slides;
|
1988 |
}
|
1989 |
+
|
1990 |
};
|
1991 |
+
|
1992 |
/**************************/
|
1993 |
/** CRELLY SLIDER PLUGIN **/
|
1994 |
/**************************/
|
1995 |
+
|
1996 |
+
$.fn.crellySlider = function(options) {
|
1997 |
var settings = $.extend({
|
1998 |
layout : 'fixed',
|
1999 |
responsive : true,
|
2000 |
startWidth : 1140,
|
2001 |
startHeight : 500,
|
2002 |
+
|
2003 |
+
pauseOnHover : true,
|
2004 |
automaticSlide : true,
|
2005 |
showControls : true,
|
2006 |
showNavigation : true,
|
2007 |
showProgressBar : true,
|
2008 |
enableSwipe : true,
|
2009 |
+
|
2010 |
slidesTime : 3000,
|
2011 |
elementsDelay : 0,
|
2012 |
elementsTime : 'all',
|
2015 |
slidesEaseOut : 300,
|
2016 |
elementsEaseOut : 300,
|
2017 |
ignoreElementsEaseOut : false,
|
2018 |
+
|
2019 |
videoAutoplay : false,
|
2020 |
videoLoop : false,
|
2021 |
+
|
2022 |
beforeStart : function() {},
|
2023 |
beforeSetResponsive : function() {},
|
2024 |
beforeSlideStart : function() {},
|
2033 |
}
|
2034 |
});
|
2035 |
};
|
2036 |
+
|
2037 |
+
})(jQuery);
|
js/jquery.crellyslider.min.js
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
* Plugin Name: Crelly Slider
|
3 |
* Plugin URI: http://fabiorino1.altervista.org/projects/crellyslider
|
4 |
* Description: The first free WordPress slider with elements animations.
|
5 |
-
* Version: 1.1.
|
6 |
* Author: fabiorino
|
7 |
* Author URI: http://fabiorino1.altervista.org
|
8 |
* License: MIT
|
9 |
*/
|
10 |
|
11 |
-
!function(e){!function(e,t,n){"function"==typeof define&&define.amd?define(["jquery"],function(i){return n(i,e,t),i.mobile}):n(e.jQuery,e,t)}(this,document,function(e,t,n,i){!function(e,t,n,i){function a(e){for(;e&&"undefined"!=typeof e.originalEvent;)e=e.originalEvent;return e}function o(t,n){var o,s,r,c,l,d,p,f,u,h=t.type;if(t=e.Event(t),t.type=n,o=t.originalEvent,s=e.event.props,h.search(/^(mouse|click)/)>-1&&(s=Y),o)for(p=s.length,c;p;)c=s[--p],t[c]=o[c];if(h.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1),-1!==h.search(/^touch/)&&(r=a(o),h=r.touches,l=r.changedTouches,d=h&&h.length?h[0]:l&&l.length?l[0]:i,d))for(f=0,u=P.length;u>f;f++)c=P[f],t[c]=d[c];return t}function s(t){for(var n,i,a={};t;){n=e.data(t,S);for(i in n)n[i]&&(a[i]=a.hasVirtualBinding=!0);t=t.parentNode}return a}function r(t,n){for(var i;t;){if(i=e.data(t,S),i&&(!n||i[n]))return t;t=t.parentNode}return null}function c(){X=!1}function l(){X=!0}function d(){W=0,C.length=0,z=!1,l()}function p(){c()}function f(){u(),F=setTimeout(function(){F=0,d()},e.vmouse.resetTimerDuration)}function u(){F&&(clearTimeout(F),F=0)}function h(t,n,i){var a;return(i&&i[t]||!i&&r(n.target,t))&&(a=o(n,t),e(n.target).trigger(a)),a}function v(t){var n,i=e.data(t.target,E);!z&&(!W||W!==i)&&(n=h("v"+t.type,t),n&&(n.isDefaultPrevented()&&t.preventDefault(),n.isPropagationStopped()&&t.stopPropagation(),n.isImmediatePropagationStopped()&&t.stopImmediatePropagation()))}function m(t){var n,i,o,r=a(t).touches;r&&1===r.length&&(n=t.target,i=s(n),i.hasVirtualBinding&&(W=_++,e.data(n,E,W),u(),p(),M=!1,o=a(t).touches[0],O=o.pageX,R=o.pageY,h("vmouseover",t,i),h("vmousedown",t,i)))}function y(e){X||(M||h("vmousecancel",e,s(e.target)),M=!0,f())}function g(t){if(!X){var n=a(t).touches[0],i=M,o=e.vmouse.moveDistanceThreshold,r=s(t.target);M=M||Math.abs(n.pageX-O)>o||Math.abs(n.pageY-R)>o,M&&!i&&h("vmousecancel",t,r),h("vmousemove",t,r),f()}}function b(e){if(!X){l();var t,n,i=s(e.target);h("vmouseup",e,i),M||(t=h("vclick",e,i),t&&t.isDefaultPrevented()&&(n=a(e).changedTouches[0],C.push({touchID:W,x:n.clientX,y:n.clientY}),z=!0)),h("vmouseout",e,i),M=!1,f()}}function w(t){var n,i=e.data(t,S);if(i)for(n in i)if(i[n])return!0;return!1}function k(){}function D(t){var n=t.substr(1);return{setup:function(){w(this)||e.data(this,S,{});var i=e.data(this,S);i[t]=!0,x[t]=(x[t]||0)+1,1===x[t]&&H.bind(n,v),e(this).bind(n,k),B&&(x.touchstart=(x.touchstart||0)+1,1===x.touchstart&&H.bind("touchstart",m).bind("touchend",b).bind("touchmove",g).bind("scroll",y))},teardown:function(){--x[t],x[t]||H.unbind(n,v),B&&(--x.touchstart,x.touchstart||H.unbind("touchstart",m).unbind("touchmove",g).unbind("touchend",b).unbind("scroll",y));var i=e(this),a=e.data(this,S);a&&(a[t]=!1),i.unbind(n,k),w(this)||i.removeData(S)}}}var T,I,S="virtualMouseBindings",E="virtualTouchID",N="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),P="clientX clientY pageX pageY screenX screenY".split(" "),L=e.event.mouseHooks?e.event.mouseHooks.props:[],Y=e.event.props.concat(L),x={},F=0,O=0,R=0,M=!1,C=[],z=!1,X=!1,B="addEventListener"in n,H=e(n),_=1,W=0;for(e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500},I=0;I<N.length;I++)e.event.special[N[I]]=D(N[I]);B&&n.addEventListener("click",function(t){var n,i,a,o,s,r,c=C.length,l=t.target;if(c)for(n=t.clientX,i=t.clientY,T=e.vmouse.clickDistanceThreshold,a=l;a;){for(o=0;c>o;o++)if(s=C[o],r=0,a===l&&Math.abs(s.x-n)<T&&Math.abs(s.y-i)<T||e.data(a,E)===s.touchID)return t.preventDefault(),void t.stopPropagation();a=a.parentNode}},!0)}(e,t,n),function(e){e.mobile={}}(e),function(e,t){var i={touch:"ontouchend"in n};e.mobile.support=e.mobile.support||{},e.extend(e.support,i),e.extend(e.mobile.support,i)}(e),function(e,t,i){function a(t,n,a,o){var s=a.type;a.type=n,o?e.event.trigger(a,i,t):e.event.dispatch.call(t,a),a.type=s}var o=e(n),s=e.mobile.support.touch,r="touchmove scroll",c=s?"touchstart":"mousedown",l=s?"touchend":"mouseup",d=s?"touchmove":"mousemove";e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,n){e.fn[n]=function(e){return e?this.bind(n,e):this.trigger(n)},e.attrFn&&(e.attrFn[n]=!0)}),e.event.special.scrollstart={enabled:!0,setup:function(){function t(e,t){n=t,a(o,n?"scrollstart":"scrollstop",e)}var n,i,o=this,s=e(o);s.bind(r,function(a){e.event.special.scrollstart.enabled&&(n||t(a,!0),clearTimeout(i),i=setTimeout(function(){t(a,!1)},50))})},teardown:function(){e(this).unbind(r)}},e.event.special.tap={tapholdThreshold:750,emitTapOnTaphold:!0,setup:function(){var t=this,n=e(t),i=!1;n.bind("vmousedown",function(s){function r(){clearTimeout(d)}function c(){r(),n.unbind("vclick",l).unbind("vmouseup",r),o.unbind("vmousecancel",c)}function l(e){c(),i||p!==e.target?i&&e.preventDefault():a(t,"tap",e)}if(i=!1,s.which&&1!==s.which)return!1;var d,p=s.target;n.bind("vmouseup",r).bind("vclick",l),o.bind("vmousecancel",c),d=setTimeout(function(){e.event.special.tap.emitTapOnTaphold||(i=!0),a(t,"taphold",e.Event("taphold",{target:p}))},e.event.special.tap.tapholdThreshold)})},teardown:function(){e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"),o.unbind("vmousecancel")}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:30,getLocation:function(e){var n=t.pageXOffset,i=t.pageYOffset,a=e.clientX,o=e.clientY;return 0===e.pageY&&Math.floor(o)>Math.floor(e.pageY)||0===e.pageX&&Math.floor(a)>Math.floor(e.pageX)?(a-=n,o-=i):(o<e.pageY-i||a<e.pageX-n)&&(a=e.pageX-n,o=e.pageY-i),{x:a,y:o}},start:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,i=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[i.x,i.y],origin:e(t.target)}},stop:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,i=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[i.x,i.y]}},handleSwipe:function(t,n,i,o){if(n.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-n.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])<e.event.special.swipe.verticalDistanceThreshold){var s=t.coords[0]>n.coords[0]?"swipeleft":"swiperight";return a(i,"swipe",e.Event("swipe",{target:o,swipestart:t,swipestop:n}),!0),a(i,s,e.Event(s,{target:o,swipestart:t,swipestop:n}),!0),!0}return!1},eventInProgress:!1,setup:function(){var t,n=this,i=e(n),a={};t=e.data(this,"mobile-events"),t||(t={length:0},e.data(this,"mobile-events",t)),t.length++,t.swipe=a,a.start=function(t){if(!e.event.special.swipe.eventInProgress){e.event.special.swipe.eventInProgress=!0;var i,s=e.event.special.swipe.start(t),r=t.target,c=!1;a.move=function(t){s&&!t.isDefaultPrevented()&&(i=e.event.special.swipe.stop(t),c||(c=e.event.special.swipe.handleSwipe(s,i,n,r),c&&(e.event.special.swipe.eventInProgress=!1)),Math.abs(s.coords[0]-i.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault())},a.stop=function(){c=!0,e.event.special.swipe.eventInProgress=!1,o.off(d,a.move),a.move=null},o.on(d,a.move).one(l,a.stop)}},i.on(c,a.start)},teardown:function(){var t,n;t=e.data(this,"mobile-events"),t&&(n=t.swipe,delete t.swipe,t.length--,0===t.length&&e.removeData(this,"mobile-events")),n&&(n.start&&e(this).off(c,n.start),n.move&&o.off(d,n.move),n.stop&&o.off(l,n.stop))}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)},teardown:function(){e(this).unbind(n)}}})}(e,this)});var t=document.createElement("script");t.src="https://www.youtube.com/iframe_api";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);(function(){function e(t){return new e.fn.init(t)}function t(e,t,n){return n.contentWindow.postMessage?(e=JSON.stringify({method:e,value:t}),void n.contentWindow.postMessage(e,s)):!1}function n(e){var t,n;try{t=JSON.parse(e.data),n=t.event||t.method}catch(i){}if("ready"!=n||o||(o=!0),!/^https?:\/\/player.vimeo.com/.test(e.origin))return!1;"*"===s&&(s=e.origin),e=t.value;var r=t.data,c=""===c?null:t.player_id;return t=c?a[c][n]:a[n],n=[],t?(void 0!==e&&n.push(e),r&&n.push(r),c&&n.push(c),0<n.length?t.apply(null,n):t.call()):!1}function i(e,t,n){n?(a[n]||(a[n]={}),a[n][e]=t):a[e]=t}var a={},o=!1,s="*";return e.fn=e.prototype={element:null,init:function(e){return"string"==typeof e&&(e=document.getElementById(e)),this.element=e,this},api:function(e,n){if(!this.element||!e)return!1;var a=this.element,o=""!==a.id?a.id:null,s=n&&n.constructor&&n.call&&n.apply?null:n,r=n&&n.constructor&&n.call&&n.apply?n:null;return r&&i(e,r,o),t(e,s,a),this},addEvent:function(e,n){if(!this.element)return!1;var a=this.element,s=""!==a.id?a.id:null;return i(e,n,s),"ready"!=e?t("addEventListener",e,a):"ready"==e&&o&&n.call(null,s),this},removeEvent:function(e){if(!this.element)return!1;var n=this.element,i=""!==n.id?n.id:null;e:{if(i&&a[i]){if(!a[i][e]){i=!1;break e}a[i][e]=null}else{if(!a[e]){i=!1;break e}a[e]=null}i=!0}"ready"!=e&&i&&t("removeEventListener",e,n)}},e.fn.init.prototype=e.fn,window.addEventListener?window.addEventListener("message",n,!1):window.attachEvent("onmessage",n),window.Froogaloop=window.$f=e})();e.CrellySlider=function(t,n){function i(){if(se.wrapInner('<div class="crellyslider" />'),se.find(re+" > ul").addClass("cs-slides"),se.find(re+" "+ce+" > li").addClass("cs-slide"),oe=P().length,0==oe)return!1;if(1==oe){var e=L(0),t=se.find(re).find(ce);e.clone().prependTo(t),oe++}if(n.showControls&&se.find(re).append('<div class="cs-controls"><span class="cs-next"></span><span class="cs-previous"></span></div>'),n.showNavigation){for(var i='<div class="cs-navigation">',o=0;oe>o;o++)i+='<span class="cs-slide-link"></span>';i+="</div>",se.find(re).append(i)}n.showProgressBar?se.find(re).append('<div class="cs-progress-bar"></div>'):se.find(re).append('<div class="cs-progress-bar cs-progress-bar-hidden"></div>'),se.css("display","block"),n.responsive&&y(),u(),P().find(".cs-background-link").html(" ").data({left:0,top:0,"in":"none",out:"none",easeIn:0,easeOut:0,delay:0,time:"all"}),p(),a().done(function(){var e=setInterval(function(){"complete"==document.readyState&&se.find(re).find(".cs-preloader").length>0&&(clearInterval(e),r())},100)})}function a(){var t=new e.Deferred,n=P().find(".cs-yt-iframe, .cs-vimeo-iframe").length,i=0;return 0==n?t.resolve().promise():(P().find(".cs-yt-iframe, .cs-vimeo-iframe").each(function(){var a=e(this);a.one("load",function(){i++,i==n&&o().done(function(){s().done(function(){t.resolve()})})})}),t.promise())}function o(){var t,n=new e.Deferred,i=P(),a=i.find(de+".cs-yt-iframe").length,o=0;return 0==a?n.resolve().promise():(i.each(function(){var i=e(this),s=i.find(de+".cs-yt-iframe");s.each(function(){var i=e(this);i.uniqueId(),i.attr("id","cs-yt-iframe-"+i.attr("id"));var s=new YT.Player(i.attr("id"),{events:{onReady:function(){o++,o==a&&n.resolve()},onStateChange:function(e){e.data===YT.PlayerState.ENDED&&N(i,"loop")&&s.playVideo()}}});t={player:s,played_once:!1},be[i.attr("id")]=t})}),n.promise())}function s(){var t,n=new e.Deferred,i=P(),a=i.find(de+".cs-vimeo-iframe").length,o=0;return 0==a?n.resolve().promise():(i.each(function(){var i=e(this),s=i.find(de+".cs-vimeo-iframe");s.each(function(){var i=e(this);i.uniqueId(),i.attr("id","cs-vimeo-iframe-"+i.attr("id")),i.attr("src",i.attr("src")+"&player_id="+i.attr("id"));var s=$f(i[0]);s.addEvent("ready",function(){s.addEvent("finish",function(){we[i.attr("id")].ended=!0}),s.addEvent("play",function(){we[i.attr("id")].played_once=!0,we[i.attr("id")].ended=!1}),N(i,"loop")&&s.api("setLoop",!0),o++,o==a&&n.resolve()}),t={player:s,played_once:!1,ended:!1},we[i.attr("id")]=t})}),n.promise())}function r(){n.responsive&&y(),u(),De=e(window).width(),c(),d(),f(),n.beforeStart(),n.responsive?v():b()}function c(){P().each(function(){var t=e(this);t.find(de).each(function(){var t=e(this);t.find("*").each(function(){var t=e(this);l(t,!0)}),l(t,!1)}),t.css("display","none"),t.data("opacity",parseFloat(t.css("opacity")))})}function l(e,t){e.data("width",parseFloat(e.width())),e.data("height",parseFloat(e.height())),e.data("letter-spacing",parseFloat(e.css("letter-spacing"))),e.data("font-size",parseFloat(e.css("font-size"))),"px"==e.css("line-height").slice(-2).toLowerCase()?e.data("line-height",parseFloat(e.css("line-height"))):e.data("line-height",parseFloat(e.css("line-height"))*N(e,"font-size")),e.data("padding-top",parseFloat(e.css("padding-top"))),e.data("padding-right",parseFloat(e.css("padding-right"))),e.data("padding-bottom",parseFloat(e.css("padding-bottom"))),e.data("padding-left",parseFloat(e.css("padding-left"))),e.data("opacity",parseFloat(e.css("opacity"))),t||e.css("display","none")}function d(){n.responsive&&e(window).resize(function(){De!=e(window).width()&&("full-width"==n.layout&&T()!=e(se).width()||e(se).width()<T()||e(se).width()>T()&&T()<n.startWidth)&&v()}),se.find(re).find(".cs-controls > .cs-previous").click(function(){C(E())}),se.find(re).find(".cs-controls > .cs-next").click(function(){C(S())}),n.enableSwipe&&(se.find(re).on("swipeleft",function(){D(),C(S())}),se.find(re).on("swiperight",function(){D(),C(E())})),se.find(re).find(".cs-navigation > .cs-slide-link").click(function(){C(e(this).index())}),n.pauseOnHover&&(se.find(re).find(ce).hover(function(){k()}),se.find(re).find(ce).mouseleave(function(){D()}))}function p(){function t(){se.find(re).append('<div class="cs-preloader"><div class="cs-bg"></div><div class="cs-loader"><div class="cs-spinner"></div></div></div>'),se.find(re).find(".cs-preloader").css({"background-color":L(0).css("background-color"),"background-image":L(0).css("background-image"),"background-position":L(0).css("background-position"),"background-repeat":L(0).css("background-repeat"),"background-size":L(0).css("background-size")}),se.find(re).find(".cs-preloader > .cs-bg").css({"background-color":L(0).css("background-color"),"background-image":L(0).css("background-image"),"background-position":L(0).css("background-position"),"background-repeat":L(0).css("background-repeat"),"background-size":L(0).css("background-size")})}se.find(re).find(ce).css("visibility","hidden"),se.find(re).find(".cs-progress-bar").css("display","none"),se.find(re).find(".cs-navigation").css("display","none"),se.find(re).find(".cs-controls").css("display","none");var n=L(0).css("background-image");n=n.replace(/^url\(["']?/,"").replace(/["']?\)$/,""),n.match(/\.(jpeg|jpg|gif|png|bmp|tiff|tif)$/)?e("<img>").load(function(){t()}).attr("src",n).each(function(){this.complete&&e(this).load()}):t()}function f(){se.find(re).find(ce).css("visibility","visible"),se.find(re).find(".cs-progress-bar").css("display","block"),se.find(re).find(".cs-navigation").css("display","block"),se.find(re).find(".cs-controls").css("display","block"),te(L(0)),L(0).finish(),se.find(re).find(".cs-preloader").animate({opacity:0},300,function(){se.find(re).find(".cs-preloader").remove()})}function u(){var e,t,i=n.layout;switch(i){case"fixed":e=n.startWidth,t=n.startHeight,se.find(re).css({width:g(e),height:g(t)}),P().css({width:g(e),height:g(t)});break;case"full-width":e=se.width(),t=n.startHeight,se.find(re).css({width:e,height:g(t)}),P().css({width:e,height:g(t)});break;default:return!1}}function h(e){var t=(I()-n.startHeight)/2,i=(T()-n.startWidth)/2,a=0,o=0;return t>0&&(a=t),i>0&&(o=i),{top:a,left:o}}function v(){n.beforeSetResponsive();var t=P();w(!0),t.each(function(){var t=e(this),n=t.find(de);t.finish(),te(t),t.finish(),n.each(function(){var t=e(this);t.finish(),ie(t),t.finish(),H(t)&&U(t)})}),y(),u(),t.each(function(){var t=e(this),n=t.find(de);n.each(function(){var t=e(this);t.find("*").each(function(){var t=e(this);m(t)}),m(t),t.finish(),ae(t),t.finish(),H(t)&&U(t)}),t.finish(),ne(t),t.finish()}),De=e(window).width(),b()}function m(e){e.css({top:g(N(e,"top")+h(e).top),left:g(N(e,"left")+h(e).left),"padding-top":g(N(e,"padding-top")),"padding-right":g(N(e,"padding-right")),"padding-bottom":g(N(e,"padding-bottom")),"padding-left":g(N(e,"padding-left"))}),e.is("input")||e.is("button")||e.text().trim().length?e.css({"line-height":g(N(e,"line-height"))+"px","letter-spacing":g(N(e,"letter-spacing")),"font-size":g(N(e,"font-size"))}):e.css({width:g(N(e,"width")),height:g(N(e,"height"))})}function y(){var e=se.width(),t=n.startWidth;ke=e>=t||!n.responsive?1:e/t}function g(e){return e*ke}function b(){n.automaticSlide?F():z(pe),ve=!1}function w(t){for(var n=0;n<ye.length;n++)ye[n].clear();for(var n=0;n<ge.length;n++)ge[n].clear();me.clear(),P().each(function(){var n=e(this);t?n.finish():n.stop(!0,!0),n.find(de).each(function(){var n=e(this);t?n.finish():n.stop(!0,!0)})}),R()}function k(){if(!fe&&ue){n.beforePause();var e=se.find(re).find(".cs-progress-bar");e.stop(!0),me.pause(),fe=!0}}function D(){if(fe&&ue){n.beforeResume();var e=se.find(re).find(".cs-progress-bar"),t=(N(L(pe),"time"),me.getRemaining());e.animate({width:"100%"},t),me.resume(),fe=!1}}function T(){return se.find(re).width()}function I(){return se.find(re).height()}function S(){return pe+1==oe?0:pe+1}function E(){return 0>pe-1?oe-1:pe-1}function N(e,t){var i;switch(i=e.parent("ul").hasClass("cs-slides")?!0:!1,t){case"ease-in":return i?isNaN(parseInt(e.data(t)))?n.slidesEaseIn:parseInt(e.data(t)):isNaN(parseInt(e.data(t)))?n.elementsEaseIn:parseInt(e.data(t));case"ease-out":return i?isNaN(parseInt(e.data(t)))?n.slidesEaseOut:parseInt(e.data(t)):isNaN(parseInt(e.data(t)))?n.elementsEaseOut:parseInt(e.data(t));case"delay":return isNaN(parseInt(e.data(t)))?n.elementsDelay:parseInt(e.data(t));case"time":return i?isNaN(parseInt(e.data(t)))?n.slidesTime:parseInt(e.data(t)):"all"==e.data(t)?"all":isNaN(parseInt(e.data(t)))?n.itemsTime:parseInt(e.data(t));case"ignore-ease-out":return 1==parseInt(e.data(t))?!0:0==parseInt(e.data(t))?!1:n.ignoreElementsEaseOut;case"autoplay":return 1==parseInt(e.data(t))?!0:0==parseInt(e.data(t))?!1:n.videoAutoplay;case"loop":return 1==parseInt(e.data(t))?!0:0==parseInt(e.data(t))?!1:n.videoLoop;case"top":case"left":case"width":case"height":case"padding-top":case"padding-right":case"padding-bottom":case"padding-left":case"line-height":case"letter-spacing":case"font-size":return isNaN(parseFloat(e.data(t)))?0:parseFloat(e.data(t));case"in":case"out":case"opacity":return e.data(t);default:return!1}}function P(){return se.find(re).find(ce).find(le)}function L(e){return P().eq(e)}function Y(e,t){var n,i,a=t;this.pause=function(){clearTimeout(n),a-=new Date-i},this.resume=function(){i=new Date,clearTimeout(n),n=window.setTimeout(function(){e()},a)},this.clear=function(){clearTimeout(n)},this.getRemaining=function(){return a},this.resume()}function x(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function F(){z(pe).done(function(){fe||(pe=S(),F())})}function O(){var e=se.find(re).find(".cs-progress-bar");R(),e.animate({width:"100%"},N(L(pe),"time"))}function R(){var e=se.find(re).find(".cs-progress-bar");e.stop(),e.css("width",0)}function M(){var t=se.find(re).find(".cs-navigation"),n=t.find("> .cs-slide-link");n.each(function(){var t=e(this);t.index()==pe?t.addClass("cs-active"):t.removeClass("cs-active")})}function C(e){e!=pe&&(ue||he)&&(w(!1),B(pe,!1,!0).done(function(){pe=e,b()}))}function z(t){n.beforeSlideStart();var i=new e.Deferred;he=!1;for(var a=0;a<ye.length;a++)ye[a].clear();for(var a=0;a<ge.length;a++)ge[a].clear();me.clear(),L(t).finish(),ne(t),L(t).finish();var o=L(t).find(de);return o.each(function(){var t=e(this);t.finish(),ae(t),t.finish()}),M(),X(t),n.automaticSlide?B(t,!0,!0).done(function(){he=!0,i.resolve()}):B(t,!0,!1).done(function(){he=!0,i.resolve()}),i.promise()}function X(t){var n=L(t),i=n.find(de),a=0,o=!1,s=new e.Deferred;return ue=!1,te(t).done(function(){O(),ue=!0,o=!0,o&&a==i.length&&s.resolve()}),i.each(function(){var t=e(this),n=N(t,"delay");ge.push(new Y(function(){ie(t).done(function(){H(t)&&_(t),a++,o&&a==i.length&&s.resolve()})},n))}),s.promise()}function B(t,n,i){var a=L(t),o=a.find(de),s=n?N(a,"time")+N(a,"ease-in"):0,r=0,c=!1,l=new e.Deferred;return o.each(function(){var a=e(this),s=N(a,"time");if("all"!=s){var d=n?s:0;N(a,"ignore-ease-out")&&(r++,o.length==r&&c&&i&&(W(t),ne(t),l.resolve())),ye.push(new Y(function(){ae(a).done(function(){N(a,"ignore-ease-out")||(r++,o.length==r&&c&&i&&(W(t),ne(t),l.resolve()))})},d))}}),me=new Y(function(){ue=!1,R(),c=!0,o.length==r&&c&&i&&(W(t),ne(t),l.resolve()),i?o.each(function(){var n=e(this),a=N(n,"time");"all"==a&&(N(n,"ignore-ease-out")&&(r++,o.length==r&&c&&i&&(W(t),ne(t),l.resolve())),ae(n).done(function(){N(n,"ignore-ease-out")||(r++,o.length==r&&c&&i&&(W(t),ne(t),l.resolve()))}))}):l.resolve()},s),l.promise()}function H(e){return A(e)||Q(e)}function _(e){A(e)?q(e):K(e)}function W(e){$(e),Z(e)}function U(e){A(e)?J(e):ee(e)}function A(e){return e.hasClass("cs-yt-iframe")}function V(e){return be[e.attr("id")].player}function j(e){return V(e).getPlayerState()}function q(e){!N(e,"autoplay")||be[e.attr("id")].played_once||x()||V(e).playVideo(),2==j(e)&&V(e).playVideo(),be[e.attr("id")].played_once=!0}function $(t){L(t).each(function(){var t=e(this);t.find(de+".cs-yt-iframe").each(function(){J(e(this))})})}function J(e){1==j(e)&&V(e).pauseVideo()}function Q(e){return e.hasClass("cs-vimeo-iframe")}function G(e){return we[e.attr("id")].player}function K(e){!N(e,"autoplay")||we[e.attr("id")].played_once||x()||G(e).api("play"),G(e).api("paused")&&!we[e.attr("id")].ended&&we[e.attr("id")].played_once&&G(e).api("play")}function Z(t){L(t).each(function(){var t=e(this);t.find(de+".cs-vimeo-iframe").each(function(){ee(e(this))})})}function ee(e){G(e).api("pause")}function te(t){var n=L(t),i=N(n,"in"),a=N(n,"ease-in"),o=new e.Deferred;if("block"==n.css("display"))return o.resolve().promise();if(ve)return n.css({display:"block",top:0,left:0,opacity:N(n,"opacity")}),o.resolve().promise();switch(i){case"fade":n.css({display:"block",top:0,left:0,opacity:0}),n.animate({opacity:N(n,"opacity")},a,function(){o.resolve()});break;case"fadeLeft":n.css({display:"block",top:0,left:T(),opacity:0}),n.animate({opacity:N(n,"opacity"),left:0},a,function(){o.resolve()});break;case"fadeRight":n.css({display:"block",top:0,left:-T(),opacity:0}),n.animate({opacity:N(n,"opacity"),left:0},a,function(){o.resolve()});break;case"slideLeft":n.css({display:"block",top:0,left:T(),opacity:N(n,"opacity")}),n.animate({left:0},a,function(){o.resolve()});break;case"slideRight":n.css({display:"block",top:0,left:-T(),opacity:N(n,"opacity")}),n.animate({left:0},a,function(){o.resolve()});break;case"slideUp":n.css({display:"block",top:I(),left:0,opacity:N(n,"opacity")}),n.animate({top:0},a,function(){o.resolve()});break;case"slideDown":n.css({display:"block",top:-I(),left:0,opacity:N(n,"opacity")}),n.animate({top:0},a,function(){o.resolve()});break;default:n.css({display:"block",top:0,left:0,opacity:N(n,"opacity")}),o.resolve()}return o.promise()}function ne(t){var n=L(t),i=N(n,"out"),a=N(n,"ease-out"),o=new e.Deferred;if("none"==n.css("display"))return o.resolve().promise();switch(i){case"fade":n.animate({opacity:0},a,function(){n.css({display:"none",opacity:N(n,"opacity")}),o.resolve()});break;case"fadeLeft":n.animate({opacity:0,left:-T()},a,function(){n.css({display:"none",opacity:N(n,"opacity"),left:0}),o.resolve()});break;case"fadeRight":n.animate({opacity:0,left:T()},a,function(){n.css({display:"none",opacity:N(n,"opacity"),left:0}),o.resolve()});break;case"slideLeft":n.animate({left:-T()},a,function(){n.css({display:"none",left:0}),o.resolve()});break;case"slideRight":n.animate({left:T()},a,function(){n.css({display:"none",left:0}),o.resolve()});break;case"slideUp":n.animate({top:-I()},a,function(){n.css({display:"none",top:0}),o.resolve()});break;case"slideDown":n.animate({top:I()},a,function(){n.css({display:"none",top:0}),o.resolve()});break;default:n.css({display:"none"}),o.resolve()}return o.promise()}function ie(t){var n=t.outerWidth(),i=t.outerHeight(),a=N(t,"in"),o=N(t,"ease-in"),s=N(t,"top"),r=N(t,"left"),c=new e.Deferred;if("block"==t.css("display"))return c.resolve().promise();switch(a){case"slideDown":t.css({display:"block",top:-i,left:g(r+h(t).left),opacity:N(t,"opacity")}).animate({top:g(s+h(t).top)},o,function(){c.resolve()});break;case"slideUp":t.css({display:"block",top:I(),left:g(r+h(t).left),opacity:N(t,"opacity")}).animate({top:g(s+h(t).top)},o,function(){c.resolve()});break;case"slideLeft":t.css({display:"block",top:g(s+h(t).top),left:T(),opacity:N(t,"opacity")}).animate({left:g(r+h(t).left)},o,function(){c.resolve()});break;case"slideRight":t.css({display:"block",top:g(s+h(t).top),left:-n,opacity:N(t,"opacity")}).animate({left:g(r+h(t).left)},o,function(){c.resolve()});break;case"fade":t.css({display:"block",top:g(s+h(t).top),left:g(r+h(t).left),opacity:0}).animate({opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeDown":t.css({display:"block",top:-i,left:g(r+h(t).left),opacity:0}).animate({top:g(s+h(t).top),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeUp":t.css({display:"block",top:I(),left:g(r+h(t).left),opacity:0}).animate({top:g(s+h(t).top),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeLeft":t.css({display:"block",top:g(s+h(t).top),left:T(),opacity:0}).animate({left:g(r+h(t).left),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeRight":t.css({display:"block",top:g(s+h(t).top),left:-n,opacity:0}).animate({left:g(r+h(t).left),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeSmallDown":t.css({display:"block",top:g(s+h(t).top-30),left:g(r+h(t).left),opacity:0}).animate({top:g(s+h(t).top),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeSmallUp":t.css({display:"block",top:g(s+h(t).top+30),left:g(r+h(t).left),opacity:0}).animate({top:g(s+h(t).top),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeSmallLeft":t.css({display:"block",top:g(s+h(t).top),left:g(r+h(t).left+30),opacity:0}).animate({left:g(r+h(t).left),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeSmallRight":t.css({display:"block",top:g(s+h(t).top),left:g(r+h(t).left-30),opacity:0}).animate({left:g(r+h(t).left),opacity:N(t,"opacity")},o,function(){c.resolve()});break;default:t.css({display:"block",top:g(s+h(t).top),left:g(r+h(t).left),opacity:N(t,"opacity")}),c.resolve()}return c.promise()}function ae(t){var n=t.outerWidth(),i=t.outerHeight(),a=N(t,"out"),o=N(t,"ease-out"),s=new e.Deferred;if("none"==t.css("display"))return s.resolve().promise();switch(a){case"slideDown":t.animate({top:I()},o,function(){t.css({display:"none"}),s.resolve()});break;case"slideUp":t.animate({top:-i},o,function(){t.css({display:"none"}),s.resolve()});break;case"slideLeft":t.animate({left:-n},o,function(){t.css({display:"none"}),s.resolve()});break;case"slideRight":t.animate({left:T()},o,function(){t.css({display:"none"}),s.resolve()});break;case"fade":t.animate({opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeDown":t.animate({top:I(),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeUp":t.animate({top:-i,opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeLeft":t.animate({left:-n,opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeRight":t.animate({left:T(),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeSmallDown":t.animate({top:g(N(t,"top")+h(t).top+30),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeSmallUp":t.animate({top:g(N(t,"top")+h(t).top-30),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeSmallLeft":t.animate({left:g(N(t,"left")+h(t).left-30),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeSmallRight":t.animate({left:g(N(t,"left")+h(t).left+30),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;default:t.css({display:"none"}),s.resolve()}return s.promise()}var oe,se=e(t),re="div.crellyslider",ce="ul.cs-slides",le="li.cs-slide",de="> *",pe=0,fe=!1,ue=!1,he=!1,ve=!0,me=new Y(function(){},0),ye=new Array,ge=new Array,be={},we={},ke=1,De=0;if("undefined"==typeof YT||"undefined"==typeof YT.Player)var Te=setInterval(function(){"undefined"!=typeof YT&&"undefined"!=typeof YT.Player&&(clearInterval(Te),i())},100);else i();this.resume=function(){D()},this.pause=function(){k()},this.nextSlide=function(){C(S())},this.previousSlide=function(){C(E())},this.changeSlide=function(e){C(e)},this.getCurrentSlide=function(){return pe},this.getTotalSlides=function(){return oe}},e.fn.crellySlider=function(t){var n=e.extend({layout:"fixed",responsive:!0,startWidth:1140,startHeight:500,pauseOnHover:!0,automaticSlide:!0,showControls:!0,showNavigation:!0,showProgressBar:!0,enableSwipe:!0,slidesTime:3e3,elementsDelay:0,elementsTime:"all",slidesEaseIn:300,elementsEaseIn:300,slidesEaseOut:300,elementsEaseOut:300,ignoreElementsEaseOut:!1,videoAutoplay:!1,videoLoop:!1,beforeStart:function(){},beforeSetResponsive:function(){},beforeSlideStart:function(){},beforePause:function(){},beforeResume:function(){}},t);return this.each(function(){if(void 0==e(this).data("crellySlider")){var t=new e.CrellySlider(this,n);e(this).data("crellySlider",t)}})}}(jQuery);
|
2 |
* Plugin Name: Crelly Slider
|
3 |
* Plugin URI: http://fabiorino1.altervista.org/projects/crellyslider
|
4 |
* Description: The first free WordPress slider with elements animations.
|
5 |
+
* Version: 1.1.2
|
6 |
* Author: fabiorino
|
7 |
* Author URI: http://fabiorino1.altervista.org
|
8 |
* License: MIT
|
9 |
*/
|
10 |
|
11 |
+
!function(e){!function(e,t,n){"function"==typeof define&&define.amd?define(["jquery"],function(i){return n(i,e,t),i.mobile}):n(e.jQuery,e,t)}(this,document,function(e,t,n,i){!function(e,t,n,i){function a(e){for(;e&&"undefined"!=typeof e.originalEvent;)e=e.originalEvent;return e}function o(t,n){var o,s,r,c,l,d,p,f,u,h=t.type;if(t=e.Event(t),t.type=n,o=t.originalEvent,s=e.event.props,h.search(/^(mouse|click)/)>-1&&(s=Y),o)for(p=s.length,c;p;)c=s[--p],t[c]=o[c];if(h.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1),-1!==h.search(/^touch/)&&(r=a(o),h=r.touches,l=r.changedTouches,d=h&&h.length?h[0]:l&&l.length?l[0]:i,d))for(f=0,u=P.length;u>f;f++)c=P[f],t[c]=d[c];return t}function s(t){for(var n,i,a={};t;){n=e.data(t,S);for(i in n)n[i]&&(a[i]=a.hasVirtualBinding=!0);t=t.parentNode}return a}function r(t,n){for(var i;t;){if(i=e.data(t,S),i&&(!n||i[n]))return t;t=t.parentNode}return null}function c(){X=!1}function l(){X=!0}function d(){W=0,C.length=0,z=!1,l()}function p(){c()}function f(){u(),F=setTimeout(function(){F=0,d()},e.vmouse.resetTimerDuration)}function u(){F&&(clearTimeout(F),F=0)}function h(t,n,i){var a;return(i&&i[t]||!i&&r(n.target,t))&&(a=o(n,t),e(n.target).trigger(a)),a}function v(t){var n,i=e.data(t.target,E);!z&&(!W||W!==i)&&(n=h("v"+t.type,t),n&&(n.isDefaultPrevented()&&t.preventDefault(),n.isPropagationStopped()&&t.stopPropagation(),n.isImmediatePropagationStopped()&&t.stopImmediatePropagation()))}function m(t){var n,i,o,r=a(t).touches;r&&1===r.length&&(n=t.target,i=s(n),i.hasVirtualBinding&&(W=_++,e.data(n,E,W),u(),p(),M=!1,o=a(t).touches[0],O=o.pageX,R=o.pageY,h("vmouseover",t,i),h("vmousedown",t,i)))}function y(e){X||(M||h("vmousecancel",e,s(e.target)),M=!0,f())}function g(t){if(!X){var n=a(t).touches[0],i=M,o=e.vmouse.moveDistanceThreshold,r=s(t.target);M=M||Math.abs(n.pageX-O)>o||Math.abs(n.pageY-R)>o,M&&!i&&h("vmousecancel",t,r),h("vmousemove",t,r),f()}}function b(e){if(!X){l();var t,n,i=s(e.target);h("vmouseup",e,i),M||(t=h("vclick",e,i),t&&t.isDefaultPrevented()&&(n=a(e).changedTouches[0],C.push({touchID:W,x:n.clientX,y:n.clientY}),z=!0)),h("vmouseout",e,i),M=!1,f()}}function w(t){var n,i=e.data(t,S);if(i)for(n in i)if(i[n])return!0;return!1}function k(){}function D(t){var n=t.substr(1);return{setup:function(){w(this)||e.data(this,S,{});var i=e.data(this,S);i[t]=!0,x[t]=(x[t]||0)+1,1===x[t]&&H.bind(n,v),e(this).bind(n,k),B&&(x.touchstart=(x.touchstart||0)+1,1===x.touchstart&&H.bind("touchstart",m).bind("touchend",b).bind("touchmove",g).bind("scroll",y))},teardown:function(){--x[t],x[t]||H.unbind(n,v),B&&(--x.touchstart,x.touchstart||H.unbind("touchstart",m).unbind("touchmove",g).unbind("touchend",b).unbind("scroll",y));var i=e(this),a=e.data(this,S);a&&(a[t]=!1),i.unbind(n,k),w(this)||i.removeData(S)}}}var T,I,S="virtualMouseBindings",E="virtualTouchID",N="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),P="clientX clientY pageX pageY screenX screenY".split(" "),L=e.event.mouseHooks?e.event.mouseHooks.props:[],Y=e.event.props.concat(L),x={},F=0,O=0,R=0,M=!1,C=[],z=!1,X=!1,B="addEventListener"in n,H=e(n),_=1,W=0;for(e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500},I=0;I<N.length;I++)e.event.special[N[I]]=D(N[I]);B&&n.addEventListener("click",function(t){var n,i,a,o,s,r,c=C.length,l=t.target;if(c)for(n=t.clientX,i=t.clientY,T=e.vmouse.clickDistanceThreshold,a=l;a;){for(o=0;c>o;o++)if(s=C[o],r=0,a===l&&Math.abs(s.x-n)<T&&Math.abs(s.y-i)<T||e.data(a,E)===s.touchID)return t.preventDefault(),void t.stopPropagation();a=a.parentNode}},!0)}(e,t,n),function(e){e.mobile={}}(e),function(e,t){var i={touch:"ontouchend"in n};e.mobile.support=e.mobile.support||{},e.extend(e.support,i),e.extend(e.mobile.support,i)}(e),function(e,t,i){function a(t,n,a,o){var s=a.type;a.type=n,o?e.event.trigger(a,i,t):e.event.dispatch.call(t,a),a.type=s}var o=e(n),s=e.mobile.support.touch,r="touchmove scroll",c=s?"touchstart":"mousedown",l=s?"touchend":"mouseup",d=s?"touchmove":"mousemove";e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,n){e.fn[n]=function(e){return e?this.bind(n,e):this.trigger(n)},e.attrFn&&(e.attrFn[n]=!0)}),e.event.special.scrollstart={enabled:!0,setup:function(){function t(e,t){n=t,a(o,n?"scrollstart":"scrollstop",e)}var n,i,o=this,s=e(o);s.bind(r,function(a){e.event.special.scrollstart.enabled&&(n||t(a,!0),clearTimeout(i),i=setTimeout(function(){t(a,!1)},50))})},teardown:function(){e(this).unbind(r)}},e.event.special.tap={tapholdThreshold:750,emitTapOnTaphold:!0,setup:function(){var t=this,n=e(t),i=!1;n.bind("vmousedown",function(s){function r(){clearTimeout(d)}function c(){r(),n.unbind("vclick",l).unbind("vmouseup",r),o.unbind("vmousecancel",c)}function l(e){c(),i||p!==e.target?i&&e.preventDefault():a(t,"tap",e)}if(i=!1,s.which&&1!==s.which)return!1;var d,p=s.target;n.bind("vmouseup",r).bind("vclick",l),o.bind("vmousecancel",c),d=setTimeout(function(){e.event.special.tap.emitTapOnTaphold||(i=!0),a(t,"taphold",e.Event("taphold",{target:p}))},e.event.special.tap.tapholdThreshold)})},teardown:function(){e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"),o.unbind("vmousecancel")}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:30,getLocation:function(e){var n=t.pageXOffset,i=t.pageYOffset,a=e.clientX,o=e.clientY;return 0===e.pageY&&Math.floor(o)>Math.floor(e.pageY)||0===e.pageX&&Math.floor(a)>Math.floor(e.pageX)?(a-=n,o-=i):(o<e.pageY-i||a<e.pageX-n)&&(a=e.pageX-n,o=e.pageY-i),{x:a,y:o}},start:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,i=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[i.x,i.y],origin:e(t.target)}},stop:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,i=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[i.x,i.y]}},handleSwipe:function(t,n,i,o){if(n.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-n.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])<e.event.special.swipe.verticalDistanceThreshold){var s=t.coords[0]>n.coords[0]?"swipeleft":"swiperight";return a(i,"swipe",e.Event("swipe",{target:o,swipestart:t,swipestop:n}),!0),a(i,s,e.Event(s,{target:o,swipestart:t,swipestop:n}),!0),!0}return!1},eventInProgress:!1,setup:function(){var t,n=this,i=e(n),a={};t=e.data(this,"mobile-events"),t||(t={length:0},e.data(this,"mobile-events",t)),t.length++,t.swipe=a,a.start=function(t){if(!e.event.special.swipe.eventInProgress){e.event.special.swipe.eventInProgress=!0;var i,s=e.event.special.swipe.start(t),r=t.target,c=!1;a.move=function(t){s&&!t.isDefaultPrevented()&&(i=e.event.special.swipe.stop(t),c||(c=e.event.special.swipe.handleSwipe(s,i,n,r),c&&(e.event.special.swipe.eventInProgress=!1)),Math.abs(s.coords[0]-i.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault())},a.stop=function(){c=!0,e.event.special.swipe.eventInProgress=!1,o.off(d,a.move),a.move=null},o.on(d,a.move).one(l,a.stop)}},i.on(c,a.start)},teardown:function(){var t,n;t=e.data(this,"mobile-events"),t&&(n=t.swipe,delete t.swipe,t.length--,0===t.length&&e.removeData(this,"mobile-events")),n&&(n.start&&e(this).off(c,n.start),n.move&&o.off(d,n.move),n.stop&&o.off(l,n.stop))}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)},teardown:function(){e(this).unbind(n)}}})}(e,this)});var t=document.createElement("script");t.src="https://www.youtube.com/iframe_api";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);(function(){function e(t){return new e.fn.init(t)}function t(e,t,n){return n.contentWindow.postMessage?(e=JSON.stringify({method:e,value:t}),void n.contentWindow.postMessage(e,s)):!1}function n(e){var t,n;try{t=JSON.parse(e.data),n=t.event||t.method}catch(i){}if("ready"!=n||o||(o=!0),!/^https?:\/\/player.vimeo.com/.test(e.origin))return!1;"*"===s&&(s=e.origin),e=t.value;var r=t.data,c=""===c?null:t.player_id;return t=c?a[c][n]:a[n],n=[],t?(void 0!==e&&n.push(e),r&&n.push(r),c&&n.push(c),0<n.length?t.apply(null,n):t.call()):!1}function i(e,t,n){n?(a[n]||(a[n]={}),a[n][e]=t):a[e]=t}var a={},o=!1,s="*";return e.fn=e.prototype={element:null,init:function(e){return"string"==typeof e&&(e=document.getElementById(e)),this.element=e,this},api:function(e,n){if(!this.element||!e)return!1;var a=this.element,o=""!==a.id?a.id:null,s=n&&n.constructor&&n.call&&n.apply?null:n,r=n&&n.constructor&&n.call&&n.apply?n:null;return r&&i(e,r,o),t(e,s,a),this},addEvent:function(e,n){if(!this.element)return!1;var a=this.element,s=""!==a.id?a.id:null;return i(e,n,s),"ready"!=e?t("addEventListener",e,a):"ready"==e&&o&&n.call(null,s),this},removeEvent:function(e){if(!this.element)return!1;var n=this.element,i=""!==n.id?n.id:null;e:{if(i&&a[i]){if(!a[i][e]){i=!1;break e}a[i][e]=null}else{if(!a[e]){i=!1;break e}a[e]=null}i=!0}"ready"!=e&&i&&t("removeEventListener",e,n)}},e.fn.init.prototype=e.fn,window.addEventListener?window.addEventListener("message",n,!1):window.attachEvent("onmessage",n),window.Froogaloop=window.$f=e})();e.CrellySlider=function(t,n){function i(){if(se.wrapInner('<div class="crellyslider" />'),se.find(re+" > ul").addClass("cs-slides"),se.find(re+" "+ce+" > li").addClass("cs-slide"),oe=P().length,0==oe)return!1;if(1==oe){var e=L(0),t=se.find(re).find(ce);e.clone().prependTo(t),oe++}if(n.showControls&&se.find(re).append('<div class="cs-controls"><span class="cs-next"></span><span class="cs-previous"></span></div>'),n.showNavigation){for(var i='<div class="cs-navigation">',o=0;oe>o;o++)i+='<span class="cs-slide-link"></span>';i+="</div>",se.find(re).append(i)}n.showProgressBar?se.find(re).append('<div class="cs-progress-bar"></div>'):se.find(re).append('<div class="cs-progress-bar cs-progress-bar-hidden"></div>'),se.css("display","block"),n.responsive&&y(),u(),P().find(".cs-background-link").html(" ").data({left:0,top:0,"in":"none",out:"none",easeIn:0,easeOut:0,delay:0,time:"all"}),p(),a().done(function(){var e=setInterval(function(){"complete"==document.readyState&&se.find(re).find(".cs-preloader").length>0&&(clearInterval(e),r())},100)})}function a(){var t=new e.Deferred,n=P().find(".cs-yt-iframe, .cs-vimeo-iframe").length,i=0;return 0==n?t.resolve().promise():(P().find(".cs-yt-iframe, .cs-vimeo-iframe").each(function(){var a=e(this);a.one("load",function(){i++,i==n&&o().done(function(){s().done(function(){t.resolve()})})})}),t.promise())}function o(){var t,n=new e.Deferred,i=P(),a=i.find(de+".cs-yt-iframe").length,o=0;return 0==a?n.resolve().promise():(i.each(function(){var i=e(this),s=i.find(de+".cs-yt-iframe");s.each(function(){var i=e(this);i.uniqueId(),i.attr("id","cs-yt-iframe-"+i.attr("id"));var s=new YT.Player(i.attr("id"),{events:{onReady:function(){o++,o==a&&n.resolve()},onStateChange:function(e){e.data===YT.PlayerState.ENDED&&N(i,"loop")&&s.playVideo()}}});t={player:s,played_once:!1},be[i.attr("id")]=t})}),n.promise())}function s(){var t,n=new e.Deferred,i=P(),a=i.find(de+".cs-vimeo-iframe").length,o=0;return 0==a?n.resolve().promise():(i.each(function(){var i=e(this),s=i.find(de+".cs-vimeo-iframe");s.each(function(){var i=e(this);i.uniqueId(),i.attr("id","cs-vimeo-iframe-"+i.attr("id")),i.attr("src",i.attr("src")+"&player_id="+i.attr("id"));var s=$f(i[0]);s.addEvent("ready",function(){s.addEvent("finish",function(){we[i.attr("id")].ended=!0}),s.addEvent("play",function(){we[i.attr("id")].played_once=!0,we[i.attr("id")].ended=!1}),N(i,"loop")&&s.api("setLoop",!0),o++,o==a&&n.resolve()}),t={player:s,played_once:!1,ended:!1},we[i.attr("id")]=t})}),n.promise())}function r(){n.responsive&&y(),u(),De=e(window).width(),c(),d(),f(),n.beforeStart(),n.responsive?v():b()}function c(){P().each(function(){var t=e(this);t.find(de).each(function(){var t=e(this);t.find("*").each(function(){var t=e(this);l(t,!0)}),l(t,!1)}),t.css("display","none"),t.data("opacity",parseFloat(t.css("opacity")))})}function l(e,t){e.data("width",parseFloat(e.width())),e.data("height",parseFloat(e.height())),e.data("letter-spacing",parseFloat(e.css("letter-spacing"))),e.data("font-size",parseFloat(e.css("font-size"))),"px"==e.css("line-height").slice(-2).toLowerCase()?e.data("line-height",parseFloat(e.css("line-height"))):e.data("line-height",parseFloat(e.css("line-height"))*N(e,"font-size")),e.data("padding-top",parseFloat(e.css("padding-top"))),e.data("padding-right",parseFloat(e.css("padding-right"))),e.data("padding-bottom",parseFloat(e.css("padding-bottom"))),e.data("padding-left",parseFloat(e.css("padding-left"))),e.data("opacity",parseFloat(e.css("opacity"))),t||e.css("display","none")}function d(){n.responsive&&e(window).resize(function(){De!=e(window).width()&&("full-width"==n.layout&&T()!=e(se).width()||e(se).width()<T()||e(se).width()>T()&&T()<n.startWidth)&&v()}),se.find(re).find(".cs-controls > .cs-previous").click(function(){C(E())}),se.find(re).find(".cs-controls > .cs-next").click(function(){C(S())}),n.enableSwipe&&(se.find(re).on("swipeleft",function(){D(),C(S())}),se.find(re).on("swiperight",function(){D(),C(E())})),se.find(re).find(".cs-navigation > .cs-slide-link").click(function(){C(e(this).index())}),n.pauseOnHover&&(se.find(re).find(ce).hover(function(){k()}),se.find(re).find(ce).mouseleave(function(){D()}))}function p(){function t(){se.find(re).append('<div class="cs-preloader"><div class="cs-bg"></div><div class="cs-loader"><div class="cs-spinner"></div></div></div>'),se.find(re).find(".cs-preloader").css({"background-color":L(0).css("background-color"),"background-image":L(0).css("background-image"),"background-position":L(0).css("background-position"),"background-repeat":L(0).css("background-repeat"),"background-size":L(0).css("background-size")}),se.find(re).find(".cs-preloader > .cs-bg").css({"background-color":L(0).css("background-color"),"background-image":L(0).css("background-image"),"background-position":L(0).css("background-position"),"background-repeat":L(0).css("background-repeat"),"background-size":L(0).css("background-size")})}se.find(re).find(ce).css("visibility","hidden"),se.find(re).find(".cs-progress-bar").css("display","none"),se.find(re).find(".cs-navigation").css("display","none"),se.find(re).find(".cs-controls").css("display","none");var n=L(0).css("background-image");n=n.replace(/^url\(["']?/,"").replace(/["']?\)$/,""),n.match(/\.(jpeg|jpg|gif|png|bmp|tiff|tif)$/)?e("<img>").load(function(){t()}).attr("src",n).each(function(){this.complete&&e(this).load()}):t()}function f(){se.find(re).find(ce).css("visibility","visible"),se.find(re).find(".cs-progress-bar").css("display","block"),se.find(re).find(".cs-navigation").css("display","block"),se.find(re).find(".cs-controls").css("display","block"),te(L(0)),L(0).finish(),se.find(re).find(".cs-preloader").animate({opacity:0},300,function(){se.find(re).find(".cs-preloader").remove()})}function u(){var e,t,i=n.layout;switch(i){case"fixed":e=n.startWidth,t=n.startHeight,se.find(re).css({width:g(e),height:g(t)}),P().css({width:g(e),height:g(t)});break;case"full-width":e=se.width(),t=n.startHeight,se.find(re).css({width:e,height:g(t)}),P().css({width:e,height:g(t)});break;default:return!1}}function h(e){var t=(I()-n.startHeight)/2,i=(T()-n.startWidth)/2,a=0,o=0;return t>0&&(a=t),i>0&&(o=i),{top:a,left:o}}function v(){n.beforeSetResponsive();var t=P();w(!0),t.each(function(){var t=e(this),n=t.find(de);t.finish(),te(t),t.finish(),n.each(function(){var t=e(this);t.finish(),ie(t),t.finish(),H(t)&&U(t)})}),y(),u(),t.each(function(){var t=e(this),n=t.find(de);n.each(function(){var t=e(this);t.find("*").each(function(){var t=e(this);m(t)}),m(t),t.finish(),ae(t),t.finish(),H(t)&&U(t)}),t.finish(),ne(t),t.finish()}),De=e(window).width(),b()}function m(e){e.css({top:g(N(e,"top")+h(e).top),left:g(N(e,"left")+h(e).left),"padding-top":g(N(e,"padding-top")),"padding-right":g(N(e,"padding-right")),"padding-bottom":g(N(e,"padding-bottom")),"padding-left":g(N(e,"padding-left"))}),e.is("input")||e.is("button")||e.text().trim().length?e.css({"line-height":g(N(e,"line-height"))+"px","letter-spacing":g(N(e,"letter-spacing")),"font-size":g(N(e,"font-size"))}):e.css({width:g(N(e,"width")),height:g(N(e,"height"))})}function y(){var e=se.width(),t=n.startWidth;ke=e>=t||!n.responsive?1:e/t}function g(e){return e*ke}function b(){n.automaticSlide?F():z(pe),ve=!1}function w(t){for(var n=0;n<ye.length;n++)ye[n].clear();for(var n=0;n<ge.length;n++)ge[n].clear();me.clear(),P().each(function(){var n=e(this);t?n.finish():n.stop(!0,!0),n.find(de).each(function(){var n=e(this);t?n.finish():n.stop(!0,!0)})}),R()}function k(){if(!fe&&ue){n.beforePause();var e=se.find(re).find(".cs-progress-bar");e.stop(!0),me.pause(),fe=!0}}function D(){if(fe&&ue){n.beforeResume();var e=se.find(re).find(".cs-progress-bar"),t=(N(L(pe),"time"),me.getRemaining());e.animate({width:"100%"},t),me.resume(),fe=!1}}function T(){return se.find(re).width()}function I(){return se.find(re).height()}function S(){return pe+1==oe?0:pe+1}function E(){return 0>pe-1?oe-1:pe-1}function N(e,t){var i;switch(i=e.parent("ul").hasClass("cs-slides")?!0:!1,t){case"ease-in":return i?isNaN(parseInt(e.data(t)))?n.slidesEaseIn:parseInt(e.data(t)):isNaN(parseInt(e.data(t)))?n.elementsEaseIn:parseInt(e.data(t));case"ease-out":return i?isNaN(parseInt(e.data(t)))?n.slidesEaseOut:parseInt(e.data(t)):isNaN(parseInt(e.data(t)))?n.elementsEaseOut:parseInt(e.data(t));case"delay":return isNaN(parseInt(e.data(t)))?n.elementsDelay:parseInt(e.data(t));case"time":return i?isNaN(parseInt(e.data(t)))?n.slidesTime:parseInt(e.data(t)):"all"==e.data(t)?"all":isNaN(parseInt(e.data(t)))?n.itemsTime:parseInt(e.data(t));case"ignore-ease-out":return 1==parseInt(e.data(t))?!0:0==parseInt(e.data(t))?!1:n.ignoreElementsEaseOut;case"autoplay":return 1==parseInt(e.data(t))?!0:0==parseInt(e.data(t))?!1:n.videoAutoplay;case"loop":return 1==parseInt(e.data(t))?!0:0==parseInt(e.data(t))?!1:n.videoLoop;case"top":case"left":case"width":case"height":case"padding-top":case"padding-right":case"padding-bottom":case"padding-left":case"line-height":case"letter-spacing":case"font-size":return isNaN(parseFloat(e.data(t)))?0:parseFloat(e.data(t));case"in":case"out":case"opacity":return e.data(t);default:return!1}}function P(){return se.find(re).find(ce).find(le)}function L(e){return P().eq(e)}function Y(e,t){var n,i,a=t;this.pause=function(){clearTimeout(n),a-=new Date-i},this.resume=function(){i=new Date,clearTimeout(n),n=window.setTimeout(function(){e()},a)},this.clear=function(){clearTimeout(n)},this.getRemaining=function(){return a},this.resume()}function x(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function F(){z(pe).done(function(){fe||(pe=S(),F())})}function O(){var e=se.find(re).find(".cs-progress-bar");R(),e.animate({width:"100%"},N(L(pe),"time"))}function R(){var e=se.find(re).find(".cs-progress-bar");e.stop(),e.css("width",0)}function M(){var t=se.find(re).find(".cs-navigation"),n=t.find("> .cs-slide-link");n.each(function(){var t=e(this);t.index()==pe?t.addClass("cs-active"):t.removeClass("cs-active")})}function C(e){e!=pe&&(ue||he)&&(w(!1),B(pe,!1,!0).done(function(){pe=e,b()}))}function z(t){n.beforeSlideStart();var i=new e.Deferred;he=!1;for(var a=0;a<ye.length;a++)ye[a].clear();for(var a=0;a<ge.length;a++)ge[a].clear();me.clear(),L(t).finish(),ne(t),L(t).finish();var o=L(t).find(de);return o.each(function(){var t=e(this);t.finish(),ae(t),t.finish()}),M(),X(t),n.automaticSlide?B(t,!0,!0).done(function(){he=!0,i.resolve()}):B(t,!0,!1).done(function(){he=!0,i.resolve()}),i.promise()}function X(t){var n=L(t),i=n.find(de),a=0,o=!1,s=new e.Deferred;return ue=!1,te(t).done(function(){O(),ue=!0,o=!0,o&&a==i.length&&s.resolve()}),i.each(function(){var t=e(this),n=N(t,"delay");ge.push(new Y(function(){ie(t).done(function(){H(t)&&_(t),a++,o&&a==i.length&&s.resolve()})},n))}),s.promise()}function B(t,n,i){var a=L(t),o=a.find(de),s=n?N(a,"time")+N(a,"ease-in"):0,r=0,c=!1,l=new e.Deferred;return o.each(function(){var a=e(this),s=N(a,"time");if("all"!=s){var d=n?s:0;N(a,"ignore-ease-out")&&(r++,o.length==r&&c&&i&&(W(t),ne(t),l.resolve())),ye.push(new Y(function(){ae(a).done(function(){N(a,"ignore-ease-out")||(r++,o.length==r&&c&&i&&(W(t),ne(t),l.resolve()))})},d))}}),me=new Y(function(){ue=!1,R(),c=!0,o.length==r&&c&&i&&(W(t),ne(t),l.resolve()),i?o.each(function(){var n=e(this),a=N(n,"time");"all"==a&&(N(n,"ignore-ease-out")&&(r++,o.length==r&&c&&i&&(W(t),ne(t),l.resolve())),ae(n).done(function(){N(n,"ignore-ease-out")||(r++,o.length==r&&c&&i&&(W(t),ne(t),l.resolve()))}))}):l.resolve()},s),l.promise()}function H(e){return A(e)||Q(e)}function _(e){A(e)?q(e):K(e)}function W(e){$(e),Z(e)}function U(e){A(e)?J(e):ee(e)}function A(e){return e.hasClass("cs-yt-iframe")}function V(e){return be[e.attr("id")].player}function j(e){return V(e).getPlayerState()}function q(e){!N(e,"autoplay")||be[e.attr("id")].played_once||x()||V(e).playVideo(),2==j(e)&&V(e).playVideo(),be[e.attr("id")].played_once=!0}function $(t){L(t).each(function(){var t=e(this);t.find(de+".cs-yt-iframe").each(function(){J(e(this))})})}function J(e){1==j(e)&&V(e).pauseVideo()}function Q(e){return e.hasClass("cs-vimeo-iframe")}function G(e){return we[e.attr("id")].player}function K(e){!N(e,"autoplay")||we[e.attr("id")].played_once||x()||G(e).api("play"),G(e).api("paused")&&!we[e.attr("id")].ended&&we[e.attr("id")].played_once&&G(e).api("play")}function Z(t){L(t).each(function(){var t=e(this);t.find(de+".cs-vimeo-iframe").each(function(){ee(e(this))})})}function ee(e){G(e).api("pause")}function te(t){var n=L(t),i=N(n,"in"),a=N(n,"ease-in"),o=new e.Deferred;if("block"==n.css("display"))return o.resolve().promise();if(ve)return n.css({display:"block",top:0,left:0,opacity:N(n,"opacity")}),o.resolve().promise();switch(i){case"fade":n.css({display:"block",top:0,left:0,opacity:0}),n.animate({opacity:N(n,"opacity")},a,function(){o.resolve()});break;case"fadeLeft":n.css({display:"block",top:0,left:T(),opacity:0}),n.animate({opacity:N(n,"opacity"),left:0},a,function(){o.resolve()});break;case"fadeRight":n.css({display:"block",top:0,left:-T(),opacity:0}),n.animate({opacity:N(n,"opacity"),left:0},a,function(){o.resolve()});break;case"slideLeft":n.css({display:"block",top:0,left:T(),opacity:N(n,"opacity")}),n.animate({left:0},a,function(){o.resolve()});break;case"slideRight":n.css({display:"block",top:0,left:-T(),opacity:N(n,"opacity")}),n.animate({left:0},a,function(){o.resolve()});break;case"slideUp":n.css({display:"block",top:I(),left:0,opacity:N(n,"opacity")}),n.animate({top:0},a,function(){o.resolve()});break;case"slideDown":n.css({display:"block",top:-I(),left:0,opacity:N(n,"opacity")}),n.animate({top:0},a,function(){o.resolve()});break;default:n.css({display:"block",top:0,left:0,opacity:N(n,"opacity")}),o.resolve()}return o.promise()}function ne(t){var n=L(t),i=N(n,"out"),a=N(n,"ease-out"),o=new e.Deferred;if("none"==n.css("display"))return o.resolve().promise();switch(i){case"fade":n.animate({opacity:0},a,function(){n.css({display:"none",opacity:N(n,"opacity")}),o.resolve()});break;case"fadeLeft":n.animate({opacity:0,left:-T()},a,function(){n.css({display:"none",opacity:N(n,"opacity"),left:0}),o.resolve()});break;case"fadeRight":n.animate({opacity:0,left:T()},a,function(){n.css({display:"none",opacity:N(n,"opacity"),left:0}),o.resolve()});break;case"slideLeft":n.animate({left:-T()},a,function(){n.css({display:"none",left:0}),o.resolve()});break;case"slideRight":n.animate({left:T()},a,function(){n.css({display:"none",left:0}),o.resolve()});break;case"slideUp":n.animate({top:-I()},a,function(){n.css({display:"none",top:0}),o.resolve()});break;case"slideDown":n.animate({top:I()},a,function(){n.css({display:"none",top:0}),o.resolve()});break;default:n.css({display:"none"}),o.resolve()}return o.promise()}function ie(t){var n=t.outerWidth(),i=t.outerHeight(),a=N(t,"in"),o=N(t,"ease-in"),s=N(t,"top"),r=N(t,"left"),c=new e.Deferred;if("block"==t.css("display"))return c.resolve().promise();switch(a){case"slideDown":t.css({display:"block",top:-i,left:g(r+h(t).left),opacity:N(t,"opacity")}).animate({top:g(s+h(t).top)},o,function(){c.resolve()});break;case"slideUp":t.css({display:"block",top:I(),left:g(r+h(t).left),opacity:N(t,"opacity")}).animate({top:g(s+h(t).top)},o,function(){c.resolve()});break;case"slideLeft":t.css({display:"block",top:g(s+h(t).top),left:T(),opacity:N(t,"opacity")}).animate({left:g(r+h(t).left)},o,function(){c.resolve()});break;case"slideRight":t.css({display:"block",top:g(s+h(t).top),left:-n,opacity:N(t,"opacity")}).animate({left:g(r+h(t).left)},o,function(){c.resolve()});break;case"fade":t.css({display:"block",top:g(s+h(t).top),left:g(r+h(t).left),opacity:0}).animate({opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeDown":t.css({display:"block",top:-i,left:g(r+h(t).left),opacity:0}).animate({top:g(s+h(t).top),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeUp":t.css({display:"block",top:I(),left:g(r+h(t).left),opacity:0}).animate({top:g(s+h(t).top),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeLeft":t.css({display:"block",top:g(s+h(t).top),left:T(),opacity:0}).animate({left:g(r+h(t).left),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeRight":t.css({display:"block",top:g(s+h(t).top),left:-n,opacity:0}).animate({left:g(r+h(t).left),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeSmallDown":t.css({display:"block",top:g(s+h(t).top-30),left:g(r+h(t).left),opacity:0}).animate({top:g(s+h(t).top),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeSmallUp":t.css({display:"block",top:g(s+h(t).top+30),left:g(r+h(t).left),opacity:0}).animate({top:g(s+h(t).top),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeSmallLeft":t.css({display:"block",top:g(s+h(t).top),left:g(r+h(t).left+30),opacity:0}).animate({left:g(r+h(t).left),opacity:N(t,"opacity")},o,function(){c.resolve()});break;case"fadeSmallRight":t.css({display:"block",top:g(s+h(t).top),left:g(r+h(t).left-30),opacity:0}).animate({left:g(r+h(t).left),opacity:N(t,"opacity")},o,function(){c.resolve()});break;default:t.css({display:"block",top:g(s+h(t).top),left:g(r+h(t).left),opacity:N(t,"opacity")}),c.resolve()}return c.promise()}function ae(t){var n=t.outerWidth(),i=t.outerHeight(),a=N(t,"out"),o=N(t,"ease-out"),s=new e.Deferred;if("none"==t.css("display"))return s.resolve().promise();switch(a){case"slideDown":t.animate({top:I()},o,function(){t.css({display:"none"}),s.resolve()});break;case"slideUp":t.animate({top:-i},o,function(){t.css({display:"none"}),s.resolve()});break;case"slideLeft":t.animate({left:-n},o,function(){t.css({display:"none"}),s.resolve()});break;case"slideRight":t.animate({left:T()},o,function(){t.css({display:"none"}),s.resolve()});break;case"fade":t.animate({opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeDown":t.animate({top:I(),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeUp":t.animate({top:-i,opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeLeft":t.animate({left:-n,opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeRight":t.animate({left:T(),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeSmallDown":t.animate({top:g(N(t,"top")+h(t).top+30),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeSmallUp":t.animate({top:g(N(t,"top")+h(t).top-30),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeSmallLeft":t.animate({left:g(N(t,"left")+h(t).left-30),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;case"fadeSmallRight":t.animate({left:g(N(t,"left")+h(t).left+30),opacity:0},o,function(){t.css({display:"none",opacity:N(t,"opacity")}),s.resolve()});break;default:t.css({display:"none"}),s.resolve()}return s.promise()}var oe,se=e(t),re="div.crellyslider",ce="ul.cs-slides",le="li.cs-slide",de="> *",pe=0,fe=!1,ue=!1,he=!1,ve=!0,me=new Y(function(){},0),ye=new Array,ge=new Array,be={},we={},ke=1,De=0;if("undefined"==typeof YT||"undefined"==typeof YT.Player)var Te=setInterval(function(){"undefined"!=typeof YT&&"undefined"!=typeof YT.Player&&(clearInterval(Te),i())},100);else i();this.resume=function(){D()},this.pause=function(){k()},this.nextSlide=function(){C(S())},this.previousSlide=function(){C(E())},this.changeSlide=function(e){C(e)},this.getCurrentSlide=function(){return pe},this.getTotalSlides=function(){return oe}},e.fn.crellySlider=function(t){var n=e.extend({layout:"fixed",responsive:!0,startWidth:1140,startHeight:500,pauseOnHover:!0,automaticSlide:!0,showControls:!0,showNavigation:!0,showProgressBar:!0,enableSwipe:!0,slidesTime:3e3,elementsDelay:0,elementsTime:"all",slidesEaseIn:300,elementsEaseIn:300,slidesEaseOut:300,elementsEaseOut:300,ignoreElementsEaseOut:!1,videoAutoplay:!1,videoLoop:!1,beforeStart:function(){},beforeSetResponsive:function(){},beforeSlideStart:function(){},beforePause:function(){},beforeResume:function(){}},t);return this.each(function(){if(void 0==e(this).data("crellySlider")){var t=new e.CrellySlider(this,n);e(this).data("crellySlider",t)}})}}(jQuery);
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://crellyslider.tk/contribute-and-support/
|
|
4 |
Tags: animations, layers, texts, images, videos
|
5 |
Requires at least: 3.6.0
|
6 |
Tested up to: 4.7
|
7 |
-
Stable tag: 1.1.
|
8 |
License: MIT
|
9 |
License URI: http://opensource.org/licenses/MIT
|
10 |
|
@@ -54,6 +54,10 @@ You can find the documentation <a href="http://crellyslider.tk/documentation/">h
|
|
54 |
|
55 |
== Changelog ==
|
56 |
|
|
|
|
|
|
|
|
|
57 |
= 1.1.1 =
|
58 |
* Bug fix: sometimes, the slider got stuck at loading screen
|
59 |
|
4 |
Tags: animations, layers, texts, images, videos
|
5 |
Requires at least: 3.6.0
|
6 |
Tested up to: 4.7
|
7 |
+
Stable tag: 1.1.2
|
8 |
License: MIT
|
9 |
License URI: http://opensource.org/licenses/MIT
|
10 |
|
54 |
|
55 |
== Changelog ==
|
56 |
|
57 |
+
= 1.1.2 =
|
58 |
+
* Bug fix: security issues
|
59 |
+
* Other minor changes and bug fixes
|
60 |
+
|
61 |
= 1.1.1 =
|
62 |
* Bug fix: sometimes, the slider got stuck at loading screen
|
63 |
|
wordpress/admin.php
CHANGED
@@ -1,119 +1,133 @@
|
|
1 |
<?php
|
|
|
2 |
|
3 |
class CrellySliderAdmin {
|
4 |
-
|
5 |
// Creates the menu and the admin panel
|
6 |
public static function showSettings() {
|
7 |
add_action('admin_menu', 'CrellySliderAdmin::pluginMenus');
|
8 |
}
|
9 |
-
|
10 |
public static function pluginMenus() {
|
11 |
add_menu_page('Crelly Slider', 'Crelly Slider', 'manage_options', 'crellyslider', 'CrellySliderAdmin::displayPage', 'div');
|
12 |
}
|
13 |
-
|
14 |
// Go to the correct page
|
15 |
public static function displayPage() {
|
16 |
if(!isset($_GET['view'])) {
|
17 |
$index = 'home';
|
18 |
}
|
19 |
else {
|
20 |
-
$index = $_GET['view'];
|
|
|
|
|
|
|
21 |
}
|
22 |
-
|
23 |
global $wpdb;
|
24 |
-
|
25 |
-
// Check what the user is doing: is it adding or modifying a slider?
|
26 |
-
|
|
|
|
|
27 |
$edit = false;
|
28 |
$id = NULL;
|
29 |
}
|
30 |
-
else {
|
31 |
$edit = true;
|
32 |
-
$id = isset($_GET['id']) ? $_GET['id'] : NULL;
|
33 |
-
if(
|
34 |
-
|
|
|
|
|
|
|
35 |
}
|
36 |
-
|
37 |
?>
|
38 |
<div
|
39 |
class="wrap cs-admin"
|
40 |
<?php if($edit && isset($slider)): ?>
|
41 |
-
style="width: <?php echo $slider->startWidth; ?>px;"
|
42 |
<?php else: ?>
|
43 |
style="width: 1140px;"
|
44 |
<?php endif; ?>
|
45 |
-
>
|
46 |
-
|
47 |
<noscript class="cs-no-js">
|
48 |
<div class="cs-message cs-message-error" style="display: block;"><?php _e('JavaScript must be enabled to view this page correctly.', 'crelly-slider'); ?></div>
|
49 |
</noscript>
|
50 |
-
|
51 |
<div class="cs-message cs-message-ok" style="display: none;"><?php _e('Operation completed successfully.', 'crelly-slider'); ?></div>
|
52 |
<div class="cs-message cs-message-error" style="display: none;"><?php _e('Something went wrong.', 'crelly-slider'); ?></div>
|
53 |
<?php if(! $edit): ?>
|
54 |
<div class="cs-message cs-message-warning"><?php _e('When you\'ll click "Save Settings", you\'ll be able to add slides and elements.', 'crelly-slider'); ?></div>
|
55 |
<?php endif; ?>
|
56 |
-
|
57 |
<h2 class="cs-logo" title="Crelly Slider">
|
58 |
<a href="?page=crellyslider">
|
59 |
<img src="<?php echo CS_PLUGIN_URL . '/wordpress/images/logo2.png' ?>" alt="Crelly Slider" />
|
60 |
</a>
|
61 |
</h2>
|
62 |
-
|
63 |
<br />
|
64 |
<br />
|
65 |
-
|
66 |
<?php
|
67 |
-
|
68 |
switch($index) {
|
69 |
case 'home':
|
70 |
self::displayHome();
|
71 |
break;
|
72 |
-
|
73 |
case 'add':
|
74 |
case 'edit':
|
75 |
self::displaySlider();
|
76 |
break;
|
77 |
}
|
78 |
-
|
79 |
?>
|
80 |
-
|
81 |
</div>
|
82 |
<?php
|
83 |
}
|
84 |
-
|
85 |
// Displays the main plugin page
|
86 |
-
public static function displayHome() {
|
87 |
?>
|
88 |
<div class="cs-home">
|
89 |
<?php require_once CS_PATH . 'wordpress/home.php'; ?>
|
90 |
</div>
|
91 |
<?php
|
92 |
}
|
93 |
-
|
94 |
// Displays the slider page in wich you can add or modify sliders, slides and elements
|
95 |
public static function displaySlider() {
|
96 |
global $wpdb;
|
97 |
-
|
98 |
-
|
99 |
-
|
|
|
100 |
$edit = false;
|
101 |
-
$id = NULL;
|
102 |
}
|
103 |
-
else {
|
104 |
$edit = true;
|
105 |
-
$id = isset($_GET['id']) ? $_GET['id'] : NULL;
|
106 |
-
$
|
107 |
-
|
108 |
-
|
|
|
|
|
|
|
|
|
109 |
}
|
110 |
?>
|
111 |
-
|
112 |
<div class="cs-slider <?php echo $edit ? 'cs-edit-slider' : 'cs-add-slider' ?>">
|
113 |
<div class="cs-tabs cs-tabs-fade cs-tabs-switch-interface">
|
114 |
<?php if($edit): ?>
|
115 |
<ul>
|
116 |
-
|
117 |
<li>
|
118 |
<span class="cs-icon icon-settings"></span>
|
119 |
<a id="cs-show-slider-settings"><?php _e('Slider Settings', 'crelly-slider'); ?></a>
|
@@ -123,59 +137,59 @@ class CrellySliderAdmin {
|
|
123 |
<a id="cs-show-slides"><?php _e('Edit Slides', 'crelly-slider'); ?></a>
|
124 |
</li>
|
125 |
</ul>
|
126 |
-
|
|
|
127 |
<br />
|
128 |
<br />
|
129 |
-
<br />
|
130 |
<?php endif; ?>
|
131 |
-
|
132 |
<?php require_once CS_PATH . 'wordpress/slider.php'; ?>
|
133 |
-
<?php
|
134 |
if($edit) {
|
135 |
require_once CS_PATH . 'wordpress/elements.php';
|
136 |
require_once CS_PATH . 'wordpress/slides.php';
|
137 |
}
|
138 |
?>
|
139 |
</div>
|
140 |
-
|
141 |
<br />
|
142 |
-
|
143 |
<a class="cs-button cs-is-primary cs-save-settings" data-id="<?php echo $id; ?>" href="#"><?php _e('Save Settings', 'crelly-slider'); ?></a>
|
144 |
-
|
145 |
</div>
|
146 |
-
|
147 |
<?php
|
148 |
}
|
149 |
-
|
150 |
// Avoid incompatibility issues
|
151 |
-
public static function isAdminJs() {
|
152 |
?>
|
153 |
<script type="text/javascript">
|
154 |
var crellyslider_is_wordpress_admin = true;
|
155 |
</script>
|
156 |
<?php
|
157 |
}
|
158 |
-
|
159 |
public static function setIsAdminJs() {
|
160 |
add_action('admin_enqueue_scripts', 'CrellySliderAdmin::isAdminJs');
|
161 |
}
|
162 |
-
|
163 |
// Include CSS and JavaScript
|
164 |
-
public static function enqueues() {
|
165 |
wp_enqueue_script('jquery-ui-draggable');
|
166 |
wp_enqueue_script('jquery-ui-tabs');
|
167 |
wp_enqueue_script('jquery-ui-sortable');
|
168 |
wp_enqueue_script('jquery-ui-dialog');
|
169 |
wp_enqueue_style('wp-color-picker');
|
170 |
wp_enqueue_media();
|
171 |
-
|
172 |
wp_register_script('crellyslider-admin', CS_PLUGIN_URL . '/wordpress/js/admin.js', array('wp-color-picker'), CS_VERSION, true);
|
173 |
-
|
174 |
self::localization();
|
175 |
-
|
176 |
wp_enqueue_style('crellyslider-admin', CS_PLUGIN_URL . '/wordpress/css/admin.css', array(), CS_VERSION);
|
177 |
wp_enqueue_script('crellyslider-admin');
|
178 |
-
|
179 |
$wp_version = get_bloginfo('version');
|
180 |
$menu_icon_url = CS_PLUGIN_URL . '/wordpress/images/menu-icon.png';
|
181 |
if($wp_version < 3.8) {
|
@@ -232,11 +246,11 @@ class CrellySliderAdmin {
|
|
232 |
<?php
|
233 |
}
|
234 |
}
|
235 |
-
|
236 |
public static function setEnqueues() {
|
237 |
add_action('admin_enqueue_scripts', 'CrellySliderAdmin::enqueues');
|
238 |
}
|
239 |
-
|
240 |
public static function localization() {
|
241 |
// Here the translations for the admin.js file
|
242 |
$crellyslider_translations = array(
|
@@ -256,4 +270,4 @@ class CrellySliderAdmin {
|
|
256 |
|
257 |
}
|
258 |
|
259 |
-
?>
|
1 |
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
|
4 |
class CrellySliderAdmin {
|
5 |
+
|
6 |
// Creates the menu and the admin panel
|
7 |
public static function showSettings() {
|
8 |
add_action('admin_menu', 'CrellySliderAdmin::pluginMenus');
|
9 |
}
|
10 |
+
|
11 |
public static function pluginMenus() {
|
12 |
add_menu_page('Crelly Slider', 'Crelly Slider', 'manage_options', 'crellyslider', 'CrellySliderAdmin::displayPage', 'div');
|
13 |
}
|
14 |
+
|
15 |
// Go to the correct page
|
16 |
public static function displayPage() {
|
17 |
if(!isset($_GET['view'])) {
|
18 |
$index = 'home';
|
19 |
}
|
20 |
else {
|
21 |
+
$index = esc_sql($_GET['view']);
|
22 |
+
if($index != 'add' && $index != 'edit') {
|
23 |
+
die();
|
24 |
+
}
|
25 |
}
|
26 |
+
|
27 |
global $wpdb;
|
28 |
+
|
29 |
+
// Check what the user is doing: is it adding or modifying a slider?
|
30 |
+
$edit = true;
|
31 |
+
$id = NULL;
|
32 |
+
if(isset($_GET['view']) && esc_sql($_GET['view']) == 'add') {
|
33 |
$edit = false;
|
34 |
$id = NULL;
|
35 |
}
|
36 |
+
else if(isset($_GET['view']) && esc_sql($_GET['view']) == 'edit') {
|
37 |
$edit = true;
|
38 |
+
$id = isset($_GET['id']) ? esc_sql($_GET['id']) : NULL;
|
39 |
+
if($id == NULL || ($id != NULL && !CrellySliderCommon::sliderExists($id))) {
|
40 |
+
die();
|
41 |
+
}
|
42 |
+
|
43 |
+
$slider = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE id = %d', $id));
|
44 |
}
|
45 |
+
|
46 |
?>
|
47 |
<div
|
48 |
class="wrap cs-admin"
|
49 |
<?php if($edit && isset($slider)): ?>
|
50 |
+
style="width: <?php echo esc_attr($slider->startWidth); ?>px;"
|
51 |
<?php else: ?>
|
52 |
style="width: 1140px;"
|
53 |
<?php endif; ?>
|
54 |
+
>
|
55 |
+
|
56 |
<noscript class="cs-no-js">
|
57 |
<div class="cs-message cs-message-error" style="display: block;"><?php _e('JavaScript must be enabled to view this page correctly.', 'crelly-slider'); ?></div>
|
58 |
</noscript>
|
59 |
+
|
60 |
<div class="cs-message cs-message-ok" style="display: none;"><?php _e('Operation completed successfully.', 'crelly-slider'); ?></div>
|
61 |
<div class="cs-message cs-message-error" style="display: none;"><?php _e('Something went wrong.', 'crelly-slider'); ?></div>
|
62 |
<?php if(! $edit): ?>
|
63 |
<div class="cs-message cs-message-warning"><?php _e('When you\'ll click "Save Settings", you\'ll be able to add slides and elements.', 'crelly-slider'); ?></div>
|
64 |
<?php endif; ?>
|
65 |
+
|
66 |
<h2 class="cs-logo" title="Crelly Slider">
|
67 |
<a href="?page=crellyslider">
|
68 |
<img src="<?php echo CS_PLUGIN_URL . '/wordpress/images/logo2.png' ?>" alt="Crelly Slider" />
|
69 |
</a>
|
70 |
</h2>
|
71 |
+
|
72 |
<br />
|
73 |
<br />
|
74 |
+
|
75 |
<?php
|
76 |
+
|
77 |
switch($index) {
|
78 |
case 'home':
|
79 |
self::displayHome();
|
80 |
break;
|
81 |
+
|
82 |
case 'add':
|
83 |
case 'edit':
|
84 |
self::displaySlider();
|
85 |
break;
|
86 |
}
|
87 |
+
|
88 |
?>
|
89 |
+
|
90 |
</div>
|
91 |
<?php
|
92 |
}
|
93 |
+
|
94 |
// Displays the main plugin page
|
95 |
+
public static function displayHome() {
|
96 |
?>
|
97 |
<div class="cs-home">
|
98 |
<?php require_once CS_PATH . 'wordpress/home.php'; ?>
|
99 |
</div>
|
100 |
<?php
|
101 |
}
|
102 |
+
|
103 |
// Displays the slider page in wich you can add or modify sliders, slides and elements
|
104 |
public static function displaySlider() {
|
105 |
global $wpdb;
|
106 |
+
|
107 |
+
$edit = true;
|
108 |
+
$id = NULL;
|
109 |
+
if(isset($_GET['view']) && esc_sql($_GET['view']) == 'add') {
|
110 |
$edit = false;
|
111 |
+
$id = NULL;
|
112 |
}
|
113 |
+
else if(isset($_GET['view']) && esc_sql($_GET['view']) == 'edit') {
|
114 |
$edit = true;
|
115 |
+
$id = isset($_GET['id']) ? esc_sql($_GET['id']) : NULL;
|
116 |
+
if($id == NULL || ($id != NULL && !CrellySliderCommon::sliderExists($id))) {
|
117 |
+
die();
|
118 |
+
}
|
119 |
+
|
120 |
+
$slider = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE id = %d', $id));
|
121 |
+
$slides = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_slides WHERE slider_parent = %d ORDER BY position', $id));
|
122 |
+
// The elements variable are updated in the foreach() loop directly in the "slides.php" file
|
123 |
}
|
124 |
?>
|
125 |
+
|
126 |
<div class="cs-slider <?php echo $edit ? 'cs-edit-slider' : 'cs-add-slider' ?>">
|
127 |
<div class="cs-tabs cs-tabs-fade cs-tabs-switch-interface">
|
128 |
<?php if($edit): ?>
|
129 |
<ul>
|
130 |
+
|
131 |
<li>
|
132 |
<span class="cs-icon icon-settings"></span>
|
133 |
<a id="cs-show-slider-settings"><?php _e('Slider Settings', 'crelly-slider'); ?></a>
|
137 |
<a id="cs-show-slides"><?php _e('Edit Slides', 'crelly-slider'); ?></a>
|
138 |
</li>
|
139 |
</ul>
|
140 |
+
|
141 |
+
<br />
|
142 |
<br />
|
143 |
<br />
|
|
|
144 |
<?php endif; ?>
|
145 |
+
|
146 |
<?php require_once CS_PATH . 'wordpress/slider.php'; ?>
|
147 |
+
<?php
|
148 |
if($edit) {
|
149 |
require_once CS_PATH . 'wordpress/elements.php';
|
150 |
require_once CS_PATH . 'wordpress/slides.php';
|
151 |
}
|
152 |
?>
|
153 |
</div>
|
154 |
+
|
155 |
<br />
|
156 |
+
|
157 |
<a class="cs-button cs-is-primary cs-save-settings" data-id="<?php echo $id; ?>" href="#"><?php _e('Save Settings', 'crelly-slider'); ?></a>
|
158 |
+
|
159 |
</div>
|
160 |
+
|
161 |
<?php
|
162 |
}
|
163 |
+
|
164 |
// Avoid incompatibility issues
|
165 |
+
public static function isAdminJs() {
|
166 |
?>
|
167 |
<script type="text/javascript">
|
168 |
var crellyslider_is_wordpress_admin = true;
|
169 |
</script>
|
170 |
<?php
|
171 |
}
|
172 |
+
|
173 |
public static function setIsAdminJs() {
|
174 |
add_action('admin_enqueue_scripts', 'CrellySliderAdmin::isAdminJs');
|
175 |
}
|
176 |
+
|
177 |
// Include CSS and JavaScript
|
178 |
+
public static function enqueues() {
|
179 |
wp_enqueue_script('jquery-ui-draggable');
|
180 |
wp_enqueue_script('jquery-ui-tabs');
|
181 |
wp_enqueue_script('jquery-ui-sortable');
|
182 |
wp_enqueue_script('jquery-ui-dialog');
|
183 |
wp_enqueue_style('wp-color-picker');
|
184 |
wp_enqueue_media();
|
185 |
+
|
186 |
wp_register_script('crellyslider-admin', CS_PLUGIN_URL . '/wordpress/js/admin.js', array('wp-color-picker'), CS_VERSION, true);
|
187 |
+
|
188 |
self::localization();
|
189 |
+
|
190 |
wp_enqueue_style('crellyslider-admin', CS_PLUGIN_URL . '/wordpress/css/admin.css', array(), CS_VERSION);
|
191 |
wp_enqueue_script('crellyslider-admin');
|
192 |
+
|
193 |
$wp_version = get_bloginfo('version');
|
194 |
$menu_icon_url = CS_PLUGIN_URL . '/wordpress/images/menu-icon.png';
|
195 |
if($wp_version < 3.8) {
|
246 |
<?php
|
247 |
}
|
248 |
}
|
249 |
+
|
250 |
public static function setEnqueues() {
|
251 |
add_action('admin_enqueue_scripts', 'CrellySliderAdmin::enqueues');
|
252 |
}
|
253 |
+
|
254 |
public static function localization() {
|
255 |
// Here the translations for the admin.js file
|
256 |
$crellyslider_translations = array(
|
270 |
|
271 |
}
|
272 |
|
273 |
+
?>
|
wordpress/ajax.php
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
<?php
|
|
|
|
|
2 |
/********************/
|
3 |
/** AJAX CALLBACKS **/
|
4 |
/********************/
|
@@ -13,14 +15,14 @@ function crellyslider_wp_insert_rows($row_arrays = array(), $wp_table_name) {
|
|
13 |
$place_holders = array();
|
14 |
$query = "";
|
15 |
$query_columns = "";
|
16 |
-
|
17 |
$query .= "INSERT INTO {$wp_table_name} (";
|
18 |
-
|
19 |
foreach($row_arrays as $count => $row_array)
|
20 |
{
|
21 |
-
|
22 |
foreach($row_array as $key => $value) {
|
23 |
-
|
24 |
if($count == 0) {
|
25 |
if($query_columns) {
|
26 |
$query_columns .= ",".$key."";
|
@@ -28,9 +30,9 @@ function crellyslider_wp_insert_rows($row_arrays = array(), $wp_table_name) {
|
|
28 |
$query_columns .= "".$key."";
|
29 |
}
|
30 |
}
|
31 |
-
|
32 |
$values[] = $value;
|
33 |
-
|
34 |
if(is_numeric($value)) {
|
35 |
if(isset($place_holders[$count])) {
|
36 |
$place_holders[$count] .= ", '%d'";
|
@@ -48,17 +50,17 @@ function crellyslider_wp_insert_rows($row_arrays = array(), $wp_table_name) {
|
|
48 |
// mind closing the GAP
|
49 |
$place_holders[$count] .= ")";
|
50 |
}
|
51 |
-
|
52 |
$query .= " $query_columns ) VALUES ";
|
53 |
-
|
54 |
$query .= implode(', ', $place_holders);
|
55 |
-
|
56 |
if($wpdb->query($wpdb->prepare($query, $values))){
|
57 |
return true;
|
58 |
} else {
|
59 |
return false;
|
60 |
}
|
61 |
-
|
62 |
}
|
63 |
|
64 |
// Add slider
|
@@ -66,20 +68,20 @@ add_action('wp_ajax_crellyslider_addSlider', 'crellyslider_addSlider_callback');
|
|
66 |
function crellyslider_addSlider_callback() {
|
67 |
global $wpdb;
|
68 |
$options = $_POST['datas'];
|
69 |
-
|
70 |
$output = crellyslider_insertSliderSQL($options);
|
71 |
-
|
72 |
// Returning
|
73 |
-
$output = json_encode($wpdb->insert_id);
|
74 |
if(is_array($output)) print_r($output);
|
75 |
else echo $output;
|
76 |
-
|
77 |
die();
|
78 |
}
|
79 |
|
80 |
function crellyslider_insertSliderSQL($options) {
|
81 |
global $wpdb;
|
82 |
-
|
83 |
return $wpdb->insert(
|
84 |
$wpdb->prefix . 'crellyslider_sliders',
|
85 |
array(
|
@@ -121,7 +123,12 @@ function crellyslider_editSlider_callback() {
|
|
121 |
global $wpdb;
|
122 |
$options = $_POST['datas'];
|
123 |
$table_name = $wpdb->prefix . 'crellyslider_sliders';
|
124 |
-
|
|
|
|
|
|
|
|
|
|
|
125 |
$output = $wpdb->update(
|
126 |
$table_name,
|
127 |
array(
|
@@ -139,7 +146,7 @@ function crellyslider_editSlider_callback() {
|
|
139 |
'callbacks' => $options['callbacks'],
|
140 |
'enableSwipe' => $options['enableSwipe'],
|
141 |
),
|
142 |
-
array('id' => $options['id']),
|
143 |
array(
|
144 |
'%s',
|
145 |
'%s',
|
@@ -157,12 +164,12 @@ function crellyslider_editSlider_callback() {
|
|
157 |
),
|
158 |
array('%d')
|
159 |
);
|
160 |
-
|
161 |
// Returning
|
162 |
$output = json_encode($output);
|
163 |
if(is_array($output)) print_r($output);
|
164 |
else echo $output;
|
165 |
-
|
166 |
die();
|
167 |
}
|
168 |
|
@@ -171,24 +178,33 @@ add_action('wp_ajax_crellyslider_editSlides', 'crellyslider_editSlides_callback'
|
|
171 |
function crellyslider_editSlides_callback() {
|
172 |
global $wpdb;
|
173 |
$options = $_POST['datas'];
|
174 |
-
|
|
|
|
|
|
|
|
|
|
|
175 |
$output = true;
|
176 |
-
|
177 |
// Remove all the old slides
|
178 |
-
$output = $wpdb->delete($wpdb->prefix . 'crellyslider_slides', array('slider_parent' => $options['slider_parent']), array('%d'));
|
179 |
if($output === false) {
|
180 |
echo json_encode(false);
|
181 |
}
|
182 |
else {
|
183 |
// It's impossible to have 0 slides (jQuery checks it)
|
|
|
|
|
|
|
|
|
184 |
$output = crellyslider_wp_insert_rows($options['options'], $wpdb->prefix . 'crellyslider_slides');
|
185 |
-
|
186 |
// Returning
|
187 |
$output = json_encode($output);
|
188 |
if(is_array($output)) print_r($output);
|
189 |
else echo $output;
|
190 |
}
|
191 |
-
|
192 |
die();
|
193 |
}
|
194 |
|
@@ -197,11 +213,16 @@ add_action('wp_ajax_crellyslider_editElements', 'crellyslider_editElements_callb
|
|
197 |
function crellyslider_editElements_callback() {
|
198 |
global $wpdb;
|
199 |
$options = $_POST['datas'];
|
200 |
-
|
201 |
-
$
|
202 |
-
|
|
|
|
|
|
|
|
|
|
|
203 |
// Remove all the old elements
|
204 |
-
$output = $wpdb->delete($wpdb->prefix . 'crellyslider_elements', array('slider_parent' => $options['slider_parent']), array('%d'));
|
205 |
if($output === false) {
|
206 |
echo json_encode(false);
|
207 |
}
|
@@ -211,18 +232,18 @@ function crellyslider_editElements_callback() {
|
|
211 |
if(empty($quick_temp)) {
|
212 |
echo json_encode(true);
|
213 |
}
|
214 |
-
else {
|
215 |
$options_array = json_decode(stripslashes($options['options']));
|
216 |
-
|
217 |
$output = crellyslider_wp_insert_rows($options_array, $wpdb->prefix . 'crellyslider_elements');
|
218 |
-
|
219 |
// Returning
|
220 |
$output = json_encode($output);
|
221 |
if(is_array($output)) print_r($output);
|
222 |
else echo $output;
|
223 |
}
|
224 |
}
|
225 |
-
|
226 |
die();
|
227 |
}
|
228 |
|
@@ -231,35 +252,40 @@ add_action('wp_ajax_crellyslider_deleteSlider', 'crellyslider_deleteSlider_callb
|
|
231 |
function crellyslider_deleteSlider_callback() {
|
232 |
global $wpdb;
|
233 |
$options = $_POST['datas'];
|
234 |
-
|
|
|
|
|
|
|
|
|
|
|
235 |
$real_output = true;
|
236 |
-
|
237 |
// Delete slider
|
238 |
-
$table_name = $wpdb->prefix . 'crellyslider_sliders';
|
239 |
-
$output = $wpdb->delete($table_name, array('id' => $options['id']), array('%d'));
|
240 |
if($output === false) {
|
241 |
$real_output = false;
|
242 |
}
|
243 |
-
|
244 |
// Delete slides
|
245 |
-
$table_name = $wpdb->prefix . 'crellyslider_slides';
|
246 |
-
$output = $wpdb->delete($table_name, array('slider_parent' => $options['id']), array('%d'));
|
247 |
if($output === false) {
|
248 |
$real_output = false;
|
249 |
}
|
250 |
-
|
251 |
// Delete elements
|
252 |
-
$table_name = $wpdb->prefix . 'crellyslider_elements';
|
253 |
-
$output = $wpdb->delete($table_name, array('slider_parent' => $options['id']), array('%d'));
|
254 |
if($output === false) {
|
255 |
$real_output = false;
|
256 |
}
|
257 |
-
|
258 |
// Returning
|
259 |
$real_output = json_encode($real_output);
|
260 |
if(is_array($real_output)) print_r($real_output);
|
261 |
else echo $real_output;
|
262 |
-
|
263 |
die();
|
264 |
}
|
265 |
|
@@ -268,30 +294,35 @@ add_action('wp_ajax_crellyslider_duplicateSlider', 'crellyslider_duplicateSlider
|
|
268 |
function crellyslider_duplicateSlider_callback() {
|
269 |
global $wpdb;
|
270 |
$options = $_POST['datas'];
|
271 |
-
|
|
|
|
|
|
|
|
|
|
|
272 |
$output = true;
|
273 |
$real_output = true;
|
274 |
-
|
275 |
-
$slider_id = $options['id'];
|
276 |
-
|
277 |
$cloned_slider_name = '';
|
278 |
$cloned_slider_alias = '';
|
279 |
-
|
280 |
-
$sliders = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE id =
|
281 |
foreach($sliders as $slider) {
|
282 |
$cloned_slider_name = $slider['name'] = $slider['name'] . '_' . __('Copy', 'crelly-slider');
|
283 |
$cloned_slider_alias = $slider['alias'] = $slider['alias'] . '_' . __('copy', 'crelly-slider');
|
284 |
$output = crellyslider_insertSliderSQL($slider);
|
285 |
}
|
286 |
-
|
287 |
if($output === false) {
|
288 |
$real_output = false;
|
289 |
}
|
290 |
else {
|
291 |
$cloned_slider_id = $wpdb->insert_id;
|
292 |
-
|
293 |
// Clone slides
|
294 |
-
$slides = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_slides WHERE slider_parent =
|
295 |
if(empty($slides)) {
|
296 |
$output = true;
|
297 |
}
|
@@ -305,9 +336,9 @@ function crellyslider_duplicateSlider_callback() {
|
|
305 |
$output = false;
|
306 |
}
|
307 |
}
|
308 |
-
|
309 |
// Clone elements
|
310 |
-
$elements = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_elements WHERE slider_parent = '
|
311 |
if(empty($elements)) {
|
312 |
$output = true;
|
313 |
}
|
@@ -320,13 +351,13 @@ function crellyslider_duplicateSlider_callback() {
|
|
320 |
if($temp === false) {
|
321 |
$output = false;
|
322 |
}
|
323 |
-
|
324 |
if($output === false) {
|
325 |
$real_output = false;
|
326 |
}
|
327 |
}
|
328 |
}
|
329 |
-
|
330 |
if($real_output === true) {
|
331 |
$real_output = array(
|
332 |
'response' => true,
|
@@ -343,31 +374,36 @@ function crellyslider_duplicateSlider_callback() {
|
|
343 |
'cloned_slider_alias' => false,
|
344 |
);
|
345 |
}
|
346 |
-
|
347 |
// Returning
|
348 |
$real_output = json_encode($real_output);
|
349 |
if(is_array($real_output)) print_r($real_output);
|
350 |
else echo $real_output;
|
351 |
-
|
352 |
die();
|
353 |
}
|
354 |
|
355 |
-
// Exports the slider in
|
356 |
add_action('wp_ajax_crellyslider_exportSlider', 'crellyslider_exportSlider_callback');
|
357 |
function crellyslider_exportSlider_callback() {
|
358 |
global $wpdb;
|
359 |
-
|
360 |
// Clear the temp folder
|
361 |
array_map('unlink', glob(CS_PATH . '/wordpress/temp/*'));
|
362 |
-
|
363 |
$options = $_POST['datas'];
|
364 |
-
|
|
|
|
|
|
|
|
|
|
|
365 |
$real_output = true;
|
366 |
-
|
367 |
$result = array();
|
368 |
-
|
369 |
// Get the slider
|
370 |
-
$sliders = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE id =
|
371 |
if(empty($sliders)) {
|
372 |
$real_output = false;
|
373 |
}
|
@@ -377,21 +413,21 @@ function crellyslider_exportSlider_callback() {
|
|
377 |
}
|
378 |
$result['sliders'] = $sliders;
|
379 |
}
|
380 |
-
|
381 |
$zip = new ZipArchive();
|
382 |
$filename = 'crellyslider-' . $sliders[0]['alias'] . '.zip';
|
383 |
if($zip->open(CS_PATH . '/wordpress/temp/' . $filename, ZipArchive::CREATE) !== TRUE) {
|
384 |
echo false;
|
385 |
die();
|
386 |
}
|
387 |
-
|
388 |
// Get the slides
|
389 |
-
$slides = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_slides WHERE slider_parent = '
|
390 |
if(! empty($slides)) {
|
391 |
foreach($slides as $key => $temp) {
|
392 |
unset($slides[$key]['id']);
|
393 |
unset($slides[$key]['slider_parent']);
|
394 |
-
|
395 |
// Add images to zip and remove media directory URLs
|
396 |
if($slides[$key]['background_type_image'] != 'none' && $slides[$key]['background_type_image'] != 'undefined') {
|
397 |
$img = $slides[$key]['background_type_image'];
|
@@ -401,14 +437,14 @@ function crellyslider_exportSlider_callback() {
|
|
401 |
}
|
402 |
$result['slides'] = $slides;
|
403 |
}
|
404 |
-
|
405 |
// Get the elements
|
406 |
-
$elements = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_elements WHERE slider_parent = '
|
407 |
if(! empty($elements)) {
|
408 |
foreach($elements as $key => $temp) {
|
409 |
unset($elements[$key]['id']);
|
410 |
unset($elements[$key]['slider_parent']);
|
411 |
-
|
412 |
// Add images to zip and remove media directory URLs
|
413 |
if($elements[$key]['type'] == 'image') {
|
414 |
$img = $elements[$key]['image_src'];
|
@@ -418,12 +454,12 @@ function crellyslider_exportSlider_callback() {
|
|
418 |
}
|
419 |
$result['elements'] = $elements;
|
420 |
}
|
421 |
-
|
422 |
-
$json = json_encode($result);
|
423 |
$zip->addFromString("slider.json", $json);
|
424 |
-
|
425 |
$zip->close();
|
426 |
-
|
427 |
if($real_output === true) {
|
428 |
$real_output = array(
|
429 |
'response' => true,
|
@@ -436,12 +472,12 @@ function crellyslider_exportSlider_callback() {
|
|
436 |
'url' => false,
|
437 |
);
|
438 |
}
|
439 |
-
|
440 |
// Returning
|
441 |
$real_output = json_encode($real_output);
|
442 |
if(is_array($real_output)) print_r($real_output);
|
443 |
else echo $real_output;
|
444 |
-
|
445 |
die();
|
446 |
}
|
447 |
|
@@ -449,35 +485,35 @@ function crellyslider_exportSlider_callback() {
|
|
449 |
add_action('wp_ajax_crellyslider_importSlider', 'crellyslider_importSlider_callback');
|
450 |
function crellyslider_importSlider_callback() {
|
451 |
global $wpdb;
|
452 |
-
|
453 |
// Clear the temp folder
|
454 |
array_map('unlink', glob(CS_PATH . '/wordpress/temp/*'));
|
455 |
-
|
456 |
-
foreach($_FILES as $file) {
|
457 |
$output = true;
|
458 |
$real_output = true;
|
459 |
-
|
460 |
$zip = new ZipArchive();
|
461 |
if($zip->open($file['tmp_name']) !== TRUE) {
|
462 |
echo false;
|
463 |
die();
|
464 |
}
|
465 |
-
|
466 |
$zip->extractTo(CS_PATH . '/wordpress/temp/');
|
467 |
-
|
468 |
$imported_array = json_decode(file_get_contents(CS_PATH . '/wordpress/temp/slider.json'));
|
469 |
-
|
470 |
$sliders = $imported_array->sliders;
|
471 |
foreach($sliders as $slider) {
|
472 |
$output = crellyslider_insertSliderSQL((array) $slider);
|
473 |
}
|
474 |
-
|
475 |
if($output === false) {
|
476 |
$real_output = false;
|
477 |
}
|
478 |
else {
|
479 |
$imported_slider_id = $wpdb->insert_id;
|
480 |
-
|
481 |
// Import slides
|
482 |
$slides = $imported_array->slides;
|
483 |
if(empty($slides)) {
|
@@ -486,10 +522,14 @@ function crellyslider_importSlider_callback() {
|
|
486 |
else {
|
487 |
foreach($slides as $key => $slide) {
|
488 |
$slides[$key]->slider_parent = $imported_slider_id;
|
489 |
-
|
490 |
// Set background images
|
491 |
if($slides[$key]->background_type_image != 'undefined' && $slides[$key]->background_type_image != 'none') {
|
492 |
$upload = media_sideload_image(CS_PLUGIN_URL . '/wordpress/temp/' . $slides[$key]->background_type_image, 0, null, 'src');
|
|
|
|
|
|
|
|
|
493 |
$slides[$key]->background_type_image = $upload;
|
494 |
}
|
495 |
}
|
@@ -498,7 +538,7 @@ function crellyslider_importSlider_callback() {
|
|
498 |
$output = false;
|
499 |
}
|
500 |
}
|
501 |
-
|
502 |
// Import elements
|
503 |
$elements = (array) $imported_array->elements;
|
504 |
if(empty($elements)) {
|
@@ -507,10 +547,14 @@ function crellyslider_importSlider_callback() {
|
|
507 |
else {
|
508 |
foreach($elements as $key => $element) {
|
509 |
$elements[$key]->slider_parent = $imported_slider_id;
|
510 |
-
|
511 |
// Set images
|
512 |
if($elements[$key]->type == 'image') {
|
513 |
$upload = media_sideload_image(CS_PLUGIN_URL . '/wordpress/temp/' . $elements[$key]->image_src, 0, null, 'src');
|
|
|
|
|
|
|
|
|
514 |
$elements[$key]->image_src = $upload;
|
515 |
}
|
516 |
}
|
@@ -518,13 +562,13 @@ function crellyslider_importSlider_callback() {
|
|
518 |
if($temp === false) {
|
519 |
$output = false;
|
520 |
}
|
521 |
-
|
522 |
if($output === false) {
|
523 |
$real_output = false;
|
524 |
}
|
525 |
}
|
526 |
}
|
527 |
-
|
528 |
if($real_output === true) {
|
529 |
$real_output = array(
|
530 |
'response' => true,
|
@@ -541,13 +585,13 @@ function crellyslider_importSlider_callback() {
|
|
541 |
'imported_slider_alias' => false,
|
542 |
);
|
543 |
}
|
544 |
-
|
545 |
// Returning
|
546 |
$real_output = json_encode($real_output);
|
547 |
if(is_array($real_output)) print_r($real_output);
|
548 |
else echo $real_output;
|
549 |
-
|
550 |
die();
|
551 |
}
|
552 |
}
|
553 |
-
?>
|
1 |
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
+
|
4 |
/********************/
|
5 |
/** AJAX CALLBACKS **/
|
6 |
/********************/
|
15 |
$place_holders = array();
|
16 |
$query = "";
|
17 |
$query_columns = "";
|
18 |
+
|
19 |
$query .= "INSERT INTO {$wp_table_name} (";
|
20 |
+
|
21 |
foreach($row_arrays as $count => $row_array)
|
22 |
{
|
23 |
+
|
24 |
foreach($row_array as $key => $value) {
|
25 |
+
|
26 |
if($count == 0) {
|
27 |
if($query_columns) {
|
28 |
$query_columns .= ",".$key."";
|
30 |
$query_columns .= "".$key."";
|
31 |
}
|
32 |
}
|
33 |
+
|
34 |
$values[] = $value;
|
35 |
+
|
36 |
if(is_numeric($value)) {
|
37 |
if(isset($place_holders[$count])) {
|
38 |
$place_holders[$count] .= ", '%d'";
|
50 |
// mind closing the GAP
|
51 |
$place_holders[$count] .= ")";
|
52 |
}
|
53 |
+
|
54 |
$query .= " $query_columns ) VALUES ";
|
55 |
+
|
56 |
$query .= implode(', ', $place_holders);
|
57 |
+
|
58 |
if($wpdb->query($wpdb->prepare($query, $values))){
|
59 |
return true;
|
60 |
} else {
|
61 |
return false;
|
62 |
}
|
63 |
+
|
64 |
}
|
65 |
|
66 |
// Add slider
|
68 |
function crellyslider_addSlider_callback() {
|
69 |
global $wpdb;
|
70 |
$options = $_POST['datas'];
|
71 |
+
|
72 |
$output = crellyslider_insertSliderSQL($options);
|
73 |
+
|
74 |
// Returning
|
75 |
+
$output = json_encode(esc_sql($wpdb->insert_id));
|
76 |
if(is_array($output)) print_r($output);
|
77 |
else echo $output;
|
78 |
+
|
79 |
die();
|
80 |
}
|
81 |
|
82 |
function crellyslider_insertSliderSQL($options) {
|
83 |
global $wpdb;
|
84 |
+
|
85 |
return $wpdb->insert(
|
86 |
$wpdb->prefix . 'crellyslider_sliders',
|
87 |
array(
|
123 |
global $wpdb;
|
124 |
$options = $_POST['datas'];
|
125 |
$table_name = $wpdb->prefix . 'crellyslider_sliders';
|
126 |
+
|
127 |
+
if(!CrellySliderCommon::sliderExists((esc_sql($options['id'])))) {
|
128 |
+
echo json_encode(false);
|
129 |
+
return;
|
130 |
+
}
|
131 |
+
|
132 |
$output = $wpdb->update(
|
133 |
$table_name,
|
134 |
array(
|
146 |
'callbacks' => $options['callbacks'],
|
147 |
'enableSwipe' => $options['enableSwipe'],
|
148 |
),
|
149 |
+
array('id' => esc_sql($options['id'])),
|
150 |
array(
|
151 |
'%s',
|
152 |
'%s',
|
164 |
),
|
165 |
array('%d')
|
166 |
);
|
167 |
+
|
168 |
// Returning
|
169 |
$output = json_encode($output);
|
170 |
if(is_array($output)) print_r($output);
|
171 |
else echo $output;
|
172 |
+
|
173 |
die();
|
174 |
}
|
175 |
|
178 |
function crellyslider_editSlides_callback() {
|
179 |
global $wpdb;
|
180 |
$options = $_POST['datas'];
|
181 |
+
|
182 |
+
if(!CrellySliderCommon::sliderExists((esc_sql($options['slider_parent'])))) {
|
183 |
+
echo json_encode(false);
|
184 |
+
return;
|
185 |
+
}
|
186 |
+
|
187 |
$output = true;
|
188 |
+
|
189 |
// Remove all the old slides
|
190 |
+
$output = $wpdb->delete($wpdb->prefix . 'crellyslider_slides', array('slider_parent' => esc_sql($options['slider_parent'])), array('%d'));
|
191 |
if($output === false) {
|
192 |
echo json_encode(false);
|
193 |
}
|
194 |
else {
|
195 |
// It's impossible to have 0 slides (jQuery checks it)
|
196 |
+
if(count($options['options']) == 0) {
|
197 |
+
echo json_encode(false);
|
198 |
+
return;
|
199 |
+
}
|
200 |
$output = crellyslider_wp_insert_rows($options['options'], $wpdb->prefix . 'crellyslider_slides');
|
201 |
+
|
202 |
// Returning
|
203 |
$output = json_encode($output);
|
204 |
if(is_array($output)) print_r($output);
|
205 |
else echo $output;
|
206 |
}
|
207 |
+
|
208 |
die();
|
209 |
}
|
210 |
|
213 |
function crellyslider_editElements_callback() {
|
214 |
global $wpdb;
|
215 |
$options = $_POST['datas'];
|
216 |
+
|
217 |
+
if(!CrellySliderCommon::sliderExists((esc_sql($options['slider_parent'])))) {
|
218 |
+
echo json_encode(false);
|
219 |
+
return;
|
220 |
+
}
|
221 |
+
|
222 |
+
$output = true;
|
223 |
+
|
224 |
// Remove all the old elements
|
225 |
+
$output = $wpdb->delete($wpdb->prefix . 'crellyslider_elements', array('slider_parent' => esc_sql($options['slider_parent'])), array('%d'));
|
226 |
if($output === false) {
|
227 |
echo json_encode(false);
|
228 |
}
|
232 |
if(empty($quick_temp)) {
|
233 |
echo json_encode(true);
|
234 |
}
|
235 |
+
else {
|
236 |
$options_array = json_decode(stripslashes($options['options']));
|
237 |
+
|
238 |
$output = crellyslider_wp_insert_rows($options_array, $wpdb->prefix . 'crellyslider_elements');
|
239 |
+
|
240 |
// Returning
|
241 |
$output = json_encode($output);
|
242 |
if(is_array($output)) print_r($output);
|
243 |
else echo $output;
|
244 |
}
|
245 |
}
|
246 |
+
|
247 |
die();
|
248 |
}
|
249 |
|
252 |
function crellyslider_deleteSlider_callback() {
|
253 |
global $wpdb;
|
254 |
$options = $_POST['datas'];
|
255 |
+
|
256 |
+
if(!CrellySliderCommon::sliderExists((esc_sql($options['id'])))) {
|
257 |
+
echo json_encode(false);
|
258 |
+
return;
|
259 |
+
}
|
260 |
+
|
261 |
$real_output = true;
|
262 |
+
|
263 |
// Delete slider
|
264 |
+
$table_name = $wpdb->prefix . 'crellyslider_sliders';
|
265 |
+
$output = $wpdb->delete($table_name, array('id' => esc_sql($options['id'])), array('%d'));
|
266 |
if($output === false) {
|
267 |
$real_output = false;
|
268 |
}
|
269 |
+
|
270 |
// Delete slides
|
271 |
+
$table_name = $wpdb->prefix . 'crellyslider_slides';
|
272 |
+
$output = $wpdb->delete($table_name, array('slider_parent' => esc_sql($options['id'])), array('%d'));
|
273 |
if($output === false) {
|
274 |
$real_output = false;
|
275 |
}
|
276 |
+
|
277 |
// Delete elements
|
278 |
+
$table_name = $wpdb->prefix . 'crellyslider_elements';
|
279 |
+
$output = $wpdb->delete($table_name, array('slider_parent' => esc_sql($options['id'])), array('%d'));
|
280 |
if($output === false) {
|
281 |
$real_output = false;
|
282 |
}
|
283 |
+
|
284 |
// Returning
|
285 |
$real_output = json_encode($real_output);
|
286 |
if(is_array($real_output)) print_r($real_output);
|
287 |
else echo $real_output;
|
288 |
+
|
289 |
die();
|
290 |
}
|
291 |
|
294 |
function crellyslider_duplicateSlider_callback() {
|
295 |
global $wpdb;
|
296 |
$options = $_POST['datas'];
|
297 |
+
|
298 |
+
if(!CrellySliderCommon::sliderExists((esc_sql($options['id'])))) {
|
299 |
+
echo json_encode(false);
|
300 |
+
return;
|
301 |
+
}
|
302 |
+
|
303 |
$output = true;
|
304 |
$real_output = true;
|
305 |
+
|
306 |
+
$slider_id = esc_sql($options['id']);
|
307 |
+
|
308 |
$cloned_slider_name = '';
|
309 |
$cloned_slider_alias = '';
|
310 |
+
|
311 |
+
$sliders = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE id = %d', $slider_id), ARRAY_A);
|
312 |
foreach($sliders as $slider) {
|
313 |
$cloned_slider_name = $slider['name'] = $slider['name'] . '_' . __('Copy', 'crelly-slider');
|
314 |
$cloned_slider_alias = $slider['alias'] = $slider['alias'] . '_' . __('copy', 'crelly-slider');
|
315 |
$output = crellyslider_insertSliderSQL($slider);
|
316 |
}
|
317 |
+
|
318 |
if($output === false) {
|
319 |
$real_output = false;
|
320 |
}
|
321 |
else {
|
322 |
$cloned_slider_id = $wpdb->insert_id;
|
323 |
+
|
324 |
// Clone slides
|
325 |
+
$slides = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_slides WHERE slider_parent = %d ORDER BY position', $slider_id), ARRAY_A);
|
326 |
if(empty($slides)) {
|
327 |
$output = true;
|
328 |
}
|
336 |
$output = false;
|
337 |
}
|
338 |
}
|
339 |
+
|
340 |
// Clone elements
|
341 |
+
$elements = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_elements WHERE slider_parent = %d', $slider_id), ARRAY_A);
|
342 |
if(empty($elements)) {
|
343 |
$output = true;
|
344 |
}
|
351 |
if($temp === false) {
|
352 |
$output = false;
|
353 |
}
|
354 |
+
|
355 |
if($output === false) {
|
356 |
$real_output = false;
|
357 |
}
|
358 |
}
|
359 |
}
|
360 |
+
|
361 |
if($real_output === true) {
|
362 |
$real_output = array(
|
363 |
'response' => true,
|
374 |
'cloned_slider_alias' => false,
|
375 |
);
|
376 |
}
|
377 |
+
|
378 |
// Returning
|
379 |
$real_output = json_encode($real_output);
|
380 |
if(is_array($real_output)) print_r($real_output);
|
381 |
else echo $real_output;
|
382 |
+
|
383 |
die();
|
384 |
}
|
385 |
|
386 |
+
// Exports the slider in .zip
|
387 |
add_action('wp_ajax_crellyslider_exportSlider', 'crellyslider_exportSlider_callback');
|
388 |
function crellyslider_exportSlider_callback() {
|
389 |
global $wpdb;
|
390 |
+
|
391 |
// Clear the temp folder
|
392 |
array_map('unlink', glob(CS_PATH . '/wordpress/temp/*'));
|
393 |
+
|
394 |
$options = $_POST['datas'];
|
395 |
+
|
396 |
+
if(!CrellySliderCommon::sliderExists((esc_sql($options['id'])))) {
|
397 |
+
echo json_encode(false);
|
398 |
+
return;
|
399 |
+
}
|
400 |
+
|
401 |
$real_output = true;
|
402 |
+
|
403 |
$result = array();
|
404 |
+
|
405 |
// Get the slider
|
406 |
+
$sliders = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE id = %d', esc_sql($options['id'])), ARRAY_A);
|
407 |
if(empty($sliders)) {
|
408 |
$real_output = false;
|
409 |
}
|
413 |
}
|
414 |
$result['sliders'] = $sliders;
|
415 |
}
|
416 |
+
|
417 |
$zip = new ZipArchive();
|
418 |
$filename = 'crellyslider-' . $sliders[0]['alias'] . '.zip';
|
419 |
if($zip->open(CS_PATH . '/wordpress/temp/' . $filename, ZipArchive::CREATE) !== TRUE) {
|
420 |
echo false;
|
421 |
die();
|
422 |
}
|
423 |
+
|
424 |
// Get the slides
|
425 |
+
$slides = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_slides WHERE slider_parent = %d ORDER BY position', esc_sql($options['id'])), ARRAY_A);
|
426 |
if(! empty($slides)) {
|
427 |
foreach($slides as $key => $temp) {
|
428 |
unset($slides[$key]['id']);
|
429 |
unset($slides[$key]['slider_parent']);
|
430 |
+
|
431 |
// Add images to zip and remove media directory URLs
|
432 |
if($slides[$key]['background_type_image'] != 'none' && $slides[$key]['background_type_image'] != 'undefined') {
|
433 |
$img = $slides[$key]['background_type_image'];
|
437 |
}
|
438 |
$result['slides'] = $slides;
|
439 |
}
|
440 |
+
|
441 |
// Get the elements
|
442 |
+
$elements = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_elements WHERE slider_parent = %d', esc_sql($options['id'])), ARRAY_A);
|
443 |
if(! empty($elements)) {
|
444 |
foreach($elements as $key => $temp) {
|
445 |
unset($elements[$key]['id']);
|
446 |
unset($elements[$key]['slider_parent']);
|
447 |
+
|
448 |
// Add images to zip and remove media directory URLs
|
449 |
if($elements[$key]['type'] == 'image') {
|
450 |
$img = $elements[$key]['image_src'];
|
454 |
}
|
455 |
$result['elements'] = $elements;
|
456 |
}
|
457 |
+
|
458 |
+
$json = json_encode($result);
|
459 |
$zip->addFromString("slider.json", $json);
|
460 |
+
|
461 |
$zip->close();
|
462 |
+
|
463 |
if($real_output === true) {
|
464 |
$real_output = array(
|
465 |
'response' => true,
|
472 |
'url' => false,
|
473 |
);
|
474 |
}
|
475 |
+
|
476 |
// Returning
|
477 |
$real_output = json_encode($real_output);
|
478 |
if(is_array($real_output)) print_r($real_output);
|
479 |
else echo $real_output;
|
480 |
+
|
481 |
die();
|
482 |
}
|
483 |
|
485 |
add_action('wp_ajax_crellyslider_importSlider', 'crellyslider_importSlider_callback');
|
486 |
function crellyslider_importSlider_callback() {
|
487 |
global $wpdb;
|
488 |
+
|
489 |
// Clear the temp folder
|
490 |
array_map('unlink', glob(CS_PATH . '/wordpress/temp/*'));
|
491 |
+
|
492 |
+
foreach($_FILES as $file) {
|
493 |
$output = true;
|
494 |
$real_output = true;
|
495 |
+
|
496 |
$zip = new ZipArchive();
|
497 |
if($zip->open($file['tmp_name']) !== TRUE) {
|
498 |
echo false;
|
499 |
die();
|
500 |
}
|
501 |
+
|
502 |
$zip->extractTo(CS_PATH . '/wordpress/temp/');
|
503 |
+
|
504 |
$imported_array = json_decode(file_get_contents(CS_PATH . '/wordpress/temp/slider.json'));
|
505 |
+
|
506 |
$sliders = $imported_array->sliders;
|
507 |
foreach($sliders as $slider) {
|
508 |
$output = crellyslider_insertSliderSQL((array) $slider);
|
509 |
}
|
510 |
+
|
511 |
if($output === false) {
|
512 |
$real_output = false;
|
513 |
}
|
514 |
else {
|
515 |
$imported_slider_id = $wpdb->insert_id;
|
516 |
+
|
517 |
// Import slides
|
518 |
$slides = $imported_array->slides;
|
519 |
if(empty($slides)) {
|
522 |
else {
|
523 |
foreach($slides as $key => $slide) {
|
524 |
$slides[$key]->slider_parent = $imported_slider_id;
|
525 |
+
|
526 |
// Set background images
|
527 |
if($slides[$key]->background_type_image != 'undefined' && $slides[$key]->background_type_image != 'none') {
|
528 |
$upload = media_sideload_image(CS_PLUGIN_URL . '/wordpress/temp/' . $slides[$key]->background_type_image, 0, null, 'src');
|
529 |
+
if(is_wp_error($upload)) {
|
530 |
+
echo json_encode(false);
|
531 |
+
return;
|
532 |
+
}
|
533 |
$slides[$key]->background_type_image = $upload;
|
534 |
}
|
535 |
}
|
538 |
$output = false;
|
539 |
}
|
540 |
}
|
541 |
+
|
542 |
// Import elements
|
543 |
$elements = (array) $imported_array->elements;
|
544 |
if(empty($elements)) {
|
547 |
else {
|
548 |
foreach($elements as $key => $element) {
|
549 |
$elements[$key]->slider_parent = $imported_slider_id;
|
550 |
+
|
551 |
// Set images
|
552 |
if($elements[$key]->type == 'image') {
|
553 |
$upload = media_sideload_image(CS_PLUGIN_URL . '/wordpress/temp/' . $elements[$key]->image_src, 0, null, 'src');
|
554 |
+
if(is_wp_error($upload)) {
|
555 |
+
echo json_encode(false);
|
556 |
+
return;
|
557 |
+
}
|
558 |
$elements[$key]->image_src = $upload;
|
559 |
}
|
560 |
}
|
562 |
if($temp === false) {
|
563 |
$output = false;
|
564 |
}
|
565 |
+
|
566 |
if($output === false) {
|
567 |
$real_output = false;
|
568 |
}
|
569 |
}
|
570 |
}
|
571 |
+
|
572 |
if($real_output === true) {
|
573 |
$real_output = array(
|
574 |
'response' => true,
|
585 |
'imported_slider_alias' => false,
|
586 |
);
|
587 |
}
|
588 |
+
|
589 |
// Returning
|
590 |
$real_output = json_encode($real_output);
|
591 |
if(is_array($real_output)) print_r($real_output);
|
592 |
else echo $real_output;
|
593 |
+
|
594 |
die();
|
595 |
}
|
596 |
}
|
597 |
+
?>
|
wordpress/common.php
CHANGED
@@ -1,8 +1,9 @@
|
|
1 |
<?php
|
|
|
2 |
|
3 |
class CrellySliderCommon {
|
4 |
// Includes CSS and JavaScript
|
5 |
-
public static function enqueues() {
|
6 |
wp_enqueue_script('jquery');
|
7 |
wp_enqueue_script('jquery-ui-core');
|
8 |
wp_enqueue_style('crellyslider', CS_PLUGIN_URL . '/css/crellyslider.css', array(), CS_VERSION);
|
@@ -13,21 +14,31 @@ class CrellySliderCommon {
|
|
13 |
wp_enqueue_script('jquery.crellyslider.min', CS_PLUGIN_URL . '/js/jquery.crellyslider.min.js', array(), CS_VERSION, false);
|
14 |
}
|
15 |
}
|
16 |
-
|
17 |
public static function setEnqueues() {
|
18 |
add_action('wp_enqueue_scripts', 'CrellySliderCommon::enqueues');
|
19 |
add_action('admin_enqueue_scripts', 'CrellySliderCommon::enqueues');
|
20 |
}
|
21 |
-
|
22 |
// Loads language file
|
23 |
-
public static function textDomain() {
|
24 |
$locale = apply_filters('plugin_locale', get_locale(), 'crelly-slider');
|
25 |
load_textdomain('crelly-slider', WP_LANG_DIR . '/crelly-slider/crelly-slider-' . $locale . '.mo');
|
26 |
load_plugin_textdomain('crelly-slider', false, dirname(plugin_basename(__FILE__)) . '/languages');
|
27 |
}
|
28 |
-
|
29 |
public static function loadPluginTextDomain() {
|
30 |
add_action('plugins_loaded', 'CrellySliderCommon::textDomain');
|
31 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
-
?>
|
1 |
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
|
4 |
class CrellySliderCommon {
|
5 |
// Includes CSS and JavaScript
|
6 |
+
public static function enqueues() {
|
7 |
wp_enqueue_script('jquery');
|
8 |
wp_enqueue_script('jquery-ui-core');
|
9 |
wp_enqueue_style('crellyslider', CS_PLUGIN_URL . '/css/crellyslider.css', array(), CS_VERSION);
|
14 |
wp_enqueue_script('jquery.crellyslider.min', CS_PLUGIN_URL . '/js/jquery.crellyslider.min.js', array(), CS_VERSION, false);
|
15 |
}
|
16 |
}
|
17 |
+
|
18 |
public static function setEnqueues() {
|
19 |
add_action('wp_enqueue_scripts', 'CrellySliderCommon::enqueues');
|
20 |
add_action('admin_enqueue_scripts', 'CrellySliderCommon::enqueues');
|
21 |
}
|
22 |
+
|
23 |
// Loads language file
|
24 |
+
public static function textDomain() {
|
25 |
$locale = apply_filters('plugin_locale', get_locale(), 'crelly-slider');
|
26 |
load_textdomain('crelly-slider', WP_LANG_DIR . '/crelly-slider/crelly-slider-' . $locale . '.mo');
|
27 |
load_plugin_textdomain('crelly-slider', false, dirname(plugin_basename(__FILE__)) . '/languages');
|
28 |
}
|
29 |
+
|
30 |
public static function loadPluginTextDomain() {
|
31 |
add_action('plugins_loaded', 'CrellySliderCommon::textDomain');
|
32 |
}
|
33 |
+
|
34 |
+
// Returns true if a slider exists into the database. False if it doesn't
|
35 |
+
public static function sliderExists($id) {
|
36 |
+
global $wpdb;
|
37 |
+
$slider = $wpdb->get_row($wpdb->prepare('SELECT id FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE id = %d', esc_sql($id)));
|
38 |
+
if($slider != NULL) {
|
39 |
+
return true;
|
40 |
+
}
|
41 |
+
return false;
|
42 |
+
}
|
43 |
}
|
44 |
+
?>
|
wordpress/elements.php
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
<?php
|
|
|
|
|
2 |
function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
3 |
?>
|
4 |
<div class="cs-elements">
|
@@ -8,40 +10,40 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
8 |
<?php if($edit && $slide): ?>
|
9 |
<?php
|
10 |
if($slide->background_type_image != 'none') {
|
11 |
-
echo 'data-background-image-src="' . $slide->background_type_image . '"';
|
12 |
}
|
13 |
?>
|
14 |
style="
|
15 |
-
width: <?php echo $slider->startWidth; ?>px;
|
16 |
-
height: <?php echo $slider->startHeight; ?>px;
|
17 |
-
background-image: url('<?php echo $slide->background_type_image; ?>');
|
18 |
-
background-color: <?php echo $slide->background_type_color == 'transparent' ? 'rgb(255, 255, 255)' : $slide->background_type_color; ?>;
|
19 |
-
background-position: <?php echo $slide->background_propriety_position_x . ' ' . $slide->background_propriety_position_y; ?>;
|
20 |
-
background-repeat: <?php echo $slide->background_repeat; ?>;
|
21 |
-
background-size: <?php echo $slide->background_propriety_size; ?>;
|
22 |
<?php echo stripslashes($slide->custom_css); ?>
|
23 |
"
|
24 |
<?php endif; ?>
|
25 |
-
>
|
26 |
<?php
|
27 |
if($edit && $elements != NULL) {
|
28 |
foreach($elements as $element) {
|
29 |
if($element->link != '') {
|
30 |
$target = $element->link_new_tab == 1 ? 'target="_blank"' : '';
|
31 |
-
|
32 |
$link_output = '<a' . "\n" .
|
33 |
-
'class="cs-element cs-' . $element->type . '-element"' . "\n" .
|
34 |
'href="' . stripslashes($element->link) . '"' . "\n" .
|
35 |
$target . "\n" .
|
36 |
'style="' .
|
37 |
-
'z-index: ' . $element->z_index . ';' . "\n" .
|
38 |
-
'top: ' . $element->data_top . 'px;' . "\n" .
|
39 |
-
'left: ' . $element->data_left . 'px;' . "\n" .
|
40 |
'">' . "\n";
|
41 |
-
|
42 |
echo $link_output;
|
43 |
}
|
44 |
-
|
45 |
switch($element->type) {
|
46 |
case 'text':
|
47 |
?>
|
@@ -49,9 +51,9 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
49 |
style="
|
50 |
<?php
|
51 |
if($element->link == '') {
|
52 |
-
echo 'z-index: ' . $element->z_index . ';';
|
53 |
-
echo 'left: ' . $element->data_left . 'px;';
|
54 |
-
echo 'top: ' . $element->data_top . 'px;';
|
55 |
}
|
56 |
echo stripslashes($element->custom_css);
|
57 |
?>
|
@@ -69,18 +71,18 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
69 |
</div>
|
70 |
<?php
|
71 |
break;
|
72 |
-
|
73 |
case 'image':
|
74 |
?>
|
75 |
<img
|
76 |
-
src="<?php echo $element->image_src; ?>"
|
77 |
-
alt="<?php echo $element->image_alt; ?>"
|
78 |
style="
|
79 |
<?php
|
80 |
if($element->link == '') {
|
81 |
-
echo 'z-index: ' . $element->z_index . ';';
|
82 |
-
echo 'left: ' . $element->data_left . 'px;';
|
83 |
-
echo 'top: ' . $element->data_top . 'px;';
|
84 |
}
|
85 |
echo stripslashes($element->custom_css);
|
86 |
?>
|
@@ -96,7 +98,7 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
96 |
/>
|
97 |
<?php
|
98 |
break;
|
99 |
-
|
100 |
case 'youtube_video':
|
101 |
?>
|
102 |
<div
|
@@ -104,19 +106,19 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
104 |
style="
|
105 |
<?php
|
106 |
if($element->link == '') {
|
107 |
-
echo 'z-index: ' . $element->z_index . ';';
|
108 |
-
echo 'left: ' . $element->data_left . 'px;';
|
109 |
-
echo 'top: ' . $element->data_top . 'px;';
|
110 |
}
|
111 |
?>
|
112 |
"
|
113 |
>
|
114 |
<div class="cs-avoid-interaction"></div>
|
115 |
-
<iframe style="<?php echo stripslashes($element->custom_css); ?>" class="cs-yt-iframe <?php echo stripslashes($element->custom_css_classes); ?>" type="text/html" width="560" height="315" src="http://www.youtube.com/embed
|
116 |
</div>
|
117 |
<?php
|
118 |
break;
|
119 |
-
|
120 |
case 'vimeo_video':
|
121 |
?>
|
122 |
<div
|
@@ -124,20 +126,20 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
124 |
style="
|
125 |
<?php
|
126 |
if($element->link == '') {
|
127 |
-
echo 'z-index: ' . $element->z_index . ';';
|
128 |
-
echo 'left: ' . $element->data_left . 'px;';
|
129 |
-
echo 'top: ' . $element->data_top . 'px;';
|
130 |
}
|
131 |
?>
|
132 |
"
|
133 |
>
|
134 |
<div class="cs-avoid-interaction"></div>
|
135 |
-
<iframe style="<?php echo stripslashes($element->custom_css); ?>" class="cs-vimeo-iframe <?php echo stripslashes($element->custom_css_classes); ?>" src="https://player.vimeo.com/video
|
136 |
</div>
|
137 |
<?php
|
138 |
break;
|
139 |
}
|
140 |
-
|
141 |
if($element->link != '') {
|
142 |
echo '</a>' . "\n";
|
143 |
}
|
@@ -145,12 +147,12 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
145 |
}
|
146 |
?>
|
147 |
</div>
|
148 |
-
|
149 |
<br />
|
150 |
<br />
|
151 |
|
152 |
<div class="cs-elements-actions">
|
153 |
-
<div style="float: left;">
|
154 |
<a class="cs-add-text-element cs-button cs-is-warning"><?php _e('Add text', 'crelly-slider'); ?></a>
|
155 |
<a class="cs-add-image-element cs-button cs-is-warning"><?php _e('Add image', 'crelly-slider'); ?></a>
|
156 |
<a class="cs-add-video-element cs-button cs-is-warning"><?php _e('Add video', 'crelly-slider'); ?></a>
|
@@ -162,10 +164,10 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
162 |
</div>
|
163 |
<div style="clear: both;"></div>
|
164 |
</div>
|
165 |
-
|
166 |
<br />
|
167 |
<br />
|
168 |
-
|
169 |
<div class="cs-elements-list">
|
170 |
<?php
|
171 |
if($edit && $elements != NULL) {
|
@@ -176,13 +178,13 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
176 |
crellyslider_printTextElement($element);
|
177 |
echo '</div>';
|
178 |
break;
|
179 |
-
|
180 |
case 'image':
|
181 |
echo '<div class="cs-element-settings cs-image-element-settings" style="display: none;">';
|
182 |
crellyslider_printImageElement($element);
|
183 |
echo '</div>';
|
184 |
break;
|
185 |
-
|
186 |
case 'youtube_video':
|
187 |
case 'vimeo_video':
|
188 |
echo '<div class="cs-element-settings cs-video-element-settings" style="display: none;">';
|
@@ -210,7 +212,7 @@ function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
|
210 |
|
211 |
function crellyslider_printTextElement($element) {
|
212 |
$void = !$element ? true : false;
|
213 |
-
|
214 |
$animations = array(
|
215 |
'none' => array(__('None', 'crelly-slider'), false),
|
216 |
'slideDown' => array(__('Slide down', 'crelly-slider'), false),
|
@@ -227,7 +229,7 @@ function crellyslider_printTextElement($element) {
|
|
227 |
'fadeSmallLeft' => array(__('Fade small left', 'crelly-slider'), false),
|
228 |
'fadeSmallRight' => array(__('Fade small right', 'crelly-slider'), false),
|
229 |
);
|
230 |
-
|
231 |
?>
|
232 |
<table class="cs-element-settings-list cs-text-element-settings-list cs-table">
|
233 |
<thead>
|
@@ -235,7 +237,7 @@ function crellyslider_printTextElement($element) {
|
|
235 |
<th colspan="3"><?php _e('Element Options', 'crelly-slider'); ?></th>
|
236 |
</tr>
|
237 |
</thead>
|
238 |
-
|
239 |
<tbody>
|
240 |
<tr class="cs-table-header">
|
241 |
<td><?php _e('Option', 'crelly-slider'); ?></td>
|
@@ -245,9 +247,9 @@ function crellyslider_printTextElement($element) {
|
|
245 |
<tr>
|
246 |
<td class="cs-name"><?php _e('Text', 'crelly-slider'); ?></td>
|
247 |
<td class="cs-content">
|
248 |
-
<?php
|
249 |
if($void) echo '<textarea class="cs-element-inner_html">' . __('Text element', 'crelly-slider') . '</textarea>';
|
250 |
-
else echo '<textarea class="cs-element-inner_html">' .
|
251 |
?>
|
252 |
</td>
|
253 |
<td class="cs-description">
|
@@ -259,7 +261,7 @@ function crellyslider_printTextElement($element) {
|
|
259 |
<td class="cs-content">
|
260 |
<?php
|
261 |
if($void) echo '<input class="cs-element-data_left" type="text" value="0" />';
|
262 |
-
else echo '<input class="cs-element-data_left" type="text" value="' . $element->data_left .'" />';
|
263 |
?>
|
264 |
px
|
265 |
<br />
|
@@ -275,7 +277,7 @@ function crellyslider_printTextElement($element) {
|
|
275 |
<td class="cs-content">
|
276 |
<?php
|
277 |
if($void) echo '<input class="cs-element-data_top" type="text" value="0" />';
|
278 |
-
else echo '<input class="cs-element-data_top" type="text" value="' . $element->data_top .'" />';
|
279 |
?>
|
280 |
px
|
281 |
<br />
|
@@ -291,7 +293,7 @@ function crellyslider_printTextElement($element) {
|
|
291 |
<td class="cs-content">
|
292 |
<?php
|
293 |
if($void) echo '<input class="cs-element-z_index" type="text" value="1" />';
|
294 |
-
else echo '<input class="cs-element-z_index" type="text" value="' . $element->z_index .'" />';
|
295 |
?>
|
296 |
</td>
|
297 |
<td class="cs-description">
|
@@ -303,7 +305,7 @@ function crellyslider_printTextElement($element) {
|
|
303 |
<td class="cs-content">
|
304 |
<?php
|
305 |
if($void) echo '<input class="cs-element-data_delay" type="text" value="0" />';
|
306 |
-
else echo '<input class="cs-element-data_delay" type="text" value="' . $element->data_delay .'" />';
|
307 |
?>
|
308 |
ms
|
309 |
</td>
|
@@ -316,14 +318,14 @@ function crellyslider_printTextElement($element) {
|
|
316 |
<td class="cs-content">
|
317 |
<?php
|
318 |
if($void) echo '<input class="cs-element-data_time" type="text" value="all" />';
|
319 |
-
else echo '<input class="cs-element-data_time" type="text" value="' . $element->data_time .'" />';
|
320 |
?>
|
321 |
ms
|
322 |
</td>
|
323 |
<td class="cs-description">
|
324 |
<?php _e('How long will the element be displayed during the slide execution.', 'crelly-slider'); ?>
|
325 |
<br />
|
326 |
-
<br />
|
327 |
<?php _e('Write "all" to set the entire time.', 'crelly-slider'); ?>
|
328 |
<br />
|
329 |
<br />
|
@@ -385,7 +387,7 @@ function crellyslider_printTextElement($element) {
|
|
385 |
<td class="cs-content">
|
386 |
<?php
|
387 |
if($void) echo '<input class="cs-element-data_easeIn" type="text" value="300" />';
|
388 |
-
else echo '<input class="cs-element-data_easeIn" type="text" value="' . $element->data_easeIn .'" />';
|
389 |
?>
|
390 |
ms
|
391 |
</td>
|
@@ -398,7 +400,7 @@ function crellyslider_printTextElement($element) {
|
|
398 |
<td class="cs-content">
|
399 |
<?php
|
400 |
if($void) echo '<input class="cs-element-data_easeOut" type="text" value="300" />';
|
401 |
-
else echo '<input class="cs-element-data_easeOut" type="text" value="' . $element->data_easeOut .'" />';
|
402 |
?>
|
403 |
ms
|
404 |
</td>
|
@@ -447,7 +449,7 @@ function crellyslider_printTextElement($element) {
|
|
447 |
<td class="cs-content">
|
448 |
<?php
|
449 |
if($void) echo '<input class="cs-element-custom_css_classes" type="text" />';
|
450 |
-
else echo '<input class="cs-element-custom_css_classes" type="text" value="' .
|
451 |
?>
|
452 |
</td>
|
453 |
<td class="cs-description">
|
@@ -461,7 +463,7 @@ function crellyslider_printTextElement($element) {
|
|
461 |
|
462 |
function crellyslider_printImageElement($element) {
|
463 |
$void = !$element ? true : false;
|
464 |
-
|
465 |
$animations = array(
|
466 |
'none' => array(__('None', 'crelly-slider'), false),
|
467 |
'slideDown' => array(__('Slide down', 'crelly-slider'), false),
|
@@ -478,7 +480,7 @@ function crellyslider_printImageElement($element) {
|
|
478 |
'fadeSmallLeft' => array(__('Fade small left', 'crelly-slider'), false),
|
479 |
'fadeSmallRight' => array(__('Fade small right', 'crelly-slider'), false),
|
480 |
);
|
481 |
-
|
482 |
?>
|
483 |
<table class="cs-element-settings-list cs-image-element-settings-list cs-table">
|
484 |
<thead>
|
@@ -497,7 +499,7 @@ function crellyslider_printImageElement($element) {
|
|
497 |
<td class="cs-content">
|
498 |
<?php
|
499 |
if($void) echo '<input class="cs-image-element-upload-button cs-button cs-is-default" type="button" value="' . __('Open gallery', 'crelly-slider') . '" />';
|
500 |
-
else echo '<input data-src="' . $element->image_src . '" data-alt="' . $element->image_alt . '" class="cs-image-element-upload-button cs-button cs-is-default" type="button" value="' . __('Open gallery', 'crelly-slider') . '" />';
|
501 |
?>
|
502 |
</td>
|
503 |
<td class="cs-description">
|
@@ -509,7 +511,7 @@ function crellyslider_printImageElement($element) {
|
|
509 |
<td class="cs-content">
|
510 |
<?php
|
511 |
if($void) echo '<input class="cs-element-data_left" type="text" value="0" />';
|
512 |
-
else echo '<input class="cs-element-data_left" type="text" value="' . $element->data_left .'" />';
|
513 |
?>
|
514 |
px
|
515 |
<br />
|
@@ -525,7 +527,7 @@ function crellyslider_printImageElement($element) {
|
|
525 |
<td class="cs-content">
|
526 |
<?php
|
527 |
if($void) echo '<input class="cs-element-data_top" type="text" value="0" />';
|
528 |
-
else echo '<input class="cs-element-data_top" type="text" value="' . $element->data_top .'" />';
|
529 |
?>
|
530 |
px
|
531 |
<br />
|
@@ -541,7 +543,7 @@ function crellyslider_printImageElement($element) {
|
|
541 |
<td class="cs-content">
|
542 |
<?php
|
543 |
if($void) echo '<input class="cs-element-z_index" type="text" value="1" />';
|
544 |
-
else echo '<input class="cs-element-z_index" type="text" value="' . $element->z_index .'" />';
|
545 |
?>
|
546 |
</td>
|
547 |
<td class="cs-description">
|
@@ -553,7 +555,7 @@ function crellyslider_printImageElement($element) {
|
|
553 |
<td class="cs-content">
|
554 |
<?php
|
555 |
if($void) echo '<input class="cs-element-data_delay" type="text" value="0" />';
|
556 |
-
else echo '<input class="cs-element-data_delay" type="text" value="' . $element->data_delay .'" />';
|
557 |
?>
|
558 |
ms
|
559 |
</td>
|
@@ -566,14 +568,14 @@ function crellyslider_printImageElement($element) {
|
|
566 |
<td class="cs-content">
|
567 |
<?php
|
568 |
if($void) echo '<input class="cs-element-data_time" type="text" value="all" />';
|
569 |
-
else echo '<input class="cs-element-data_time" type="text" value="' . $element->data_time .'" />';
|
570 |
?>
|
571 |
ms
|
572 |
</td>
|
573 |
<td class="cs-description">
|
574 |
<?php _e('How long will the element be displayed during the slide execution.', 'crelly-slider'); ?>
|
575 |
<br />
|
576 |
-
<br />
|
577 |
<?php _e('Write "all" to set the entire time.', 'crelly-slider'); ?>
|
578 |
<br />
|
579 |
<br />
|
@@ -635,7 +637,7 @@ function crellyslider_printImageElement($element) {
|
|
635 |
<td class="cs-content">
|
636 |
<?php
|
637 |
if($void) echo '<input class="cs-element-data_easeIn" type="text" value="300" />';
|
638 |
-
else echo '<input class="cs-element-data_easeIn" type="text" value="' . $element->data_easeIn .'" />';
|
639 |
?>
|
640 |
ms
|
641 |
</td>
|
@@ -648,7 +650,7 @@ function crellyslider_printImageElement($element) {
|
|
648 |
<td class="cs-content">
|
649 |
<?php
|
650 |
if($void) echo '<input class="cs-element-data_easeOut" type="text" value="300" />';
|
651 |
-
else echo '<input class="cs-element-data_easeOut" type="text" value="' . $element->data_easeOut .'" />';
|
652 |
?>
|
653 |
ms
|
654 |
</td>
|
@@ -697,7 +699,7 @@ function crellyslider_printImageElement($element) {
|
|
697 |
<td class="cs-content">
|
698 |
<?php
|
699 |
if($void) echo '<input class="cs-element-custom_css_classes" type="text" />';
|
700 |
-
else echo '<input class="cs-element-custom_css_classes" type="text" value="' .
|
701 |
?>
|
702 |
</td>
|
703 |
<td class="cs-description">
|
@@ -711,7 +713,7 @@ function crellyslider_printImageElement($element) {
|
|
711 |
|
712 |
function crellyslider_printVideoElement($element) {
|
713 |
$void = !$element ? true : false;
|
714 |
-
|
715 |
$animations = array(
|
716 |
'none' => array(__('None', 'crelly-slider'), false),
|
717 |
'slideDown' => array(__('Slide down', 'crelly-slider'), false),
|
@@ -728,7 +730,7 @@ function crellyslider_printVideoElement($element) {
|
|
728 |
'fadeSmallLeft' => array(__('Fade small left', 'crelly-slider'), false),
|
729 |
'fadeSmallRight' => array(__('Fade small right', 'crelly-slider'), false),
|
730 |
);
|
731 |
-
|
732 |
?>
|
733 |
<table class="cs-element-settings-list cs-video-element-settings-list cs-table">
|
734 |
<thead>
|
@@ -736,7 +738,7 @@ function crellyslider_printVideoElement($element) {
|
|
736 |
<th colspan="3"><?php _e('Element Options', 'crelly-slider'); ?></th>
|
737 |
</tr>
|
738 |
</thead>
|
739 |
-
|
740 |
<tbody>
|
741 |
<tr class="cs-table-header">
|
742 |
<td><?php _e('Option', 'crelly-slider'); ?></td>
|
@@ -746,7 +748,7 @@ function crellyslider_printVideoElement($element) {
|
|
746 |
<tr>
|
747 |
<td class="cs-name"><?php _e('Video source', 'crelly-slider'); ?></td>
|
748 |
<td class="cs-content">
|
749 |
-
<?php
|
750 |
if($void) echo '<select class="cs-element-video_src"><option selected value="youtube">YouTube</option><option value="vimeo">Vimeo</option></select>';
|
751 |
else {
|
752 |
if($element->type == 'youtube_video') {
|
@@ -756,11 +758,11 @@ function crellyslider_printVideoElement($element) {
|
|
756 |
echo '<select class="cs-element-video_src"><option value="youtube">YouTube</option><option selected value="vimeo">Vimeo</option></select>';
|
757 |
}
|
758 |
}
|
759 |
-
|
760 |
echo '<br /><br />';
|
761 |
-
|
762 |
if($void) echo '<input placeholder="Video ID" class="cs-element-video_id" type="text" />';
|
763 |
-
else echo '<input placeholder="Video ID" class="cs-element-video_id" type="text" value="' . $element->video_id .'" />';
|
764 |
?>
|
765 |
</td>
|
766 |
<td class="cs-description">
|
@@ -770,7 +772,7 @@ function crellyslider_printVideoElement($element) {
|
|
770 |
<tr>
|
771 |
<td class="cs-name"><?php _e('Loop video', 'crelly-slider'); ?></td>
|
772 |
<td class="cs-content">
|
773 |
-
<?php
|
774 |
if($void) echo '<select class="cs-element-video_loop"><option value="1">' . __('Yes', 'crelly-slider') . '</option><option selected value="0">' . __('No', 'crelly-slider') . '</option></select>';
|
775 |
else {
|
776 |
if($element->video_loop == 0) {
|
@@ -789,7 +791,7 @@ function crellyslider_printVideoElement($element) {
|
|
789 |
<tr>
|
790 |
<td class="cs-name"><?php _e('Autoplay', 'crelly-slider'); ?></td>
|
791 |
<td class="cs-content">
|
792 |
-
<?php
|
793 |
if($void) echo '<select class="cs-element-video_autoplay"><option value="1">' . __('Yes', 'crelly-slider') . '</option><option selected value="0">' . __('No', 'crelly-slider') . '</option></select>';
|
794 |
else {
|
795 |
if($element->video_autoplay == 0) {
|
@@ -810,7 +812,7 @@ function crellyslider_printVideoElement($element) {
|
|
810 |
<td class="cs-content">
|
811 |
<?php
|
812 |
if($void) echo '<input class="cs-element-data_left" type="text" value="0" />';
|
813 |
-
else echo '<input class="cs-element-data_left" type="text" value="' . $element->data_left .'" />';
|
814 |
?>
|
815 |
px
|
816 |
<br />
|
@@ -826,7 +828,7 @@ function crellyslider_printVideoElement($element) {
|
|
826 |
<td class="cs-content">
|
827 |
<?php
|
828 |
if($void) echo '<input class="cs-element-data_top" type="text" value="0" />';
|
829 |
-
else echo '<input class="cs-element-data_top" type="text" value="' . $element->data_top .'" />';
|
830 |
?>
|
831 |
px
|
832 |
<br />
|
@@ -842,7 +844,7 @@ function crellyslider_printVideoElement($element) {
|
|
842 |
<td class="cs-content">
|
843 |
<?php
|
844 |
if($void) echo '<input class="cs-element-z_index" type="text" value="1" />';
|
845 |
-
else echo '<input class="cs-element-z_index" type="text" value="' . $element->z_index .'" />';
|
846 |
?>
|
847 |
</td>
|
848 |
<td class="cs-description">
|
@@ -854,7 +856,7 @@ function crellyslider_printVideoElement($element) {
|
|
854 |
<td class="cs-content">
|
855 |
<?php
|
856 |
if($void) echo '<input class="cs-element-data_delay" type="text" value="0" />';
|
857 |
-
else echo '<input class="cs-element-data_delay" type="text" value="' . $element->data_delay .'" />';
|
858 |
?>
|
859 |
ms
|
860 |
</td>
|
@@ -867,14 +869,14 @@ function crellyslider_printVideoElement($element) {
|
|
867 |
<td class="cs-content">
|
868 |
<?php
|
869 |
if($void) echo '<input class="cs-element-data_time" type="text" value="all" />';
|
870 |
-
else echo '<input class="cs-element-data_time" type="text" value="' . $element->data_time .'" />';
|
871 |
?>
|
872 |
ms
|
873 |
</td>
|
874 |
<td class="cs-description">
|
875 |
<?php _e('How long will the element be displayed during the slide execution.', 'crelly-slider'); ?>
|
876 |
<br />
|
877 |
-
<br />
|
878 |
<?php _e('Write "all" to set the entire time.', 'crelly-slider'); ?>
|
879 |
<br />
|
880 |
<br />
|
@@ -936,7 +938,7 @@ function crellyslider_printVideoElement($element) {
|
|
936 |
<td class="cs-content">
|
937 |
<?php
|
938 |
if($void) echo '<input class="cs-element-data_easeIn" type="text" value="300" />';
|
939 |
-
else echo '<input class="cs-element-data_easeIn" type="text" value="' . $element->data_easeIn .'" />';
|
940 |
?>
|
941 |
ms
|
942 |
</td>
|
@@ -949,7 +951,7 @@ function crellyslider_printVideoElement($element) {
|
|
949 |
<td class="cs-content">
|
950 |
<?php
|
951 |
if($void) echo '<input class="cs-element-data_easeOut" type="text" value="300" />';
|
952 |
-
else echo '<input class="cs-element-data_easeOut" type="text" value="' . $element->data_easeOut .'" />';
|
953 |
?>
|
954 |
ms
|
955 |
</td>
|
@@ -974,7 +976,7 @@ function crellyslider_printVideoElement($element) {
|
|
974 |
<td class="cs-content">
|
975 |
<?php
|
976 |
if($void) echo '<input class="cs-element-custom_css_classes" type="text" />';
|
977 |
-
else echo '<input class="cs-element-custom_css_classes" type="text" value="' .
|
978 |
?>
|
979 |
</td>
|
980 |
<td class="cs-description">
|
@@ -983,4 +985,4 @@ function crellyslider_printVideoElement($element) {
|
|
983 |
</tr>
|
984 |
</tbody>
|
985 |
</table>
|
986 |
-
<?php } ?>
|
1 |
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
+
|
4 |
function crellyslider_printElements($edit, $slider, $slide, $elements) {
|
5 |
?>
|
6 |
<div class="cs-elements">
|
10 |
<?php if($edit && $slide): ?>
|
11 |
<?php
|
12 |
if($slide->background_type_image != 'none') {
|
13 |
+
echo 'data-background-image-src="' . stripslashes($slide->background_type_image) . '"';
|
14 |
}
|
15 |
?>
|
16 |
style="
|
17 |
+
width: <?php echo esc_attr($slider->startWidth); ?>px;
|
18 |
+
height: <?php echo esc_attr($slider->startHeight); ?>px;
|
19 |
+
background-image: url('<?php echo stripslashes($slide->background_type_image); ?>');
|
20 |
+
background-color: <?php echo esc_attr($slide->background_type_color) == 'transparent' ? 'rgb(255, 255, 255)' : esc_attr($slide->background_type_color); ?>;
|
21 |
+
background-position: <?php echo esc_attr($slide->background_propriety_position_x) . ' ' . esc_attr($slide->background_propriety_position_y); ?>;
|
22 |
+
background-repeat: <?php echo esc_attr($slide->background_repeat); ?>;
|
23 |
+
background-size: <?php echo esc_attr($slide->background_propriety_size); ?>;
|
24 |
<?php echo stripslashes($slide->custom_css); ?>
|
25 |
"
|
26 |
<?php endif; ?>
|
27 |
+
>
|
28 |
<?php
|
29 |
if($edit && $elements != NULL) {
|
30 |
foreach($elements as $element) {
|
31 |
if($element->link != '') {
|
32 |
$target = $element->link_new_tab == 1 ? 'target="_blank"' : '';
|
33 |
+
|
34 |
$link_output = '<a' . "\n" .
|
35 |
+
'class="cs-element cs-' . esc_attr($element->type) . '-element"' . "\n" .
|
36 |
'href="' . stripslashes($element->link) . '"' . "\n" .
|
37 |
$target . "\n" .
|
38 |
'style="' .
|
39 |
+
'z-index: ' . esc_attr($element->z_index) . ';' . "\n" .
|
40 |
+
'top: ' . esc_attr($element->data_top) . 'px;' . "\n" .
|
41 |
+
'left: ' . esc_attr($element->data_left) . 'px;' . "\n" .
|
42 |
'">' . "\n";
|
43 |
+
|
44 |
echo $link_output;
|
45 |
}
|
46 |
+
|
47 |
switch($element->type) {
|
48 |
case 'text':
|
49 |
?>
|
51 |
style="
|
52 |
<?php
|
53 |
if($element->link == '') {
|
54 |
+
echo 'z-index: ' . esc_attr($element->z_index) . ';';
|
55 |
+
echo 'left: ' . esc_attr($element->data_left) . 'px;';
|
56 |
+
echo 'top: ' . esc_attr($element->data_top) . 'px;';
|
57 |
}
|
58 |
echo stripslashes($element->custom_css);
|
59 |
?>
|
71 |
</div>
|
72 |
<?php
|
73 |
break;
|
74 |
+
|
75 |
case 'image':
|
76 |
?>
|
77 |
<img
|
78 |
+
src="<?php echo esc_url($element->image_src); ?>"
|
79 |
+
alt="<?php echo esc_attr($element->image_alt); ?>"
|
80 |
style="
|
81 |
<?php
|
82 |
if($element->link == '') {
|
83 |
+
echo 'z-index: ' . esc_attr($element->z_index) . ';';
|
84 |
+
echo 'left: ' . esc_attr($element->data_left) . 'px;';
|
85 |
+
echo 'top: ' . esc_attr($element->data_top) . 'px;';
|
86 |
}
|
87 |
echo stripslashes($element->custom_css);
|
88 |
?>
|
98 |
/>
|
99 |
<?php
|
100 |
break;
|
101 |
+
|
102 |
case 'youtube_video':
|
103 |
?>
|
104 |
<div
|
106 |
style="
|
107 |
<?php
|
108 |
if($element->link == '') {
|
109 |
+
echo 'z-index: ' . esc_attr($element->z_index) . ';';
|
110 |
+
echo 'left: ' . esc_attr($element->data_left) . 'px;';
|
111 |
+
echo 'top: ' . esc_attr($element->data_top) . 'px;';
|
112 |
}
|
113 |
?>
|
114 |
"
|
115 |
>
|
116 |
<div class="cs-avoid-interaction"></div>
|
117 |
+
<iframe style="<?php echo stripslashes($element->custom_css); ?>" class="cs-yt-iframe <?php echo stripslashes($element->custom_css_classes); ?>" type="text/html" width="560" height="315" src="<?php echo esc_url('http://www.youtube.com/embed/' . $element->video_id); ?>?enablejsapi=1" frameborder="0"></iframe>
|
118 |
</div>
|
119 |
<?php
|
120 |
break;
|
121 |
+
|
122 |
case 'vimeo_video':
|
123 |
?>
|
124 |
<div
|
126 |
style="
|
127 |
<?php
|
128 |
if($element->link == '') {
|
129 |
+
echo 'z-index: ' . esc_attr($element->z_index) . ';';
|
130 |
+
echo 'left: ' . esc_attr($element->data_left) . 'px;';
|
131 |
+
echo 'top: ' . esc_attr($element->data_top) . 'px;';
|
132 |
}
|
133 |
?>
|
134 |
"
|
135 |
>
|
136 |
<div class="cs-avoid-interaction"></div>
|
137 |
+
<iframe style="<?php echo stripslashes($element->custom_css); ?>" class="cs-vimeo-iframe <?php echo stripslashes($element->custom_css_classes); ?>" src="<?php echo esc_url('https://player.vimeo.com/video/' . $element->video_id); ?>?api=1" width="560" height="315" frameborder="0" ></iframe>
|
138 |
</div>
|
139 |
<?php
|
140 |
break;
|
141 |
}
|
142 |
+
|
143 |
if($element->link != '') {
|
144 |
echo '</a>' . "\n";
|
145 |
}
|
147 |
}
|
148 |
?>
|
149 |
</div>
|
150 |
+
|
151 |
<br />
|
152 |
<br />
|
153 |
|
154 |
<div class="cs-elements-actions">
|
155 |
+
<div style="float: left;">
|
156 |
<a class="cs-add-text-element cs-button cs-is-warning"><?php _e('Add text', 'crelly-slider'); ?></a>
|
157 |
<a class="cs-add-image-element cs-button cs-is-warning"><?php _e('Add image', 'crelly-slider'); ?></a>
|
158 |
<a class="cs-add-video-element cs-button cs-is-warning"><?php _e('Add video', 'crelly-slider'); ?></a>
|
164 |
</div>
|
165 |
<div style="clear: both;"></div>
|
166 |
</div>
|
167 |
+
|
168 |
<br />
|
169 |
<br />
|
170 |
+
|
171 |
<div class="cs-elements-list">
|
172 |
<?php
|
173 |
if($edit && $elements != NULL) {
|
178 |
crellyslider_printTextElement($element);
|
179 |
echo '</div>';
|
180 |
break;
|
181 |
+
|
182 |
case 'image':
|
183 |
echo '<div class="cs-element-settings cs-image-element-settings" style="display: none;">';
|
184 |
crellyslider_printImageElement($element);
|
185 |
echo '</div>';
|
186 |
break;
|
187 |
+
|
188 |
case 'youtube_video':
|
189 |
case 'vimeo_video':
|
190 |
echo '<div class="cs-element-settings cs-video-element-settings" style="display: none;">';
|
212 |
|
213 |
function crellyslider_printTextElement($element) {
|
214 |
$void = !$element ? true : false;
|
215 |
+
|
216 |
$animations = array(
|
217 |
'none' => array(__('None', 'crelly-slider'), false),
|
218 |
'slideDown' => array(__('Slide down', 'crelly-slider'), false),
|
229 |
'fadeSmallLeft' => array(__('Fade small left', 'crelly-slider'), false),
|
230 |
'fadeSmallRight' => array(__('Fade small right', 'crelly-slider'), false),
|
231 |
);
|
232 |
+
|
233 |
?>
|
234 |
<table class="cs-element-settings-list cs-text-element-settings-list cs-table">
|
235 |
<thead>
|
237 |
<th colspan="3"><?php _e('Element Options', 'crelly-slider'); ?></th>
|
238 |
</tr>
|
239 |
</thead>
|
240 |
+
|
241 |
<tbody>
|
242 |
<tr class="cs-table-header">
|
243 |
<td><?php _e('Option', 'crelly-slider'); ?></td>
|
247 |
<tr>
|
248 |
<td class="cs-name"><?php _e('Text', 'crelly-slider'); ?></td>
|
249 |
<td class="cs-content">
|
250 |
+
<?php
|
251 |
if($void) echo '<textarea class="cs-element-inner_html">' . __('Text element', 'crelly-slider') . '</textarea>';
|
252 |
+
else echo '<textarea class="cs-element-inner_html">' . esc_textarea($element->inner_html) . '</textarea>';
|
253 |
?>
|
254 |
</td>
|
255 |
<td class="cs-description">
|
261 |
<td class="cs-content">
|
262 |
<?php
|
263 |
if($void) echo '<input class="cs-element-data_left" type="text" value="0" />';
|
264 |
+
else echo '<input class="cs-element-data_left" type="text" value="' . sanitize_text_field($element->data_left) .'" />';
|
265 |
?>
|
266 |
px
|
267 |
<br />
|
277 |
<td class="cs-content">
|
278 |
<?php
|
279 |
if($void) echo '<input class="cs-element-data_top" type="text" value="0" />';
|
280 |
+
else echo '<input class="cs-element-data_top" type="text" value="' . sanitize_text_field($element->data_top) .'" />';
|
281 |
?>
|
282 |
px
|
283 |
<br />
|
293 |
<td class="cs-content">
|
294 |
<?php
|
295 |
if($void) echo '<input class="cs-element-z_index" type="text" value="1" />';
|
296 |
+
else echo '<input class="cs-element-z_index" type="text" value="' . sanitize_text_field($element->z_index) .'" />';
|
297 |
?>
|
298 |
</td>
|
299 |
<td class="cs-description">
|
305 |
<td class="cs-content">
|
306 |
<?php
|
307 |
if($void) echo '<input class="cs-element-data_delay" type="text" value="0" />';
|
308 |
+
else echo '<input class="cs-element-data_delay" type="text" value="' . sanitize_text_field($element->data_delay) .'" />';
|
309 |
?>
|
310 |
ms
|
311 |
</td>
|
318 |
<td class="cs-content">
|
319 |
<?php
|
320 |
if($void) echo '<input class="cs-element-data_time" type="text" value="all" />';
|
321 |
+
else echo '<input class="cs-element-data_time" type="text" value="' . sanitize_text_field($element->data_time) .'" />';
|
322 |
?>
|
323 |
ms
|
324 |
</td>
|
325 |
<td class="cs-description">
|
326 |
<?php _e('How long will the element be displayed during the slide execution.', 'crelly-slider'); ?>
|
327 |
<br />
|
328 |
+
<br />
|
329 |
<?php _e('Write "all" to set the entire time.', 'crelly-slider'); ?>
|
330 |
<br />
|
331 |
<br />
|
387 |
<td class="cs-content">
|
388 |
<?php
|
389 |
if($void) echo '<input class="cs-element-data_easeIn" type="text" value="300" />';
|
390 |
+
else echo '<input class="cs-element-data_easeIn" type="text" value="' . sanitize_text_field($element->data_easeIn) .'" />';
|
391 |
?>
|
392 |
ms
|
393 |
</td>
|
400 |
<td class="cs-content">
|
401 |
<?php
|
402 |
if($void) echo '<input class="cs-element-data_easeOut" type="text" value="300" />';
|
403 |
+
else echo '<input class="cs-element-data_easeOut" type="text" value="' . sanitize_text_field($element->data_easeOut) .'" />';
|
404 |
?>
|
405 |
ms
|
406 |
</td>
|
449 |
<td class="cs-content">
|
450 |
<?php
|
451 |
if($void) echo '<input class="cs-element-custom_css_classes" type="text" />';
|
452 |
+
else echo '<input class="cs-element-custom_css_classes" type="text" value="' . sanitize_text_field($element->custom_css_classes) . '" />';
|
453 |
?>
|
454 |
</td>
|
455 |
<td class="cs-description">
|
463 |
|
464 |
function crellyslider_printImageElement($element) {
|
465 |
$void = !$element ? true : false;
|
466 |
+
|
467 |
$animations = array(
|
468 |
'none' => array(__('None', 'crelly-slider'), false),
|
469 |
'slideDown' => array(__('Slide down', 'crelly-slider'), false),
|
480 |
'fadeSmallLeft' => array(__('Fade small left', 'crelly-slider'), false),
|
481 |
'fadeSmallRight' => array(__('Fade small right', 'crelly-slider'), false),
|
482 |
);
|
483 |
+
|
484 |
?>
|
485 |
<table class="cs-element-settings-list cs-image-element-settings-list cs-table">
|
486 |
<thead>
|
499 |
<td class="cs-content">
|
500 |
<?php
|
501 |
if($void) echo '<input class="cs-image-element-upload-button cs-button cs-is-default" type="button" value="' . __('Open gallery', 'crelly-slider') . '" />';
|
502 |
+
else echo '<input data-src="' . esc_url($element->image_src) . '" data-alt="' . esc_attr($element->image_alt) . '" class="cs-image-element-upload-button cs-button cs-is-default" type="button" value="' . __('Open gallery', 'crelly-slider') . '" />';
|
503 |
?>
|
504 |
</td>
|
505 |
<td class="cs-description">
|
511 |
<td class="cs-content">
|
512 |
<?php
|
513 |
if($void) echo '<input class="cs-element-data_left" type="text" value="0" />';
|
514 |
+
else echo '<input class="cs-element-data_left" type="text" value="' . sanitize_text_field($element->data_left) .'" />';
|
515 |
?>
|
516 |
px
|
517 |
<br />
|
527 |
<td class="cs-content">
|
528 |
<?php
|
529 |
if($void) echo '<input class="cs-element-data_top" type="text" value="0" />';
|
530 |
+
else echo '<input class="cs-element-data_top" type="text" value="' . sanitize_text_field($element->data_top) .'" />';
|
531 |
?>
|
532 |
px
|
533 |
<br />
|
543 |
<td class="cs-content">
|
544 |
<?php
|
545 |
if($void) echo '<input class="cs-element-z_index" type="text" value="1" />';
|
546 |
+
else echo '<input class="cs-element-z_index" type="text" value="' . sanitize_text_field($element->z_index) .'" />';
|
547 |
?>
|
548 |
</td>
|
549 |
<td class="cs-description">
|
555 |
<td class="cs-content">
|
556 |
<?php
|
557 |
if($void) echo '<input class="cs-element-data_delay" type="text" value="0" />';
|
558 |
+
else echo '<input class="cs-element-data_delay" type="text" value="' . sanitize_text_field($element->data_delay) .'" />';
|
559 |
?>
|
560 |
ms
|
561 |
</td>
|
568 |
<td class="cs-content">
|
569 |
<?php
|
570 |
if($void) echo '<input class="cs-element-data_time" type="text" value="all" />';
|
571 |
+
else echo '<input class="cs-element-data_time" type="text" value="' . sanitize_text_field($element->data_time) .'" />';
|
572 |
?>
|
573 |
ms
|
574 |
</td>
|
575 |
<td class="cs-description">
|
576 |
<?php _e('How long will the element be displayed during the slide execution.', 'crelly-slider'); ?>
|
577 |
<br />
|
578 |
+
<br />
|
579 |
<?php _e('Write "all" to set the entire time.', 'crelly-slider'); ?>
|
580 |
<br />
|
581 |
<br />
|
637 |
<td class="cs-content">
|
638 |
<?php
|
639 |
if($void) echo '<input class="cs-element-data_easeIn" type="text" value="300" />';
|
640 |
+
else echo '<input class="cs-element-data_easeIn" type="text" value="' . sanitize_text_field($element->data_easeIn) .'" />';
|
641 |
?>
|
642 |
ms
|
643 |
</td>
|
650 |
<td class="cs-content">
|
651 |
<?php
|
652 |
if($void) echo '<input class="cs-element-data_easeOut" type="text" value="300" />';
|
653 |
+
else echo '<input class="cs-element-data_easeOut" type="text" value="' . sanitize_text_field($element->data_easeOut) .'" />';
|
654 |
?>
|
655 |
ms
|
656 |
</td>
|
699 |
<td class="cs-content">
|
700 |
<?php
|
701 |
if($void) echo '<input class="cs-element-custom_css_classes" type="text" />';
|
702 |
+
else echo '<input class="cs-element-custom_css_classes" type="text" value="' . sanitize_text_field($element->custom_css_classes) . '" />';
|
703 |
?>
|
704 |
</td>
|
705 |
<td class="cs-description">
|
713 |
|
714 |
function crellyslider_printVideoElement($element) {
|
715 |
$void = !$element ? true : false;
|
716 |
+
|
717 |
$animations = array(
|
718 |
'none' => array(__('None', 'crelly-slider'), false),
|
719 |
'slideDown' => array(__('Slide down', 'crelly-slider'), false),
|
730 |
'fadeSmallLeft' => array(__('Fade small left', 'crelly-slider'), false),
|
731 |
'fadeSmallRight' => array(__('Fade small right', 'crelly-slider'), false),
|
732 |
);
|
733 |
+
|
734 |
?>
|
735 |
<table class="cs-element-settings-list cs-video-element-settings-list cs-table">
|
736 |
<thead>
|
738 |
<th colspan="3"><?php _e('Element Options', 'crelly-slider'); ?></th>
|
739 |
</tr>
|
740 |
</thead>
|
741 |
+
|
742 |
<tbody>
|
743 |
<tr class="cs-table-header">
|
744 |
<td><?php _e('Option', 'crelly-slider'); ?></td>
|
748 |
<tr>
|
749 |
<td class="cs-name"><?php _e('Video source', 'crelly-slider'); ?></td>
|
750 |
<td class="cs-content">
|
751 |
+
<?php
|
752 |
if($void) echo '<select class="cs-element-video_src"><option selected value="youtube">YouTube</option><option value="vimeo">Vimeo</option></select>';
|
753 |
else {
|
754 |
if($element->type == 'youtube_video') {
|
758 |
echo '<select class="cs-element-video_src"><option value="youtube">YouTube</option><option selected value="vimeo">Vimeo</option></select>';
|
759 |
}
|
760 |
}
|
761 |
+
|
762 |
echo '<br /><br />';
|
763 |
+
|
764 |
if($void) echo '<input placeholder="Video ID" class="cs-element-video_id" type="text" />';
|
765 |
+
else echo '<input placeholder="Video ID" class="cs-element-video_id" type="text" value="' . sanitize_text_field($element->video_id) .'" />';
|
766 |
?>
|
767 |
</td>
|
768 |
<td class="cs-description">
|
772 |
<tr>
|
773 |
<td class="cs-name"><?php _e('Loop video', 'crelly-slider'); ?></td>
|
774 |
<td class="cs-content">
|
775 |
+
<?php
|
776 |
if($void) echo '<select class="cs-element-video_loop"><option value="1">' . __('Yes', 'crelly-slider') . '</option><option selected value="0">' . __('No', 'crelly-slider') . '</option></select>';
|
777 |
else {
|
778 |
if($element->video_loop == 0) {
|
791 |
<tr>
|
792 |
<td class="cs-name"><?php _e('Autoplay', 'crelly-slider'); ?></td>
|
793 |
<td class="cs-content">
|
794 |
+
<?php
|
795 |
if($void) echo '<select class="cs-element-video_autoplay"><option value="1">' . __('Yes', 'crelly-slider') . '</option><option selected value="0">' . __('No', 'crelly-slider') . '</option></select>';
|
796 |
else {
|
797 |
if($element->video_autoplay == 0) {
|
812 |
<td class="cs-content">
|
813 |
<?php
|
814 |
if($void) echo '<input class="cs-element-data_left" type="text" value="0" />';
|
815 |
+
else echo '<input class="cs-element-data_left" type="text" value="' . sanitize_text_field($element->data_left) .'" />';
|
816 |
?>
|
817 |
px
|
818 |
<br />
|
828 |
<td class="cs-content">
|
829 |
<?php
|
830 |
if($void) echo '<input class="cs-element-data_top" type="text" value="0" />';
|
831 |
+
else echo '<input class="cs-element-data_top" type="text" value="' . sanitize_text_field($element->data_top) .'" />';
|
832 |
?>
|
833 |
px
|
834 |
<br />
|
844 |
<td class="cs-content">
|
845 |
<?php
|
846 |
if($void) echo '<input class="cs-element-z_index" type="text" value="1" />';
|
847 |
+
else echo '<input class="cs-element-z_index" type="text" value="' . sanitize_text_field($element->z_index) .'" />';
|
848 |
?>
|
849 |
</td>
|
850 |
<td class="cs-description">
|
856 |
<td class="cs-content">
|
857 |
<?php
|
858 |
if($void) echo '<input class="cs-element-data_delay" type="text" value="0" />';
|
859 |
+
else echo '<input class="cs-element-data_delay" type="text" value="' . sanitize_text_field($element->data_delay) .'" />';
|
860 |
?>
|
861 |
ms
|
862 |
</td>
|
869 |
<td class="cs-content">
|
870 |
<?php
|
871 |
if($void) echo '<input class="cs-element-data_time" type="text" value="all" />';
|
872 |
+
else echo '<input class="cs-element-data_time" type="text" value="' . sanitize_text_field($element->data_time) .'" />';
|
873 |
?>
|
874 |
ms
|
875 |
</td>
|
876 |
<td class="cs-description">
|
877 |
<?php _e('How long will the element be displayed during the slide execution.', 'crelly-slider'); ?>
|
878 |
<br />
|
879 |
+
<br />
|
880 |
<?php _e('Write "all" to set the entire time.', 'crelly-slider'); ?>
|
881 |
<br />
|
882 |
<br />
|
938 |
<td class="cs-content">
|
939 |
<?php
|
940 |
if($void) echo '<input class="cs-element-data_easeIn" type="text" value="300" />';
|
941 |
+
else echo '<input class="cs-element-data_easeIn" type="text" value="' . sanitize_text_field($element->data_easeIn) .'" />';
|
942 |
?>
|
943 |
ms
|
944 |
</td>
|
951 |
<td class="cs-content">
|
952 |
<?php
|
953 |
if($void) echo '<input class="cs-element-data_easeOut" type="text" value="300" />';
|
954 |
+
else echo '<input class="cs-element-data_easeOut" type="text" value="' . sanitize_text_field($element->data_easeOut) .'" />';
|
955 |
?>
|
956 |
ms
|
957 |
</td>
|
976 |
<td class="cs-content">
|
977 |
<?php
|
978 |
if($void) echo '<input class="cs-element-custom_css_classes" type="text" />';
|
979 |
+
else echo '<input class="cs-element-custom_css_classes" type="text" value="' . sanitize_text_field($element->custom_css_classes) . '" />';
|
980 |
?>
|
981 |
</td>
|
982 |
<td class="cs-description">
|
985 |
</tr>
|
986 |
</tbody>
|
987 |
</table>
|
988 |
+
<?php } ?>
|
wordpress/frontend.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
|
3 |
// Code output
|
4 |
function crellySlider($alias) {
|
@@ -10,11 +11,11 @@ function getCrellySlider($alias) {
|
|
10 |
}
|
11 |
|
12 |
class CrellySliderFrontend {
|
13 |
-
|
14 |
public static function setNotAdminJs() {
|
15 |
add_action('wp_enqueue_scripts', 'CrellySliderFrontend::notAdminJs');
|
16 |
}
|
17 |
-
|
18 |
// Shortcode
|
19 |
public static function shortcode($atts) {
|
20 |
$a = shortcode_atts( array(
|
@@ -35,9 +36,9 @@ class CrellySliderFrontend {
|
|
35 |
|
36 |
public static function output($alias, $echo) {
|
37 |
global $wpdb;
|
38 |
-
|
39 |
-
$slider = $wpdb->get_row('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE alias =
|
40 |
-
|
41 |
if(! $slider) {
|
42 |
if($echo) {
|
43 |
_e('The slider hasn\'t been found', 'crelly-slider');
|
@@ -47,33 +48,33 @@ class CrellySliderFrontend {
|
|
47 |
return __('The slider hasn\'t been found', 'crelly-slider');
|
48 |
}
|
49 |
}
|
50 |
-
|
51 |
-
$slider_id = $slider->id;
|
52 |
-
$slides = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_slides WHERE slider_parent =
|
53 |
-
|
54 |
$output = '';
|
55 |
-
|
56 |
-
$output .= '<div style="display: none;" class="crellyslider-slider crellyslider-slider-' . $slider->layout . ' crellyslider-slider-' . $alias . '" id="crellyslider-' . $slider_id . '">' . "\n";
|
57 |
$output .= '<ul>' . "\n";
|
58 |
foreach($slides as $slide) {
|
59 |
-
$background_type_image = $slide->background_type_image == 'undefined' || $slide->background_type_image == 'none' ? 'none;' : 'url(\'' . $slide->background_type_image . '\');';
|
60 |
$output .= '<li' . "\n" .
|
61 |
'style="' . "\n" .
|
62 |
-
'background-color: ' . $slide->background_type_color . ';' . "\n" .
|
63 |
'background-image: ' . $background_type_image . "\n" .
|
64 |
-
'background-position: ' . $slide->background_propriety_position_x . ' ' . $slide->background_propriety_position_y . ';' . "\n" .
|
65 |
-
'background-repeat: ' . $slide->background_repeat . ';' . "\n" .
|
66 |
-
'background-size: ' . $slide->background_propriety_size . ';' . "\n" .
|
67 |
stripslashes($slide->custom_css) . "\n" .
|
68 |
'"' . "\n" .
|
69 |
-
|
70 |
-
'data-in="' . $slide->data_in . '"' . "\n" .
|
71 |
-
'data-ease-in="' . $slide->data_easeIn . '"' . "\n" .
|
72 |
-
'data-out="' . $slide->data_out . '"' . "\n" .
|
73 |
-
'data-ease-out="' . $slide->data_easeOut . '"' . "\n" .
|
74 |
-
'data-time="' . $slide->data_time . '"' . "\n" .
|
75 |
'>' . "\n";
|
76 |
-
|
77 |
if($slide->link != '') {
|
78 |
if($slide->link_new_tab) {
|
79 |
$output .= '<a class="cs-background-link" target="_blank" href="' . stripslashes($slide->link) . '"></a>';
|
@@ -82,86 +83,86 @@ class CrellySliderFrontend {
|
|
82 |
$output .= '<a class="cs-background-link" href="' . stripslashes($slide->link) . '"></a>';
|
83 |
}
|
84 |
}
|
85 |
-
|
86 |
-
$slide_parent = $slide->position;
|
87 |
-
$elements = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_elements WHERE slider_parent =
|
88 |
-
|
89 |
foreach($elements as $element) {
|
90 |
if($element->link != '') {
|
91 |
$target = $element->link_new_tab == 1 ? 'target="_blank"' : '';
|
92 |
-
|
93 |
$output .= '<a' . "\n" .
|
94 |
-
'data-delay="' . $element->data_delay . '"' . "\n" .
|
95 |
-
'data-ease-in="' . $element->data_easeIn . '"' . "\n" .
|
96 |
-
'data-ease-out="' . $element->data_easeOut . '"' . "\n" .
|
97 |
-
'data-in="' . $element->data_in . '"' . "\n" .
|
98 |
-
'data-out="' . $element->data_out . '"' . "\n" .
|
99 |
-
'data-ignore-ease-out="' . $element->data_ignoreEaseOut . '"' . "\n" .
|
100 |
-
'data-top="' . $element->data_top . '"' . "\n" .
|
101 |
-
'data-left="' . $element->data_left . '"' . "\n" .
|
102 |
-
'data-time="' . $element->data_time . '"' . "\n" .
|
103 |
'href="' . stripslashes($element->link) . '"' . "\n" .
|
104 |
$target . "\n" .
|
105 |
'style="' .
|
106 |
'z-index: ' . $element->z_index . ';' . "\n" .
|
107 |
'">' . "\n";
|
108 |
}
|
109 |
-
|
110 |
switch($element->type) {
|
111 |
case 'text':
|
112 |
$output .= '<div' . "\n" .
|
113 |
-
'class="' .
|
114 |
'style="';
|
115 |
if($element->link == '') {
|
116 |
-
$output .= 'z-index: ' . $element->z_index . ';' . "\n";
|
117 |
}
|
118 |
$output .= stripslashes($element->custom_css) . "\n" .
|
119 |
'"' . "\n";
|
120 |
if($element->link == '') {
|
121 |
-
$output .= 'data-delay="' . $element->data_delay . '"' . "\n" .
|
122 |
-
'data-ease-in="' . $element->data_easeIn . '"' . "\n" .
|
123 |
-
'data-ease-out="' . $element->data_easeOut . '"' . "\n" .
|
124 |
-
'data-in="' . $element->data_in . '"' . "\n" .
|
125 |
-
'data-out="' . $element->data_out . '"' . "\n" .
|
126 |
-
'data-ignore-ease-out="' . $element->data_ignoreEaseOut . '"' . "\n" .
|
127 |
-
'data-top="' . $element->data_top . '"' . "\n" .
|
128 |
-
'data-left="' . $element->data_left . '"' . "\n" .
|
129 |
-
'data-time="' . $element->data_time . '"' . "\n";
|
130 |
}
|
131 |
$output .= '>' . "\n" .
|
132 |
stripslashes($element->inner_html) . "\n" .
|
133 |
'</div>' . "\n";
|
134 |
break;
|
135 |
-
|
136 |
case 'image':
|
137 |
$output .= '<img' . "\n" .
|
138 |
-
'class="' .
|
139 |
-
'src="' . $element->image_src . '"' . "\n" .
|
140 |
-
'alt="' . $element->image_alt . '"' . "\n" .
|
141 |
'style="' . "\n";
|
142 |
if($element->link == '') {
|
143 |
-
$output .= 'z-index: ' . $element->z_index . ';' . "\n";
|
144 |
}
|
145 |
$output .= stripslashes($element->custom_css) . "\n" .
|
146 |
'"' . "\n";
|
147 |
if($element->link == '') {
|
148 |
-
$output .= 'data-delay="' . $element->data_delay . '"' . "\n" .
|
149 |
-
'data-ease-in="' . $element->data_easeIn . '"' . "\n" .
|
150 |
-
'data-ease-out="' . $element->data_easeOut . '"' . "\n" .
|
151 |
-
'data-in="' . $element->data_in . '"' . "\n" .
|
152 |
-
'data-out="' . $element->data_out . '"' . "\n" .
|
153 |
-
'data-ignore-ease-out="' . $element->data_ignoreEaseOut . '"' . "\n" .
|
154 |
-
'data-top="' . $element->data_top . '"' . "\n" .
|
155 |
-
'data-left="' . $element->data_left . '"' . "\n" .
|
156 |
-
'data-time="' . $element->data_time . '"' . "\n";
|
157 |
}
|
158 |
$output .= '/>' . "\n";
|
159 |
break;
|
160 |
-
|
161 |
case 'youtube_video':
|
162 |
$output .= '<iframe frameborder="0" type="text/html" width="560" height="315"' . "\n" .
|
163 |
-
'class="cs-yt-iframe ' .
|
164 |
-
'src="https://www.youtube.com/embed/' .
|
165 |
'data-autoplay="' . $element->video_autoplay . '"' . "\n" .
|
166 |
'data-loop="' . $element->video_loop . '"' . "\n" .
|
167 |
'style="' . "\n" .
|
@@ -179,40 +180,40 @@ class CrellySliderFrontend {
|
|
179 |
'data-time="' . $element->data_time . '"' . "\n" .
|
180 |
'></iframe>' . "\n";
|
181 |
break;
|
182 |
-
|
183 |
case 'vimeo_video':
|
184 |
$output .= '<iframe frameborder="0" width="560" height="315"' . "\n" .
|
185 |
-
'class="cs-vimeo-iframe ' .
|
186 |
-
'src="https://player.vimeo.com/video/' .
|
187 |
-
'data-autoplay="' . $element->video_autoplay . '"' . "\n" .
|
188 |
-
'data-loop="' . $element->video_loop . '"' . "\n" .
|
189 |
'style="' . "\n" .
|
190 |
-
'z-index: ' . $element->z_index . ';' . "\n" .
|
191 |
stripslashes($element->custom_css) . "\n" .
|
192 |
'"' . "\n" .
|
193 |
-
'data-delay="' . $element->data_delay . '"' . "\n" .
|
194 |
-
'data-ease-in="' . $element->data_easeIn . '"' . "\n" .
|
195 |
-
'data-ease-out="' . $element->data_easeOut . '"' . "\n" .
|
196 |
-
'data-in="' . $element->data_in . '"' . "\n" .
|
197 |
-
'data-out="' . $element->data_out . '"' . "\n" .
|
198 |
-
'data-ignore-ease-out="' . $element->data_ignoreEaseOut . '"' . "\n" .
|
199 |
-
'data-top="' . $element->data_top . '"' . "\n" .
|
200 |
-
'data-left="' . $element->data_left . '"' . "\n" .
|
201 |
-
'data-time="' . $element->data_time . '"' . "\n" .
|
202 |
'></iframe>' . "\n";
|
203 |
break;
|
204 |
}
|
205 |
-
|
206 |
if($element->link != '') {
|
207 |
$output .= '</a>' . "\n";
|
208 |
}
|
209 |
}
|
210 |
-
|
211 |
$output .= '</li>' . "\n";
|
212 |
}
|
213 |
$output .= '</ul>' . "\n";
|
214 |
$output .= '</div>' . "\n";
|
215 |
-
|
216 |
$output .= '<script type="text/javascript">' . "\n";
|
217 |
$output .= '(function($) {' . "\n";
|
218 |
$output .= '$(document).ready(function() {' . "\n";
|
@@ -232,7 +233,7 @@ class CrellySliderFrontend {
|
|
232 |
$output .= '});' . "\n";
|
233 |
$output .= '})(jQuery);' . "\n";
|
234 |
$output .= '</script>' . "\n";
|
235 |
-
|
236 |
if($echo) {
|
237 |
echo $output;
|
238 |
}
|
@@ -241,4 +242,4 @@ class CrellySliderFrontend {
|
|
241 |
}
|
242 |
}
|
243 |
|
244 |
-
}
|
1 |
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
|
4 |
// Code output
|
5 |
function crellySlider($alias) {
|
11 |
}
|
12 |
|
13 |
class CrellySliderFrontend {
|
14 |
+
|
15 |
public static function setNotAdminJs() {
|
16 |
add_action('wp_enqueue_scripts', 'CrellySliderFrontend::notAdminJs');
|
17 |
}
|
18 |
+
|
19 |
// Shortcode
|
20 |
public static function shortcode($atts) {
|
21 |
$a = shortcode_atts( array(
|
36 |
|
37 |
public static function output($alias, $echo) {
|
38 |
global $wpdb;
|
39 |
+
|
40 |
+
$slider = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE alias = %s', esc_sql($alias)));
|
41 |
+
|
42 |
if(! $slider) {
|
43 |
if($echo) {
|
44 |
_e('The slider hasn\'t been found', 'crelly-slider');
|
48 |
return __('The slider hasn\'t been found', 'crelly-slider');
|
49 |
}
|
50 |
}
|
51 |
+
|
52 |
+
$slider_id = esc_sql($slider->id);
|
53 |
+
$slides = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_slides WHERE slider_parent = %d ORDER BY position', $slider_id));
|
54 |
+
|
55 |
$output = '';
|
56 |
+
|
57 |
+
$output .= '<div style="display: none;" class="crellyslider-slider crellyslider-slider-' . esc_attr($slider->layout) . ' crellyslider-slider-' . esc_attr($alias) . '" id="crellyslider-' . esc_attr($slider_id) . '">' . "\n";
|
58 |
$output .= '<ul>' . "\n";
|
59 |
foreach($slides as $slide) {
|
60 |
+
$background_type_image = $slide->background_type_image == 'undefined' || $slide->background_type_image == 'none' ? 'none;' : 'url(\'' . stripslashes($slide->background_type_image) . '\');';
|
61 |
$output .= '<li' . "\n" .
|
62 |
'style="' . "\n" .
|
63 |
+
'background-color: ' . esc_attr($slide->background_type_color) . ';' . "\n" .
|
64 |
'background-image: ' . $background_type_image . "\n" .
|
65 |
+
'background-position: ' . esc_attr($slide->background_propriety_position_x) . ' ' . esc_attr($slide->background_propriety_position_y) . ';' . "\n" .
|
66 |
+
'background-repeat: ' . esc_attr($slide->background_repeat) . ';' . "\n" .
|
67 |
+
'background-size: ' . esc_attr($slide->background_propriety_size) . ';' . "\n" .
|
68 |
stripslashes($slide->custom_css) . "\n" .
|
69 |
'"' . "\n" .
|
70 |
+
|
71 |
+
'data-in="' . esc_attr($slide->data_in) . '"' . "\n" .
|
72 |
+
'data-ease-in="' . esc_attr($slide->data_easeIn) . '"' . "\n" .
|
73 |
+
'data-out="' . esc_attr($slide->data_out) . '"' . "\n" .
|
74 |
+
'data-ease-out="' . esc_attr($slide->data_easeOut) . '"' . "\n" .
|
75 |
+
'data-time="' . esc_attr($slide->data_time) . '"' . "\n" .
|
76 |
'>' . "\n";
|
77 |
+
|
78 |
if($slide->link != '') {
|
79 |
if($slide->link_new_tab) {
|
80 |
$output .= '<a class="cs-background-link" target="_blank" href="' . stripslashes($slide->link) . '"></a>';
|
83 |
$output .= '<a class="cs-background-link" href="' . stripslashes($slide->link) . '"></a>';
|
84 |
}
|
85 |
}
|
86 |
+
|
87 |
+
$slide_parent = esc_sql($slide->position);
|
88 |
+
$elements = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_elements WHERE slider_parent = %d AND slide_parent = %d', $slider_id, $slide_parent));
|
89 |
+
|
90 |
foreach($elements as $element) {
|
91 |
if($element->link != '') {
|
92 |
$target = $element->link_new_tab == 1 ? 'target="_blank"' : '';
|
93 |
+
|
94 |
$output .= '<a' . "\n" .
|
95 |
+
'data-delay="' . esc_attr($element->data_delay) . '"' . "\n" .
|
96 |
+
'data-ease-in="' . esc_attr($element->data_easeIn) . '"' . "\n" .
|
97 |
+
'data-ease-out="' . esc_attr($element->data_easeOut) . '"' . "\n" .
|
98 |
+
'data-in="' . esc_attr($element->data_in) . '"' . "\n" .
|
99 |
+
'data-out="' . esc_attr($element->data_out) . '"' . "\n" .
|
100 |
+
'data-ignore-ease-out="' . esc_attr($element->data_ignoreEaseOut) . '"' . "\n" .
|
101 |
+
'data-top="' . esc_attr($element->data_top) . '"' . "\n" .
|
102 |
+
'data-left="' . esc_attr($element->data_left) . '"' . "\n" .
|
103 |
+
'data-time="' . esc_attr($element->data_time) . '"' . "\n" .
|
104 |
'href="' . stripslashes($element->link) . '"' . "\n" .
|
105 |
$target . "\n" .
|
106 |
'style="' .
|
107 |
'z-index: ' . $element->z_index . ';' . "\n" .
|
108 |
'">' . "\n";
|
109 |
}
|
110 |
+
|
111 |
switch($element->type) {
|
112 |
case 'text':
|
113 |
$output .= '<div' . "\n" .
|
114 |
+
'class="' . esc_attr($element->custom_css_classes) . '"' . "\n" .
|
115 |
'style="';
|
116 |
if($element->link == '') {
|
117 |
+
$output .= 'z-index: ' . esc_attr($element->z_index) . ';' . "\n";
|
118 |
}
|
119 |
$output .= stripslashes($element->custom_css) . "\n" .
|
120 |
'"' . "\n";
|
121 |
if($element->link == '') {
|
122 |
+
$output .= 'data-delay="' . esc_attr($element->data_delay) . '"' . "\n" .
|
123 |
+
'data-ease-in="' . esc_attr($element->data_easeIn) . '"' . "\n" .
|
124 |
+
'data-ease-out="' . esc_attr($element->data_easeOut) . '"' . "\n" .
|
125 |
+
'data-in="' . esc_attr($element->data_in) . '"' . "\n" .
|
126 |
+
'data-out="' . esc_attr($element->data_out) . '"' . "\n" .
|
127 |
+
'data-ignore-ease-out="' . esc_attr($element->data_ignoreEaseOut) . '"' . "\n" .
|
128 |
+
'data-top="' . esc_attr($element->data_top) . '"' . "\n" .
|
129 |
+
'data-left="' . esc_attr($element->data_left) . '"' . "\n" .
|
130 |
+
'data-time="' . esc_attr($element->data_time) . '"' . "\n";
|
131 |
}
|
132 |
$output .= '>' . "\n" .
|
133 |
stripslashes($element->inner_html) . "\n" .
|
134 |
'</div>' . "\n";
|
135 |
break;
|
136 |
+
|
137 |
case 'image':
|
138 |
$output .= '<img' . "\n" .
|
139 |
+
'class="' . esc_attr($element->custom_css_classes) . '"' . "\n" .
|
140 |
+
'src="' . esc_url($element->image_src) . '"' . "\n" .
|
141 |
+
'alt="' . esc_attr($element->image_alt) . '"' . "\n" .
|
142 |
'style="' . "\n";
|
143 |
if($element->link == '') {
|
144 |
+
$output .= 'z-index: ' . esc_attr($element->z_index) . ';' . "\n";
|
145 |
}
|
146 |
$output .= stripslashes($element->custom_css) . "\n" .
|
147 |
'"' . "\n";
|
148 |
if($element->link == '') {
|
149 |
+
$output .= 'data-delay="' . esc_attr($element->data_delay) . '"' . "\n" .
|
150 |
+
'data-ease-in="' . esc_attr($element->data_easeIn) . '"' . "\n" .
|
151 |
+
'data-ease-out="' . esc_attr($element->data_easeOut) . '"' . "\n" .
|
152 |
+
'data-in="' . esc_attr($element->data_in) . '"' . "\n" .
|
153 |
+
'data-out="' . esc_attr($element->data_out) . '"' . "\n" .
|
154 |
+
'data-ignore-ease-out="' . esc_attr($element->data_ignoreEaseOut) . '"' . "\n" .
|
155 |
+
'data-top="' . esc_attr($element->data_top) . '"' . "\n" .
|
156 |
+
'data-left="' . esc_attr($element->data_left) . '"' . "\n" .
|
157 |
+
'data-time="' . esc_attr($element->data_time) . '"' . "\n";
|
158 |
}
|
159 |
$output .= '/>' . "\n";
|
160 |
break;
|
161 |
+
|
162 |
case 'youtube_video':
|
163 |
$output .= '<iframe frameborder="0" type="text/html" width="560" height="315"' . "\n" .
|
164 |
+
'class="cs-yt-iframe ' . esc_attr($element->custom_css_classes) . '"' . "\n" .
|
165 |
+
'src="' . esc_url('https://www.youtube.com/embed/' . $element->video_id . '?enablejsapi=1') . '"' . "\n" .
|
166 |
'data-autoplay="' . $element->video_autoplay . '"' . "\n" .
|
167 |
'data-loop="' . $element->video_loop . '"' . "\n" .
|
168 |
'style="' . "\n" .
|
180 |
'data-time="' . $element->data_time . '"' . "\n" .
|
181 |
'></iframe>' . "\n";
|
182 |
break;
|
183 |
+
|
184 |
case 'vimeo_video':
|
185 |
$output .= '<iframe frameborder="0" width="560" height="315"' . "\n" .
|
186 |
+
'class="cs-vimeo-iframe ' . esc_attr($element->custom_css_classes) . '"' . "\n" .
|
187 |
+
'src="' . esc_url('https://player.vimeo.com/video/' . $element->video_id . '?api=1') . '"' . "\n" .
|
188 |
+
'data-autoplay="' . esc_attr($element->video_autoplay) . '"' . "\n" .
|
189 |
+
'data-loop="' . esc_attr($element->video_loop) . '"' . "\n" .
|
190 |
'style="' . "\n" .
|
191 |
+
'z-index: ' . esc_attr($element->z_index) . ';' . "\n" .
|
192 |
stripslashes($element->custom_css) . "\n" .
|
193 |
'"' . "\n" .
|
194 |
+
'data-delay="' . esc_attr($element->data_delay) . '"' . "\n" .
|
195 |
+
'data-ease-in="' . esc_attr($element->data_easeIn) . '"' . "\n" .
|
196 |
+
'data-ease-out="' . esc_attr($element->data_easeOut) . '"' . "\n" .
|
197 |
+
'data-in="' . esc_attr($element->data_in) . '"' . "\n" .
|
198 |
+
'data-out="' . esc_attr($element->data_out) . '"' . "\n" .
|
199 |
+
'data-ignore-ease-out="' . esc_attr($element->data_ignoreEaseOut) . '"' . "\n" .
|
200 |
+
'data-top="' . esc_attr($element->data_top) . '"' . "\n" .
|
201 |
+
'data-left="' . esc_attr($element->data_left) . '"' . "\n" .
|
202 |
+
'data-time="' . esc_attr($element->data_time) . '"' . "\n" .
|
203 |
'></iframe>' . "\n";
|
204 |
break;
|
205 |
}
|
206 |
+
|
207 |
if($element->link != '') {
|
208 |
$output .= '</a>' . "\n";
|
209 |
}
|
210 |
}
|
211 |
+
|
212 |
$output .= '</li>' . "\n";
|
213 |
}
|
214 |
$output .= '</ul>' . "\n";
|
215 |
$output .= '</div>' . "\n";
|
216 |
+
|
217 |
$output .= '<script type="text/javascript">' . "\n";
|
218 |
$output .= '(function($) {' . "\n";
|
219 |
$output .= '$(document).ready(function() {' . "\n";
|
233 |
$output .= '});' . "\n";
|
234 |
$output .= '})(jQuery);' . "\n";
|
235 |
$output .= '</script>' . "\n";
|
236 |
+
|
237 |
if($echo) {
|
238 |
echo $output;
|
239 |
}
|
242 |
}
|
243 |
}
|
244 |
|
245 |
+
}
|
wordpress/home.php
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
<?php
|
|
|
|
|
2 |
global $wpdb;
|
3 |
$sliders = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders');
|
4 |
|
@@ -10,7 +12,7 @@ if(!$sliders) {
|
|
10 |
}
|
11 |
else {
|
12 |
?>
|
13 |
-
|
14 |
<table class="cs-sliders-list cs-table">
|
15 |
<thead>
|
16 |
<tr>
|
@@ -28,15 +30,15 @@ else {
|
|
28 |
<?php
|
29 |
foreach($sliders as $slider) {
|
30 |
echo '<tr>';
|
31 |
-
echo '<td class="cs-slider-id">' . $slider->id . '</td>';
|
32 |
-
echo '<td class="cs-slider-name"><a href="?page=crellyslider&view=edit&id=' . $slider->id . '">' . $slider->name . '</a></td>';
|
33 |
-
echo '<td class="cs-slider-alias">' . $slider->alias . '</td>';
|
34 |
-
echo '<td class="cs-slider-shortcode">[crellyslider alias="' . $slider->alias . '"]</td>';
|
35 |
echo '<td>
|
36 |
-
<a class="cs-edit-slider cs-button cs-button cs-is-success" href="?page=crellyslider&view=edit&id=' . $slider->id . '">' . __('Edit Slider', 'crelly-slider') . '</a>
|
37 |
-
<a class="cs-duplicate-slider cs-button cs-button cs-is-primary" href="javascript:void(0)" data-duplicate="' . $slider->id . '">' . __('Duplicate Slider', 'crelly-slider') . '</a>
|
38 |
-
<a class="cs-export-slider cs-button cs-button cs-is-warning" href="javascript:void(0)" data-export="' . $slider->id . '">' . __('Export Slider', 'crelly-slider') . '</a>
|
39 |
-
<a class="cs-delete-slider cs-button cs-button cs-is-danger" href="javascript:void(0)" data-delete="' . $slider->id . '">' . __('Delete Slider', 'crelly-slider') . '</a>
|
40 |
</td>';
|
41 |
echo '</tr>';
|
42 |
}
|
@@ -50,4 +52,4 @@ else {
|
|
50 |
<br />
|
51 |
<a class="cs-button cs-is-primary cs-add-slider" href="?page=crellyslider&view=add"><?php _e('Add Slider', 'crelly-slider'); ?></a>
|
52 |
<a class="cs-button cs-is-warning cs-import-slider" href="javascript:void(0)"><?php _e('Import Slider', 'crelly-slider'); ?></a>
|
53 |
-
<input id="cs-import-file" type="file" style="display: none;">
|
1 |
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
+
|
4 |
global $wpdb;
|
5 |
$sliders = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders');
|
6 |
|
12 |
}
|
13 |
else {
|
14 |
?>
|
15 |
+
|
16 |
<table class="cs-sliders-list cs-table">
|
17 |
<thead>
|
18 |
<tr>
|
30 |
<?php
|
31 |
foreach($sliders as $slider) {
|
32 |
echo '<tr>';
|
33 |
+
echo '<td class="cs-slider-id">' . esc_html($slider->id) . '</td>';
|
34 |
+
echo '<td class="cs-slider-name"><a href="?page=crellyslider&view=edit&id=' . esc_html($slider->id) . '">' . esc_html($slider->name) . '</a></td>';
|
35 |
+
echo '<td class="cs-slider-alias">' . esc_html($slider->alias) . '</td>';
|
36 |
+
echo '<td class="cs-slider-shortcode">[crellyslider alias="' . esc_html($slider->alias) . '"]</td>';
|
37 |
echo '<td>
|
38 |
+
<a class="cs-edit-slider cs-button cs-button cs-is-success" href="?page=crellyslider&view=edit&id=' . esc_html($slider->id) . '">' . __('Edit Slider', 'crelly-slider') . '</a>
|
39 |
+
<a class="cs-duplicate-slider cs-button cs-button cs-is-primary" href="javascript:void(0)" data-duplicate="' . esc_html($slider->id) . '">' . __('Duplicate Slider', 'crelly-slider') . '</a>
|
40 |
+
<a class="cs-export-slider cs-button cs-button cs-is-warning" href="javascript:void(0)" data-export="' . esc_html($slider->id) . '">' . __('Export Slider', 'crelly-slider') . '</a>
|
41 |
+
<a class="cs-delete-slider cs-button cs-button cs-is-danger" href="javascript:void(0)" data-delete="' . esc_html($slider->id) . '">' . __('Delete Slider', 'crelly-slider') . '</a>
|
42 |
</td>';
|
43 |
echo '</tr>';
|
44 |
}
|
52 |
<br />
|
53 |
<a class="cs-button cs-is-primary cs-add-slider" href="?page=crellyslider&view=add"><?php _e('Add Slider', 'crelly-slider'); ?></a>
|
54 |
<a class="cs-button cs-is-warning cs-import-slider" href="javascript:void(0)"><?php _e('Import Slider', 'crelly-slider'); ?></a>
|
55 |
+
<input id="cs-import-file" type="file" style="display: none;">
|
wordpress/slider.php
CHANGED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
<div id="cs-slider-settings">
|
2 |
<?php
|
3 |
// Contains the key, the display name and a boolean: true if is the default option
|
@@ -12,42 +14,42 @@
|
|
12 |
),
|
13 |
);
|
14 |
?>
|
15 |
-
|
16 |
<?php if($edit) { ?>
|
17 |
-
<input type="text" id="cs-slider-name" placeholder="<?php _e('Slider Name', 'crelly-slider'); ?>" value="<?php echo $slider->name; ?>" />
|
18 |
<?php
|
19 |
}
|
20 |
else { ?>
|
21 |
<input type="text" id="cs-slider-name" placeholder="<?php _e('Slider Name', 'crelly-slider'); ?>" />
|
22 |
<?php } ?>
|
23 |
-
|
24 |
<br />
|
25 |
<br />
|
26 |
-
|
27 |
<strong><?php _e('Alias:', 'crelly-slider'); ?></strong>
|
28 |
<?php if($edit) { ?>
|
29 |
-
<span id="cs-slider-alias"><?php echo $slider->alias; ?></span>
|
30 |
<?php
|
31 |
}
|
32 |
else { ?>
|
33 |
<span id="cs-slider-alias"></span>
|
34 |
<?php } ?>
|
35 |
-
|
36 |
<br />
|
37 |
<br />
|
38 |
-
|
39 |
-
<strong><?php _e('Shortcode:', 'crelly-slider'); ?></strong>
|
40 |
<?php if($edit) { ?>
|
41 |
-
<span id="cs-slider-shortcode">[crellyslider alias="<?php echo $slider->alias; ?>"]</span>
|
42 |
<?php
|
43 |
}
|
44 |
else { ?>
|
45 |
<span id="cs-slider-shortcode"></span>
|
46 |
<?php } ?>
|
47 |
-
|
48 |
<br />
|
49 |
<br />
|
50 |
-
|
51 |
<table class="cs-slider-settings-list cs-table">
|
52 |
<thead>
|
53 |
<tr class="odd-row">
|
@@ -103,7 +105,7 @@
|
|
103 |
<td class="cs-content">
|
104 |
<?php
|
105 |
if(!$edit) echo '<input id="cs-slider-startWidth" type="text" value="1140" />';
|
106 |
-
else echo '<input id="cs-slider-startWidth" type="text" value="' . $slider->startWidth .'" />';
|
107 |
?>
|
108 |
px
|
109 |
</td>
|
@@ -116,7 +118,7 @@
|
|
116 |
<td class="cs-content">
|
117 |
<?php
|
118 |
if(!$edit) echo '<input id="cs-slider-startHeight" type="text" value="500" />';
|
119 |
-
else echo '<input id="cs-slider-startHeight" type="text" value="' . $slider->startHeight .'" />';
|
120 |
?>
|
121 |
px
|
122 |
</td>
|
@@ -262,4 +264,4 @@ beforeResume : function() {},</textarea>
|
|
262 |
</tr>
|
263 |
</tbody>
|
264 |
</table>
|
265 |
-
</div>
|
1 |
+
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
|
2 |
+
|
3 |
<div id="cs-slider-settings">
|
4 |
<?php
|
5 |
// Contains the key, the display name and a boolean: true if is the default option
|
14 |
),
|
15 |
);
|
16 |
?>
|
17 |
+
|
18 |
<?php if($edit) { ?>
|
19 |
+
<input type="text" id="cs-slider-name" placeholder="<?php _e('Slider Name', 'crelly-slider'); ?>" value="<?php echo sanitize_text_field($slider->name); ?>" />
|
20 |
<?php
|
21 |
}
|
22 |
else { ?>
|
23 |
<input type="text" id="cs-slider-name" placeholder="<?php _e('Slider Name', 'crelly-slider'); ?>" />
|
24 |
<?php } ?>
|
25 |
+
|
26 |
<br />
|
27 |
<br />
|
28 |
+
|
29 |
<strong><?php _e('Alias:', 'crelly-slider'); ?></strong>
|
30 |
<?php if($edit) { ?>
|
31 |
+
<span id="cs-slider-alias"><?php echo esc_html($slider->alias); ?></span>
|
32 |
<?php
|
33 |
}
|
34 |
else { ?>
|
35 |
<span id="cs-slider-alias"></span>
|
36 |
<?php } ?>
|
37 |
+
|
38 |
<br />
|
39 |
<br />
|
40 |
+
|
41 |
+
<strong><?php _e('Shortcode:', 'crelly-slider'); ?></strong>
|
42 |
<?php if($edit) { ?>
|
43 |
+
<span id="cs-slider-shortcode">[crellyslider alias="<?php echo esc_html($slider->alias); ?>"]</span>
|
44 |
<?php
|
45 |
}
|
46 |
else { ?>
|
47 |
<span id="cs-slider-shortcode"></span>
|
48 |
<?php } ?>
|
49 |
+
|
50 |
<br />
|
51 |
<br />
|
52 |
+
|
53 |
<table class="cs-slider-settings-list cs-table">
|
54 |
<thead>
|
55 |
<tr class="odd-row">
|
105 |
<td class="cs-content">
|
106 |
<?php
|
107 |
if(!$edit) echo '<input id="cs-slider-startWidth" type="text" value="1140" />';
|
108 |
+
else echo '<input id="cs-slider-startWidth" type="text" value="' . sanitize_text_field($slider->startWidth) .'" />';
|
109 |
?>
|
110 |
px
|
111 |
</td>
|
118 |
<td class="cs-content">
|
119 |
<?php
|
120 |
if(!$edit) echo '<input id="cs-slider-startHeight" type="text" value="500" />';
|
121 |
+
else echo '<input id="cs-slider-startHeight" type="text" value="' . sanitize_text_field($slider->startHeight) .'" />';
|
122 |
?>
|
123 |
px
|
124 |
</td>
|
264 |
</tr>
|
265 |
</tbody>
|
266 |
</table>
|
267 |
+
</div>
|
wordpress/slides.php
CHANGED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
<div id="cs-slides">
|
2 |
<div class="cs-slide-tabs cs-tabs cs-tabs-border">
|
3 |
<ul class="cs-sortable">
|
@@ -12,11 +14,11 @@
|
|
12 |
else {
|
13 |
echo '<li class="ui-state-default">';
|
14 |
}
|
15 |
-
echo '<a><span class="cs-slide-name-text">' . __('Slide', 'crelly-slider') . ' <span class="cs-slide-index">' . (($slide->position) + 1) . '</span></span></a>';
|
16 |
echo '<span title="' . __('Duplicate slide', 'crelly-slider') . '" class="cs-duplicate"></span>';
|
17 |
echo '<span title="' . __('Delete slide', 'crelly-slider') . '" class="cs-close"></span>';
|
18 |
echo '</li>';
|
19 |
-
|
20 |
$j++;
|
21 |
}
|
22 |
}
|
@@ -24,7 +26,7 @@
|
|
24 |
<li class="ui-state-default ui-state-disabled"><a class="cs-add-new"><?php _e('Add Slide', 'crelly-slider'); ?></a></li>
|
25 |
<div style="clear: both;"></div>
|
26 |
</ul>
|
27 |
-
|
28 |
<div class="cs-slides-list">
|
29 |
<?php
|
30 |
if($edit) {
|
@@ -35,9 +37,9 @@
|
|
35 |
}
|
36 |
}
|
37 |
?>
|
38 |
-
</div>
|
39 |
<div class="cs-void-slide"><?php crellyslider_printSlide($slider, false, $edit); ?></div>
|
40 |
-
|
41 |
<div style="clear: both"></div>
|
42 |
</div>
|
43 |
</div>
|
@@ -45,8 +47,8 @@
|
|
45 |
<?php
|
46 |
// Prints a slide. If the ID is not false, prints the values from MYSQL database, else prints a slide with default values. It has to receive the $edit variable because the elements.php file has to see it
|
47 |
function crellyslider_printSlide($slider, $slide, $edit) {
|
48 |
-
$void = !$slide ? true : false;
|
49 |
-
|
50 |
$animations = array(
|
51 |
'none' => array(__('None', 'crelly-slider'), false),
|
52 |
'fade' => array(__('Fade', 'crelly-slider'), true),
|
@@ -58,14 +60,14 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
58 |
'slideDown' => array(__('Slide down', 'crelly-slider'), false),
|
59 |
);
|
60 |
?>
|
61 |
-
|
62 |
<table class="cs-slide-settings-list cs-table">
|
63 |
<thead>
|
64 |
<tr class="odd-row">
|
65 |
<th colspan="3"><?php _e('Slide Options', 'crelly-slider'); ?></th>
|
66 |
</tr>
|
67 |
</thead>
|
68 |
-
|
69 |
<tbody>
|
70 |
<tr class="cs-table-header">
|
71 |
<td><?php _e('Option', 'crelly-slider'); ?></td>
|
@@ -82,10 +84,10 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
82 |
<input type="radio" value="0" name="cs-slide-background_type_image" checked /> <?php _e('None', 'crelly-slider'); ?>
|
83 |
<input type="radio" value="1" name="cs-slide-background_type_image" /> <input class="cs-slide-background_type_image-upload-button cs-button cs-is-default" type="button" value="<?php _e('Select image', 'crelly-slider'); ?>" />
|
84 |
</form>
|
85 |
-
|
86 |
<br />
|
87 |
<br />
|
88 |
-
|
89 |
<?php _e('Background color:', 'crelly-slider'); ?>
|
90 |
<form>
|
91 |
<br />
|
@@ -96,28 +98,28 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
96 |
<br />
|
97 |
<input type="radio" value="2" name="cs-slide-background_type_color" placeholder="<?php _e('Enter value', 'crelly-slider'); ?>" /> <input class="cs-slide-background_type_color-manual" type="text" />
|
98 |
</form>
|
99 |
-
|
100 |
<br />
|
101 |
<br />
|
102 |
-
|
103 |
<?php _e('Background position-x:', 'crelly-slider'); ?>
|
104 |
<input type="text" value="center" class="cs-slide-background_propriety_position_x" />
|
105 |
<br />
|
106 |
<?php _e('Background position-y:', 'crelly-slider'); ?>
|
107 |
<input type="text" value="center" class="cs-slide-background_propriety_position_y" />
|
108 |
-
|
109 |
<br />
|
110 |
<br />
|
111 |
-
|
112 |
<?php _e('Background repeat:', 'crelly-slider'); ?>
|
113 |
<form>
|
114 |
<input type="radio" value="1" name="cs-slide-background_repeat" /> <?php _e('Repeat', 'crelly-slider'); ?>
|
115 |
<input type="radio" value="0" name="cs-slide-background_repeat" checked /> <?php _e('No repeat', 'crelly-slider'); ?>
|
116 |
</form>
|
117 |
-
|
118 |
<br />
|
119 |
<br />
|
120 |
-
|
121 |
<?php _e('Background size:', 'crelly-slider'); ?>
|
122 |
<input type="text" value="cover" class="cs-slide-background_propriety_size" />
|
123 |
<?php else: ?>
|
@@ -130,48 +132,48 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
130 |
<input type="radio" value="0" name="cs-slide-background_type_image" /> <?php _e('None', 'crelly-slider'); ?>
|
131 |
<input type="radio" value="1" name="cs-slide-background_type_image" checked /> <input class="cs-slide-background_type_image-upload-button cs-button cs-is-default" type="button" value="<?php _e('Select image', 'crelly-slider'); ?>" />
|
132 |
<?php endif; ?>
|
133 |
-
</form>
|
134 |
-
|
135 |
<br />
|
136 |
<br />
|
137 |
-
|
138 |
<?php _e('Background color:', 'crelly-slider'); ?>
|
139 |
-
<form>
|
|
|
140 |
<br />
|
141 |
-
<br />
|
142 |
<?php if($slide->background_type_color == 'transparent'): ?>
|
143 |
<input type="radio" value="0" name="cs-slide-background_type_color" checked /> <?php _e('Transparent', 'crelly-slider'); ?>
|
144 |
<?php else: ?>
|
145 |
<input type="radio" value="0" name="cs-slide-background_type_color" /> <?php _e('Transparent', 'crelly-slider'); ?>
|
146 |
-
<?php endif; ?>
|
147 |
-
|
148 |
<br />
|
149 |
<?php if($slide->background_type_color_input == '1' || ($slide->background_type_color_input == '-1' && $slide->background_type_color != 'transparent')): ?>
|
150 |
-
<input type="radio" value="1" name="cs-slide-background_type_color" checked /> <input class="cs-slide-background_type_color-picker-input cs-button cs-is-default" type="text" value="<?php echo $slide->background_type_color; ?>" />
|
151 |
<?php else: ?>
|
152 |
<input type="radio" value="1" name="cs-slide-background_type_color" /> <input class="cs-slide-background_type_color-picker-input cs-button cs-is-default" type="text" value="rgb(255, 255, 255)" />
|
153 |
-
<?php endif; ?>
|
154 |
-
|
155 |
<br />
|
156 |
<?php if($slide->background_type_color_input == '2'): ?>
|
157 |
-
<input type="radio" value="2" name="cs-slide-background_type_color" checked /> <input class="cs-slide-background_type_color-manual" type="text" value="<?php echo $slide->background_type_color; ?>" />
|
158 |
<?php else: ?>
|
159 |
<input type="radio" value="2" name="cs-slide-background_type_color" /> <input class="cs-slide-background_type_color-manual" type="text" placeholder="<?php _e('Enter value', 'crelly-slider'); ?>" />
|
160 |
-
<?php endif; ?>
|
161 |
</form>
|
162 |
-
|
163 |
<br />
|
164 |
<br />
|
165 |
-
|
166 |
<?php _e('Background position-x:', 'crelly-slider'); ?>
|
167 |
-
<input type="text" value="<?php echo $slide->background_propriety_position_x; ?>" class="cs-slide-background_propriety_position_x" />
|
168 |
<br />
|
169 |
<?php _e('Background position-y:', 'crelly-slider'); ?>
|
170 |
-
<input type="text" value="<?php echo $slide->background_propriety_position_y; ?>" class="cs-slide-background_propriety_position_y" />
|
171 |
-
|
172 |
<br />
|
173 |
<br />
|
174 |
-
|
175 |
<?php _e('Background repeat:', 'crelly-slider'); ?>
|
176 |
<form>
|
177 |
<?php if($slide->background_repeat == 'repeat'): ?>
|
@@ -182,12 +184,12 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
182 |
<input type="radio" value="0" name="cs-slide-background_repeat" checked /> <?php _e('No repeat', 'crelly-slider'); ?>
|
183 |
<?php endif; ?>
|
184 |
</form>
|
185 |
-
|
186 |
<br />
|
187 |
<br />
|
188 |
-
|
189 |
<?php _e('Background size:', 'crelly-slider'); ?>
|
190 |
-
<input type="text" value="<?php echo $slide->background_propriety_size; ?>" class="cs-slide-background_propriety_size" />
|
191 |
<?php endif; ?>
|
192 |
</td>
|
193 |
<td class="cs-description">
|
@@ -245,7 +247,7 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
245 |
<td class="cs-content">
|
246 |
<?php
|
247 |
if($void) echo '<input class="cs-slide-data_time" type="text" value="3000" />';
|
248 |
-
else echo '<input class="cs-slide-data_time" type="text" value="' . $slide->data_time .'" />';
|
249 |
?>
|
250 |
ms
|
251 |
</td>
|
@@ -258,7 +260,7 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
258 |
<td class="cs-content">
|
259 |
<?php
|
260 |
if($void) echo '<input class="cs-slide-data_easeIn" type="text" value="300" />';
|
261 |
-
else echo '<input class="cs-slide-data_easeIn" type="text" value="' . $slide->data_easeIn .'" />';
|
262 |
?>
|
263 |
ms
|
264 |
</td>
|
@@ -271,7 +273,7 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
271 |
<td class="cs-content">
|
272 |
<?php
|
273 |
if($void) echo '<input class="cs-slide-data_easeOut" type="text" value="300" />';
|
274 |
-
else echo '<input class="cs-slide-data_easeOut" type="text" value="' . $slide->data_easeOut .'" />';
|
275 |
?>
|
276 |
ms
|
277 |
</td>
|
@@ -317,23 +319,28 @@ function crellyslider_printSlide($slider, $slide, $edit) {
|
|
317 |
</tr>
|
318 |
</tbody>
|
319 |
</table>
|
320 |
-
|
321 |
<br />
|
322 |
<br />
|
323 |
-
|
324 |
<?php
|
325 |
-
// If the slide is not void, select
|
326 |
if(!$void) {
|
327 |
global $wpdb;
|
328 |
-
|
329 |
-
$
|
330 |
-
|
|
|
|
|
|
|
|
|
|
|
331 |
}
|
332 |
else {
|
333 |
$slide_id = NULL;
|
334 |
$elements = NULL;
|
335 |
}
|
336 |
-
|
337 |
crellyslider_printElements($edit, $slider, $slide, $elements);
|
338 |
}
|
339 |
-
?>
|
1 |
+
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
|
2 |
+
|
3 |
<div id="cs-slides">
|
4 |
<div class="cs-slide-tabs cs-tabs cs-tabs-border">
|
5 |
<ul class="cs-sortable">
|
14 |
else {
|
15 |
echo '<li class="ui-state-default">';
|
16 |
}
|
17 |
+
echo '<a><span class="cs-slide-name-text">' . __('Slide', 'crelly-slider') . ' <span class="cs-slide-index">' . esc_html(($slide->position) + 1) . '</span></span></a>';
|
18 |
echo '<span title="' . __('Duplicate slide', 'crelly-slider') . '" class="cs-duplicate"></span>';
|
19 |
echo '<span title="' . __('Delete slide', 'crelly-slider') . '" class="cs-close"></span>';
|
20 |
echo '</li>';
|
21 |
+
|
22 |
$j++;
|
23 |
}
|
24 |
}
|
26 |
<li class="ui-state-default ui-state-disabled"><a class="cs-add-new"><?php _e('Add Slide', 'crelly-slider'); ?></a></li>
|
27 |
<div style="clear: both;"></div>
|
28 |
</ul>
|
29 |
+
|
30 |
<div class="cs-slides-list">
|
31 |
<?php
|
32 |
if($edit) {
|
37 |
}
|
38 |
}
|
39 |
?>
|
40 |
+
</div>
|
41 |
<div class="cs-void-slide"><?php crellyslider_printSlide($slider, false, $edit); ?></div>
|
42 |
+
|
43 |
<div style="clear: both"></div>
|
44 |
</div>
|
45 |
</div>
|
47 |
<?php
|
48 |
// Prints a slide. If the ID is not false, prints the values from MYSQL database, else prints a slide with default values. It has to receive the $edit variable because the elements.php file has to see it
|
49 |
function crellyslider_printSlide($slider, $slide, $edit) {
|
50 |
+
$void = !$slide ? true : false;
|
51 |
+
|
52 |
$animations = array(
|
53 |
'none' => array(__('None', 'crelly-slider'), false),
|
54 |
'fade' => array(__('Fade', 'crelly-slider'), true),
|
60 |
'slideDown' => array(__('Slide down', 'crelly-slider'), false),
|
61 |
);
|
62 |
?>
|
63 |
+
|
64 |
<table class="cs-slide-settings-list cs-table">
|
65 |
<thead>
|
66 |
<tr class="odd-row">
|
67 |
<th colspan="3"><?php _e('Slide Options', 'crelly-slider'); ?></th>
|
68 |
</tr>
|
69 |
</thead>
|
70 |
+
|
71 |
<tbody>
|
72 |
<tr class="cs-table-header">
|
73 |
<td><?php _e('Option', 'crelly-slider'); ?></td>
|
84 |
<input type="radio" value="0" name="cs-slide-background_type_image" checked /> <?php _e('None', 'crelly-slider'); ?>
|
85 |
<input type="radio" value="1" name="cs-slide-background_type_image" /> <input class="cs-slide-background_type_image-upload-button cs-button cs-is-default" type="button" value="<?php _e('Select image', 'crelly-slider'); ?>" />
|
86 |
</form>
|
87 |
+
|
88 |
<br />
|
89 |
<br />
|
90 |
+
|
91 |
<?php _e('Background color:', 'crelly-slider'); ?>
|
92 |
<form>
|
93 |
<br />
|
98 |
<br />
|
99 |
<input type="radio" value="2" name="cs-slide-background_type_color" placeholder="<?php _e('Enter value', 'crelly-slider'); ?>" /> <input class="cs-slide-background_type_color-manual" type="text" />
|
100 |
</form>
|
101 |
+
|
102 |
<br />
|
103 |
<br />
|
104 |
+
|
105 |
<?php _e('Background position-x:', 'crelly-slider'); ?>
|
106 |
<input type="text" value="center" class="cs-slide-background_propriety_position_x" />
|
107 |
<br />
|
108 |
<?php _e('Background position-y:', 'crelly-slider'); ?>
|
109 |
<input type="text" value="center" class="cs-slide-background_propriety_position_y" />
|
110 |
+
|
111 |
<br />
|
112 |
<br />
|
113 |
+
|
114 |
<?php _e('Background repeat:', 'crelly-slider'); ?>
|
115 |
<form>
|
116 |
<input type="radio" value="1" name="cs-slide-background_repeat" /> <?php _e('Repeat', 'crelly-slider'); ?>
|
117 |
<input type="radio" value="0" name="cs-slide-background_repeat" checked /> <?php _e('No repeat', 'crelly-slider'); ?>
|
118 |
</form>
|
119 |
+
|
120 |
<br />
|
121 |
<br />
|
122 |
+
|
123 |
<?php _e('Background size:', 'crelly-slider'); ?>
|
124 |
<input type="text" value="cover" class="cs-slide-background_propriety_size" />
|
125 |
<?php else: ?>
|
132 |
<input type="radio" value="0" name="cs-slide-background_type_image" /> <?php _e('None', 'crelly-slider'); ?>
|
133 |
<input type="radio" value="1" name="cs-slide-background_type_image" checked /> <input class="cs-slide-background_type_image-upload-button cs-button cs-is-default" type="button" value="<?php _e('Select image', 'crelly-slider'); ?>" />
|
134 |
<?php endif; ?>
|
135 |
+
</form>
|
136 |
+
|
137 |
<br />
|
138 |
<br />
|
139 |
+
|
140 |
<?php _e('Background color:', 'crelly-slider'); ?>
|
141 |
+
<form>
|
142 |
+
<br />
|
143 |
<br />
|
|
|
144 |
<?php if($slide->background_type_color == 'transparent'): ?>
|
145 |
<input type="radio" value="0" name="cs-slide-background_type_color" checked /> <?php _e('Transparent', 'crelly-slider'); ?>
|
146 |
<?php else: ?>
|
147 |
<input type="radio" value="0" name="cs-slide-background_type_color" /> <?php _e('Transparent', 'crelly-slider'); ?>
|
148 |
+
<?php endif; ?>
|
149 |
+
|
150 |
<br />
|
151 |
<?php if($slide->background_type_color_input == '1' || ($slide->background_type_color_input == '-1' && $slide->background_type_color != 'transparent')): ?>
|
152 |
+
<input type="radio" value="1" name="cs-slide-background_type_color" checked /> <input class="cs-slide-background_type_color-picker-input cs-button cs-is-default" type="text" value="<?php echo sanitize_text_field($slide->background_type_color); ?>" />
|
153 |
<?php else: ?>
|
154 |
<input type="radio" value="1" name="cs-slide-background_type_color" /> <input class="cs-slide-background_type_color-picker-input cs-button cs-is-default" type="text" value="rgb(255, 255, 255)" />
|
155 |
+
<?php endif; ?>
|
156 |
+
|
157 |
<br />
|
158 |
<?php if($slide->background_type_color_input == '2'): ?>
|
159 |
+
<input type="radio" value="2" name="cs-slide-background_type_color" checked /> <input class="cs-slide-background_type_color-manual" type="text" value="<?php echo sanitize_text_field($slide->background_type_color); ?>" />
|
160 |
<?php else: ?>
|
161 |
<input type="radio" value="2" name="cs-slide-background_type_color" /> <input class="cs-slide-background_type_color-manual" type="text" placeholder="<?php _e('Enter value', 'crelly-slider'); ?>" />
|
162 |
+
<?php endif; ?>
|
163 |
</form>
|
164 |
+
|
165 |
<br />
|
166 |
<br />
|
167 |
+
|
168 |
<?php _e('Background position-x:', 'crelly-slider'); ?>
|
169 |
+
<input type="text" value="<?php echo sanitize_text_field($slide->background_propriety_position_x); ?>" class="cs-slide-background_propriety_position_x" />
|
170 |
<br />
|
171 |
<?php _e('Background position-y:', 'crelly-slider'); ?>
|
172 |
+
<input type="text" value="<?php echo sanitize_text_field($slide->background_propriety_position_y); ?>" class="cs-slide-background_propriety_position_y" />
|
173 |
+
|
174 |
<br />
|
175 |
<br />
|
176 |
+
|
177 |
<?php _e('Background repeat:', 'crelly-slider'); ?>
|
178 |
<form>
|
179 |
<?php if($slide->background_repeat == 'repeat'): ?>
|
184 |
<input type="radio" value="0" name="cs-slide-background_repeat" checked /> <?php _e('No repeat', 'crelly-slider'); ?>
|
185 |
<?php endif; ?>
|
186 |
</form>
|
187 |
+
|
188 |
<br />
|
189 |
<br />
|
190 |
+
|
191 |
<?php _e('Background size:', 'crelly-slider'); ?>
|
192 |
+
<input type="text" value="<?php echo sanitize_text_field($slide->background_propriety_size); ?>" class="cs-slide-background_propriety_size" />
|
193 |
<?php endif; ?>
|
194 |
</td>
|
195 |
<td class="cs-description">
|
247 |
<td class="cs-content">
|
248 |
<?php
|
249 |
if($void) echo '<input class="cs-slide-data_time" type="text" value="3000" />';
|
250 |
+
else echo '<input class="cs-slide-data_time" type="text" value="' . sanitize_text_field($slide->data_time) .'" />';
|
251 |
?>
|
252 |
ms
|
253 |
</td>
|
260 |
<td class="cs-content">
|
261 |
<?php
|
262 |
if($void) echo '<input class="cs-slide-data_easeIn" type="text" value="300" />';
|
263 |
+
else echo '<input class="cs-slide-data_easeIn" type="text" value="' . sanitize_text_field($slide->data_easeIn) .'" />';
|
264 |
?>
|
265 |
ms
|
266 |
</td>
|
273 |
<td class="cs-content">
|
274 |
<?php
|
275 |
if($void) echo '<input class="cs-slide-data_easeOut" type="text" value="300" />';
|
276 |
+
else echo '<input class="cs-slide-data_easeOut" type="text" value="' . sanitize_text_field($slide->data_easeOut) .'" />';
|
277 |
?>
|
278 |
ms
|
279 |
</td>
|
319 |
</tr>
|
320 |
</tbody>
|
321 |
</table>
|
322 |
+
|
323 |
<br />
|
324 |
<br />
|
325 |
+
|
326 |
<?php
|
327 |
+
// If the slide is not void, select its elements
|
328 |
if(!$void) {
|
329 |
global $wpdb;
|
330 |
+
|
331 |
+
$id = isset($_GET['id']) ? esc_sql($_GET['id']) : NULL;
|
332 |
+
if($id == NULL || ($id != NULL && !CrellySliderCommon::sliderExists($id))) {
|
333 |
+
die();
|
334 |
+
}
|
335 |
+
|
336 |
+
$slide_parent = esc_sql($slide->position);
|
337 |
+
$elements = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_elements WHERE slider_parent = %d AND slide_parent = %d', $id, $slide_parent));
|
338 |
}
|
339 |
else {
|
340 |
$slide_id = NULL;
|
341 |
$elements = NULL;
|
342 |
}
|
343 |
+
|
344 |
crellyslider_printElements($edit, $slider, $slide, $elements);
|
345 |
}
|
346 |
+
?>
|
wordpress/tables.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
|
3 |
class CrellySliderTables {
|
4 |
|
@@ -21,7 +22,7 @@ class CrellySliderTables {
|
|
21 |
public static function setSlidersTable() {
|
22 |
global $wpdb;
|
23 |
$table_name = $wpdb->prefix . 'crellyslider_sliders';
|
24 |
-
|
25 |
$sql = "CREATE TABLE $table_name (
|
26 |
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
27 |
name TEXT CHARACTER SET utf8,
|
@@ -39,7 +40,7 @@ class CrellySliderTables {
|
|
39 |
callbacks TEXT CHARACTER SET utf8,
|
40 |
UNIQUE KEY id (id)
|
41 |
);";
|
42 |
-
|
43 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
44 |
dbDelta($sql);
|
45 |
}
|
@@ -48,7 +49,7 @@ class CrellySliderTables {
|
|
48 |
public static function setSlidesTable() {
|
49 |
global $wpdb;
|
50 |
$table_name = $wpdb->prefix . 'crellyslider_slides';
|
51 |
-
|
52 |
$sql = "CREATE TABLE $table_name (
|
53 |
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
54 |
slider_parent mediumint(9),
|
@@ -65,12 +66,12 @@ class CrellySliderTables {
|
|
65 |
data_time INT,
|
66 |
data_easeIn INT,
|
67 |
data_easeOut INT,
|
68 |
-
link TEXT CHARACTER SET utf8
|
69 |
link_new_tab INT DEFAULT 0,
|
70 |
custom_css TEXT CHARACTER SET utf8,
|
71 |
UNIQUE KEY id (id)
|
72 |
);";
|
73 |
-
|
74 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
75 |
dbDelta($sql);
|
76 |
}
|
@@ -78,7 +79,7 @@ class CrellySliderTables {
|
|
78 |
public static function setElementsTable() {
|
79 |
global $wpdb;
|
80 |
$table_name = $wpdb->prefix . 'crellyslider_elements';
|
81 |
-
|
82 |
$sql = "CREATE TABLE $table_name (
|
83 |
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
84 |
slider_parent mediumint(9),
|
@@ -96,18 +97,18 @@ class CrellySliderTables {
|
|
96 |
data_in TEXT CHARACTER SET utf8,
|
97 |
data_out TEXT CHARACTER SET utf8,
|
98 |
custom_css TEXT CHARACTER SET utf8,
|
99 |
-
custom_css_classes TEXT CHARACTER SET utf8
|
100 |
inner_html TEXT CHARACTER SET utf8,
|
101 |
image_src TEXT CHARACTER SET utf8,
|
102 |
image_alt TEXT CHARACTER SET utf8,
|
103 |
-
link TEXT CHARACTER SET utf8
|
104 |
link_new_tab INT DEFAULT 0,
|
105 |
video_id TEXT CHARACTER SET utf8,
|
106 |
video_loop INT,
|
107 |
video_autoplay INT,
|
108 |
UNIQUE KEY id (id)
|
109 |
);";
|
110 |
-
|
111 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
112 |
dbDelta($sql);
|
113 |
}
|
@@ -115,7 +116,7 @@ class CrellySliderTables {
|
|
115 |
// Drops all the slider tables
|
116 |
public static function dropTables() {
|
117 |
global $wpdb;
|
118 |
-
|
119 |
self::dropTable($wpdb->prefix . 'crellyslider_sliders');
|
120 |
self::dropTable($wpdb->prefix . 'crellyslider_slides');
|
121 |
self::dropTable($wpdb->prefix . 'crellyslider_elements');
|
@@ -123,11 +124,11 @@ class CrellySliderTables {
|
|
123 |
|
124 |
public static function dropTable($table_name) {
|
125 |
global $wpdb;
|
126 |
-
|
127 |
$sql = 'DROP TABLE ' . $table_name . ';';
|
128 |
$wpdb->query($sql);
|
129 |
}
|
130 |
|
131 |
}
|
132 |
|
133 |
-
?>
|
1 |
<?php
|
2 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
3 |
|
4 |
class CrellySliderTables {
|
5 |
|
22 |
public static function setSlidersTable() {
|
23 |
global $wpdb;
|
24 |
$table_name = $wpdb->prefix . 'crellyslider_sliders';
|
25 |
+
|
26 |
$sql = "CREATE TABLE $table_name (
|
27 |
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
28 |
name TEXT CHARACTER SET utf8,
|
40 |
callbacks TEXT CHARACTER SET utf8,
|
41 |
UNIQUE KEY id (id)
|
42 |
);";
|
43 |
+
|
44 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
45 |
dbDelta($sql);
|
46 |
}
|
49 |
public static function setSlidesTable() {
|
50 |
global $wpdb;
|
51 |
$table_name = $wpdb->prefix . 'crellyslider_slides';
|
52 |
+
|
53 |
$sql = "CREATE TABLE $table_name (
|
54 |
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
55 |
slider_parent mediumint(9),
|
66 |
data_time INT,
|
67 |
data_easeIn INT,
|
68 |
data_easeOut INT,
|
69 |
+
link TEXT CHARACTER SET utf8,
|
70 |
link_new_tab INT DEFAULT 0,
|
71 |
custom_css TEXT CHARACTER SET utf8,
|
72 |
UNIQUE KEY id (id)
|
73 |
);";
|
74 |
+
|
75 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
76 |
dbDelta($sql);
|
77 |
}
|
79 |
public static function setElementsTable() {
|
80 |
global $wpdb;
|
81 |
$table_name = $wpdb->prefix . 'crellyslider_elements';
|
82 |
+
|
83 |
$sql = "CREATE TABLE $table_name (
|
84 |
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
85 |
slider_parent mediumint(9),
|
97 |
data_in TEXT CHARACTER SET utf8,
|
98 |
data_out TEXT CHARACTER SET utf8,
|
99 |
custom_css TEXT CHARACTER SET utf8,
|
100 |
+
custom_css_classes TEXT CHARACTER SET utf8,
|
101 |
inner_html TEXT CHARACTER SET utf8,
|
102 |
image_src TEXT CHARACTER SET utf8,
|
103 |
image_alt TEXT CHARACTER SET utf8,
|
104 |
+
link TEXT CHARACTER SET utf8,
|
105 |
link_new_tab INT DEFAULT 0,
|
106 |
video_id TEXT CHARACTER SET utf8,
|
107 |
video_loop INT,
|
108 |
video_autoplay INT,
|
109 |
UNIQUE KEY id (id)
|
110 |
);";
|
111 |
+
|
112 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
113 |
dbDelta($sql);
|
114 |
}
|
116 |
// Drops all the slider tables
|
117 |
public static function dropTables() {
|
118 |
global $wpdb;
|
119 |
+
|
120 |
self::dropTable($wpdb->prefix . 'crellyslider_sliders');
|
121 |
self::dropTable($wpdb->prefix . 'crellyslider_slides');
|
122 |
self::dropTable($wpdb->prefix . 'crellyslider_elements');
|
124 |
|
125 |
public static function dropTable($table_name) {
|
126 |
global $wpdb;
|
127 |
+
|
128 |
$sql = 'DROP TABLE ' . $table_name . ';';
|
129 |
$wpdb->query($sql);
|
130 |
}
|
131 |
|
132 |
}
|
133 |
|
134 |
+
?>
|
wordpress/temp/silence.php
CHANGED
@@ -1 +1,2 @@
|
|
|
|
1 |
<?php // If you can read this, you probably have never used the Import/Export function ?>
|
1 |
+
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
|
2 |
<?php // If you can read this, you probably have never used the Import/Export function ?>
|