From 8dac0376fffff5c52ffce3ba82808c06b54b15b7 Mon Sep 17 00:00:00 2001 From: voltan Date: Sat, 26 Aug 2017 09:17:18 +0430 Subject: [PATCH] Remove jcarousel and use owl-carousel --- .../asset/script/jcarousel/jcarousel-min.js | 16 - .../asset/script/jcarousel/jcarousel.css | 59 - .../asset/script/jcarousel/jcarousel.js | 1057 ----------------- .../script/jcarousel/prev-next-horizontal.png | Bin 4969 -> 0 bytes .../src/Form/Element/CarouselTemplate.php | 2 +- .../template/block/carousel/jcarousel.phtml | 50 - .../block/carousel/owl-carousel.phtml | 72 ++ 7 files changed, 73 insertions(+), 1183 deletions(-) delete mode 100644 usr/module/widget/asset/script/jcarousel/jcarousel-min.js delete mode 100755 usr/module/widget/asset/script/jcarousel/jcarousel.css delete mode 100644 usr/module/widget/asset/script/jcarousel/jcarousel.js delete mode 100644 usr/module/widget/asset/script/jcarousel/prev-next-horizontal.png delete mode 100644 usr/module/widget/template/block/carousel/jcarousel.phtml create mode 100644 usr/module/widget/template/block/carousel/owl-carousel.phtml diff --git a/usr/module/widget/asset/script/jcarousel/jcarousel-min.js b/usr/module/widget/asset/script/jcarousel/jcarousel-min.js deleted file mode 100644 index 5d9a91ed6f..0000000000 --- a/usr/module/widget/asset/script/jcarousel/jcarousel-min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jCarousel - Riding carousels with jQuery - * http://sorgalla.com/jcarousel/ - * - * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com) - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * Built on top of the jQuery library - * http://jquery.com - * - * Inspired by the "Carousel Component" by Bill Scott - * http://billwscott.com/carousel/ - */ - -(function(g){var q={vertical:!1,rtl:!1,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,setupCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,animationStepCallback:null,buttonNextHTML:"
",buttonPrevHTML:"
",buttonNextEvent:"click",buttonPrevEvent:"click", buttonNextCallback:null,buttonPrevCallback:null,itemFallbackDimension:null},m=!1;g(window).bind("load.jcarousel",function(){m=!0});g.jcarousel=function(a,c){this.options=g.extend({},q,c||{});this.autoStopped=this.locked=!1;this.buttonPrevState=this.buttonNextState=this.buttonPrev=this.buttonNext=this.list=this.clip=this.container=null;if(!c||c.rtl===void 0)this.options.rtl=(g(a).attr("dir")||g("html").attr("dir")||"").toLowerCase()=="rtl";this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical? this.options.rtl?"right":"left":"top";for(var b="",d=a.className.split(" "),f=0;f").parent();if(this.container.size()===0)this.container=this.clip.wrap("
").parent();b!==""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1&&this.container.wrap('
');this.buttonPrev=g(".jcarousel-prev",this.container);if(this.buttonPrev.size()===0&&this.options.buttonPrevHTML!==null)this.buttonPrev=g(this.options.buttonPrevHTML).appendTo(this.container);this.buttonPrev.addClass(this.className("jcarousel-prev"));this.buttonNext= g(".jcarousel-next",this.container);if(this.buttonNext.size()===0&&this.options.buttonNextHTML!==null)this.buttonNext=g(this.options.buttonNextHTML).appendTo(this.container);this.buttonNext.addClass(this.className("jcarousel-next"));this.clip.addClass(this.className("jcarousel-clip")).css({position:"relative"});this.list.addClass(this.className("jcarousel-list")).css({overflow:"hidden",position:"relative",top:0,margin:0,padding:0}).css(this.options.rtl?"right":"left",0);this.container.addClass(this.className("jcarousel-container")).css({position:"relative"}); !this.options.vertical&&this.options.rtl&&this.container.addClass("jcarousel-direction-rtl").attr("dir","rtl");var j=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible):null,b=this.list.children("li"),e=this;if(b.size()>0){var h=0,i=this.options.offset;b.each(function(){e.format(this,i++);h+=e.dimension(this,j)});this.list.css(this.wh,h+100+"px");if(!c||c.size===void 0)this.options.size=b.size()}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display", "block");this.funcNext=function(){e.next()};this.funcPrev=function(){e.prev()};this.funcResize=function(){e.resizeTimer&&clearTimeout(e.resizeTimer);e.resizeTimer=setTimeout(function(){e.reload()},100)};this.options.initCallback!==null&&this.options.initCallback(this,"init");!m&&g.browser.safari?(this.buttons(!1,!1),g(window).bind("load.jcarousel",function(){e.setup()})):this.setup()};var f=g.jcarousel;f.fn=f.prototype={jcarousel:"0.2.8"};f.fn.extend=f.extend=g.extend;f.fn.extend({setup:function(){this.prevLast= this.prevFirst=this.last=this.first=null;this.animating=!1;this.tail=this.resizeTimer=this.timer=null;this.inTail=!1;if(!this.locked){this.list.css(this.lt,this.pos(this.options.offset)+"px");var a=this.pos(this.options.start,!0);this.prevFirst=this.prevLast=null;this.animate(a,!1);g(window).unbind("resize.jcarousel",this.funcResize).bind("resize.jcarousel",this.funcResize);this.options.setupCallback!==null&&this.options.setupCallback(this)}},reset:function(){this.list.empty();this.list.css(this.lt, "0px");this.list.css(this.wh,"10px");this.options.initCallback!==null&&this.options.initCallback(this,"reset");this.setup()},reload:function(){this.tail!==null&&this.inTail&&this.list.css(this.lt,f.intval(this.list.css(this.lt))+this.tail);this.tail=null;this.inTail=!1;this.options.reloadCallback!==null&&this.options.reloadCallback(this);if(this.options.visible!==null){var a=this,c=Math.ceil(this.clipping()/this.options.visible),b=0,d=0;this.list.children("li").each(function(f){b+=a.dimension(this, c);f+1this.options.size)c=this.options.size;for(var b=a;b<=c;b++){var d=this.get(b);if(!d.length||d.hasClass("jcarousel-item-placeholder"))return!1}return!0}, get:function(a){return g(">.jcarousel-item-"+a,this.list)},add:function(a,c){var b=this.get(a),d=0,p=g(c);if(b.length===0)for(var j,e=f.intval(a),b=this.create(a);;){if(j=this.get(--e),e<=0||j.length){e<=0?this.list.prepend(b):j.after(b);break}}else d=this.dimension(b);p.get(0).nodeName.toUpperCase()=="LI"?(b.replaceWith(p),b=p):b.empty().append(c);this.format(b.removeClass(this.className("jcarousel-item-placeholder")),a);p=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible): null;d=this.dimension(b,p)-d;a>0&&a=this.first&&a<=this.last)){var b=this.dimension(c);athis.options.size?this.options.size:a);for(var d=this.first>a,g=this.options.wrap!="circular"&&this.first<=1?1:this.first,j=d?this.get(g): this.get(this.last),e=d?g:g-1,h=null,i=0,k=!1,l=0;d?--e>=a:++ethis.options.size)))j=this.get(this.index(e)),j.length&&(h=this.add(e,j.clone(!0)));j=h;l=this.dimension(h);k&&(i+=l);if(this.first!==null&&(this.options.wrap=="circular"||e>=1&&(this.options.size===null||e<= this.options.size)))b=d?b+l:b-l}for(var g=this.clipping(),m=[],o=0,n=0,j=this.get(a-1),e=a;++o;){h=this.get(e);k=!h.length;if(h.length===0){h=this.create(e).addClass(this.className("jcarousel-item-placeholder"));if(j.length===0)this.list.prepend(h);else j[d?"before":"after"](h);if(this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size))j=this.get(this.index(e)),j.length&&(h=this.add(e,j.clone(!0)))}j=h;l=this.dimension(h);if(l===0)throw Error("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting..."); this.options.wrap!="circular"&&this.options.size!==null&&e>this.options.size?m.push(h):k&&(i+=l);n+=l;if(n>=g)break;e++}for(h=0;h0&&(this.list.css(this.wh,this.dimension(this.list)+i+"px"),d&&(b-=i,this.list.css(this.lt,f.intval(this.list.css(this.lt))-i+"px")));i=a+o-1;if(this.options.wrap!="circular"&&this.options.size&&i>this.options.size)i=this.options.size;if(e>i){o=0;e=i;for(n=0;++o;){h=this.get(e--);if(!h.length)break;n+=this.dimension(h);if(n>=g)break}}e=i-o+ 1;this.options.wrap!="circular"&&e<1&&(e=1);if(this.inTail&&d)b+=this.tail,this.inTail=!1;this.tail=null;if(this.options.wrap!="circular"&&i==this.options.size&&i-o+1>=1&&(d=f.intval(this.get(i).css(!this.options.vertical?"marginRight":"marginBottom")),n-d>g))this.tail=n-g-d;if(c&&a===this.options.size&&this.tail)b-=this.tail,this.inTail=!0;for(;a-- >e;)b+=this.dimension(this.get(a));this.prevFirst=this.first;this.prevLast=this.last;this.first=e;this.last=i;return b},animate:function(a,c){if(!this.locked&& !this.animating){this.animating=!0;var b=this,d=function(){b.animating=!1;a===0&&b.list.css(b.lt,0);!b.autoStopped&&(b.options.wrap=="circular"||b.options.wrap=="both"||b.options.wrap=="last"||b.options.size===null||b.last=b.first&&c<=b.last)&&(c<1||c>b.options.size)&&b.remove(c)}; this.notify("onBeforeAnimation");if(!this.options.animation||c===!1)this.list.css(this.lt,a+"px"),d();else{var f=!this.options.vertical?this.options.rtl?{right:a}:{left:a}:{top:a},d={duration:this.options.animation,easing:this.options.easing,complete:d};if(g.isFunction(this.options.animationStepCallback))d.step=this.options.animationStepCallback;this.list.animate(f,d)}}},startAuto:function(a){if(a!==void 0)this.options.auto=a;if(this.options.auto===0)return this.stopAuto();if(this.timer===null){this.autoStopped= !1;var c=this;this.timer=window.setTimeout(function(){c.next()},this.options.auto*1E3)}},stopAuto:function(){this.pauseAuto();this.autoStopped=!0},pauseAuto:function(){if(this.timer!==null)window.clearTimeout(this.timer),this.timer=null},buttons:function(a,c){if(a==null&&(a=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="first"||this.options.size===null||this.last=this.options.size))a=this.tail!==null&&!this.inTail;if(c==null&&(c=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="last"||this.first>1),!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!==null&&this.first==1))c=this.tail!==null&&this.inTail;var b=this;this.buttonNext.size()>0?(this.buttonNext.unbind(this.options.buttonNextEvent+".jcarousel",this.funcNext),a&&this.buttonNext.bind(this.options.buttonNextEvent+".jcarousel",this.funcNext), this.buttonNext[a?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",a?!1:!0),this.options.buttonNextCallback!==null&&this.buttonNext.data("jcarouselstate")!=a&&this.buttonNext.each(function(){b.options.buttonNextCallback(b,this,a)}).data("jcarouselstate",a)):this.options.buttonNextCallback!==null&&this.buttonNextState!=a&&this.options.buttonNextCallback(b,null,a);this.buttonPrev.size()>0?(this.buttonPrev.unbind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev), c&&this.buttonPrev.bind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev),this.buttonPrev[c?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",c?!1:!0),this.options.buttonPrevCallback!==null&&this.buttonPrev.data("jcarouselstate")!=c&&this.buttonPrev.each(function(){b.options.buttonPrevCallback(b,this,c)}).data("jcarouselstate",c)):this.options.buttonPrevCallback!==null&&this.buttonPrevState!=c&&this.options.buttonPrevCallback(b,null,c);this.buttonNextState= a;this.buttonPrevState=c},notify:function(a){var c=this.prevFirst===null?"init":this.prevFirst=j&&k<=e)&&a(k)}}},create:function(a){return this.format("
  • ",a)},format:function(a,c){for(var a=g(a),b=a.get(0).className.split(" "),d=0;d', - buttonPrevHTML: '
    ', - buttonNextEvent: 'click', - buttonPrevEvent: 'click', - buttonNextCallback: null, - buttonPrevCallback: null, - itemFallbackDimension: null - }, windowLoaded = false; - - $(window).bind('load.jcarousel', function() { windowLoaded = true; }); - - /** - * The jCarousel object. - * - * @constructor - * @class jcarousel - * @param e {HTMLElement} The element to create the carousel for. - * @param o {Object} A set of key/value pairs to set as configuration properties. - * @cat Plugins/jCarousel - */ - $.jcarousel = function(e, o) { - this.options = $.extend({}, defaults, o || {}); - - this.locked = false; - this.autoStopped = false; - - this.container = null; - this.clip = null; - this.list = null; - this.buttonNext = null; - this.buttonPrev = null; - this.buttonNextState = null; - this.buttonPrevState = null; - - // Only set if not explicitly passed as option - if (!o || o.rtl === undefined) { - this.options.rtl = ($(e).attr('dir') || $('html').attr('dir') || '').toLowerCase() == 'rtl'; - } - - this.wh = !this.options.vertical ? 'width' : 'height'; - this.lt = !this.options.vertical ? (this.options.rtl ? 'right' : 'left') : 'top'; - - // Extract skin class - var skin = '', split = e.className.split(' '); - - for (var i = 0; i < split.length; i++) { - if (split[i].indexOf('jcarousel-skin') != -1) { - $(e).removeClass(split[i]); - skin = split[i]; - break; - } - } - - if (e.nodeName.toUpperCase() == 'UL' || e.nodeName.toUpperCase() == 'OL') { - this.list = $(e); - this.clip = this.list.parents('.jcarousel-clip'); - this.container = this.list.parents('.jcarousel-container'); - } else { - this.container = $(e); - this.list = this.container.find('ul,ol').eq(0); - this.clip = this.container.find('.jcarousel-clip'); - } - - if (this.clip.size() === 0) { - this.clip = this.list.wrap('
    ').parent(); - } - - if (this.container.size() === 0) { - this.container = this.clip.wrap('
    ').parent(); - } - - if (skin !== '' && this.container.parent()[0].className.indexOf('jcarousel-skin') == -1) { - this.container.wrap('
    '); - } - - this.buttonPrev = $('.jcarousel-prev', this.container); - - if (this.buttonPrev.size() === 0 && this.options.buttonPrevHTML !== null) { - this.buttonPrev = $(this.options.buttonPrevHTML).appendTo(this.container); - } - - this.buttonPrev.addClass(this.className('jcarousel-prev')); - - this.buttonNext = $('.jcarousel-next', this.container); - - if (this.buttonNext.size() === 0 && this.options.buttonNextHTML !== null) { - this.buttonNext = $(this.options.buttonNextHTML).appendTo(this.container); - } - - this.buttonNext.addClass(this.className('jcarousel-next')); - - this.clip.addClass(this.className('jcarousel-clip')).css({ - position: 'relative' - }); - - this.list.addClass(this.className('jcarousel-list')).css({ - overflow: 'hidden', - position: 'relative', - top: 0, - margin: 0, - padding: 0 - }).css((this.options.rtl ? 'right' : 'left'), 0); - - this.container.addClass(this.className('jcarousel-container')).css({ - position: 'relative' - }); - - if (!this.options.vertical && this.options.rtl) { - this.container.addClass('jcarousel-direction-rtl').attr('dir', 'rtl'); - } - - var di = this.options.visible !== null ? Math.ceil(this.clipping() / this.options.visible) : null; - var li = this.list.children('li'); - - var self = this; - - if (li.size() > 0) { - var wh = 0, j = this.options.offset; - li.each(function() { - self.format(this, j++); - wh += self.dimension(this, di); - }); - - this.list.css(this.wh, (wh + 100) + 'px'); - - // Only set if not explicitly passed as option - if (!o || o.size === undefined) { - this.options.size = li.size(); - } - } - - // For whatever reason, .show() does not work in Safari... - this.container.css('display', 'block'); - this.buttonNext.css('display', 'block'); - this.buttonPrev.css('display', 'block'); - - this.funcNext = function() { self.next(); }; - this.funcPrev = function() { self.prev(); }; - this.funcResize = function() { - if (self.resizeTimer) { - clearTimeout(self.resizeTimer); - } - - self.resizeTimer = setTimeout(function() { - self.reload(); - }, 100); - }; - - if (this.options.initCallback !== null) { - this.options.initCallback(this, 'init'); - } - - if (!windowLoaded && $.browser.safari) { - this.buttons(false, false); - $(window).bind('load.jcarousel', function() { self.setup(); }); - } else { - this.setup(); - } - }; - - // Create shortcut for internal use - var $jc = $.jcarousel; - - $jc.fn = $jc.prototype = { - jcarousel: '0.2.8' - }; - - $jc.fn.extend = $jc.extend = $.extend; - - $jc.fn.extend({ - /** - * Setups the carousel. - * - * @method setup - * @return undefined - */ - setup: function() { - this.first = null; - this.last = null; - this.prevFirst = null; - this.prevLast = null; - this.animating = false; - this.timer = null; - this.resizeTimer = null; - this.tail = null; - this.inTail = false; - - if (this.locked) { - return; - } - - this.list.css(this.lt, this.pos(this.options.offset) + 'px'); - var p = this.pos(this.options.start, true); - this.prevFirst = this.prevLast = null; - this.animate(p, false); - - $(window).unbind('resize.jcarousel', this.funcResize).bind('resize.jcarousel', this.funcResize); - - if (this.options.setupCallback !== null) { - this.options.setupCallback(this); - } - }, - - /** - * Clears the list and resets the carousel. - * - * @method reset - * @return undefined - */ - reset: function() { - this.list.empty(); - - this.list.css(this.lt, '0px'); - this.list.css(this.wh, '10px'); - - if (this.options.initCallback !== null) { - this.options.initCallback(this, 'reset'); - } - - this.setup(); - }, - - /** - * Reloads the carousel and adjusts positions. - * - * @method reload - * @return undefined - */ - reload: function() { - if (this.tail !== null && this.inTail) { - this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail); - } - - this.tail = null; - this.inTail = false; - - if (this.options.reloadCallback !== null) { - this.options.reloadCallback(this); - } - - if (this.options.visible !== null) { - var self = this; - var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0; - this.list.children('li').each(function(i) { - wh += self.dimension(this, di); - if (i + 1 < self.first) { - lt = wh; - } - }); - - this.list.css(this.wh, wh + 'px'); - this.list.css(this.lt, -lt + 'px'); - } - - this.scroll(this.first, false); - }, - - /** - * Locks the carousel. - * - * @method lock - * @return undefined - */ - lock: function() { - this.locked = true; - this.buttons(); - }, - - /** - * Unlocks the carousel. - * - * @method unlock - * @return undefined - */ - unlock: function() { - this.locked = false; - this.buttons(); - }, - - /** - * Sets the size of the carousel. - * - * @method size - * @return undefined - * @param s {Number} The size of the carousel. - */ - size: function(s) { - if (s !== undefined) { - this.options.size = s; - if (!this.locked) { - this.buttons(); - } - } - - return this.options.size; - }, - - /** - * Checks whether a list element exists for the given index (or index range). - * - * @method get - * @return bool - * @param i {Number} The index of the (first) element. - * @param i2 {Number} The index of the last element. - */ - has: function(i, i2) { - if (i2 === undefined || !i2) { - i2 = i; - } - - if (this.options.size !== null && i2 > this.options.size) { - i2 = this.options.size; - } - - for (var j = i; j <= i2; j++) { - var e = this.get(j); - if (!e.length || e.hasClass('jcarousel-item-placeholder')) { - return false; - } - } - - return true; - }, - - /** - * Returns a jQuery object with list element for the given index. - * - * @method get - * @return jQuery - * @param i {Number} The index of the element. - */ - get: function(i) { - return $('>.jcarousel-item-' + i, this.list); - }, - - /** - * Adds an element for the given index to the list. - * If the element already exists, it updates the inner html. - * Returns the created element as jQuery object. - * - * @method add - * @return jQuery - * @param i {Number} The index of the element. - * @param s {String} The innerHTML of the element. - */ - add: function(i, s) { - var e = this.get(i), old = 0, n = $(s); - - if (e.length === 0) { - var c, j = $jc.intval(i); - e = this.create(i); - while (true) { - c = this.get(--j); - if (j <= 0 || c.length) { - if (j <= 0) { - this.list.prepend(e); - } else { - c.after(e); - } - break; - } - } - } else { - old = this.dimension(e); - } - - if (n.get(0).nodeName.toUpperCase() == 'LI') { - e.replaceWith(n); - e = n; - } else { - e.empty().append(s); - } - - this.format(e.removeClass(this.className('jcarousel-item-placeholder')), i); - - var di = this.options.visible !== null ? Math.ceil(this.clipping() / this.options.visible) : null; - var wh = this.dimension(e, di) - old; - - if (i > 0 && i < this.first) { - this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + 'px'); - } - - this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + 'px'); - - return e; - }, - - /** - * Removes an element for the given index from the list. - * - * @method remove - * @return undefined - * @param i {Number} The index of the element. - */ - remove: function(i) { - var e = this.get(i); - - // Check if item exists and is not currently visible - if (!e.length || (i >= this.first && i <= this.last)) { - return; - } - - var d = this.dimension(e); - - if (i < this.first) { - this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px'); - } - - e.remove(); - - this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + 'px'); - }, - - /** - * Moves the carousel forwards. - * - * @method next - * @return undefined - */ - next: function() { - if (this.tail !== null && !this.inTail) { - this.scrollTail(false); - } else { - this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'last') && this.options.size !== null && this.last == this.options.size) ? 1 : this.first + this.options.scroll); - } - }, - - /** - * Moves the carousel backwards. - * - * @method prev - * @return undefined - */ - prev: function() { - if (this.tail !== null && this.inTail) { - this.scrollTail(true); - } else { - this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'first') && this.options.size !== null && this.first == 1) ? this.options.size : this.first - this.options.scroll); - } - }, - - /** - * Scrolls the tail of the carousel. - * - * @method scrollTail - * @return undefined - * @param b {Boolean} Whether scroll the tail back or forward. - */ - scrollTail: function(b) { - if (this.locked || this.animating || !this.tail) { - return; - } - - this.pauseAuto(); - - var pos = $jc.intval(this.list.css(this.lt)); - - pos = !b ? pos - this.tail : pos + this.tail; - this.inTail = !b; - - // Save for callbacks - this.prevFirst = this.first; - this.prevLast = this.last; - - this.animate(pos); - }, - - /** - * Scrolls the carousel to a certain position. - * - * @method scroll - * @return undefined - * @param i {Number} The index of the element to scoll to. - * @param a {Boolean} Flag indicating whether to perform animation. - */ - scroll: function(i, a) { - if (this.locked || this.animating) { - return; - } - - this.pauseAuto(); - this.animate(this.pos(i), a); - }, - - /** - * Prepares the carousel and return the position for a certian index. - * - * @method pos - * @return {Number} - * @param i {Number} The index of the element to scoll to. - * @param fv {Boolean} Whether to force last item to be visible. - */ - pos: function(i, fv) { - var pos = $jc.intval(this.list.css(this.lt)); - - if (this.locked || this.animating) { - return pos; - } - - if (this.options.wrap != 'circular') { - i = i < 1 ? 1 : (this.options.size && i > this.options.size ? this.options.size : i); - } - - var back = this.first > i; - - // Create placeholders, new list width/height - // and new list position - var f = this.options.wrap != 'circular' && this.first <= 1 ? 1 : this.first; - var c = back ? this.get(f) : this.get(this.last); - var j = back ? f : f - 1; - var e = null, l = 0, p = false, d = 0, g; - - while (back ? --j >= i : ++j < i) { - e = this.get(j); - p = !e.length; - if (e.length === 0) { - e = this.create(j).addClass(this.className('jcarousel-item-placeholder')); - c[back ? 'before' : 'after' ](e); - - if (this.first !== null && this.options.wrap == 'circular' && this.options.size !== null && (j <= 0 || j > this.options.size)) { - g = this.get(this.index(j)); - if (g.length) { - e = this.add(j, g.clone(true)); - } - } - } - - c = e; - d = this.dimension(e); - - if (p) { - l += d; - } - - if (this.first !== null && (this.options.wrap == 'circular' || (j >= 1 && (this.options.size === null || j <= this.options.size)))) { - pos = back ? pos + d : pos - d; - } - } - - // Calculate visible items - var clipping = this.clipping(), cache = [], visible = 0, v = 0; - c = this.get(i - 1); - j = i; - - while (++visible) { - e = this.get(j); - p = !e.length; - if (e.length === 0) { - e = this.create(j).addClass(this.className('jcarousel-item-placeholder')); - // This should only happen on a next scroll - if (c.length === 0) { - this.list.prepend(e); - } else { - c[back ? 'before' : 'after' ](e); - } - - if (this.first !== null && this.options.wrap == 'circular' && this.options.size !== null && (j <= 0 || j > this.options.size)) { - g = this.get(this.index(j)); - if (g.length) { - e = this.add(j, g.clone(true)); - } - } - } - - c = e; - d = this.dimension(e); - if (d === 0) { - throw new Error('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...'); - } - - if (this.options.wrap != 'circular' && this.options.size !== null && j > this.options.size) { - cache.push(e); - } else if (p) { - l += d; - } - - v += d; - - if (v >= clipping) { - break; - } - - j++; - } - - // Remove out-of-range placeholders - for (var x = 0; x < cache.length; x++) { - cache[x].remove(); - } - - // Resize list - if (l > 0) { - this.list.css(this.wh, this.dimension(this.list) + l + 'px'); - - if (back) { - pos -= l; - this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + 'px'); - } - } - - // Calculate first and last item - var last = i + visible - 1; - if (this.options.wrap != 'circular' && this.options.size && last > this.options.size) { - last = this.options.size; - } - - if (j > last) { - visible = 0; - j = last; - v = 0; - while (++visible) { - e = this.get(j--); - if (!e.length) { - break; - } - v += this.dimension(e); - if (v >= clipping) { - break; - } - } - } - - var first = last - visible + 1; - if (this.options.wrap != 'circular' && first < 1) { - first = 1; - } - - if (this.inTail && back) { - pos += this.tail; - this.inTail = false; - } - - this.tail = null; - if (this.options.wrap != 'circular' && last == this.options.size && (last - visible + 1) >= 1) { - var m = $jc.intval(this.get(last).css(!this.options.vertical ? 'marginRight' : 'marginBottom')); - if ((v - m) > clipping) { - this.tail = v - clipping - m; - } - } - - if (fv && i === this.options.size && this.tail) { - pos -= this.tail; - this.inTail = true; - } - - // Adjust position - while (i-- > first) { - pos += this.dimension(this.get(i)); - } - - // Save visible item range - this.prevFirst = this.first; - this.prevLast = this.last; - this.first = first; - this.last = last; - - return pos; - }, - - /** - * Animates the carousel to a certain position. - * - * @method animate - * @return undefined - * @param p {Number} Position to scroll to. - * @param a {Boolean} Flag indicating whether to perform animation. - */ - animate: function(p, a) { - if (this.locked || this.animating) { - return; - } - - this.animating = true; - - var self = this; - var scrolled = function() { - self.animating = false; - - if (p === 0) { - self.list.css(self.lt, 0); - } - - if (!self.autoStopped && (self.options.wrap == 'circular' || self.options.wrap == 'both' || self.options.wrap == 'last' || self.options.size === null || self.last < self.options.size || (self.last == self.options.size && self.tail !== null && !self.inTail))) { - self.startAuto(); - } - - self.buttons(); - self.notify('onAfterAnimation'); - - // This function removes items which are appended automatically for circulation. - // This prevents the list from growing infinitely. - if (self.options.wrap == 'circular' && self.options.size !== null) { - for (var i = self.prevFirst; i <= self.prevLast; i++) { - if (i !== null && !(i >= self.first && i <= self.last) && (i < 1 || i > self.options.size)) { - self.remove(i); - } - } - } - }; - - this.notify('onBeforeAnimation'); - - // Animate - if (!this.options.animation || a === false) { - this.list.css(this.lt, p + 'px'); - scrolled(); - } else { - var o = !this.options.vertical ? (this.options.rtl ? {'right': p} : {'left': p}) : {'top': p}; - // Define animation settings. - var settings = { - duration: this.options.animation, - easing: this.options.easing, - complete: scrolled - }; - // If we have a step callback, specify it as well. - if ($.isFunction(this.options.animationStepCallback)) { - settings.step = this.options.animationStepCallback; - } - // Start the animation. - this.list.animate(o, settings); - } - }, - - /** - * Starts autoscrolling. - * - * @method auto - * @return undefined - * @param s {Number} Seconds to periodically autoscroll the content. - */ - startAuto: function(s) { - if (s !== undefined) { - this.options.auto = s; - } - - if (this.options.auto === 0) { - return this.stopAuto(); - } - - if (this.timer !== null) { - return; - } - - this.autoStopped = false; - - var self = this; - this.timer = window.setTimeout(function() { self.next(); }, this.options.auto * 1000); - }, - - /** - * Stops autoscrolling. - * - * @method stopAuto - * @return undefined - */ - stopAuto: function() { - this.pauseAuto(); - this.autoStopped = true; - }, - - /** - * Pauses autoscrolling. - * - * @method pauseAuto - * @return undefined - */ - pauseAuto: function() { - if (this.timer === null) { - return; - } - - window.clearTimeout(this.timer); - this.timer = null; - }, - - /** - * Sets the states of the prev/next buttons. - * - * @method buttons - * @return undefined - */ - buttons: function(n, p) { - if (n == null) { - n = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'first') || this.options.size === null || this.last < this.options.size); - if (!this.locked && (!this.options.wrap || this.options.wrap == 'first') && this.options.size !== null && this.last >= this.options.size) { - n = this.tail !== null && !this.inTail; - } - } - - if (p == null) { - p = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'last') || this.first > 1); - if (!this.locked && (!this.options.wrap || this.options.wrap == 'last') && this.options.size !== null && this.first == 1) { - p = this.tail !== null && this.inTail; - } - } - - var self = this; - - if (this.buttonNext.size() > 0) { - this.buttonNext.unbind(this.options.buttonNextEvent + '.jcarousel', this.funcNext); - - if (n) { - this.buttonNext.bind(this.options.buttonNextEvent + '.jcarousel', this.funcNext); - } - - this.buttonNext[n ? 'removeClass' : 'addClass'](this.className('jcarousel-next-disabled')).attr('disabled', n ? false : true); - - if (this.options.buttonNextCallback !== null && this.buttonNext.data('jcarouselstate') != n) { - this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); }).data('jcarouselstate', n); - } - } else { - if (this.options.buttonNextCallback !== null && this.buttonNextState != n) { - this.options.buttonNextCallback(self, null, n); - } - } - - if (this.buttonPrev.size() > 0) { - this.buttonPrev.unbind(this.options.buttonPrevEvent + '.jcarousel', this.funcPrev); - - if (p) { - this.buttonPrev.bind(this.options.buttonPrevEvent + '.jcarousel', this.funcPrev); - } - - this.buttonPrev[p ? 'removeClass' : 'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled', p ? false : true); - - if (this.options.buttonPrevCallback !== null && this.buttonPrev.data('jcarouselstate') != p) { - this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); }).data('jcarouselstate', p); - } - } else { - if (this.options.buttonPrevCallback !== null && this.buttonPrevState != p) { - this.options.buttonPrevCallback(self, null, p); - } - } - - this.buttonNextState = n; - this.buttonPrevState = p; - }, - - /** - * Notify callback of a specified event. - * - * @method notify - * @return undefined - * @param evt {String} The event name - */ - notify: function(evt) { - var state = this.prevFirst === null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev'); - - // Load items - this.callback('itemLoadCallback', evt, state); - - if (this.prevFirst !== this.first) { - this.callback('itemFirstInCallback', evt, state, this.first); - this.callback('itemFirstOutCallback', evt, state, this.prevFirst); - } - - if (this.prevLast !== this.last) { - this.callback('itemLastInCallback', evt, state, this.last); - this.callback('itemLastOutCallback', evt, state, this.prevLast); - } - - this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast); - this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last); - }, - - callback: function(cb, evt, state, i1, i2, i3, i4) { - if (this.options[cb] == null || (typeof this.options[cb] != 'object' && evt != 'onAfterAnimation')) { - return; - } - - var callback = typeof this.options[cb] == 'object' ? this.options[cb][evt] : this.options[cb]; - - if (!$.isFunction(callback)) { - return; - } - - var self = this; - - if (i1 === undefined) { - callback(self, state, evt); - } else if (i2 === undefined) { - this.get(i1).each(function() { callback(self, this, i1, state, evt); }); - } else { - var call = function(i) { - self.get(i).each(function() { callback(self, this, i, state, evt); }); - }; - for (var i = i1; i <= i2; i++) { - if (i !== null && !(i >= i3 && i <= i4)) { - call(i); - } - } - } - }, - - create: function(i) { - return this.format('
  • ', i); - }, - - format: function(e, i) { - e = $(e); - var split = e.get(0).className.split(' '); - for (var j = 0; j < split.length; j++) { - if (split[j].indexOf('jcarousel-') != -1) { - e.removeClass(split[j]); - } - } - e.addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-' + i)).css({ - 'float': (this.options.rtl ? 'right' : 'left'), - 'list-style': 'none' - }).attr('jcarouselindex', i); - return e; - }, - - className: function(c) { - return c + ' ' + c + (!this.options.vertical ? '-horizontal' : '-vertical'); - }, - - dimension: function(e, d) { - var el = $(e); - - if (d == null) { - return !this.options.vertical ? - (el.outerWidth(true) || $jc.intval(this.options.itemFallbackDimension)) : - (el.outerHeight(true) || $jc.intval(this.options.itemFallbackDimension)); - } else { - var w = !this.options.vertical ? - d - $jc.intval(el.css('marginLeft')) - $jc.intval(el.css('marginRight')) : - d - $jc.intval(el.css('marginTop')) - $jc.intval(el.css('marginBottom')); - - $(el).css(this.wh, w + 'px'); - - return this.dimension(el); - } - }, - - clipping: function() { - return !this.options.vertical ? - this.clip[0].offsetWidth - $jc.intval(this.clip.css('borderLeftWidth')) - $jc.intval(this.clip.css('borderRightWidth')) : - this.clip[0].offsetHeight - $jc.intval(this.clip.css('borderTopWidth')) - $jc.intval(this.clip.css('borderBottomWidth')); - }, - - index: function(i, s) { - if (s == null) { - s = this.options.size; - } - - return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1; - } - }); - - $jc.extend({ - /** - * Gets/Sets the global default configuration properties. - * - * @method defaults - * @return {Object} - * @param d {Object} A set of key/value pairs to set as configuration properties. - */ - defaults: function(d) { - return $.extend(defaults, d || {}); - }, - - intval: function(v) { - v = parseInt(v, 10); - return isNaN(v) ? 0 : v; - }, - - windowLoaded: function() { - windowLoaded = true; - } - }); - - /** - * Creates a carousel for all matched elements. - * - * @example $("#mycarousel").jcarousel(); - * @before
    • First item
    • Second item
    - * @result - * - *
    - *
    - *
    - *
      - *
    • First item
    • - *
    • Second item
    • - *
    - *
    - *
    - *
    - *
    - *
    - * - * @method jcarousel - * @return jQuery - * @param o {Hash|String} A set of key/value pairs to set as configuration properties or a method name to call on a formerly created instance. - */ - $.fn.jcarousel = function(o) { - if (typeof o == 'string') { - var instance = $(this).data('jcarousel'), args = Array.prototype.slice.call(arguments, 1); - return instance[o].apply(instance, args); - } else { - return this.each(function() { - var instance = $(this).data('jcarousel'); - if (instance) { - if (o) { - $.extend(instance.options, o); - } - instance.reload(); - } else { - $(this).data('jcarousel', new $jc(this, o)); - } - }); - } - }; - -})(jQuery); diff --git a/usr/module/widget/asset/script/jcarousel/prev-next-horizontal.png b/usr/module/widget/asset/script/jcarousel/prev-next-horizontal.png deleted file mode 100644 index b59d47ac24dd0af1842e6d0bd9a951d812b2d83c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4969 zcmV-v6PE0WP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z2$o4iK~#9!te9(Xl;su2f9Jhyb~o89*%%WW6152k45AK7t+5z&94msUWgIV9aayS8 zw1|$Sd?+838LH!@Fe++eGX$9doe^&cK`x4pS{NkWQUxlQ0gV_W7m_8r`@Zk#hfT=t z=CTXZXXg2`JNw)7oO7P@Kj)F&-d@gRJ+*G9{%hmEsVE8Y_@C;yu)192OkfR7pX#!8 zyTNnuVkbDez@+IP3pj1qM=ghS?#lP@OdItSjrHJ0f8y5Z6HX6y_{T22d3h5ZF#$0E zMV$m*w1Z+_3@cYqU)<68&+OoMOu#VvKNYZSu=6l%%^mhY{Z96^ClE8^Cklvg;}w%~ zgFXG$UTtbQhS+w}niP_HE>)!kESXcA9k%1MR$Z~>09Za$B;6>_C1klYKJ*&`wke~+ zzG>^wg^jy$O<%vmQjKkG9`Do^ z)N`0nlE>;rGt)rB!ZtUz>WX&{f$c*L12yE-_S7Yk=kn71*AtCK2?m2B!@fFlTo_U)QR!fEmOICT$#A8 zJFK5A0M}E!cg@Fq+pS;@<8UX&ozu#>yLO^Djx%B^SpW~ezL%Y?y~AgCBF<&yK^~h^ z!)PD?Yh!b(*6;oSvGdRj5ROAxKv{F|wcxpu?Y3A?z5gxZ^Yg~gKixI0g30AYr!qX-GOA0%=_w$BqNtmoVS6*X_8-w)%apPBnyUWf zOxdP|`U1pFA9Gi2qOGGRC!jHF;#qQE&ADL6;5H4!A3zEsw8stRKD&{)<7NdKuIuv1 zbyZBSDn`W^+@=k|LI@S}N!tk?T(dp9WdN>|kcQclIJY>Eau*HMwjn=^gd(ilbBO1+ zHEUKFK%tGieA^TPzSP=ffSm{VMNm-0(${wJ{?~^!D@;|X9%D=W&66^MVM1OILdCej zG0bb&M(eR|9Tf)Pc^)&W!m{{RmFcN604#{m?%3S%+$Ms-;OHd?z;#`g)QsiV<05Ib zOl=#2AqW@K(h=vDl^Zm(1PxnhJ;#xTo5nM~IGA2(EgupLBLxxOXldh#&3iN}48Sj* zyfS+tg#l~OI@3UXc@QdsP=w`MKWEFAt(q04s+<=xW%aCan1(SJVZ#Jp00~9#0%7K@ zeUAf2J9SjpKtQgoD3GOBRtyP<`tu=FOt%EM{l$0aJ{i}Xx**%O`Q4_2x?z7uMzj)W zPbYL9<&V=Ub8D#vQs9!+pX--DolGlLB>K> zDmf#|e(LJg-!EU!SKs##H41sUX&((upPtd#jYnVF%F&(#Mz9D8j==~P^7jp2@KMX* z(*_zl_8!FWg%DqUvMm=2&&*?C{YM=BvFo&ehGF}Xb>6c3l}S*;~-y^K4TEY&Nv9AL+1t=Sb_RjDiq$*Kjlh|`B=0u2M#^s%sUH{Y~%WEWx2^QgVB zQWn=uL7iB#(M$E8VbbGT%zNPjPDEqbMc8#+7S5U~H(p$d=fzPWUFs~0gIz9*8b8eK zZYB~5Rxg?<6H4+>&lzkH2DWLlbzc`xzS*2z(SyMt(P)&H?!TT$o{Oh$x^;#DwvQF> z9%6Iz(0~}3{0jIkA5Kr8hIZ z_?X|gi_YFyb`f@6m%D2x%AM27`y)K`hJ4$t+`HyuTu-x$u;Vy9Hm8P5%Y(@X8yOL{ zEq1o{^6=|>lmC^AZg%y#diA4k^Fz!|z7`CbVq(qg(d;wq{+o=MYkO7UYMMO>zq8ydpmhvnSy?2^sZW z>(bYDK|v%rRM>fGehSzIFW)wWLK_+AFouP-9_!Y54cl;oV~|iWD{e8f+~P2=$#M@D>#0NC zR`cJZBA9%WpD51K$nv|UNAIx@A~&|FNpBa zWu;j`0M=Xo`3@}zBl-Q2OL6$*;sERGE|38k%nIvu1templateDir . '/bootstrap' => _a('Bootstrap slide') . ' (bootstrap)', $this->templateDir . '/bootstrap-twocol' => _a('Bootstrap two columns') . ' (bootstrap-twocol)', - $this->templateDir . '/jcarousel' => _a('jQuery riding Carousel') . ' (jcarousel)', + $this->templateDir . '/owl-carousel' => _a('Owl Carousel 2') . ' (owl-carousel)', $this->templateDir . '/parallax' => _a('Parallax Content Slider') . ' (parallax)', ); $styles += $this->getList(); diff --git a/usr/module/widget/template/block/carousel/jcarousel.phtml b/usr/module/widget/template/block/carousel/jcarousel.phtml deleted file mode 100644 index e85fe5e55d..0000000000 --- a/usr/module/widget/template/block/carousel/jcarousel.phtml +++ /dev/null @@ -1,50 +0,0 @@ -css($this->assetModule('script/jcarousel/jcarousel.css', 'widget')); -$this->jQuery(); -$this->js($this->assetModule('script/jcarousel/jcarousel-min.js', 'widget')); -?> -
    - -
    - \ No newline at end of file diff --git a/usr/module/widget/template/block/carousel/owl-carousel.phtml b/usr/module/widget/template/block/carousel/owl-carousel.phtml new file mode 100644 index 0000000000..0170511dd0 --- /dev/null +++ b/usr/module/widget/template/block/carousel/owl-carousel.phtml @@ -0,0 +1,72 @@ +getLocale(); +$rtl = (in_array($locale, array('fa', 'ar'))) ? 'true' : 'false'; +//$loop = (in_array($locale, array('fa', 'ar'))) ? 'false' : 'true'; +$loop = 'true'; + +// Set arrow +$iconOwlLeft = ''; +$iconOwlRight = ''; + +// Set srcipt 2 +$script = <<<'EOT' + $(document).ready(function($) { + $('#%s').owlCarousel({ + loop: %s, + lazyLoad:true, + rtl:%s, + margin:3, + nav:true, + autoplay:true, + dots:false, + autoplayTimeout:6000, + autoplayHoverPause:true, + navText: ['%s', '%s'], + responsive:{ + 0:{items:2}, + 600:{items:3}, + 1000:{items:%s} + } + }) + }); +EOT; +$script = sprintf($script, $carouselId, $loop, $rtl, $iconOwlLeft, $iconOwlRight, $number); + +// Load files +$this->jQuery(array( + 'extension/owl.carousel.min.js', + 'extension/owl.carousel.css', + 'extension/owl.theme.default.css', +)); +$this->footScript()->appendScript($script); +?> + \ No newline at end of file