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.
		
		
		
		
			
				
					230 lines
				
				7.9 KiB
			
		
		
			
		
	
	
					230 lines
				
				7.9 KiB
			| 
								 
											8 years ago
										 
									 | 
							
								<?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 ?>>
							 |