templates/model/collection.html.twig line 18

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.                     {% if 'ROLE_ADMIN' in app.user.roles %}
  37.                         {{ form_row(form.ia) }}
  38.                     {% endif %}
  39.                     <button type="submit" class="btn btn-grad rounded-pill">Filtrer</button>
  40.                 </div>
  41.             {{ form_end(form) }}
  42.         </section>
  43.         <section>
  44.             <div class="results-filter">
  45.                 <span>{{ pageCount }} écussons pour cette recherche</span>
  46.             </div>
  47.             <div class="row block grid-collection" id="content-collection">
  48.                 {% for model in models %}
  49.                     <div class="card">{% if model.photos is empty %}
  50.                             <img src="/images/logo_ecusson_bleu_grand_format.png" class="img-fluid rounded- " alt="logo_ecusson_bleu_grand_format">
  51.                         {% else %}
  52.                             <img style="height: 400px" src="{{ model.photos[0].chemin }}" class="img-fluid rounded- " alt="">
  53.                         {% endif %}
  54.                         {% if model.genereParIa %}
  55.                             <span class="btn-genere-ia {% if model.iaValide %}ia-valide{% endif %}">inséré via IA</span>
  56.                         {% endif %}
  57.                         <h5>{{ model.titre }}</h5>
  58.                         {% if 'ROLE_ADMIN' in app.user.roles %}
  59.                             <span class="qty">x{{ model.nb > 10 ? model.nb : '0'~model.nb }}</span>
  60.                         {% else %}
  61.                             <br>
  62.                         {% endif %}
  63.                         <div class="card-body">
  64.                             <ul>
  65.                                 <li class="title-category">Catégories :</li>
  66.                             {% for categorie in model.categories %}
  67.                                 <li>
  68.                                     {{ categorie.nom }}
  69.                                 </li>
  70.                             {% endfor %}
  71.                             </ul>
  72.                         </div>
  73.                         <div class="bottom-card">
  74.                             <a href="{{ path('app_model_show', {'id':model.id}) }}" class="link" >En savoir plus</a>
  75.                         </div>
  76.                     </div>
  77.                 {% endfor %}
  78.             </div>
  79.             {{ knp_pagination_render(models) }}
  80.         </div>
  81.     </section>
  82. {% endblock %}
  83. {% block javascripts %}
  84.     {{ encore_entry_script_tags('app') }}
  85. {#    <script type="text/javascript">#}
  86. {#        let listButton = document.getElementById('list-button')#}
  87. {#        let gridButton = document.getElementById('grid-button')#}
  88. {#        let contentCollection = document.getElementById('content-collection')#}
  89. {#        gridButton.classList.add('active')#}
  90. {#        listButton.addEventListener('click', () => {#}
  91. {#                contentCollection.classList.remove('grid-collection')#}
  92. {#                contentCollection.classList.add('list-collection')#}
  93. {#                listButton.classList.add('active')#}
  94. {#                gridButton.classList.remove('active')#}
  95. {#        })#}
  96. {#        gridButton.addEventListener('click', () => {#}
  97. {#            contentCollection.classList.remove('list-collection');#}
  98. {#            contentCollection.classList.add('grid-collection');#}
  99. {#            gridButton.classList.add('active');#}
  100. {#            listButton.classList.remove('active')#}
  101. {#        })#}
  102. {#        $('.select2').select2();#}
  103. {#    </script>#}
  104.     <script type="text/javascript">
  105.         // Fonction pour ajouter ou mettre à jour un paramètre d'URL
  106.         function updateURLParameter(url, param, value) {
  107.             var re = new RegExp("([?&])" + param + "=.*?(&|$)", "i");
  108.             var separator = url.indexOf('?') !== -1 ? "&" : "?";
  109.             if (url.match(re)) {
  110.                 return url.replace(re, '$1' + param + "=" + value + '$2');
  111.             } else {
  112.                 return url + separator + param + "=" + value;
  113.             }
  114.         }
  115.         let listButton = document.getElementById('list-button')
  116.         let gridButton = document.getElementById('grid-button')
  117.         let contentCollection = document.getElementById('content-collection')
  118.         // Récupérer le mode actuel depuis l'URL
  119.         const currentMode = new URLSearchParams(window.location.search).get('view');
  120.         if (currentMode === 'list') {
  121.             // Si le mode actuel est "list", activer le bouton "list" et appliquer la classe CSS
  122.             contentCollection.classList.remove('grid-collection');
  123.             contentCollection.classList.add('list-collection');
  124.             listButton.classList.add('active');
  125.             gridButton.classList.remove('active');
  126.         } else {
  127.             // Par défaut, activer le bouton "grid"
  128.             gridButton.classList.add('active');
  129.         }
  130.         listButton.addEventListener('click', () => {
  131.             // Lorsque l'utilisateur clique sur le bouton "list", mettre à jour l'URL avec le mode "list"
  132.             window.location.href = updateURLParameter(window.location.href, 'view', 'list');
  133.         })
  134.         gridButton.addEventListener('click', () => {
  135.             // Lorsque l'utilisateur clique sur le bouton "grid", mettre à jour l'URL avec le mode "grid"
  136.             window.location.href = updateURLParameter(window.location.href, 'view', 'grid');
  137.         })
  138.         $('.select2').select2();
  139.     </script>
  140. {% endblock %}