templates/campus/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block page_contents %}
  3. <section class="section section-page-title bg-gradient py-xl-5 py-4" data-aos='fade-down'>
  4.   <div class="container">
  5.     <div class="row">
  6.       <div class="col-12 text-center text-white">
  7.         <h1 class="page-name font-weight-bold my-2">{% trans %}Nos Campus ÉSTIAM{% endtrans %}</h1>
  8.       </div>
  9.     </div>
  10.   </div>
  11. </section>
  12. <section class="section section-campus-gallery mb-xl-5 mb-4">
  13.   <div class="container-fluid px-0 position-relative">
  14.     <div class="row">
  15.       <div class="col"><img src="{{ asset('assets/images/campus/i-1.jpg') }}?v=1" data-aos='zoom-in'></div>
  16.       <div class="col"><img src="{{ asset('assets/images/campus/i-2.jpg') }}?v=1" data-aos='zoom-in'></div>
  17.       <div class="col"><img src="{{ asset('assets/images/campus/i-3.jpg') }}?v=1" data-aos='zoom-in'></div>
  18.       <div class="col"><img src="{{ asset('assets/images/campus/i-4.jpg') }}?v=1" data-aos='zoom-in'></div>
  19.       <div class="col"><img src="{{ asset('assets/images/campus/i-5.jpg') }}?v=1" data-aos='zoom-in'></div>
  20.       <div class="col"><img src="{{ asset('assets/images/campus/i-6.jpg') }}?v=1" data-aos='zoom-in'></div>
  21.       <div class="col"><img src="{{ asset('assets/images/campus/i-7.jpg') }}?v=1" data-aos='zoom-in'></div>
  22.       <div class="col"><img src="{{ asset('assets/images/campus/i-8.jpg') }}?v=1" data-aos='zoom-in'></div>
  23.     </div>
  24.   </div>
  25. </section>
  26. <section class="section mb-xl-5 mb-4" data-aos='fade-down'>
  27.   <div class="container">
  28.     <div class="row">
  29.       <div class="col-12">
  30.         <div class="section-title mb-4"><span>/</span> Des Campus à taille humaine partout en France</div>
  31.         <div>
  32.           <p>Dans un souci de préserver la relation entre étudiants et équipe pédagogique, ÉSTIAM fait le choix de créer des petits campus, plutôt que de grands pôles impersonnels.<br/>
  33.           Cela permet aussi de s’assurer que la pédagogie et le savoir-faire ÉSTIAM sont implémentés et conservés dans chacun des campus.<br/>
  34.           Chaque établissement est habilité à recevoir des personnes en situation de handicap (sous réserve que la situation de santé de la personne soit stabilisée, de l’absence de contre-indications à l’exercice de la profession et dans la limite d’aménagements raisonnables - loi du 11 février 2005)</p>
  35.         </div>
  36.       </div>
  37.       <div class="col-12 campus-tags text-center mt-2">
  38.         {% for campus in campuses %}
  39.           <a href="{{ path('campus_detail', { slug : campus.slug }) }}">{{ campus.name }}</a>
  40.         {% endfor %}
  41.       </div>
  42.     </div>
  43.   </div>
  44. </section>
  45. {% if country != 'MA' %}
  46. <section class="section section-map" data-aos='fade-up'>
  47.     <div id="home-map"></div>
  48.     <script src="https://maps.google.com/maps/api/js?&region=France&key=AIzaSyAAq_3rBXv_JZgDNmNZMuIARuTCkkyf1VY" type="text/javascript"></script>
  49.     <script type="text/javascript">
  50.       window.addEventListener('load', function(e) {
  51.         var infowindow
  52.         var infoWindowTimeout
  53.         var mouseOverInfoWindow = false;
  54.         function addOpenInfoWindowListeners() {
  55.           var infoWindowElement = document.querySelector('.gm-style .gm-style-iw');
  56.           infoWindowElement.addEventListener('mouseout', function(event) {
  57.             console.log('mouseout info', event)
  58.             const toElement = event.relatedTarget || event.toElement
  59.             if (infoWindowElement !== event.target || toElement.nodeName === 'A') {
  60.               event.stopPropagation()
  61.               return
  62.             }
  63.             infowindow.close()
  64.             mouseOverInfoWindow = false;
  65.           });
  66.           infoWindowElement.addEventListener('mouseover', function(event) {
  67.             mouseOverInfoWindow = true;
  68.           });
  69.         }
  70.         async function runBlockMap(centers) {
  71.           //init map
  72.           var map = new google.maps.Map(document.getElementById('home-map'), {
  73.             zoom: 5.8,
  74.             center: new google.maps.LatLng(46.1314134,2.4349967),
  75.             mapTypeId: google.maps.MapTypeId.ROADMAP
  76.           });
  77.           /*
  78.           const bounds = new google.maps.LatLngBounds(
  79.             new google.maps.LatLng(41.2632185,-5.4534286),
  80.             new google.maps.LatLng(51.268318, 9.8678344)
  81.           )
  82.           */
  83.           const image = {
  84.             url: "{{ asset('assets/images/icons/icon-location-purple.png') }}",
  85.             size: new google.maps.Size(27, 38)
  86.           };
  87.           //create markers of specified cities
  88.           for (let i = 0; i < centers.length; i++) {
  89.             const latlng = new google.maps.LatLng(centers[i]['latitude'], centers[i]['longtitude'])
  90.             const marker = new google.maps.Marker({
  91.               position: latlng,
  92.               map: map,
  93.               icon: image
  94.             });
  95.             //bounds.extend(latlng);
  96.             marker.addListener('mouseover', function() {
  97.               if (infoWindowTimeout) clearTimeout(infoWindowTimeout);
  98.               try{
  99.                 infowindow.close()
  100.                 clearTimeout(infoWindowTimeout)
  101.               } catch(e) {}
  102.               infowindow = new google.maps.InfoWindow({
  103.                 content:  centers[i].infoContent
  104.               });
  105.               infowindow.open(map, marker);
  106.               google.maps.event.addListener(infowindow, 'domready', function() {
  107.                 addOpenInfoWindowListeners();
  108.               })
  109.             });
  110.             marker.addListener('mouseout', function() {
  111.               infoWindowTimeout = setTimeout(function() {
  112.                 if (!mouseOverInfoWindow) {
  113.                   infowindow.close()
  114.                   mouseOverInfoWindow = false;
  115.                 }
  116.               }, 400);
  117.             });
  118.             if(window.innerWidth<767){
  119.               infowindow = new google.maps.InfoWindow({
  120.                 content:  centers[i].infoContent
  121.               });
  122.               infowindow.close(marker.get("map"), marker);
  123.               google.maps.event.addListener(marker, 'click', (function(marker, i) {
  124.                 return function() {
  125.                   infowindow.open(map, marker);
  126.                 }
  127.               })(marker, i));
  128.             }
  129.           }
  130.         }
  131.         const centers = {{ centers | json_encode() | raw }};
  132.         runBlockMap(centers);
  133.       });
  134.     </script>
  135. </section>
  136. {% endif %}
  137. {% endblock %}