templates/front/ssr35c.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() }} | {{ r.nom }} | {{ ssr.nom }} | {{ categorie.nom }}{% endblock %}
  4. {% block h1 %}{{ categorie.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.             {% if rubrique.rubrique3.statut %}
  10.                 <li class="breadcrumb-item"><a href="{{ path('rubriques', {slug:r.slug })}}">{{ r.nom }}</a></li>
  11.             {% endif %}
  12.             <li class="breadcrumb-item"><a href="{{ path('ssrubriques', {slug: r.slug, slug2 : ssr.slug })}}">{{ ssr.nom }}</a></li>
  13.             <li class="breadcrumb-item active" aria-current="page">{{ categorie.nom }}</li>
  14.         </ol>
  15.     </nav>
  16. {% endblock %}
  17. {% macro filter(queryParams) %}
  18.     <div class="col-4" id="filterZone">
  19.         <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 %}>
  20.         <i id="searchBtn" class="toggle-password-alone fa fa-search text-primary" ></i>
  21.         {% if queryParams is not empty and queryParams.recherche is defined %}
  22.             <i id="resetBtn" class="refresh fa fa-refresh text-danger"></i>
  23.         {% endif %}
  24.     </div>
  25.     {% set options = [
  26.         {
  27.             'k' : '',
  28.             'v' : 'Trier par :'
  29.         },
  30.         {
  31.             'k' : 'titre-croissant',
  32.             'v' : 'Titre A-Z'
  33.         },
  34.         {
  35.             'k' : 'titre-decroissant',
  36.             'v' : 'Titre Z-A'
  37.         },
  38.         {
  39.             'k' : 'date-croissante',
  40.             'v' : 'Date croissante'
  41.         },
  42.         {
  43.             'k' : 'date-decroissante',
  44.             'v' : 'Date décroissante'
  45.         },
  46.     ] %}
  47.     <div class="col-2">
  48.         <select class="bg-white rounded form-control" id="ordonnance">
  49.             {% for option in options %}
  50.                 <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>
  51.             {% endfor %}
  52.         </select>
  53.     </div>
  54. {% endmacro %}
  55. {% block body %}
  56.     {% if app.user %}
  57.         {% set co = true %}
  58.     {% else %}
  59.         {% set co = false %}
  60.     {% endif %}
  61.     <input type="hidden" value="{{co}}" id="co">
  62.     {% set acces = false %}
  63.     {% if form2.children.titre.vars.errors is not empty %}
  64.         {% set acces = true %}
  65.     {% endif %}
  66.     {% if form2.children.description.vars.errors is not empty %}
  67.         {% set acces = true %}
  68.     {% endif %}
  69.     {# {% if form2.children.fichier.vars.errors is not empty %}
  70.         {% set acces = true %}
  71.     {% endif %} #}
  72.     {% if form2.children.souscategorie.vars.errors is not empty %}
  73.         {% set acces = true %}
  74.     {% endif %}
  75.      <input type="hidden" id="acces" value="{{acces}}">
  76.     <input type="hidden" id="test" value="{{app.session.get('test')}}">
  77.     {% if categorie.srcImg %}
  78.         <div class="mx-12">
  79.             <img 
  80.                 src="{{ asset('images/categorie/' ~ categorie.srcImg) }}" 
  81.                 {% if categorie.altImg %}
  82.                     alt="{{ categorie.altImg }}" 
  83.                 {% endif %}
  84.                 {% if categorie.titleImg %}
  85.                     title="{{ categorie.titleImg }}" 
  86.                 {% endif %}
  87.                 class="imgRatio rounded"
  88.             >
  89.         </div>
  90.     {% endif %}
  91.     {% if categorie.description %}
  92.         <div class="my-4 mx-12  bg-white p-4 rounded ck">{{ categorie.description|raw }}</div>
  93.     {% endif %}
  94.     {% if app.user %}
  95.         <div class="row justify-content-between mx-0 mt-4">
  96.             <div class="col-6">
  97.                 <button type="button" class="btn btn-primary rounded" data-bs-toggle="modal" data-bs-target="#exampleModalAdd">
  98.                     Ajouter
  99.                 </button>
  100.             </div>
  101.             {% if items %}
  102.                 {{ _self.filter(queryParams) }}
  103.             {% endif %}
  104.         </div>
  105.     {% else %}
  106.         <div class="mx-12 bg-white p-4 rounded">
  107.             <h3 class="text-center">{{ ssr.info }}, {% include '_connexion_bouton.html.twig' with {'contenu': 'connectez-vous', 'class': "lien" } %} ou <a class="lien" href="{{ path('app_register')}}">créez votre compte</a></h3>
  108.         </div>
  109.         {% if items %}
  110.             <div class="row justify-content-between mx-0 mt-4">
  111.                 <div class="col-6"></div>
  112.                 {{ _self.filter(queryParams) }}
  113.             </div>
  114.         {% endif %}
  115.     {% endif %}
  116.     {# {% if array %}
  117.         {% if h2 %}
  118.             <h2 class="my-4 mx-12 text-center bg-white p-4 rounded">{{h2}}</h2>
  119.         {% endif %}
  120.         
  121.         <div class="row justify-content-center mx-0">
  122.             
  123.             <div class="col-md-3">
  124.                 {% include 'front/_ssr35c_filter.html.twig' with {form: form} only %}
  125.             </div>
  126.             <div class="col-md-9 row mx-0">
  127.                 {% set ago = agoras|sort((a, b) => b.validedAt|date('YmdHis') - a.validedAt|date('YmdHis')) %}
  128.                 {% for agora in ago %}
  129.                     <div class="col-sm-12 col-md-12 col-lg-12  mt-4">
  130.                         <div class="p-4 bg-white rounded">
  131.                             <div class="text-end">
  132.                                 <p class="fst-italic m-0">{{ agora.createdAt|date('d/m/Y') }}</p>
  133.                             </div>
  134.                             <h3 class="text-center titreh3">{{agora.nom}}</h3> 
  135.                             {% if agora.description %}
  136.                                 {{ agora.description|nl2br}}
  137.                             {% endif %}
  138.                         </div>
  139.                     </div>
  140.                 {% endfor %}
  141.             </div>
  142.         </div>
  143.     {% else %}
  144.         <h4 class="text-center text-danger fst-italic my-4  mx-12 bg-white p-4 rounded">{{ config.messageDefault }}</h4>
  145.     {% endif %} #}
  146.     {% if items %}
  147.         <div id="zoneContent">
  148.             {% include "front/_ssr35_agora.html.twig" %}
  149.         </div>
  150.     {% endif %}
  151.     
  152.     {% if app.user %}
  153.         <div class="modal fade" id="exampleModalAdd" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  154.             <div class="modal-dialog modal-xl">
  155.                 {{form_start(form2)}}
  156.                     <div class="modal-content">
  157.                     <div class="modal-header">
  158.                         <h1 class="modal-title fs-5" id="exampleModalLabel">Ajouter une compétence</h1>
  159.                         <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  160.                     </div>
  161.                     <div class="modal-body row">
  162.                         <div class="col-12">
  163.                             {{ form_row(form2.titre) }}
  164.                         </div>
  165.                         <div class="col-12">
  166.                             {{ form_row(form2.souscategorie) }}
  167.                         </div>
  168.                         <div class="col-12">
  169.                             {{ form_row(form2.description) }}
  170.                         </div>
  171.                         <div class="col-12">
  172.                             {{ form_row(form2.fichier) }}
  173.                         </div>
  174.                         
  175.                         {% if form2.entite is defined %}
  176.                             <div class="col-md-4">
  177.                                 {{ form_row(form2.nom, {'attr' : {'value' : app.user.nom}}) }}
  178.                             </div>
  179.                             <div class="col-md-4">
  180.                                 {{ form_row(form2.prenom, {'attr' : {'value' : app.user.prenom}}) }}
  181.                             </div>
  182.                             
  183.                             
  184.                             <div class="col-md-4">
  185.                                 {{ form_row(form2.entite) }}
  186.                             </div>
  187.                         {% else %}
  188.                             <div class="col-md-6">
  189.                                 {{ form_row(form2.nom, {'attr' : {'value' : app.user.nom}}) }}
  190.                             </div>
  191.                             <div class="col-md-6">
  192.                                 {{ form_row(form2.prenom, {'attr' : {'value' : app.user.prenom}}) }}
  193.                             </div>
  194.                         {% endif %}
  195.         
  196.                         <div class="col-md-6">
  197.                             {{ form_row(form2.grade) }}
  198.                         </div>
  199.                         <div class="col-md-6">
  200.                             {{ form_row(form2.direction) }}
  201.                         </div>
  202.           
  203.                         
  204.     
  205.                     </div>
  206.                     <div class="modal-footer">
  207.                         <button type="button" title="En annulant, vous réinitialiserez le formulaire" class="btn btn-danger rounded" data-bs-dismiss="modal">Annuler</button>
  208.                         <button type="submit" class="btn btn-primary rounded">Ajouter</button>
  209.                     </div>
  210.                     </div>
  211.                 {{form_end(form2)}}
  212.             </div>
  213.         </div>
  214.     {% endif %}
  215. {% endblock %}
  216. {% block javascripts %}
  217.     <script src="{{ asset('js/cardShow.js') }}"></script>
  218.     <script>
  219.         let checkStatut = $('.checkStatut');
  220.         checkStatut.change(function()
  221.         {
  222.             let data = {
  223.                 "token" : $(this).data('token'),
  224.                 "uuid" : $(this).data('uuid')
  225.             }
  226.     
  227.             let url = "{{ path('change_front_statut_agora') }}";
  228.             $.ajax({
  229.                 method: 'post',
  230.                 dataType: 'json',
  231.                 url : url,
  232.                 data : data,
  233.                 success: function (data)
  234.                 {
  235.                     if(data.response){
  236.                         $('#droit' + data.token).remove();
  237.                     }
  238.                 },
  239.                 error: function()
  240.                 {
  241.                     alert('error');
  242.                 }
  243.             });
  244.         });
  245.         let acces = $("#acces").val();
  246.         if(acces){
  247.             var myModal = new bootstrap.Modal(document.getElementById('exampleModalAdd'))
  248.             myModal.show()
  249.         }
  250.         function confirmDelete(element) {
  251.             var confirmDelete = confirm('Êtes-vous sûr de vouloir supprimer cette astuce ?');
  252.             
  253.             if (confirmDelete) {
  254.                
  255.                 let data = {
  256.                     "uuid" : element.getAttribute('data-uuid'),
  257.                     "token" : element.getAttribute('data-token')
  258.                 }
  259.                 let url = "{{ path('supprimer_agora') }}";
  260.                 $.ajax({
  261.                     method: 'post',
  262.                     dataType: 'json',
  263.                     url : url,
  264.                     data : data,
  265.                     success: function (data)
  266.                     {
  267.                         if(data.response){
  268.                             $('#droit' + data.token).remove();
  269.                         }
  270.                         
  271.                     },
  272.                     error: function()
  273.                     {
  274.                         alert('Une erreur est survenue, veuillez recommencer');
  275.                     }
  276.                 });
  277.             } 
  278.         }
  279.         $("#searchBtn").click(function() {
  280.             updateData();
  281.         });
  282.         $("#ordonnance").change(function() {
  283.             updateData();
  284.         });
  285.         $('body').on('click', '#resetBtn', function() {
  286.             $("#searchInput").val('');
  287.             $('#ordonnance').prop('selectedIndex', 0);
  288.             
  289.             updateData();
  290.         });
  291.         function updateData(){
  292.             var inputValue = $("#searchInput").val();
  293.             const selectElement = document.querySelector("#ordonnance");
  294.             const selectedValue = selectElement.value;
  295.             const Params = new URLSearchParams();
  296.             Params.append('page', "{{page}}");
  297.             if(inputValue){
  298.                 Params.append('recherche', inputValue);
  299.             }
  300.             if(selectedValue){
  301.                 Params.append('ordre', selectedValue);
  302.             }
  303.             
  304.             const Url = new URL(window.location.href);
  305.     
  306.             fetch(Url.pathname + "?" + Params.toString() + "&ajax=xxx", {
  307.                 headers: {
  308.                     "X-Requested-With": "XMLHttpRequest"
  309.                 }
  310.             }).then(response => {
  311.                 return response.json()
  312.             }).then(data => {
  313.                 
  314.               const content = document.querySelector("#zoneContent");
  315.               content.innerHTML = data.content;
  316.               history.pushState({}, null, Url.pathname + "?" + Params.toString());
  317.               var elements = document.querySelectorAll(".taille");
  318.               sizeCard(elements);
  319.               if ($('#resetBtn').length > 0) {
  320.                 $('#resetBtn').remove();
  321.               }
  322.               if (inputValue){
  323.                 $('#filterZone').each(function() {
  324.                     $(this).append('<i id="resetBtn" class="refresh fa fa-refresh text-danger"></i>');
  325.                 });
  326.               }
  327.             
  328.             }).catch(e => alert(e));
  329.         }
  330.         var coElement = document.getElementById('co').value;
  331.         if (coElement) {
  332.             var cancelButton = document.querySelector('#exampleModalAdd .btn-danger');
  333.             
  334.             cancelButton.addEventListener('click', function () {
  335.                 var form = document.querySelector('#exampleModalAdd form');
  336.                 form.reset();
  337.             });
  338.         }
  339.         var elements = document.querySelectorAll(".taille");
  340.         sizeCard(elements);
  341.         $(window).on('resize', function() {
  342.             var elements = document.querySelectorAll(".taille");
  343.             sizeCard(elements);
  344.         });
  345.     </script>
  346.     
  347. {% endblock %}