templates/actualite/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}CEP-I Actualités{% endblock %}
  3. {% block stylesheets %}
  4.   <link rel="shortcut icon" type="image/x-icon" href="/assets/images/favicon.ico">
  5.   <link rel="stylesheet" type="text/css" href="/assets/vendor/magnific-popup.css">
  6.   <link rel="stylesheet" type="text/css" href="/assets/vendor/slick-master/slick/slick.css">
  7.   <link rel="stylesheet" type="text/css" href="/assets/vendor/selectric/public/selectric.css">
  8.   <link rel="stylesheet" type="text/css" href="/assets/css/bundle.css">
  9.   <script src="/assets/vendor/jquery-3.1.1.min.js"></script>
  10. {% endblock %}
  11. {% block breadcrumps %}
  12.   <div class="breadcrumps">
  13.     <div class="shell">
  14.       <ul>
  15.         <li>
  16.           <a href="{{ path('accueil') }}">Accueil</a>
  17.         </li>
  18.         <li>
  19.           <a href="{{ path('actualites') }}">Actualités</a>
  20.         </li>
  21.       </ul>
  22.     </div><!-- /.shell -->
  23.   </div><!-- /.breadcrumps -->
  24. {% endblock %}
  25. {% block body %}
  26.   <div class="filters">
  27.     <div class="shell">
  28.       <h2 class="filters__title">Actualités</h2>
  29.       <a href="#" class="btn btn-filter visible-mobile">
  30.         <i class="ico-filter"></i> Filtrer Les Actualités
  31.       </a>
  32.       <div class="filters__inner filters__inner--alt">
  33.         <form id="filtres">
  34.           <h4>Filtrer les actualités</h4>
  35.           <ul class="list-checkboxes list-checkboxes--alt">
  36.             {% set filtres = util_service.getArticlesFiltresLabel() %}
  37.             {% for val, label in filtres %}
  38.               <li>
  39.                 <div class="checkbox checkbox--alt">
  40.                   <input name="filtre[]" value="{{ val}}" type="checkbox" id="ch{{ val }}"">
  41.                   <label for="ch{{ val }}">{{ label }}</label>
  42.                 </div><!-- /.checkbox -->
  43.               </li>
  44.             {% endfor %}
  45.           </ul><!-- /.list-checkboxes -->
  46.           <div class="filters__actions">
  47.             <button class="btn btn--size3">
  48.               <i class="ico-arrow-white"></i> Valider
  49.             </button>
  50.           </div><!-- /.filters__actions -->
  51.         </form>
  52.       </div><!-- /.filters__inner -->
  53.     </div><!-- /.shell -->
  54.   </div><!-- /.filters -->
  55.   <section class="section section--features-alt">
  56.     <div class="shell">
  57.       <div class="features features--primary" id="actualites">
  58.       </div><!-- /.features -->
  59.       <div style="display: none;" class="chargement" id="chargement">Chargement...</div>
  60.     </div><!-- /.shell -->
  61.   </section><!-- /.section -->
  62.   {% include '__includes__/newsletterForm.html.twig' %}
  63.   <script>
  64.     let styleDynamicImage = function() {
  65.       let imageFigures = document.getElementsByClassName('figure-image');
  66.       for (let figure of imageFigures) {
  67.         let img = figure.getElementsByTagName('img')[0];
  68.         if (img.naturalHeight > img.naturalWidth) {
  69.           figure.style.maxWidth = 'none';
  70.           img.style.maxHeight = '320px';
  71.         }
  72.       }
  73.     };
  74.     window.onload = styleDynamicImage;
  75.     let page = 0;
  76.     let filtres = '';
  77.     let encours = false;
  78.     function chargerActualites() {
  79.         if (encours) return;
  80.         if (page === -1) return;
  81.         encours = true;
  82.         $('#chargement').show();
  83.         let dicoCats = {
  84.           {% for clef, val in util_service.getArticlesLabel() %}
  85.             {{ clef }} : "{{ val }}",
  86.           {% endfor %}
  87.         };
  88.         $.get( "{{ path('ajax_actualites') }}/" + page + '/' + filtres, function( data ) {
  89.             encours = false;
  90.             $('#chargement').hide();
  91.             if (!data) {
  92.                 page = -1;
  93.                 return;
  94.             }
  95.             data = JSON.parse(data);
  96.             if (!data || !data.length) {
  97.                 page = -1;
  98.                 return;
  99.             }
  100.             let actualites = $('#actualites');
  101.             for (let i in data) {
  102.                 let actualite = data[i];
  103.                 let cats = actualite.category.split(',').map(x => dicoCats[x] ? dicoCats[x] : '').join(' ');
  104.                 let style = actualite.image ? 'background-image: url(\'/assets/uploads/actualite/' + actualite.id + '/' + actualite.image + '\')' : 'background-color:#A0C32E';
  105.                 let ele = $('<div class="feature feature--alt">\n' +
  106.                     '          <a href="/actualite/view/'+actualite.link+'">\n' +
  107.                     '            <div class="feature__image" style="'+style+'"></div><!-- /.feature__image -->\n' +
  108.                     '\n' +
  109.                     '            <div class="feature__body">\n' +
  110.                     '              <h5>' + cats + '</h5>\n' +
  111.                     '\n' +
  112.                     '              <p>' + actualite.title + '</p>\n' +
  113.                     '            </div><!-- /.feature__body -->\n' +
  114.                     '          </a>\n' +
  115.                     '        </div><!-- /.feature -->');
  116.                 actualites.append(ele);
  117.             }
  118.             page++;
  119.         });
  120.     }
  121.     $(function() {
  122.         chargerActualites();
  123.         $( "#filtres" ).submit(function( event ) {
  124.             event.preventDefault();
  125.             let f = $(this).serializeArray();
  126.             filtres = [];
  127.             for (let i in f) {
  128.                 filtres.push(f[i].value);
  129.             }
  130.             filtres = filtres.join(',');
  131.             page = 0;
  132.             $('#actualites').empty();
  133.             chargerActualites();
  134.         });
  135.         $(window).scroll(function() {
  136.             if($(window).scrollTop() + $(window).height() >= $(document).height() - 400) {
  137.                 chargerActualites();
  138.             }
  139.         });
  140.     });
  141.   </script>
  142. {% endblock %}
  143. {% block javascripts %}
  144.   <script src="/assets/vendor/magnific-popup.js"></script>
  145.   <script src="/assets/vendor/slick-master/slick/slick.min.js"></script>
  146.   <script src="/assets/vendor/selectric/public/jquery.selectric.min.js"></script>
  147.   <script src="/assets/vendor/jquery-scrollLock.min.js"></script>
  148.   <script src="/assets/vendor/validator.js"></script>
  149.   <script src="/assets/js/bundle.js"></script>
  150. {% endblock %}