src/AppBundle/Resources/views/ContentBlock/banner.html.twig line 1

Open in your IDE?
  1. <div class="page-banner" id="banner-main">
  2.     <div class="row position-relative overflow-hidden text-center">
  3.         {% if bannerSlides %}
  4.             <div class="glide {% if bannerSlides|length > 1 %}glide-enabled{% endif %}">
  5.                 <div class="glide__track" data-glide-el="track">
  6.                     <ul class="glide__slides">
  7.                         {% for slide in bannerSlides %}
  8.                             <li id="slide-{{ slide.id }}" class="glide__slide">
  9.                               {% if slide.isVideo %}
  10.                                 <a href="{% if slide.link %}{{ slide.link }}{% else %}#{% endif %}">
  11.                                   <video class="w-100" loop autoplay><source src="{{ slide.url }}"></video>
  12.                                 </a>
  13.                               {% else %}
  14.                                 <a href="{% if slide.link %}{{ slide.link }}{% else %}#{% endif %}"
  15.                                    style="background-image: url('{{ slide.url }}')">
  16.                                 </a>
  17.                               {% endif %}
  18.                             </li>
  19.                         {% endfor %}
  20.                     </ul>
  21.                 </div>
  22.                 {% if bannerSlides|length > 1 %}
  23.                   <div class="glide__controls-container" data-glide-el="controls">
  24.                       <div class="glide__controls-item" data-glide-dir="<"><img class="glide__controls-img" src="{{ asset('bundles/app/images/controls_left.png') }}" alt=""/></div>
  25.                       <div class="glide__controls-item" data-glide-dir=">"><img class="glide__controls-img" src="{{ asset('bundles/app/images/controls_right.png') }}" alt=""/></div>
  26.                   </div>
  27.                   <div class="glide__bullets-container"></div>
  28.                 {% endif %}
  29.             </div>
  30.         {% endif %}
  31.     </div>
  32. </div>
  33. {% if subPageBanners is defined %}
  34.     {% for id, tabBanner in subPageBanners %}
  35.         <div class="page-banner {% if tabBanner|length <= 1 %}hidden{% endif %}" id="banner-{{ id }}">
  36.             <div class="row position-relative overflow-hidden text-center">
  37.                 <div class="glide {% if tabBanner|length > 1 %}glide-enabled{% endif %}">
  38.                     <div class="glide__track" data-glide-el="track">
  39.                         <ul class="glide__slides">
  40.                             {% for slide in tabBanner %}
  41.                                 <li id="slide-{{ slide.id }}" class="glide__slide">
  42.                                   {% if slide.isVideo %}
  43.                                     <a href="{% if slide.link %}{{ slide.link }}{% else %}#{% endif %}">
  44.                                       <video class="w-100" loop autoplay><source src="{{ slide.url }}"></video>
  45.                                     </a>
  46.                                   {% else %}
  47.                                     <a href="{% if slide.link %}{{ slide.link }}{% else %}#{% endif %}"
  48.                                        style="background-image: url('{{ slide.url }}')">
  49.                                     </a>
  50.                                   {% endif %}
  51.                                 </li>
  52.                             {% endfor %}
  53.                         </ul>
  54.                     </div>
  55.                     {% if tabBanner|length > 1 %}
  56.                         <div class="glide__controls-container" data-glide-el="controls">
  57.                             <div class="glide__controls-item" data-glide-dir="<"><img class="glide__controls-img" src="{{ asset('bundles/app/images/controls_left.png') }}" alt=""/></div>
  58.                             <div class="glide__controls-item" data-glide-dir=">"><img class="glide__controls-img" src="{{ asset('bundles/app/images/controls_right.png') }}" alt=""/></div>
  59.                         </div>
  60.                         <div class="glide__bullets-container"></div>
  61.                     {% endif %}
  62.                 </div>
  63.             </div>
  64.         </div>
  65.     {% endfor %}
  66. {% endif %}
  67. <script>
  68.     let slideData = [];
  69.     slideData[0] = [{{ bannerSlides|json_encode|raw }}][0];
  70.     let subpagesBanners = [{% if subPageBanners is defined %}{{ subPageBanners|json_encode|raw }}{% endif %}];
  71.     subpagesBanners.forEach(function (v) {
  72.         for (var key in v) {
  73.             slideData[key] = v[key];
  74.         }
  75.     });
  76.     $(document).ready(function () {
  77.         let slideElements = $('.glide__slides li');
  78.         let bulletsParent = $('.glide__bullets-container');
  79.         let newItem = '<div class="glide__bullets-item"></div>';
  80.         initBullets();
  81.         slideElements.on('classChange', function () {
  82.             switchActiveBullet(this);
  83.         });
  84.         function switchActiveBullet(slide) {
  85.             let el = $(slide);
  86.             let bullet = $('#bullet-' + (el[0].id).split("slide-")[1]);
  87.             el.hasClass('glide__slide--active')
  88.                 ? bullet.addClass('glide__bullets-item--active')
  89.                 : bullet.removeClass('glide__bullets-item--active');
  90.         }
  91.         function initBullets() {
  92.             var slideDataRaw = Array.from(slideData);
  93.             slideData = slideDataRaw.filter(function (el) {
  94.                 return el != null;
  95.             });
  96.             $.each(slideData, function (pk, data) {
  97.                 $.each(data, function (k, item) {
  98.                     let newBullet = $(newItem).attr('id', 'bullet-' + item.id);
  99.                     newBullet = newBullet.attr('style', 'order:' + item.order);
  100.                     let currentSlide = document.getElementById('slide-' + item.id);
  101.                     if ($(currentSlide).hasClass('glide__slide--active')) {
  102.                         newBullet.addClass('glide__bullets-item--active');
  103.                     }
  104.                     $(bulletsParent[pk]).append(newBullet);
  105.                 });
  106.             });
  107.             //classChange event
  108.             var observer = new MutationObserver(function (mutations) {
  109.                 mutations.forEach(function (mutation) {
  110.                     if (mutation.attributeName === "class") {
  111.                         $(mutation.target).trigger('classChange');
  112.                     }
  113.                 });
  114.             });
  115.             //register
  116.             $.each(slideElements, function (k, item) {
  117.                 observer.observe(item, {
  118.                     attributes: true
  119.                 });
  120.             });
  121.         }
  122.     });
  123. </script>