templates/front/ssr15.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 }}{% endblock %}
  4. {% macro filter(queryParams) %}
  5.     <div class="col-4" id="filterZone">
  6.         <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 %}>
  7.         <i id="searchBtn" class="toggle-password-alone fa fa-search text-primary" ></i>
  8.         {% if queryParams is not empty and queryParams.recherche is defined %}
  9.             <i id="resetBtn" class="refresh fa fa-refresh text-danger"></i>
  10.         {% endif %}
  11.     </div>
  12.     {% set options = [
  13.         {
  14.             'k' : '',
  15.             'v' : 'Trier par :'
  16.         },
  17.         {
  18.             'k' : 'titre-croissant',
  19.             'v' : 'Titre A-Z'
  20.         },
  21.         {
  22.             'k' : 'titre-decroissant',
  23.             'v' : 'Titre Z-A'
  24.         },
  25.         {
  26.             'k' : 'date-croissante',
  27.             'v' : 'Date croissante'
  28.         },
  29.         {
  30.             'k' : 'date-decroissante',
  31.             'v' : 'Date décroissante'
  32.         },
  33.     ] %}
  34.     <div class="col-2">
  35.         <select class="bg-white rounded form-control" id="ordonnance">
  36.             {% for option in options %}
  37.                 <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>
  38.             {% endfor %}
  39.         </select>
  40.     </div>
  41. {% endmacro %}
  42. {% block h1 %}
  43.     {{ ssr.nom }}
  44.     {% if app.user and is_granted('ROLE_MODO') %}
  45.         <a target="_blank" href="{{ path('app_admin_sous_rubrique_show', {'uuid': ssr.uuid}) }}"><i class="text-danger" data-feather="unlock"></i></a>
  46.     {% endif %}
  47. {% endblock %}
  48. {% block ariane %}
  49.     <nav class="navigateur" aria-label="breadcrumb">
  50.         <ol class="breadcrumb">
  51.             <li class="breadcrumb-item"><a href="{{ path("home") }}">{{ config.titreAccueil }}</a></li>
  52.             <li class="breadcrumb-item"><a href="{{ path('rubriques', {slug:r.slug })}}">{{ r.nom }}</a></li>
  53.             <li class="breadcrumb-item active" aria-current="page">{{ ssr.nom }}</li>
  54.         </ol>
  55.     </nav>
  56. {% endblock %}
  57. {% block body %}
  58.     {% if app.user %}
  59.         {% set co = true %}
  60.     {% else %}
  61.         {% set co = false %}
  62.     {% endif %}
  63.     <input type="hidden" value="{{co}}" id="co">
  64.     {% set acces = false %}
  65.     {% if form.children.parcours.vars.errors is not empty %}
  66.         {% set acces = true %}
  67.     {% endif %}
  68.     {% if form.children.competence.vars.errors is not empty %}
  69.         {% set acces = true %}
  70.     {% endif %}
  71.     {% if form.children.aspiration.vars.errors is not empty %}
  72.         {% set acces = true %}
  73.     {% endif %}
  74.     {% if form.children.nom.vars.errors is not empty %}
  75.         {% set acces = true %}
  76.     {% endif %}
  77.     {% if form.children.prenom.vars.errors is not empty %}
  78.         {% set acces = true %}
  79.     {% endif %}
  80.     {% if form.children.email.vars.errors is not empty %}
  81.         {% set acces = true %}
  82.     {% endif %}
  83.     {% if form.children.direction.vars.errors is not empty %}
  84.         {% set acces = true %}
  85.     {% endif %}
  86.     {% if form.children.grade.vars.errors is not empty %}
  87.         {% set acces = true %}
  88.     {% endif %}
  89.     {% if form.children.cv.vars.errors is not empty %}
  90.         {% set acces = true %}
  91.     {% endif %}
  92.     <input type="hidden" id="acces" value="{{acces}}">
  93.     <input type="hidden" id="test" value="{{app.session.get('test')}}">
  94.     {% if ssr.phrase %}
  95.         <div class="my-4 mx-12 bg-white p-4 rounded ck">{{ ssr.phrase|raw }}</div>
  96.     {% endif %}
  97.     {% if ssr.srcImg %}
  98.         <div class="mx-12">
  99.             <img 
  100.                 src="{{ asset('images/sousrubrique/' ~ ssr.srcImg) }}" 
  101.                 {% if ssr.altImg %}
  102.                     alt="{{ ssr.altImg }}" 
  103.                 {% endif %}
  104.                 {% if ssr.titleImg %}
  105.                     title="{{ ssr.titleImg }}" 
  106.                 {% endif %}
  107.                 class="imgRatio rounded"
  108.             >
  109.         </div>
  110.     {% endif %}
  111.     {% if ssr.description %}
  112.         <div class="my-4 mx-12  bg-white p-4 rounded ck">{{ ssr.description|raw }}</div>
  113.     {% endif %}
  114.     {% if app.user %}
  115.         <div class="row mx-0 px-0">
  116.             <div class="col-md-6">
  117.                 <div id="zoneGestion">
  118.                     {% if app.user.cvs|length > 0 %}
  119.                         {% if app.user.cvs[0].moderate %}
  120.                             <div class="row" id="gestionCV">
  121.                                 <button type="button" class="btn btn-primary rounded col-md-4 col-12" data-bs-toggle="modal" data-bs-target="#exampleModalAdd">
  122.                                     Modifier mon CV
  123.                                 </button>
  124.                             
  125.                                 <div 
  126.                                     class="form-check form-switch mb-0 rounded col-md-4 col-12 btn {% if app.user.cvs[0].statut %} btn-danger {% else %} btn-success  {% endif %} " 
  127.                                     style="" 
  128.                                     id="btnActivation"
  129.                                 >
  130.                                 {% if app.user.cvs[0].statut %} Désactiver {% else %} Activer  {% endif %} mon CV
  131.                                 </div>
  132.                                 <span 
  133.                                     class="cursorPointer btn btn-danger rounded col-md-4 col-12" 
  134.                                     onclick="return confirmDelete(this);"
  135.                                 >
  136.                                     Supprimer mon CV
  137.                                 </span>
  138.                             </div>
  139.                         {% else %}
  140.                             <div class="">
  141.                                 <h4 class="m-0">Votre CV est en cours de modération</h4>
  142.                             </div>
  143.                         {% endif %}
  144.                         
  145.                     {% else %}
  146.                         <button type="button" class="btn btn-primary rounded" data-bs-toggle="modal" data-bs-target="#exampleModalAdd">
  147.                             Ajouter mon CV
  148.                         </button>
  149.                     {% endif %}
  150.                 </div>
  151.             </div>
  152.             {{ _self.filter(queryParams) }}
  153.         </div>
  154.         
  155.     {% else %}
  156.         <div class="mt-4 mx-12 bg-white p-4 rounded">
  157.             <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>
  158.         </div>
  159.             <div class="row justify-content-between mx-0 mt-4">
  160.                 <div class="col-6"></div>
  161.                 {{ _self.filter(queryParams) }}
  162.             </div>
  163.     {% endif %}
  164.     {% if items %}
  165.         <div id="zoneContent">
  166.             {% include "front/_ssr15_cv.html.twig" %}
  167.         </div>
  168.     {# {% else %}
  169.         <h4 class="text-center text-danger fst-italic my-4  mx-12 bg-white p-4 rounded">{{ config.messageDefault }}</h4> #}
  170.     {% endif %}
  171.     {% if app.user %}
  172.         <div class="modal fade" id="exampleModalAdd" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  173.             <div class="modal-dialog modal-xl">
  174.                 {{form_start(form)}}
  175.                     <div class="modal-content">
  176.                     <div class="modal-header">
  177.                         <h1 class="modal-title fs-5" id="exampleModalLabel">
  178.                         {% if exist %}
  179.                             Modifier
  180.                         {% else %}
  181.                             Ajouter 
  182.                         {% endif %}
  183.                         votre Curriculum Vitae</h1>
  184.                         <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  185.                     </div>
  186.                     <div class="modal-body row">
  187.                         <div class="row">
  188.                             {% if exist %}
  189.                                 <div class="col-md-4">
  190.                                     {{ form_row(form.nom) }}
  191.                                 </div>
  192.                                 <div class="col-md-4">
  193.                                     {{ form_row(form.prenom) }}
  194.                                 </div>
  195.                                 <div class="col-md-4">
  196.                                     {{ form_row(form.email) }}
  197.                                 </div>
  198.                             {% else %}
  199.                                 <div class="col-md-4">
  200.                                     {{ form_row(form.nom, {'attr' : {'value' : app.user.nom}}) }}
  201.                                 </div>
  202.                                 <div class="col-md-4">
  203.                                     {{ form_row(form.prenom, {'attr' : {'value' : app.user.prenom}}) }}
  204.                                 </div>
  205.                                 <div class="col-md-4">
  206.                                     {{ form_row(form.email, {'attr' : {'value' : app.user.email}}) }}
  207.                                 </div>
  208.                             {% endif %}
  209.                             
  210.           
  211.                             <div class="col-md-6">
  212.                                 {{ form_row(form.grade) }}
  213.                             </div>
  214.                             <div class="col-md-6">
  215.                                 {{ form_row(form.direction) }}
  216.                             </div>
  217.                         </div>
  218.                     
  219.                         {{ form_row(form.parcours) }}
  220.                         {{ form_row(form.competence) }}
  221.                         {{ form_row(form.aspiration) }}
  222.                     
  223.                         {{ form_row(form.cv) }}
  224.                         {% if cv.cv %}
  225.                             <a target="_blank" href="{{ path('app_cv_pdf', {uuid: cv.uuid}) }}" title="CV">
  226.                                 <i class="text-danger" data-feather="file"></i>
  227.                             </a>
  228.                         {% endif %}
  229.                         <div class="row p-4 mt-3 mx-0 align-items-center">
  230.                             <h4 class="text-center py-2">Photo (facultatif)</h4>
  231.                             <hr class="py-3">
  232.                             <div class="col-md-6">
  233.                                 {{ form_row(form.photo) }}
  234.                                 
  235.                             </div>
  236.                             <div class="col-md-6">
  237.                                 <div class="row justify-content-center" id="zone"></div>
  238.                             </div>
  239.                         </div>
  240.                     </div>
  241.                     <div class="modal-footer">
  242.                         <button type="button" title="En annulant, vous réinitialiserez le formulaire" class="btn btn-danger rounded" data-bs-dismiss="modal">Annuler</button>
  243.                         <button type="submit" class="btn btn-primary rounded">
  244.                             {% if exist %}
  245.                                 Modifier
  246.                             {% else %}
  247.                                 Ajouter 
  248.                             {% endif %}
  249.                         </button>
  250.                     </div>
  251.                     </div>
  252.                 {{form_end(form)}}
  253.             </div>
  254.         </div>
  255.     {% endif %}
  256. {% endblock %}
  257. {% block javascripts %}
  258.     <script src="{{ asset('js/cardShow.js') }}"></script>
  259.     <script>
  260.     function loadFile(event)
  261.     {
  262.         zone.textContent = "";
  263.         let image = document.createElement("img");
  264.         image.setAttribute("src", URL.createObjectURL(event.target.files[0]) );
  265.         image.setAttribute("class", "img60auto" );
  266.         zone.append(image);
  267.                 let data = {
  268.                     "token" : URL.createObjectURL(event.target.files[0])
  269.                 }
  270.                 let url = "{{ path('change_test') }}";
  271.                 $.ajax({
  272.                     method: 'post',
  273.                     dataType: 'json',
  274.                     url : url,
  275.                     data : data,
  276.                     success: function (data)
  277.                     {
  278.                         
  279.                     },
  280.                     error: function()
  281.                     {
  282.                         alert('error');
  283.                     }
  284.                 });
  285.     }
  286.     
  287.         $('body').on('click', '#btnActivation', function() {
  288.             console.log('test');
  289.             let data = {
  290.             }
  291.             let url = "{{ path('change_front_statut_cv') }}";
  292.             
  293.             $.ajax({
  294.                 method: 'post',
  295.                 dataType: 'json',
  296.                 url : url,
  297.                 data : data,
  298.                 success: function (data)
  299.                 {
  300.                     if(data.response){
  301.                         const btnActivation = document.getElementById('btnActivation');
  302.                         if (data.statut) {
  303.                             btnActivation.classList.add('btn-danger');
  304.                             btnActivation.classList.remove('btn-success');
  305.                             
  306.                             const zoneCv = document.getElementById('zoneCv');
  307.                             zoneCv.innerHTML = data.test + zoneCv.innerHTML;
  308.                             btnActivation.textContent = "Désactiver mon CV";
  309.                         } else {
  310.                             btnActivation.classList.remove('btn-danger');
  311.                             btnActivation.classList.add('btn-success');
  312.                             
  313.                             $('#cv' + data.token).remove();
  314.                             btnActivation.textContent = "Activer mon CV";
  315.                         }
  316.                  
  317.                         
  318.                     }
  319.                 },
  320.                 error: function()
  321.                 {
  322.                     alert('error');
  323.                 }
  324.             });
  325.         });
  326.         let acces = $("#acces").val();
  327.         let test = $("#test").val();
  328.         if(acces){
  329.             var myModal = new bootstrap.Modal(document.getElementById('exampleModalAdd'))
  330.             myModal.show();
  331.                 zone.textContent = "";
  332.                 let image = document.createElement("img");
  333.                 image.setAttribute("src", test );
  334.                 image.setAttribute("class", "img60auto" );
  335.                 zone.append(image);
  336.             
  337.         }
  338.         function confirmDelete(element) {
  339.             var confirmDelete = confirm('Êtes-vous sûr de vouloir supprimer votre CV ?');
  340.             
  341.             if (confirmDelete) {
  342.                
  343.                 let data = {
  344.                 }
  345.                 let url = "{{ path('supprimer_front_cv') }}";
  346.                 $.ajax({
  347.                     method: 'post',
  348.                     dataType: 'json',
  349.                     url : url,
  350.                     data : data,
  351.                     success: function (data)
  352.                     {
  353.                         if(data.response){
  354.                             $('#cv' + data.token).remove();
  355.                             const gestionCVElement = document.getElementById('gestionCV');
  356.                             if (gestionCVElement) {
  357.                                 gestionCVElement.remove();
  358.                             }
  359.                             const addButton = document.createElement('button');
  360.                             addButton.setAttribute('type', 'button');
  361.                             addButton.setAttribute('class', 'btn btn-primary rounded');
  362.                             addButton.setAttribute('data-bs-toggle', 'modal');
  363.                             addButton.setAttribute('data-bs-target', '#exampleModalAdd');
  364.                             addButton.textContent = 'Ajouter';
  365.                             const zoneGestion = document.getElementById('zoneGestion');
  366.                             zoneGestion.appendChild(addButton);
  367.                         }
  368.                         
  369.                     },
  370.                     error: function()
  371.                     {
  372.                         alert('Une erreur est survenue, veuillez recommencer');
  373.                     }
  374.                 });
  375.             } 
  376.         }
  377.         $("#searchBtn").click(function() {
  378.             updateData();
  379.         });
  380.         $("#ordonnance").change(function() {
  381.             updateData();
  382.         });
  383.         $('body').on('click', '#resetBtn', function() {
  384.             $("#searchInput").val('');
  385.             $('#ordonnance').prop('selectedIndex', 0);
  386.             
  387.             updateData();
  388.         });
  389.         function updateData(){
  390.             var inputValue = $("#searchInput").val();
  391.             const selectElement = document.querySelector("#ordonnance");
  392.             const selectedValue = selectElement.value;
  393.             const Params = new URLSearchParams();
  394.             
  395.             if(inputValue){
  396.                 Params.append('recherche', inputValue);
  397.             }
  398.             if(selectedValue){
  399.                 Params.append('ordre', selectedValue);
  400.             }
  401.             
  402.             const Url = new URL(window.location.href);
  403.     
  404.             fetch(Url.pathname + "?" + Params.toString() + "&ajax=xxx", {
  405.                 headers: {
  406.                     "X-Requested-With": "XMLHttpRequest"
  407.                 }
  408.             }).then(response => {
  409.                 return response.json()
  410.             }).then(data => {
  411.                 
  412.               const content = document.querySelector("#zoneContent");
  413.               content.innerHTML = data.content;
  414.               history.pushState({}, null, Url.pathname + "?" + Params.toString());
  415.               var elements = document.querySelectorAll(".taille");
  416.               sizeCard(elements);
  417.               if ($('#resetBtn').length > 0) {
  418.                 $('#resetBtn').remove();
  419.               }
  420.               if (inputValue){
  421.                 $('#filterZone').each(function() {
  422.                     $(this).append('<i id="resetBtn" class="refresh fa fa-refresh text-danger"></i>');
  423.                 });
  424.               }
  425.             
  426.             }).catch(e => alert(e));
  427.         }
  428.         var coElement = document.getElementById('co').value;
  429.         if (coElement) {
  430.             var cancelButton = document.querySelector('#exampleModalAdd .btn-danger');
  431.             
  432.             cancelButton.addEventListener('click', function () {
  433.                 var form = document.querySelector('#exampleModalAdd form');
  434.                 form.reset();
  435.             });
  436.         }
  437.         
  438.         var elements = document.querySelectorAll(".taille");
  439.         sizeCard(elements);
  440.         $(window).on('resize', function() {
  441.             var elements = document.querySelectorAll(".taille");
  442.             sizeCard(elements);
  443.         });
  444.     </script>
  445.     
  446. {% endblock %}