templates/front/actualites.html.twig line 1

Open in your IDE?
  1. {% extends 'base_front.html.twig' %}
  2. {% set queryParams = app.request.query.all %}
  3. {% block title %}{{ parent() }} | {{ rubrique.rubrique5.nom }}{% endblock %}
  4. {% block h1 %}{{ rubrique.rubrique5.nom }}{% endblock %}
  5. {% block ariane %}
  6.     <nav class="navigateur" aria-label="breadcrumb">
  7.         <ol class="breadcrumb">
  8.             <li class="breadcrumb-item"><a href="{{ path("home") }}">{{ config.titreAccueil }}</a></li>
  9.             <li class="breadcrumb-item active" aria-current="page">{{ rubrique.rubrique5.nom }}</li>
  10.         </ol>
  11.     </nav>
  12. {% endblock %}
  13. {% macro filter(queryParams) %}
  14.     <div class="col-4" id="filterZone">
  15.         <input id="searchInput" class="form-control bg-white rounded pl-40" placeholder="Rechercher" {% if queryParams is not empty and queryParams.recherche is defined %} value="{{queryParams.recherche}}" {% endif %}>
  16.         <i id="searchBtn" class="toggle-password-alone fa fa-search text-primary" ></i>
  17.         {% if queryParams is not empty and queryParams.recherche is defined %}
  18.             <i id="resetBtn" class="refresh fa fa-refresh text-danger"></i>
  19.         {% endif %}
  20.     </div>
  21.     {% set options = [
  22.         {
  23.             'k' : '',
  24.             'v' : 'Trier par :'
  25.         },
  26.         {
  27.             'k' : 'titre-croissant',
  28.             'v' : 'Titre A-Z'
  29.         },
  30.         {
  31.             'k' : 'titre-decroissant',
  32.             'v' : 'Titre Z-A'
  33.         },
  34.         {
  35.             'k' : 'date-croissante',
  36.             'v' : 'Date croissante'
  37.         },
  38.         {
  39.             'k' : 'date-decroissante',
  40.             'v' : 'Date décroissante'
  41.         },
  42.     ] %}
  43.     <div class="col-2">
  44.         <select class="bg-white rounded form-control" id="ordonnance">
  45.             {% for option in options %}
  46.                 <option {% if queryParams is not empty and queryParams.ordre is defined and queryParams.ordre == option.k %} selected {% endif %} value="{{option.k}}">{{option.v|raw}}</option>
  47.             {% endfor %}
  48.         </select>
  49.     </div>
  50. {% endmacro %}
  51. {% block body %}
  52.     {% if rubrique.rubrique5.srcImg %}
  53.         <div class="mx-12">
  54.             <img 
  55.                 src="{{ asset('images/rubrique/' ~ rubrique.rubrique5.srcImg) }}" 
  56.                 {% if rubrique.rubrique5.altImg %}
  57.                     alt="{{ rubrique.rubrique5.altImg }}" 
  58.                 {% endif %}
  59.                 {% if rubrique.rubrique5.titleImg %}
  60.                     title="{{ rubrique.rubrique5.titleImg }}" 
  61.                 {% endif %}
  62.                 class="imgRatio w-100 rounded"
  63.             >
  64.         </div>
  65.     {% endif %}
  66.     {% if rubrique.rubrique5.description %}
  67.         <div class="my-4 mx-12 ck bg-white p-4 rounded">{{ rubrique.rubrique5.description|raw }}</div>
  68.     {% endif %}
  69.     {# <div class="row justify-content-center mx-12"> #}
  70.     {% if droits %}
  71.         <div class="row justify-content-between mx-0 mt-4">
  72.             <div class="col-6"></div>
  73.             {{ _self.filter(queryParams) }}
  74.         </div>
  75.         <div id="zoneContent">
  76.             {% include "front/_actualite_data.html.twig" %}
  77.         </div>
  78.     {% endif %}
  79. {% endblock %}
  80. {% block javascripts %}
  81.     <script>
  82.         $("#searchBtn").click(function() {
  83.             updateData();
  84.         });
  85.         $("#ordonnance").change(function() {
  86.             updateData();
  87.         });
  88.         $('body').on('click', '#resetBtn', function() {
  89.             $("#searchInput").val('');
  90.             $('#ordonnance').prop('selectedIndex', 0);
  91.             
  92.             updateData();
  93.         });
  94.         function updateData(){
  95.             var inputValue = $("#searchInput").val();
  96.             const selectElement = document.querySelector("#ordonnance");
  97.             const selectedValue = selectElement.value;
  98.             const Params = new URLSearchParams();
  99.             Params.append('page', "{{page}}");
  100.             if(inputValue){
  101.                 Params.append('recherche', inputValue);
  102.             }
  103.             if(selectedValue){
  104.                 Params.append('ordre', selectedValue);
  105.             }
  106.             
  107.             const Url = new URL(window.location.href);
  108.     
  109.             fetch(Url.pathname + "?" + Params.toString() + "&ajax=xxx", {
  110.                 headers: {
  111.                     "X-Requested-With": "XMLHttpRequest"
  112.                 }
  113.             }).then(response => {
  114.                 return response.json()
  115.             }).then(data => {
  116.                 
  117.               const content = document.querySelector("#zoneContent");
  118.               content.innerHTML = data.content;
  119.               history.pushState({}, null, Url.pathname + "?" + Params.toString());
  120.  
  121.               if ($('#resetBtn').length > 0) {
  122.                 $('#resetBtn').remove();
  123.               }
  124.               if (inputValue){
  125.                 $('#filterZone').each(function() {
  126.                     $(this).append('<i id="resetBtn" class="refresh fa fa-refresh text-danger"></i>');
  127.                 });
  128.               }
  129.             
  130.             }).catch(e => alert(e));
  131.         }
  132.     </script>
  133.     
  134. {% endblock %}