templates/model/collection.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Collection complète{% endblock %}
  3. {% block body %}
  4.     <div style="width: 100%;">
  5.         <section class='topPageCollection'>
  6. {#                <div class="firstPart">#}
  7. {#                    <h3 class="lists-title">Ecusson.</h3>#}
  8. {#                </div>#}
  9.                 <div class="subtitleCollection">
  10.                     <span class="mt-5">Le site est en cours de remplissage.<br>
  11.                     À venir, plus de 8 000 écussons. Merci de prendre contact pour plus d'informations.
  12.                     </span>
  13.                     <p>Nombre total d'écussons en base : {{ count }}</p>
  14.                 </div>
  15.             {{ form_start(form2, {'method': 'GET'}) }}
  16.                 <span class="searchPart">
  17.                     <i class="fa-solid fa-magnifying-glass" style="color: #ffffff;"></i>
  18.                         {{ form_row(form2.search) }}
  19.                     <button type="submit" class="btn btn-grad rounded-pill">Rechercher</button>
  20.                 </span>
  21.             {{ form_end(form2) }}
  22.             <div class="converter-list">
  23.                 <button id="list-button">
  24.                     <i class="fa-solid fa-list"></i>
  25.                 </button>
  26.                 <button id="grid-button">
  27.                     <i class="fa-solid fa-table-cells-large"></i>
  28.                 </button>
  29.             </div>
  30.             {{ form_start(form, {'method': 'GET'}) }}
  31.                 <div class="filterdiv">
  32.                         {{ form_row(form.categorie) }}
  33.                         {{ form_row(form.sousCategorie) }}
  34.                         {{ form_row(form.p) }}
  35.                         {{ form_row(form.tags) }}
  36.                     <button type="submit" class="btn btn-grad rounded-pill">Filtrer</button>
  37.                 </div>
  38.             {{ form_end(form) }}
  39.         </section>
  40.         <section>
  41.             <div class="results-filter">
  42.                 <span>{{ pageCount }} écussons pour cette recherche</span>
  43.             </div>
  44.             <div class="row block grid-collection" id="content-collection">
  45.                 {% for model in models %}
  46.                     <div class="card">{% if model.photos is empty %}
  47.                             <img src="/images/logo_ecusson_bleu_grand_format.png" class="img-fluid rounded- " alt="logo_ecusson_bleu_grand_format">
  48.                         {% else %}
  49.                             <img src="{{ model.photos[0].chemin }}" class="img-fluid rounded- " alt="">
  50.                         {% endif %}
  51.                         <h5>{{ model.titre }}</h5>
  52.                         {% if 'ROLE_ADMIN' in app.user.roles %}
  53.                             <span class="qty">x{{ model.nb > 10 ? model.nb : '0'~model.nb }}</span>
  54.                         {% else %}
  55.                             <br>
  56.                         {% endif %}
  57.                         <div class="card-body">
  58.                             <ul>
  59.                                 <li class="title-category">Catégories :</li>
  60.                             {% for categorie in model.categories %}
  61.                                 <li>
  62.                                     {{ categorie.nom }}
  63.                                 </li>
  64.                             {% endfor %}
  65.                             </ul>
  66.                         </div>
  67.                         <div class="bottom-card">
  68.                             <a href="{{ path('app_model_show', {'id':model.id}) }}" class="link" >En savoir plus</a>
  69.                         </div>
  70.                     </div>
  71.                 {% endfor %}
  72.             </div>
  73.             {{ knp_pagination_render(models) }}
  74.         </div>
  75.     </section>
  76. {% endblock %}
  77. {% block javascripts %}
  78.     {{ encore_entry_script_tags('app') }}
  79. {#    <script type="text/javascript">#}
  80. {#        let listButton = document.getElementById('list-button')#}
  81. {#        let gridButton = document.getElementById('grid-button')#}
  82. {#        let contentCollection = document.getElementById('content-collection')#}
  83. {#        gridButton.classList.add('active')#}
  84. {#        listButton.addEventListener('click', () => {#}
  85. {#                contentCollection.classList.remove('grid-collection')#}
  86. {#                contentCollection.classList.add('list-collection')#}
  87. {#                listButton.classList.add('active')#}
  88. {#                gridButton.classList.remove('active')#}
  89. {#        })#}
  90. {#        gridButton.addEventListener('click', () => {#}
  91. {#            contentCollection.classList.remove('list-collection');#}
  92. {#            contentCollection.classList.add('grid-collection');#}
  93. {#            gridButton.classList.add('active');#}
  94. {#            listButton.classList.remove('active')#}
  95. {#        })#}
  96. {#        $('.select2').select2();#}
  97. {#    </script>#}
  98.     <script type="text/javascript">
  99.         // Fonction pour ajouter ou mettre à jour un paramètre d'URL
  100.         function updateURLParameter(url, param, value) {
  101.             var re = new RegExp("([?&])" + param + "=.*?(&|$)", "i");
  102.             var separator = url.indexOf('?') !== -1 ? "&" : "?";
  103.             if (url.match(re)) {
  104.                 return url.replace(re, '$1' + param + "=" + value + '$2');
  105.             } else {
  106.                 return url + separator + param + "=" + value;
  107.             }
  108.         }
  109.         let listButton = document.getElementById('list-button')
  110.         let gridButton = document.getElementById('grid-button')
  111.         let contentCollection = document.getElementById('content-collection')
  112.         // Récupérer le mode actuel depuis l'URL
  113.         const currentMode = new URLSearchParams(window.location.search).get('view');
  114.         if (currentMode === 'list') {
  115.             // Si le mode actuel est "list", activer le bouton "list" et appliquer la classe CSS
  116.             contentCollection.classList.remove('grid-collection');
  117.             contentCollection.classList.add('list-collection');
  118.             listButton.classList.add('active');
  119.             gridButton.classList.remove('active');
  120.         } else {
  121.             // Par défaut, activer le bouton "grid"
  122.             gridButton.classList.add('active');
  123.         }
  124.         listButton.addEventListener('click', () => {
  125.             // Lorsque l'utilisateur clique sur le bouton "list", mettre à jour l'URL avec le mode "list"
  126.             window.location.href = updateURLParameter(window.location.href, 'view', 'list');
  127.         })
  128.         gridButton.addEventListener('click', () => {
  129.             // Lorsque l'utilisateur clique sur le bouton "grid", mettre à jour l'URL avec le mode "grid"
  130.             window.location.href = updateURLParameter(window.location.href, 'view', 'grid');
  131.         })
  132.         $('.select2').select2();
  133.     </script>
  134. {% endblock %}