You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							229 lines
						
					
					
						
							7.9 KiB
						
					
					
				
			
		
		
	
	
							229 lines
						
					
					
						
							7.9 KiB
						
					
					
				<?php | 
						|
 | 
						|
use yii\helpers\Html; | 
						|
 | 
						|
/** | 
						|
 * @var $this \yii\web\View | 
						|
 * @var $slider \core\entities\Slider[] | 
						|
 * @var $tag string | 
						|
 * @var $classes string | 
						|
 * @var $attrs string | 
						|
 */ | 
						|
 | 
						|
$js = <<<JS | 
						|
	var s = $(".swiper-slider"); | 
						|
    var pag = s.find(".swiper-pagination"), | 
						|
      next = s.find(".swiper-button-next"), | 
						|
      prev = s.find(".swiper-button-prev"), | 
						|
      bar = s.find(".swiper-scrollbar"), | 
						|
      swiperSlide = s.find(".swiper-slide"), | 
						|
      autoplay = false; | 
						|
    for (var j = 0; j < swiperSlide.length; j++) { | 
						|
      var sthis = $(swiperSlide[j]), | 
						|
        url; | 
						|
 | 
						|
      if (url = sthis.attr("data-slide-bg")) { | 
						|
        sthis.css({ | 
						|
          "background-image": "url(" + url + ")", | 
						|
          "background-size": "cover" | 
						|
        }) | 
						|
      } | 
						|
    } | 
						|
    swiperSlide.end() | 
						|
      .find("[data-caption-animate]") | 
						|
      .addClass("not-animated") | 
						|
      .end(); | 
						|
     | 
						|
    s.swiper({ | 
						|
          autoplay: s.attr('data-autoplay') ? s.attr('data-autoplay') === "false" || s.attr('data-autoplay-hover') === "true" ? undefined : s.attr('data-autoplay') : 5000, | 
						|
          direction: s.attr('data-direction') ? s.attr('data-direction') : "horizontal", | 
						|
          effect: s.attr('data-slide-effect') ? s.attr('data-slide-effect') : "slide", | 
						|
          speed: s.attr('data-slide-speed') ? s.attr('data-slide-speed') : 600, | 
						|
          keyboardControl: s.attr('data-keyboard') === "true", | 
						|
          mousewheelControl: s.attr('data-mousewheel') === "true", | 
						|
          mousewheelReleaseOnEdges: s.attr('data-mousewheel-releaase') === "true", | 
						|
          lazyLoading: s.attr('data-lazy-loading') === "true", | 
						|
          nextButton: next.length ? next.get(0) : null, | 
						|
          prevButton: prev.length ? prev.get(0) : null, | 
						|
          pagination: pag.length ? pag.get(0) : null, | 
						|
          paginationClickable: pag.length ? pag.attr("data-clickable") !== "false" : false, | 
						|
          paginationBulletRender: pag.length ? pag.attr("data-index-bullet") === "true" ? function (swiper, index, className) { | 
						|
            return '<span class="' + className + '"><span>' + ((index + 1) < 10 ? ('0' + (index + 1) ): (index + 1))  + '</span></span>'; | 
						|
          } : null : null, | 
						|
          scrollbar: bar.length ? bar.get(0) : null, | 
						|
          scrollbarDraggable: bar.length ? bar.attr("data-draggable") !== "false" : true, | 
						|
          scrollbarHide: bar.length ? bar.attr("data-draggable") === "false" : false, | 
						|
          //loop: isNoviBuilder ? false : s.attr('data-loop') !== "false", | 
						|
          loop: s.attr('data-loop') !== "false", | 
						|
          //simulateTouch: s.attr('data-simulate-touch') && !isNoviBuilder ? s.attr('data-simulate-touch') === "true" : false, | 
						|
          simulateTouch: s.attr('data-simulate-touch') ? s.attr('data-simulate-touch') === "true" : false, | 
						|
          onTransitionStart: function (swiper) { | 
						|
            toggleSwiperInnerVideos(swiper); | 
						|
          }, | 
						|
          onTransitionEnd: function (swiper) { | 
						|
            toggleSwiperCaptionAnimation(swiper); | 
						|
          }, | 
						|
          onInit: function (swiper) { | 
						|
            toggleSwiperInnerVideos(swiper); | 
						|
            toggleSwiperCaptionAnimation(swiper); | 
						|
 | 
						|
            if (swiper.container.data('autoplay-hover') === true) { | 
						|
              var hoverEvent; | 
						|
 | 
						|
              swiper.container.mouseenter(function (e) { | 
						|
                hoverEvent = setInterval(function () { | 
						|
                  swiper.slideNext(); | 
						|
                }, $(swiper.container).data('autoplay')); | 
						|
              }); | 
						|
 | 
						|
              swiper.container.mouseleave(function (e) { | 
						|
                clearInterval(hoverEvent); | 
						|
              }); | 
						|
            } | 
						|
 | 
						|
            //initLightGalleryItem(s.find('[data-lightgallery="item"]'), 'lightGallery-in-carousel'); | 
						|
          } | 
						|
        }); | 
						|
     | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	win.on("resize", (function (s) { | 
						|
      return function () { | 
						|
        var mh = getSwiperHeight(s, "min-height"), | 
						|
          h = getSwiperHeight(s, "height"); | 
						|
        if (h) { | 
						|
          s.css("height", mh ? mh > h ? mh : h : h); | 
						|
        } | 
						|
      } | 
						|
    })(s)).trigger("resize"); | 
						|
	 | 
						|
	window.setTimeout(function() { | 
						|
	  win.trigger("resize"); | 
						|
	}, 100); | 
						|
JS; | 
						|
$this->registerJs($js, $this::POS_READY); | 
						|
 | 
						|
 | 
						|
$js2 = <<<JS2 | 
						|
	var win = $(window); | 
						|
 | 
						|
	function getSwiperHeight(object, attr) { | 
						|
      var val = object.attr("data-" + attr), | 
						|
        dim; | 
						|
 | 
						|
      if (!val) { | 
						|
        return undefined; | 
						|
      } | 
						|
 | 
						|
      dim = val.match(/(px)|(%)|(vh)|(vw)$/i); | 
						|
 | 
						|
      if (dim.length) { | 
						|
        switch (dim[0]) { | 
						|
          case "px": | 
						|
            return parseFloat(val); | 
						|
          case "vh": | 
						|
            return win.height() * (parseFloat(val) / 100); | 
						|
          case "vw": | 
						|
            return win.width() * (parseFloat(val) / 100); | 
						|
          case "%": | 
						|
            return object.width() * (parseFloat(val) / 100); | 
						|
        } | 
						|
      } else { | 
						|
        return undefined; | 
						|
      } | 
						|
    } | 
						|
     | 
						|
    function toggleSwiperInnerVideos(swiper) { | 
						|
      var prevSlide = $(swiper.slides[swiper.previousIndex]), | 
						|
        nextSlide = $(swiper.slides[swiper.activeIndex]), | 
						|
        videos, | 
						|
        videoItems = prevSlide.find("video"); | 
						|
 | 
						|
      for (var i = 0; i < videoItems.length; i++) { | 
						|
        videoItems[i].pause(); | 
						|
      } | 
						|
 | 
						|
      videos = nextSlide.find("video"); | 
						|
      if (videos.length) { | 
						|
        videos.get(0).play(); | 
						|
      } | 
						|
    } | 
						|
     | 
						|
    function toggleSwiperCaptionAnimation(swiper) { | 
						|
      var prevSlide = $(swiper.container).find("[data-caption-animate]"), | 
						|
        nextSlide = $(swiper.slides[swiper.activeIndex]).find("[data-caption-animate]"), | 
						|
        delay, | 
						|
        duration, | 
						|
        nextSlideItem, | 
						|
        prevSlideItem; | 
						|
 | 
						|
      for (var i = 0; i < prevSlide.length; i++) { | 
						|
        prevSlideItem = $(prevSlide[i]); | 
						|
 | 
						|
        prevSlideItem.removeClass("animated") | 
						|
          .removeClass(prevSlideItem.attr("data-caption-animate")) | 
						|
          .addClass("not-animated"); | 
						|
      } | 
						|
 | 
						|
 | 
						|
      var tempFunction = function (nextSlideItem, duration) { | 
						|
        return function () { | 
						|
          nextSlideItem | 
						|
            .removeClass("not-animated") | 
						|
            .addClass(nextSlideItem.attr("data-caption-animate")) | 
						|
            .addClass("animated"); | 
						|
          if (duration) { | 
						|
            nextSlideItem.css('animation-duration', duration + 'ms'); | 
						|
          } | 
						|
        }; | 
						|
      }; | 
						|
 | 
						|
      for (var i = 0; i < nextSlide.length; i++) { | 
						|
        nextSlideItem = $(nextSlide[i]); | 
						|
        delay = nextSlideItem.attr("data-caption-delay"); | 
						|
        duration = nextSlideItem.attr('data-caption-duration'); | 
						|
        //if (!isNoviBuilder) { | 
						|
          setTimeout(tempFunction(nextSlideItem, duration), parseInt(delay, 10)); | 
						|
        //} else { | 
						|
        //  nextSlideItem.removeClass("not-animated") | 
						|
        //} | 
						|
      } | 
						|
    } | 
						|
JS2; | 
						|
$this->registerJs($js2, $this::POS_END); | 
						|
?> | 
						|
 | 
						|
<<?= $tag ?> class="<?= $classes ?>" <?= $attrs ?>> | 
						|
	<div class="swiper-wrapper" style="transition-duration: 0ms;"> | 
						|
 | 
						|
		<?php foreach ($slider as $slide): ?> | 
						|
 | 
						|
			<div class="swiper-slide swiper-slide-active" | 
						|
			     data-slide-bg="<?= Html::encode($slide->getThumbFileUrl('image', '1920_671')) ?>" | 
						|
			     style="background-image: url("<?= Html::encode($slide->getThumbFileUrl('image', '1920_671')) ?>"); background-size: cover; width: 1903px; transform: translate3d(-1903px, 0px, 0px); opacity: 1; transition-duration: 0ms;" | 
						|
			     data-swiper-slide-index="0"> | 
						|
				<div class="container"> | 
						|
					<div class="swiper-slide-caption"> | 
						|
						<h1 data-caption-animate="fadeInUp" data-caption-delay="100" class="fadeInUp animated"> | 
						|
							<?= str_replace(PHP_EOL, "<br>", Html::encode($slide->title)) ?></h1> | 
						|
						<h4 data-caption-animate="fadeInUp" data-caption-delay="200" class="fadeInUp animated"> | 
						|
							<?= str_replace(PHP_EOL, "<br>", Html::encode($slide->tagline)) ?> | 
						|
						</h4><a | 
						|
							class="button button-gray-outline fadeInUp animated" data-caption-animate="fadeInUp" | 
						|
							data-caption-delay="300" href="#"><?= Yii::t('slider', 'Read more') ?></a> | 
						|
					</div> | 
						|
				</div> | 
						|
			</div> | 
						|
 | 
						|
		<?php endforeach; ?> | 
						|
 | 
						|
	</div> | 
						|
	<div class="swiper-button swiper-button-prev"></div> | 
						|
	<div class="swiper-button swiper-button-next"></div> | 
						|
	<div class="swiper-pagination swiper-pagination-clickable swiper-pagination-bullets"> | 
						|
		<span class="swiper-pagination-bullet swiper-pagination-bullet-active"></span> | 
						|
		<span class="swiper-pagination-bullet"></span> | 
						|
	</div> | 
						|
</<?= $tag ?>>
 | 
						|
 |